Trois - Ludum Dare 25 Game - Post Mortem
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.
As for just 1 week ahead before the judging period of Ludum Dare 25 will end up, I think this is a good time for me to find some free time to write about Trois, a game that me and my co-worker made in 72 hours.
If you haven't play the game yet, and would love to have hands on it first before reading this post. Just click on the image below, it will walk you through the entry page, or this link.
I intended to make this participation to be regarded as "jam" event of LD 25. As for the past experience as a programmer, I found myself slow at making things done in tight really tight schedule or very rushing situation. Anyway, I got better and better after the first time participated in Charity Game Jam. This time will improve me further.
I have another teammate, Suebphatt Leelertphong @suebphatt, who does art stuff and cool music, and I will be doing game design and coding stuff. The game itself if you really notice it, in fact, have no graphics in main gameplay. I will make it clearer til the end of this post why it's like that.
Theme / Ideation
At the very start of doing this game, the idea is in another direction.
Firstly, I aimed to create as far as you can + shoot them up of tripod creature.
The first idea is to create a shoot them up game that embedded the core mechanics to maintain the stability of the 3-leg alien. You fight through the human both on the ground and in the sky as well as take yourself as far as you can with the clumsy movement of your 3 legs in which controlled by several key strokes. In addition to goats that will be wandering around the area for you to shoot at it, hmm, that's pretty straight forwards kind of thinking.
That's actually the 2nd idea came to my mind and I feel satisfied with it and decided to move along with that concept.
Nonetheless, this idea still hold for at least 2 days and a half til I need to twist it to another one due to the time constraint (of course, everyone has this) that I can't afford to add all those listed features in time. I would say that's a good decision I made during game jam.
The idea twisted into a situation that you (3-leg alien) managed to captured all your preys (goats) in your own domain or a dark cave underground. But you just only captured all of those. Now you're hungry and need to get to your prey to kick it into the boiling pot.
Again in crunching time, the idea twisted 2nd time and cut down all of those crazy idea to be only walking to touch that goat and we go into the next level.
The notable part is that the core mechanics is still there that is to control individual leg of the alien itself via several key strokes.
I sensed that this project will soak up most of the time in testing about physics stuff. I planned to come up with confirmed and stable idea along the way of testing it and implementation, and hand over art specification to my teammate which has some client works to finish off during game jam.
Most of the valuable time, I spent it in making physics work.
First I started it off with Box2d physics integrating with cocos2d-html5. I used cocos2d based framework either cocos2d-html5 (for this project) and cocos2d-x for native mobile/PC/Mac games.
There's a problem with debug drawer of Box2D for cocos2d-html5.
The problem I faced is the debug information is drew incorrectly. The one you see above is actually from the testcase inside cocos2d-html5 itself. I don't have much time to make it work, or even apply a work around solution (which is unclean). I can't live in physics world without correct debug information.
So you guess, my next step is to try Chipmunk and make it works.
I never use Chipmunk before. I once used Box2D back in my experimental project but it's on native iOS game not on web platform, so I don't see this kind of problem there. So I continue with much of effort trying to learn how to use Chipmunk physics with cocos2d based framework during game jam, yes, you heard that right, it's during game jam.
This kind of learning process may kill your chance to even submitting in time. It's very risky and I lost much of my time regarding topic about physics here. During pushing much of effort into physics, Anton Kolchunov tweeted me this image :)
He has integrated physics with his game before, and this kind of warning can huant you in the night if you can't submit it in time while still trying to make physics work til the last bit.
At any rate, I have to move on and stay course with my concept. So here we comes with Chipmunk.
A very first fast in design and experiment for 3-leg alien. It can't stand on its own.
The very first design to test things out in Chipmunk comes into play. But the problem is it cannot stand ground on its own. So I tried to minimize its shape and reduce its mass. What I got is below.
A better one, but still not quite right.
It's better and I can see a light at the end of the tunnel. This will be fun as I just see its head and shape, it makes me laugh already.
The main problem is I need to get it to be able to stand on its own. Normally you spawn a new physics objects by dropping them into the sky (but not for too high) then it will fall down and physics calculation will take places for collision and such. That moment when it hits the ground will determine whether you need to revise something carefully. The answer is "Yes" for me. Especially hard "Yes".
There's a need to rotate legs, and position things up properly to make the first look of your character correct.
I re-design the whole alien's shape, and deeply + carefully look into what physics constraints Chipmunk can offer from the creator explaining by himself at http://www.youtube.com/watch?v=ZgJJZTS0aMM. That's a piece of gold summarizing everything important to be able to work with it. Below is what I came up with.
Final design - revision 1.
You will notice that there's a shape of rectangles below each leg of alien. That's a mean to make it stands better. One important is that even with those rectangle shapes, it won't make it stands ground, so I need to apply pulling up force (in y-axis, or up) to its head periodically. So you see it dances!
Final design - revision 2 (this is what I used in the game)
I also reduced the width of rectangle shapes to minimum. To hide all their rectangular shape, so it looks like the alien stands on its own without big BIG foot.
Up until now, we don't have any art just yet. All you see is the debug graphics of Chipmunk itself. But I planned all of the specification to send through my teammate.
Art & Music
You know what? The last 2 lines in the previous section you've read, I sent those art specification to my teammate nearly 8 hours before submission! Most of the art resource + music were done in that period. The reason for all this causes is that I really come up with the confirmed and stable game concept nearly about 12 hours left to finish. That's because I need to test if physics really works, and not to mention the time lost in setting those things up.
Art resource specification sent to my teammate.
Apparently, that instance of time my teammate is in super busy mode working on increasing pressure of client work (and that combined with my late confirmed spec), the information sent to him is miss, and he comes out with his own specification!
You can see my teammate posted here telling about his fault but in fact I should take that myself or the causes of the more prioritized client work needed to be done occurs in the same time we did this stuff together.
Spritesheet asset that never be used, but only game logo. [You should see a goat there!!]
Don't worry we don't mad at each other. It's understandable, and this is kept for us to better improve and work on for the next project.
As you can see from the spritesheet itself, there's real proof there. As the game itself is meant to be played with goats and crazy stuff like boiling pot. Anyway, we may save it for next days making our post-jam version.
One last factor besides those 2 factors that causes art graphics to not be used in the game is that "Ground Platform".
As ground platform is made of by specifying vertices to form poly-shape. I don't have enough time to figure it out how to render seamless texture on those shape just yet in which they have customized width and height, and I need to repeat a smaller texture and put it on top of it repetitively. So if I'm actually going to add this into the game, we need to re-do the art stuff to match the specification and I think we don't have enough time along with the reason that if one another can be done or fixed in time but another won't, then the overall game's graphics will be mess, unbalanced. It's better to cut down all those as it works best without all of them now. I listed this kind of task to be my next research topic in hands for cocos2d-html5.
Now for the music stuff. After a decision to cut down all those made art resource, then my teammate begins to compose the music right away. He came up with this one, or you can click on the image below.
The feedback about this music is great, I really appreciate it on behalf of my teammate. Actually he had done it within about 1 hour. You can read more about my teammate's post here.
For the level part, I have planned it to have at least 5 levels. Fortunately I can finish those til the last minute.
This is the 5th level. Each level increases the difficulty and attract players to learn.
I don't intend to make 5th level to be the last level of this kind of game as there can be a lot more. I'm looking forward to add more and do more in post version.
We managed to submit the game in time. This improves my ability and skill to finish things off in tight schedule. I learned when to cut things out, when to twist things up, making important decision without looking back, and more importantly increase courage to learn new things within time constraint.
Game jams can benefit valuable things that we can experiment new ideas by making prototypes fast and test things out before we put it to use back in our main projects. Also not to mention about the solutions or approaches we discovered or used during making game jam, and apply those into our main project which greatly make it better and cleaner. I can kindly confirm the latter one that I experienced myself by putting a better solution to my ill-implement/design in my main game project.
I'm looking forward to up coming game jams. If I have enough time, I'm sure I will participate.
Play and rate our game at http://www.ludumdare.com/compo/ludum-dare-25/?action=preview&uid=647.
[This post is originally posted on my blog at http://haxpor.org/post/39211598751/trois-ld25-game-post-mortem]