Hello Guest

Author Topic: Kyoob  (Read 62157 times)

0 Members and 1 Guest are viewing this topic.

Fruckert

  • Member
  • Posts: 60
  • Total Square
    • View Profile
Kyoob
« on: August 24, 2014, 05:54:37 PM »


Kyoob is an action platformer with a heavy emphasis on puzzles and exploration.
It's primary influences are Cave Story, Metroid, and Fez.
It's about the son Square Dood, God of Squares, fighting off the evil Circle Man and his corruption.
The story isn't taken very seriously.

Right now it's not very done (none of the buttons in the above screenshot actually work right now :P ), but I wanted to make a devlog here so I don't gunk up the Help forum whenever I have a specific problem.

There's a build here that I'm going to update whenever I mention that I updated it.

Code: [Select]
24.08.14:
+ Broken title screen with no way out.
« Last Edit: August 24, 2014, 07:36:00 PM by Fruckert »

Fruckert

  • Member
  • Posts: 60
  • Total Square
    • View Profile
Re: Kyoob
« Reply #1 on: August 24, 2014, 05:56:53 PM »
So, yeah, I have a problem right now!
Is the title screen running slowly for anybody else?
My artist says that it starts lagging halfway through the animation, unless she opens the console beforehand at which point it doesn't.
I did an awful lot of tweens to get everything to go into the proper place, is that maybe a cause of lag?
I also used the EventRouter to notify when the next stage of tweens should start.
I am not using any of the Otter.UI classes, because they don't appear to be done enough for use yet.

Kyle

  • Administrator
  • Member
  • Posts: 258
    • View Profile
Re: Kyoob
« Reply #2 on: August 24, 2014, 11:34:50 PM »
The title screen seems to be running fine for me.  I tried opening and closing the console and it runs at the same speed.  You'd have to be doing a lot of tweens before they slow anything down I think.  EventRouter should be fine as well, it just calls functions that are subscribed when you publish an event.  (And yeah the Otter UI stuff hasn't been touched in awhile, probably not a good idea to use it for now.)

Fruckert

  • Member
  • Posts: 60
  • Total Square
    • View Profile
Re: Kyoob
« Reply #3 on: August 24, 2014, 11:59:02 PM »
Man, all these computer specific problems on testing machines is annoying.

I'm almost done with this title screen and save management junk.
I removed all of the EventRouter stuff and simplified it to a series of Tweens that call other Tweens on completion.
A few of the buttons work, now, and have cool little animations for when they fire.
I'd show them, but Licecap doesn't work well on my machine.

Kyle

  • Administrator
  • Member
  • Posts: 258
    • View Profile
Re: Kyoob
« Reply #4 on: August 25, 2014, 03:52:07 AM »
Yeah, sorry about the computer specific problems : (  Any idea of the specs on the computer(s) you've had issues with? Unfortunately it's really tough to see what could be going on with slow down on different computers.  I would be interested in testing just straight up SFML.net programs on those computers to see if problems are there, or in Otter.

Fruckert

  • Member
  • Posts: 60
  • Total Square
    • View Profile
Re: Kyoob
« Reply #5 on: August 25, 2014, 03:33:46 PM »
Friend with the missing DLL problem:
Code: [Select]
CPU: AMD Phenom II X6 1075T 3.00 GHz processor
Graphics: NVIDIA GeForce GTX 760
8gb RAM
OS: Windows 7 64bit Home Premium

Friend with the slowdown:
Code: [Select]
APU: amd e1-1500 apu with radeon tm hd graphics 2 cpus 1.5 ghz
Graphics: amd radeon hd 7310 graphics
4gb RAM
OS: Windows 7 Ultimate 64bit

Looking at those specs I'd presume it's the weak APU.
She reinstalled Windows 7 over Windows 8, if that might be a big contributor to performance issues.

Kyle

  • Administrator
  • Member
  • Posts: 258
    • View Profile
Re: Kyoob
« Reply #6 on: August 25, 2014, 08:01:58 PM »
Hmm yeah, that APU is a very weak processor from what I can see http://www.cpubenchmark.net/cpu.php?cpu=AMD+E1-1500+APU so I'm not sure if there's anything that can be done about that.

The missing dll problem is pretty interesting.  Could you have your friend try playing this game: http://kpulv.com/210/All_the_King_s_Men/ and see if they have the same problem?

Fruckert

  • Member
  • Posts: 60
  • Total Square
    • View Profile
Re: Kyoob
« Reply #7 on: August 25, 2014, 11:18:26 PM »
So apparently All The King's Men works.
Kyoob still isn't going, though.

The only thing that I can think of that might still be affecting this is that I'm using another DLL with a bunch of helper classes in it (Gemini.dll).
Maybe it's not linking properly?
Unfortunately my technical knowledge as to how .NET works regarding this is pretty bad at the moment, so I really don't know.

ed:
So, apparently, my DLL was compiling in Any CPU instead of x86, but even when I changed that it doesn't work.
She also sent it to a friend and it worked for him.
It's DEFINITELY her computer, so we're going to look at that sometime soon.
« Last Edit: August 26, 2014, 12:02:58 AM by Fruckert »

Fruckert

  • Member
  • Posts: 60
  • Total Square
    • View Profile
Re: Kyoob
« Reply #8 on: August 28, 2014, 11:27:13 PM »
I did a lot of graphics programming and ended up with this HUD.



The health points are highly upgradeable.
You can find both heart containers, to gain individual health point, as well as special "rainbow" containers, which give you an extra health bar in the next shade of the rainbow.
The goal was to give the rainbow containers after boss fights, and heart containers to be hidden out in the world.
If I were to beat a boss with those 3 starting health points, I would have 6 health points, and if I were to find a heart container after that I would have 8.

I'm not sure if the HUD is too...out there.
I know that Spelunky's irritated a lot of people, and mine covers up more screen space than that.

Fruckert

  • Member
  • Posts: 60
  • Total Square
    • View Profile
Re: Kyoob
« Reply #9 on: September 01, 2014, 11:16:39 PM »
So we solved my friend's problem!
Apparently the x86 VC++ redistributable was missing. Got her to install it and it started working.
« Last Edit: September 01, 2014, 11:50:04 PM by Fruckert »

Kyle

  • Administrator
  • Member
  • Posts: 258
    • View Profile
Re: Kyoob
« Reply #10 on: September 04, 2014, 07:57:21 PM »
Oh cool!  It's looking pretty sweet.  Also good to hear about the x86 VC++ thing, I'll keep that in mind if anyone has problems in the future.

Fruckert

  • Member
  • Posts: 60
  • Total Square
    • View Profile
Re: Kyoob
« Reply #11 on: September 12, 2014, 07:21:03 PM »


So, I tore apart the game and started over from scratch due to some bad organization decisions on my part.
I managed to get these Metroid-style false walls finished in spite of that.
I had to write a custom Ogmo parser to do it, but it was well worth it.
Here's the code for the false layer, because it's useful for lots of things.

Code: [Select]
public class FalseTileLayer : Entity
    {
        private Tilemap _tiles;
        private GridCollider _grid;

        public FalseTileLayer(string tileset, int width, int height, XmlElement element)
        {
            Layer = (int)LayerTags.False;

            _tiles = new Tilemap(LevelManager.Project.ImagePath + LevelManager.Project.TileMaps[tileset], width, height, 16, 16);
            _grid = new GridCollider(width, height, 16, 16);

            foreach (XmlElement t in element)
            {
                var x = int.Parse(t.Attributes["x"].Value);
                var y = int.Parse(t.Attributes["y"].Value);

                _grid.SetTile(x, y);

                _tiles.SetTile(t);
            }

            SetCollider(_grid);
            SetGraphic(_tiles);
        }

        public override void SceneBegin()
        {
            base.SceneBegin();

            if (Collider.Overlap(X, Y, (int)CollisionTags.Player))
                _tiles.Alpha = 0.0125f;
        }

        public override void Update()
        {
            base.Update();

            if (Collider.Overlap(X, Y, (int)CollisionTags.Player))
            {
                if (_tiles.Alpha > 0.0125f)
                    _tiles.Alpha = Util.Approach(_tiles.Alpha, 0.0125f, 0.05f);
            }
            else
            {
                if (_tiles.Alpha < 1f)
                    _tiles.Alpha = Util.Approach(_tiles.Alpha, 1f, 0.05f);
            }
        }
}

LevelManager is my custom level parser, and Project is just an OgmoProject.
You give it a TileLayer XmlElement, and then it creates a gridcollider to go along with the Tilemap.
If the player is inside of it, it goes transparent, otherwise it's opaque.

I also made some big shiny buttons.


The buttons work through a combination of bitfields, EventRouter, and tears.
I really like bitfields.
« Last Edit: September 12, 2014, 08:00:41 PM by Fruckert »

Kyle

  • Administrator
  • Member
  • Posts: 258
    • View Profile
Re: Kyoob
« Reply #12 on: September 15, 2014, 03:43:50 PM »
Ahh the false tile layers are pretty awesome!

Fruckert

  • Member
  • Posts: 60
  • Total Square
    • View Profile
Re: Kyoob
« Reply #13 on: September 16, 2014, 01:05:44 PM »
Thanks!

I just implemented the jumpthrough blocks, and they work pretty well.
I was having a bit of trouble getting the linecollider set up and in the right place, but I got it eventually.

I also discovered a bit of an oddity!
I made a toggle block that can be controlled through the buttons, and apparently removing colliders with the EventRouter causes things to blow up. Specifically, the PlatformingMovement crashes after you do so, with a null reference error. I guess it got to the collider that just got removed, and it's crashing because the collider no longer has an entity attached to it.
ed: I just tried to set the collider to remove in UpdateLast and it STILL crashes.
I don't know what's going on, now.
« Last Edit: September 16, 2014, 01:29:28 PM by Fruckert »

Kyle

  • Administrator
  • Member
  • Posts: 258
    • View Profile
Re: Kyoob
« Reply #14 on: September 16, 2014, 01:52:17 PM »
What line is it crashing on?