Posted October 07, 2024 by Dragonforge Development
#postmortem #gamedev #godot
I thought about joining Micro Jam 024: Wind, but couldn't figure out anything I wanted to make. What I really wanted to work on was learning how to use TileMapLayers in Godot. This past week I have been learning how to do procedural map generation with TileMapLayers. I got Jamie Brownhill's World of Solaria Complete Bundle. I love the art. One of the things I like is the seasons, and I really wanted to figure out how to swap tiles out programmatically. I decided that, and playing with Dialogic were what I really wanted to do.
Saturday I was talking to a friend, and I mentioned the game jam, and that I had decided not to do it. He encouraged me to create the crappiest game I could that met the requirements anyway. So I went home and thought about it. This was a 48-hour game jam, and I had already missed the first 20 hours. But, I decided he was right. Completing a game on a deadline would help me. I've read a lot about the benefits of submitting to game jams. It was also a chance to work on a 2D game. So far I've been mainly working in 3D.
I then spent the next 24 hours playing with tile swapping. I had it working great, made some tweaks, and introduced a bug. But I had a little more than 4 hours left and had nothing else. I still needed to make a character, add controls, have a win condition, add music and sound effects, add a story and control info.
Godot has some bootstrap code for creating characters, and I had an example I'd downloaded that allowed me to learn how to add sprites, animate them, and cram them into a controller. I'd done this before in 3D, and while there were a few gotchas, after half an hour I had a working character. I attached my camera to him, and was ready to move on.
I was worried about export and having issues, so I decided to stop, create my page, and upload the game. I was really disappointed when I found out I had accidentally deleted a batch file tool I made for popping up a test webserver - from TWO different places! So, I couldn't test my web export before upload. This was a bummer, but I didn't have time. I launched the game and made it live. Another 30 minutes down.
Next I installed Dialogic. I had a story - kinda - but I needed Zeus to give some exposition. I found a crappy free pixel art version of him online and used that as a portrait. Then, I tried using a sprite sheet for Aeolus' portrait. After a few wrong turns trying to use that, I opened up Paint, cropped it to one picture, and threw that in. Luckily the tutorial showed me how to add in code, and I got that running.
I decided that a bag would be what the East Wind was kept in, because in the Illiad, Aeolus traps the winds in a bag. I quickly created a sprite and added some collision code that could run a second conversation. I added that second conversation, and used another cropped sprite sheet for his character. They were literally butting heads, but at this point I didn't have time to deal with Dialogic. I was another 30 minutes down.
Next up was music. I have a ton from ELV Games and Ovani Sound that I love, but I just wanted a few songs. (BTW, if you want music, ELV has the Fantasy Fanfare Bundle that is so worth the money. Also, Ovani has AMAZING Humble Bundle promotions, and if you get on their mailing list, they have really great weekly deals on sound effects, plus FREE weekly sound effects.) I load all my game music into WinAmp. I rate it, and I use the Genre column to fill in what I think the music would be good for. So I loaded up all 123 albums of game music, organized by genre, and quickly found some songs that fit.
I created a nice little Sounds singleton for my other games that I used, but the other day I "upgraded" it. I made it so music is actually loaded in resources that contain the Song Title, Artist, Album Name, and Album Link. I love sharing great music and where I got it. However, loading this information in is manual currently, and I didn't have time. So I had to do it quick-and-dirty. I exported variables for the 5 songs I picked, and then just tied each one to an event or button-press (the three winds). Easy peasy lemon-squeazy.
Now I just have some sound effects. In one of the many Ovani deals, I got an entire pack of over one hundred Air Sound FX. So, I trawled through it, listening until I found a few sounds for each action press. I hooked those up to a second AuioStreamPlayer using a third SFX bus. At this point I played the game again, and I wanted to claw my eyes out because the music was so loud. I didn't have time to make a volume slider, or a menu really, so lowered it manually in the editor for the Music bus and moved on.
With sound and dialog in, it was time for another upload. Now at least it was a little more than a weather changing app for a fantasy town. That export went well, and I was feeling better about my submission. However, there was NO collision detection in the entire game. You could walk anywhere. I spent all my time and effort coding tile-swapping using three different methods bade on 9 layers of tiles. But you could walk anywhere, even on water. I'd always envisioned that the seasons would be puzzles, and one would be you could walk on water when it was frozen. (Thank you, Zelda: Oracle of Seasons). I actually spent time last night find vines for spring/summer and coming up with obstacles for each season. But I spent all my time on season switching.
So, with 45 minutes to go, I started adding collision detection. Another friend called and is having a bit of a crisis, so I'm talking with him while I'd adding collisions to tile maps. I made it so you couldn't walk out onto the water, but could on the ice. That done, you at least had to do one puzzle to get to the end of the game. I only had about 30 minutes left, and there was basically one house on the screen. I decided making the game look more interesting was better than a blank slate. After all, I had done all that tile-swapping code, and it (mostly) worked! A little decorating, and the last 15 minutes were spent uploading my final version.
I played every single one of the other 32 entries in this game jam. I found some new resources. I learned half the people don't put much information on their submission pages - often no screenshots. There were a few that were fun. My game came out pretty close to the bottom in my opinion, but I learned what makes a good game in a 48-hour jam - and where the bar for the future. My game will be better next time.