The results will be out tomorrow in a few hours, and I’ve yet to write my post mortem… >_< Ok, let’s do this!
(also, here’s my timelapse for this LD’s entry!)
Since there are a quite few gifs and images (which add up to almost 2MB), I thought it was best to not keep everything on the main page…
Reason for the delay
On my first compo I used Flixel. It was so easy to use and so similar to the way I wanted to think about games that I’ve pretty much only used it since them. I’ve tried to use Unity a few times, but I always tried to go about it in a structured way (which didn’t quite work out).
Though I’ve already toyed with SDL and OpenGL, since Flixel was enough to me I kept using it. But, when I made the post compo for my LD#28 I started to think Flash isn’t good enough, anymore. My implementation is probably also faulty, but there are a lot of missed inputs in that game, when trying to run it at 60 FPS. Also, rendering is quite slow (since I added an overlay to the whole screen).
I switch to Air or to a newer Flash version with another library (like Axl, which already has GPU support). Or I could even switch to Unity… but this idea isn’t much to my liking.
Well, since I’m a coder and I’ve been meaning to do that for some time, I decided to finally write my own framework in C. I wanted to use SDL2, so I could easily port games to Android and maybe even web (with the Chrome Native Client). Also, it would enable me to work with OpenGL and shaders (which would allow me to do overlays without actually having to render a square over the screen).
Some two months ago, I started to develop that Framework. Unfortunately, by the time of the compo, I was no where near finishing it. It wasn’t even on a usable state. So I had to fall back to Flixel. As soon as the compo ended, though, I went back to work on my framework and on a test game I’d been doing to test it.
I tried to play a few game each day, but I couldn’t quite manage my time. Since I try to write a comment to every game I play, I ended up spending too much time thinking about what to write than actually playing games. As time went by, I stopped playing entries and focused solely on my framework.
At least, now it’s on a usable state (though it’s still missing many features) and I’ve finished that game! I’ll talk about it on a later post. For now, know that I’ll most likely use it on the next LD! =D
On to talk about the actual compo…
Theme and game idea
For some time, “Connected Worlds” has been one of my least favorite themes. As usual, I was kind of disappointed with the theme… but when I started to actually give it some thought, I saw that it’s actually a great theme.
Getting over that small hurdle, I was able to create a nice lil’ story (that barely made into the final game) and how I wanted it to play.
The game was to be able three races from different planets, two of those being sentient and always at war. The other one was to be of creatures that from time to time attacked either of them. The story would move toward either reaching a agreement with the other people or waging war and wiping (or getting wiped) them.

I, for some stupid reason, thought it would be a nice idea to make it a “side scrolling RTS” kinda game. I quickly drew a few sprites and implemented the base of the menu and of the movement…

Then, I decided to add platforms and gravity. Prior to that, you would have to micro manage every unit and use a jump button to actually make it go over platforms.

And this is when everything went down the hole.
Writing a 2D path finder
The idea of implementing a path finder wasn’t all that intimidating. I knew that I was risking wasting too much time on something that could not work, but I thought it was worth it. All I needed was to transform the tilemap into a graph and traverse it. Then I would have to deal with the problem of making an entity actually traverse that path.
I wrote it in a really straight forward way. If I’m not wrong, I traversed the tilemap iteratively and every time I reached a solid tile I would check if it was part of a already found node and, if not, recursively search for its bounding rectangle. I also modified it’s actual height and vertical position to make it take all the vertical space possible, so I would be able to click above a platform and select it. Even thought my implementation worked, I later found out that it was really buggy and had to redo some parts.

For the path finder, I first listed every possible path, that is, every two nodes that were reachable, even if by jumping. To simplify things, I made them bi-directional (which ignored the fact that a character could fall from a platform to the floor below it). Then, when trying to trace a path, I would check from the current node every other node recursively, in a depth-first search, while maintaining a list of visited nodes and the current shortest path and distance, to avoid cyclic paths and to be able to travel the “shortest” (in a kinda random meaning) path. Finally, I simply had to make an entity follow that path.
Pretty simple, right? Well…

yeah, not, it wasn’t. I made lots of typos and small logic errors (like incrementing the loop counter on the while statement [ while (++i < nodes.length)] and at the end). I broke and “fixed” the code a lot of times before I found those stupid mistakes… Just then I was able to make it somewhat working (after some actual fixing).

By then, I had already spent some 9~10 hours on that single problem and had to finish the game on my Sunday afternoon. I also hard coded a few things (like every character speed) into the path find code, so I couldn’t change that without potentially breaking everything. And for some stupid reason, I kept the bullet speed the same as every character speed… yeah… lots of great ideas.
Finishing the game
Time wasn’t quite on my side (totally my own fault, I know). So I kinda rushed things to a complete state. Those drafty drawings I did for the animations are a reflect to that. I draw everything on paper and tried to simply pass it to the computer. Since I wouldn’t have time to make it into proper pixel art, I tried to make it somewhat nice and interesting.

The waves were also decided at random. I made three enemy types and put a few of each every stage. I didn’t test it as a whole, but I (thought I) was sure that every state would properly switch to the next one. Later, I found out that a single typo broke every stage transition, but I fixed it a few minutes (I think) after submitting the game.
And that’s pretty much it.
Conclusion
Well, I had tons of fun. I was able to ignore trying to make the best possible game I potentially could, going for a platformer and avoiding some choices because they would be too hard to implement or too time consuming, and to embraced simply trying to make the game I wanted to. This is why, even thought “The Nether” is one of the worst and most unpolished of my entries, I’m really happy with it.
At the same time, I feel bad for not playing all that many games, not even playing back the games of everyone who commented on my game. This was necessary, though, because I really needed to focus on developing that framework.
I may try to fix the game’s bugs and make a post compo… but there are a few games that I want to make first. So, yeah… that might never happen…
Thanks for reading! =D
Tags: post-mortem, postmortem