Hey all! I had a great time this weekend participating in the 2nd Alakajam! I worked on the entry “Munch Uprising,” which I’ll link to at the end of this post, as the programmer and artist with my friend horizontale, who did the lovely music and sound effects! Being from the US’s East Coast, the Jam for us started at 2 PM, giving us ~24-26 hours of awake time to work on the game, as we were both unavailable Sunday morning. This post will serve as the postmortem from my side of the development, and horizontale may or may not post his own postmortem with his own experiences this weekend. With that out of the way, let’s begin!
Tools Used
So, sticking to what I had said I'd use in my joining post, the tools I used were Godot 3.0 for the engine and Aseprite for the artwork. The game was programmed in Godot's native language, GDScript, which I fell in love with after messing around with Godot for the past week or so.
Game Idea and Design
So about ten seconds before the jam starts, horizontale calls me since he got off of work early to do the jam the whole weekend. And, lo and behold, the jam's winning theme was The Last One! Hooray! That was the one I voted for at number one! But, wait, it wasn't. The theme actually turned out to be You Can't See Everything, which, for reference, was #8 on my voted-for list. So that was a good fake-out, I suppose haha. I got out a whiteboard and over the course of the next hour, horizontale and I workshopped different ideas. His first idea was to take the old Pokemon cave sequences where you don't have Flash and turn it into good gameplay. Others he and I came up with included not being able to see anything except the enemies and yourself, and different music notes are played based on where they and you walk. Eventually, we settled on the idea of being able to switch between multiple worlds, building "meter" on one world and using it up in another. If the meter reached either extreme -- completely full or completely empty -- the player would die and you'd restart the level. We felt we had a pretty good base, and after deciding on a style of "vaguely cartoony" we got to work on our respective areas.
The Artwork
Gonna get this out of the way here. I spent probably too much time on the artwork, but I have a good reason: I thought I'd be using most of what I made! I get really into making art for things, and the concept of having the worlds be different colors intrigued me enough that, when I hit a block in the programming, I'd boot up Aseprite and go to town on those tilesets. To give you an idea of the stuff that wasn't used, there are two working tilesets in the game: A gray one, and an orange one. However, there were two other tilesets that weren't used, that were basically the same except in neon blue and neon pink. I wanted to lean heavily into the "drab grayscale" vs "vibrant neon" colors. That said, I liked the orange one the most and the fact that it was put in first is the only reason the other two didn't make the final cut. There were also enemies planned to be put into the game, so I also did some work making a couple of enemies, because surely that won't be too difficult right?
Well.
Let's just say there are two enemies in the same four sets of colors, as well as a set of spikes in each color that did not make the final cut. But we'll get there.
The Music and Sound Effects
Honestly, I can't praise the music horizontale did enough. In my opinion they do a LOT of work to make the game what it is. The title theme, especially. I had that on in the background as I was programming the game and it really helped put me in the mood for it. Another plus was getting to hear him record sound effects while we were in a call together on Discord. It was silent for a bit, and all I heard was "Woo! Yeah! Jump! Whee! Whoo! Woohoo!" He then pitched up those samples and sent them to me, and one of those is the jump sound in the game!
Wonky Programming
Now, I'm going to say this up front. As far as I'm aware nearly 100% of the problems I had this weekend getting things to work was because of my inexperience with Godot. Sure, there were a couple of bugs in the engine itself that I was bothered by on occasion, but my inexperience with the engine really limited what the game became and ate up portions of time that, unfortunately, I did not get back. Not that this is a bad thing! When you're working on a game jam, every single thing that happens is a learning process, especially when it's your first game jam like mine. You may not be able to do what you wanted to, or something may not work right with how you've programmed something, and that is perfectly okay. Because guess what? You made a game! You did a thing that not many people can say they've done. And next time, you'll do even better!
That got…wierdly inspirational. Anyway, I had a lot of difficulty trying to get enemies coded in properly. After I spent a couple of hours with no luck, I switched gears and tried just having spikes that damaged the player and, while I could get collision working properly, for some reason they would not activate the player's kill state. Thankfully I was able to get some manner of death programmed in, which is what happens when you switch into a world and a wall entity is in the same space as you. Horizontale thought that death sound effect might be a bit too close to the DDR track ending sound but I think it works, since the music also stops abruptly.
The 2nd Alakajam was a ton of fun, and I'll certainly be joining in for the 3rd Alakajam (and, potentially, maybe the next Kajam as well!). I may potentially try to rebuild the game from the ground up in the coming weeks so I'll keep y'all updated if that happens! I don't think I'm done with this project just yet!
Thanks for reading! If you'd like to check out our game, you can do so here. Once again it was a great time doing this for the weekend, and I cannot wait for the next Alakajam! See y'all soon!