Yet another Ludum Dare event was around, and I found time to participate this time again (this time it is actually 10th Ludum Dare I've participated in so far). So, first of all - if you are interested, just roll down the post and play the game.
Short gameplay video:
Fig. 01 - A short gameplay video.
What went right?
This time around, we have decided to dive into the wonderful world of procedural generation quite fast, the actual work on the game started early saturday morning. Being heavily inspired by Angband, the decision was clear - our dungeon levels must be generated.
Procedural generation of such dungeons is not really that hard, I have started off with simple algorithm and worked from there:
- Generate a 2D axis-aligned BSP tree, randomly terminating after at most N levels or when criteria is met
- Shrink rooms represented by leaves of the BSP tree
- Make connections in bottom-up order (first between leaves, then between interior nodes and leaves - picking always the closest room to the currently processed one).
The results were quite promising, producing blocktober worthy images like:
Fig. 02 - Randomly generated dungeon level
At this stage entrance and exit were placed, followed by the monsters and power ups which you can pick up in the dungeon. The last thing to solve in level design were first and last level. Although as our levels during the generation phase are defined as byte arrays (containing actual chars defining what is on given tile) we simply used file and injected it into the process. Our first level looks like this:
### ###X### #.#...# #....## ##....# #...#.# #######
- # - represents wall
- . - represents empty space
- X - represents exit out of the level
Apart from actual procedural generation, the development went quite smooth. I enjoyed making a non-realistic cartoon-ish models, and skeletal animation enabled just for the character hands. The models ended up being quite cute in the end:
Fig. 03 - Mushroom in Unity engine editor, version without hands
The game mechanics also overall felt quite comfortable (as I'd say finished enough to be playable), compared to some of my previous entries. Picking a smaller scope game definitely played in favor of this.
What went wrong?
As usual, time. Each game jam (and it doesn't matter whether it is Ludum Dare or anything else), it comes to the point where you have to start cutting features out to make it on time. Because at the end of the day for game jam, you either finish a game or you don't.
We had to cut out various features that would make the game a LOT better, but most important of those was audio.
Sound effects and music tend to improve the atmosphere a lot - or to be precise - it is one of the most underestimated feature of the game, with which atmosphere rises or completely falls. Due to our time constraints we ended up completely without audio in the game.
User Interface, second item we left for the last moment of development was user interface, and we ended up having it very simple. While being informational enough for the game, making it graphically more attractive would improve the gameplay a lot (compared to having just default text giving you all the information you need).
Next time around, I'd like to dedicate at least few hours on these two topics, even sacrificing some of the visual effects or details in world generation, to increase atmosphere of the game with audio and UI.
As said, this was 10th Ludum Dare for me, and I have enjoyed working on it very much. I'm quite satisfied with the game we have ended up with. For the next time, assuming I would have a free weekend, I'd like to participate again.
Also, if any of you (who read this article) have participated in Ludum Dare, and would like me to play your game - please leave a comment here, and I will definitely play your game during the following weeks.
So, for curious ones (I'm intentionally leaving just Itch.io link to the game, as I never know when I will remove it from the server - that would make the link inactive):
Source code is available at: GitHub
Game is available at: Itch.io
Ludum Dare page is at: LDJAM