Cloud 57 Post Mortem
Ideas
As always in the LD, I jotted down a few ideas I had after seeing the theme. Like pretty much everyone I think my first ideas revolved around digging:
- A roguelite sort of like Spelunky, a sort of sidescroller with RPG elements that took place underground.
- An underground colony sim. colony sims are one of my favorite genres, and I've always wanted to make one for the LD.
In the end, I abandoned idea #1 as it seemed too obvious, and an underground strategy game was too similar to my previous entry Underminers Inc.
My third idea was some kind of space game involving a cloud... or asteroid field... or something. Originally I imagined a FTL-like real-time with pause type game, but in the end I decided it wouldn't be all that fun. From there it was a simple matter of paring down my ideas (my original idea had jump points and other complex stuff).
Development
What Went Well
The gameplay (mostly)I'm fairly happy with how the gameplay turned out. The different ways the enemies interact is interesting (in my opinion, anyway).
The MusicIn the past I've used all sorts of strategies for generating music for my LD games. In every game prior to LD47 I used the result of a music generator. In LD47 I directly composed the music on my keyboard. For this LD, I used a combination of generated music using Abundant Music and custom made segments in LMMS, and I'm pretty happy with how it turned out. I think I'll do this again next time.
Babylon.js' Graphics SystemBabylon.js graphics worked out quite well, with few surprises, although it certainly helped that I'd used it in LD47. I did notice that performance in Chrome was much better than Firefox. I'm not completely sure why. In the past it's seemed like they're pretty comparable.
What Didn't Go Well
The BugsI probably should have been a little more careful in testing. In the end I fixed most of the critical bugs, but some I mostly found through chance: * Due to the collision issues mentioned below, shots would simply damage the nearest hostile object when they hit anything. This led to a funny bug where the shots could hit eachother, damaging the boss. This made the boss pretty easy to beat. * There was a bug where old ships from your previous lives would hang around, and when you pressed "fire missile" these "ghost ships" would all launch as well, causing a huge storm of missiles. This was caused by me not disconnecting the input callbacks when a player ship was destroyed. * There was a bug where the boss would despawn if you ran away immediately, causing an instant win.
Babylon.js' Physics SystemBabylon.js is primarily a graphics library so its physics support can be a little iffy. The collision callback system is a bit hard to use, so I had to add some hacks that sort of caused one of the bugs I mention below.
It also supports collision filtering, but I wasn't able to get it to work properly. In the end I simply adopted a very simple approach where shots would always spawn outside things to prevent the possibility of self-collision, and couldn't collide with other shots.
Finally, there's a bug where imported glTF files don't have their transformations applied correctly. In the end the fix here was pretty easy: I just applied the transformations in Blender.
Difficulty BalancingI spent quite awhile tuning the difficulty, but this is always hard to do in a solo event like this. For me, this is basically how the difficulty levels work:
- Easy - So trivial I can beat it without having to dodge.
- Medium - Trivial as long as I remember to dodge.
- Hard - Hard enough that I have to stay on my toes, but I can beat it on the first try.
- Impossible - I can beat it but only after a bunch of tries.
However, it sounds like this is one of those cases where I got sort of good at it due to hours of testing, so the difficulties are too high. I'll just have to remember this for next time.
Conclusion
That's about it for Cloud 57. Play it here.