Game jam postmortem


Now that the game jam has concluded and I'm no longer rushing against the clock, I've given a bit more attention to some things that were broken in the original release.  Most importantly, I've added in fuel that you can pickup across the map!  That was planned for the original release, but spawning clumps of items was one of the last things I worked on before the deadline, and somehow during it I managed to introduce a bug that was preventing the exported games from running at all.  Rather than risk going over the deadline, I reverted back to the last working copy and pushed whatever I could find that still worked on export.  Naturally, once I looked again after the submission deadline passed, that bug no longer seemed to exist at all.

Another big "fix" is the terrain flickering!  The problem still never happens in the Windows build (at least to me), but apparently affected everyone in the HTML5 version.  I didn't actually fix the bug itself (at least not yet), but I did find a workaround that completely hides the issue.  After trying a bunch of weird hacks in the shader like trying to manually flip any normals that looked upsidedown or facing away from the player, and trying out every visualization I could think of so I could figure out even where the problem was happening, I discovered that all the textures for the terrain heightmap were reaching the shader fine; only a couple uniform matrices were being corrupted.  Since those matrices never changed at all during gameplay, I hardcoded their values into the shader itself.  All the WebGL errors still keep filling the console, but you wouldn't notice unless you actually went in and checked for them.

Overall though, I learned a lot from this game jam!  One of the bigger things being that it was a terrible idea to try and learn Godot as part of a jam.  I mean, before the jam started I'd read through the whole "Getting Started" section of the Godot manual, and had thrown together a small scene with a room and a hallway complete with cube maps and reflection probes setup throughout it, and written a player controller script so I could walk around.  And I have loads of previous 3D programming experience at all sorts of levels from all kinds of previous projects, and have even finally started learning how to use Blender and make some convincing renders with it.  But despite those headstarts, putting together an actually complete game in an unfamiliar engine turned out to be way more complicated than I was expecting.  At times it felt like I was running into every possible edge case, and generally getting more things wrong than right.

After spending the first two days on generating some placeholder terrain and trying to get it imported, and the next two on just modelling the bike, I was starting to realise I'd massively overestimated how much I'd be able to accomplish within the timelimit.  Despite that, I still wasted a lot of effort on things that would be completely invisible to most everyone.  Making the initial asset loader support multi-threading was definitely a mistake, and the resulting code is complete garbage.  Being able to change graphics settings on the fly while the game is still running is nice, but I doubt it earned me many points.  Robust code to make sure that when you leave the bike, you spawn in 1. roughly where you got on from 2. but above the terrain, 3. while still next to the bike, 4. with nothing in-between and 5. no other objects clipping in to your spawn point, while I'm personally proud of the result, was also wasted effort, especially when I never got as far as adding buildings whose walls you might clip through when dismounting the bike. Just checking if you fell out of the world would've been enough. The fancy world border that has an animated texture and slides around to block you from falling out the map, and also reads the terrain height so it can keep some text legible when you walk up to it was also wasted time that could've been spent actually making the game itself.

I also learned just how important the HTML5 builds are.  I knew going in that it would be my first impression for most people, and I don't regret the time I spent figuring out how to make the game not look like it'd locked up during loading there, and giving lots of feedback on its progress.  On the other hand, I didn't realise that for most people, it'd also be their only impression.  At first with the HTML5 build I was having trouble getting the terrain to be visible at all, and when I did manage to get it somewhat visible I figured it was good enough and left it as it was.  In my mind, I figured people would see the glitches and assume they were HTML5-specific and either ignore them or grab the desktop build (if they were on Windows, anyway).

By far though, the most important thing I learned is that I can do it!  If that sounds cheesy, that's probably because it is, but it's true.  I entered this jam because while I've spent loads of my life building up the various skillsets I'd need to make games, up until now the idea of actually making a real game has always been something that I figured that I'd just get around to one distant day.  I've got loads of demos and proofs-of-concepts of all sorts, and even a few smaller game ideas that I've started throwing together before I abandoned them, but until now I've never made anything that I would call an actual game, much less anything that I'd have really felt comfortable posting publicly.  With this milestone out of the way though, it'll be that much harder for my self-doubt to convince me that I can't make a game again.

Files

BMX 20XX v1.1 HTML5.zip Play in browser
Dec 07, 2021
BMX 20XX v1.1 Windows.zip 104 MB
Dec 07, 2021
BMX 20XX v1.1 Linux (UNTESTED).zip 106 MB
Dec 07, 2021
BMX 20XX v1.1 MacOS (UNTESTED).zip 121 MB
Dec 07, 2021

Get BMX 20XX

Leave a comment

Log in with itch.io to leave a comment.