After some good resting and rendering the timelapse some 3 times (because of dumb reasons), I'm finally ready to write the post mortem for my latest entry, It's a Small World.
Usually, I try to write about my jam in chronological order, but I it always feels "without a point". This time, I'll try to write about relevant things that worked (or didn't) for me, choices that were good and bad... The kind of stuff that I feel a post mortem should be about.
Timelapse
If you want a better look on how my game was made, you may watch my timelapse!
I took a picture every two seconds, which summed up to almost twenty one hours of recorded footage into just ten short minutes.
https://www.youtube.com/watch?v=macOZQo9QfY
I didn't record the first "few" hours, during which I was only planning the game. I would also stop recording whenever I left the computer. So I definitely used way more than only those twenty one hours... Only with stuff that wasn't interesting to record.
Tools and tech
First thing first. I like to brag about this, so... Bear with me.
Once again, I used my tools to make my entry. I have a (not so) small framework written in C that handles some common stuff (rebind-able stuff, loading/rendering assets, some physics, tilemap etc) that uses SDL2 to detect events and manage the window. I also have a small "music synthesizer" (or tracker, if you must call it that), that parses a MML-like language into a chiptune-ish sound.
Usually I try to use it in a "optimized" way. Therefore, I try to use as little memory as possible, write neat and (arguably) fast code... The kind of stuff that you should only care about before releasing a game or if you have the time. For a jam game, I shouldn't care about those stuff.
That's why I'm proud to say that this time my game seems to need around 40 MB of memory to run! Instead of over-optimizing, I did everything the simplest way that I could think of. Instead of bothering about reading things from a file only when needed, I load the entire game before starting it and that's it! I also alloc a predefined amount of memory for every "sub-scene", no matter how many or how many of it would be used.
All of that helped my in being faster at using my own tools... Which had been an issue for quite some time, now!
So, tl;dr: It's a game jam! Get things done FAST! Optimize when and if you have time.
Theme
I don't really like repeated themes. But when I think that LD#23, which theme was "Tiny World", was 5 years ago... Yeah, maybe it's time to let them row again...
I actually had some trouble having the initial idea. Most of the stuff I thought about didn't really "shine" for me, and I wasn't sure how to implement the only idea that I did like.
After thinking a lot, I came up with a way to use it. Since it was based on creating small stories within the game, it was also quite easy to limit the scope if needed: I simply wouldn't add more stories if time were short.
Planning
There are usually at least two mistakes to be made here: planning too much and planning too little.
This time, I decided to try and err for the excess. I spent the first 4-5 hours only planning the game. Since I had the idea of doing something that wasn't gameplay oriented, I didn't have to worry too much about getting a prototype done quickly. However, I really needed to know how it would play out, and if it would be actually feasible...
After all that time, I had a pretty good image of what the game was going to be and some rough ideas of how stuff could be implemented... I also used that time to mentally plan how the scope could be reduced if I ran out of time, which did happen!
Even though I had drawn sprites for more interactions, I decided to dump those in favor of polishing the little experience that I was building. I started actually adding the content that I had drawn/planned for the game around 4 hours before the end of the compo. That's the time that seemed necessary to add content and write the songs for the game.
Luckily it all worked out, but I only because I decided to drop stuff (and because I knew what to cut out).
tl;dr: Beware planning too much! Plan enough to be able to get through most of the jam without having to re-think the idea. Also, if possible, try to always know what can be cut if needed (and implemented that last).
Assets
I was able to draw an acceptable sprite in around 20 minutes, which I'm pretty proud of! However, I learned (was reminded, actually) that drawing is way harder than I remembered...
Usually, I impose pretty harsh contraints on my art. I only use a 32 colors palette, my sprites have to be small and fit within a power of two size, I try to avoid using lots of colors per sprite, sprites shouldn't have outlines... Those are fun stuff that may help you find creativity, but it can backfire.
This time, I didn't care that much about the size restriction, about outlining stuff nor about colors (though I did use that palette!). This helped me in drawing the environment, in making the sprites somewhat readable, and led to the fun fact that all hitboxes are somewhat displaced from their actual sprites.

But drawing an OK background is still too hard. I got pratice that more. Also, I have to learn to only do the most basic assets for the prototype/engine development.
tl;dr: Screw roofs! They are too damn hard to draw! (and background, in general)
The engine
I spent most of my time implementing the engine. I only had it somewhat finished and started to draw the final version of the tilemap 10 hours before the end of the compo.
I honestly don't know what to take from this. It kinda worked out, but I should try to make stuff simpler (so I may implement them more quickly).
I must say that I ran into few weird/funny bugs. It was almost smooth sailing... Except for that one time that I passed a pointer's address instead of its value. Debugging that was really fun.
Audio
I added audio, once again! I literally did it on the last hour... and it came out almost OK.
I have to go back to planning it while creating the engine, so integrating audio into the game is quicker. But it was somewhat OK... I don't know...
That's all
I don't know what else to say... and I'm almost out of characters! So it seems like a good time to stop. :)
Thanks for reading all that!