tl;dr: I made a little game for the Ludum Dare 51 game jam a couple weeks ago! (The gameplay is bad, but the music is great!)
- Play the game!
- Watch a gameplay video!
- See my submission ratings!
- Checkout the source code!
- Listen to the music!
🏹 Lead the village the defend against relentless waves of monsters!
The game jam
The theme: "Every 10 seconds"
Ludum Dare is a semi-annual event where people create a game over the weekend.
- Ludum Dare is a ranked competition, with a clever voting system that gets more eyes on your game when you in turn rate other games.
- There are a few different tracks you can participate in; I usually do the more-challenging "Compo" track, where you must create all your own art, music, sounds, etc. from scratch, work by yourself, and finish within 48 hours.
- The games all follow some central theme, which is only announced at the start of the jam.
I worked solo and created everything during the event (the Compo track). Except of course for my frameworks (which is fine, you're allowed to use pre-existing code).
What went well
- Success! I submitted something!
- Famistudio is a cool tool, and I made some cool music!
- It's a music tracker for NES chiptunes.
- It's technically a little more limited than what I've used before, since Deflemask can also make tracks for other systems like Sega Genesis.
- But the UI is both more powerful and more polished in FamiStudio, and I think I'll be able to be a lot more productive in it (eventually!).
- I'm happy with how my ballistic trajectory calculations turned out.
- It was very satisfying when arrows and rocks finally started flying!
- My Scaffolder, Surfacer, and Surface Tiler frameworks worked well again!
- These let me focus on the fun gameplay elements without spending a ton of time on less-interesting, repetitive tasks like GUI creation and basic character-controller logic.
- I do need to figure out some better ways to improve the performance of my AI navigation in Surfacer at some point though.
- My pixel art isn't very good, but I'm at least really happy with it considering how much I did with as little time as I gave to it.
What could have gone better
- The biggest high-level issue is that I didn't budget my time well.
- I spent too much time at the start getting set up with more infrastructure than I had time to use!
- Radial menus
- A powerful AI command system
- A description and label system for entities and commands
- A system for upgrading through various tiers of friendly AI, enemies, and buildings
- A currency/cost system
- Not enough time to focus on the actual gameplay:
- I pretty reliably find that I can make a game idea fun to play if I just dedicate a decent amount of time for playtesting.
- I definitely did not spend much time playtesting during this jam.
- Consequently, the game isn't very fun!
- It's not balanced.
- It's not clear how to command units, or even what you're supposed to do.
- Not enough time to fix performance:
- The framerate drops a lot after you play for a couple minutes and there are more units in the level.
- I could have fixed this with more unit-upgrades that replace pre-existing units, rather than just adding more units.
- I also probably could have improved this by adjusting the parameters of my platform graph calculations.
- I should have done more testing on another device that isn't my very-powerful gaming desktop.
- Not enough time for art:
- No animations (except for a super-simple one-pixel up-down bob)
- Not enough polish on my tileset
- Not enough polish on the background
- Not enough polish on buildings
- No particle effects
- Too much time spent on music:
- This was mostly because I was using a new tracker tool, FamiStudio. Now that I'm familiar with the tool, it should take me much less time to create music with it.
- Also, my main piece of music uses a way-too-complicated "complex time signature", 10/8 (3+3+2+2 or "buh-gi-duh, buh-gi-duh, bum, bum"), and this definitely made it take longer to write!
- But it was really fun to write, and I really like the music I made!
- Not enough time for sound effects:
- I think I only included a jump and impact sound effect at the very last minute.
- A couple game-breaking bugs:
- I needed to release a couple updates to my submission, to fix game-breaking bugs.
- I guess this happens when you don't give yourself enough time to playtest!
- Oh well. Ludum Dare does allow for post-submission bug fixes as long as they aren't adding any new gameplay, and are just fixing critical errors.
- I was able to push a fix the next day. I think a couple folks tried the broken version before I'd fixed it, but oh well!
- Bug 1:
- I'm still not sure of the underlying cause of the bug. It was something to do with how I handle the AI walking along a surface and hitting an adjacent wall. I was able to at least identify a boolean value that looked suspicious when the crash occurs, and I just force the AI to stop moving in that case.
- Not a great fix, but much better than the game crashing!
- Bug 2:
- The level simply wouldn’t load in the Windows export. This was caused by a typo in a filename. For some reason, Godot didn’t choke on the invalid filename when running through the editor or in the HTML export.
What reviewers are saying
- "Best music I’ve heard so far on this jam. Nice pixel art as well!"
- "I liked the audio and especially the graphics, the transitions and UI were very well done."
- "Here for the music and the pixel art :D That chiptune is getting me nostalgic!"
- "The game got quite laggy towards the end though as other people have mentioned and there seemed to be some features missing, I assume you originally intended for more buildings to be buildable for example."
- "Overall, I think this game has a lot of nice visual and audio work, and has some pretty cool mechanics (pathfinding, and a combat system with a variety of viable combat strategies!), but is in its current state hindered by lag."
- "Unfortunately this became pretty much unplayable for me due to performance issues and stuttering."