Cold Remembrance – Timelapse + Postmortem

Choosing songs for the timelapse took way longer than it should… but, finally, here it is.

The postmortem got quite long… so here is a TL;DR version:

The good:

  • Finished my game, even though I restarted twice and was away for around 12 hours.
  • Was able to find a kind of fitting use of the theme
  • Snowman as the main character
  • Wooo, graphics!
  • Wooo, mood!
  • The song fits the mood of the game
  • I was finally able to finish it before the deadline
  • Saw lots of updates on the website (therefore, was never too tired)

The bad:

  • No restart button
  • Game over isn’t really clear
  • Story is badly told
  • It didn’t work on my Android phone
  • Lost 12 hours of Sunday + 7:30 hours of sleep
  • Spent a lot of time on the website (lazying around and not doing the game)
  • Almost none actual gameplay

Now, for those brave enough, have the long version. :)

I wrote mainly about how development was. I’ll later do a post explaining the game itself. But this can wait a little more…

The Compo started here at midnight of Saturday. I usually sleep for a few hours prior to it, so I can stay up later than usual. That really helps to get the prototype pretty much done on the first ‘day’. My usual division of time is in three slots: until around 3~5 AM of Saturday (depending on how rested I am, and how well work is going), until around 2 AM of Sunday (by which point the game would be complete, and I only need to fix some bugs, create more levels and polish the game) and, finally, until submission time.

I'll mostly likely finish that before this LD's post-compo...

The warmup game: a ship with a broken rainbow engine

This time, though, I didn’t follow that at all. I started a little warm up game one day before the compo. I liked it so much, that I still worked sometime on it before the Compo. So, I didn’t sleep at all, after waking up 6:30 AM. This made go to Sleep earlier than usual, at 2 AM. By this time, I still had nothing but a stupid idea. I usually try to come up with a idea still during this first slot, but I had a lot of trouble to do that, this time… It took me a long while to start liking this “theme”. (though, I must say, I still doesn’t see it as a theme)

But don't ask me what!

This was to be something… someday…

After trying to work that idea out in the morning, I gave up and started another one. I tried to code it into something until 11:45 AM. By that time, I got tired of it not working and started to draw a snowman.

Be careful not to look into its eyes... he will force you to make a game about snowmans!

Then I had to draw all of its animation, from jumping to melting. Soon afterwards, I finally had the final idea, the one that I was able to make into a “complete” game.

I took a more visual approach, since it was a simple story driven game. So I drew the background and imported into a game. By 2:47 PM (still Saturday), I was done with the initial version. This was important, because if I didn’t get enough to redraw everything, I would still have something to show.

1 hour after, I had everything being rendered in game and got started to make that loop. It was working in as few as half an hour. I took an approach of moving everything by a modular offset (as in, “from 0 to screen_width”) and tried to render everything twice: once on its position + offset and again on position + offset – screen_width. By doing only that, everything was being rendered, while on a single screen. =D

Then I started composing the song. I already had had an idea during one of my breaks, but that was probably the first time I tried playing it on the keyboard. Thanks to that, I took only some 30~40 minutes to write it on VMML.

After lots of lazing around, I finally wrote the story. It was 7:30, but I still didn’t want to add it into the game… That’s boring! I decided to do something much cooler: particles!

Yay[2]. So many particles... XD

Yay! It’s snowing!

I made it the lazy way: have a array with the particles, keep track of which is alive and which isn’t, recycle the dead one and, when you run out of space, realloc the array. In 1 hour I already had snow falling around the snowman. A also added leaves to the autumn season and, later modified some of its  working.

Then, almost 10 PM, I finally decided to start working on the actual game! No more lazing around, no more drawing, composing, writing a simple particle system… NO! Time to… have dinner…

Around 11 PM I finally got started. One really important thing I did while coding was to add a frame skip feature. I usually spend too much time playing my game, for testing purposes. This time, I could make it go 6 times faster. I usually blazed through the game, having lots of times to test stuff.

I got the player moving, added the texts, made it appear after you loop through the screen… After all that coding, I made a final sprite, the one of the kid that appears by the end of the game. The walking animation was completely s****y, but I had to make do with that.

That first walking animation... ew... >__<

That first walking animation… ew… >__<

I coded it into the game and submitted a initial version to the site. If I didn’t have any more time on Sunday, I would at least have a working game… Except that I forgot to add the assets folder and the game wouldn’t work at all. Stupid me…

So, I finally went to sleep 3 AM and knew that I was screwed. Sunday I was going to take the JLPT, in a neighbor city, so I knew I was going to have way less time than desired. On top of that, I had to wake 5:30 in the morning, so I spent a good part of the day in a zombie state.

When I finally got home and was able to work in the game, it was already almost 5 PM. At least, I only needed to polish the game… Unfortunately, that’s what deserve most time. I redid all the backgrounds, added clouds (more particles!!), added an ‘upper text’, in which I wanted to display tips… put ended using for almost nothing, added sfx and fixed a few bugs. Fun fact: the sfx used for the “rising”/”unmelting” animation, is the “crushing” sfx reversed. =D

ld31_progress_009

At sometime, I made three really stupid decisions, and I blame sleep deprivation for that. One was to make you actually able to lose the game. I wondered  about it for a long while, even after implementing it. Was there any actual point in you being able to melt? Would the game gain anything from it? Even by answering no to both questions, I went ahead and did. C’mon, who would be able to lose? I explicitly wrote “Press left to go back”, you gotta only press that single key right?

Yeah… Never, ever, consider that people will only play your game the way you want. If there’s anything that people shouldn’t do, don’t allow then to do it! On top of that there’s the second stupid thing: I used the phrase “But the seasons refused to change”, a Chrono Trigger reference/parody/homage/etc, as “Game over”, but didn’t add a “Game over” on the upper part of the screen… This probably confused people about what was happening.

Click to watch that ending

Click to watch that ending

And then there’s the third and final stupid thing. I though about making the ‘R’ button restart the game, “but why would I do that? you can easily close and re-open the game…”. Well… yeah, I have no excuse, that was completely stupid. It got worse on the Android port, because it’s actually quite a pain to close an application there (compared to Windows/Ubuntu).

Another thing I should mention here is the gameplay. There’s a time the snowman says “those many winter were harsh, at times” and it starts to snow  stronger on winter. I thought about making the game more dynamic, make the snowstorm push you back and forcing you to move according to some timing to go through that part… But since I couldn’t see how to make it work (nor how to make it fun), I ended making the only needed input from the player be to press a button. If I were to make a post-compo version, this would be the main thing that needs to be changed (as well as how the story is told, and adding a restart button).

Then before packaging the game, I had one final thing to do: redraw that goddamn walk animation. I don’t know how, but I was able to make a good enough one in 7 minutes. So, 10:30 I was done with my game. All I had to do was package and submit. Something I was really proud is that I even made the game icon during the compo! I usually draw it afterwards.

For the first time, I did a game icon during the compo!

For the first time, I did a game icon during the compo!

I had some troubles trying to compile for Linux 32 bits (debian/ubuntu, actually), because it had been quite a while since I had last done that. After doing that and writing a README, I went to package for Windows 32 bits. (blame my MinGW 32 bits… Someday I’ll look up where can I find a 64 version and how to use it)

I was finally done. I’m not quite sure about which time I uploaded it because my Windows has been having some clock issues, after I enabled looking up the time online on Ubuntu, but it was around midnight.

The next day, already rested, I made a direct port of the game to Android. I only had to code how input worked, because everything else was handled b SDL2. I used a script I had done before hand (that’s “packaged” with the framework), I was quite easily able to compile it. I still haven’t looked up why, but it didn’t work on my Android 2.3.6 device. But both on the emulator and on a real Android 4.X, it worked normally…

Then, I was done for real. It was quite fun and I’m really proud of what I did. There may be some serious issues, as all of my previous entries, but I was finally able to catch up to some of my previous quality. The game is shorter, yes, but I’m happy with the result. I wanted to focus on the mood for this game, and I think I was able to do that…

One major failure, though, was the story… I intentionally wanted it to be told in a weird way, but it perhaps isn’t clear at all… I’ll have to take more care about that next time.

Well, that’s it, thanks for reading! 😀