Maze Crawler Post Mortem
So… The LD40 is now over… I got some beauty sleep and now it’s time to recap my experience.
First of all - I think I finally got the hang of “Subtractive design”. In the initial idea the maze was supposed to be filled by monsters, that are mostly dormant initially, but wake up as you collect more keys so as you collect keys you have to fight through increasing amount of enemies. This also implied combat. And Health system. And potential for game-over… But as I was laying out the assets I need prepared for the game in order of priority I realized that all this combat and enemies and their AI is optional. As the maze would get increasingly harder to navigate if the passages get gradually blocked.
Second - I am still bad at estimating my time. The one core asset that I needed for this idea to work was a constructor script that would plan the Maze and plot the blockage in such a way that even if all the blockages are active, there is still a path to reach the final destination for any key. Eventually I managed to pull this off, but it didn’t only take circa 5 hours to build the algorithm, but it also took about the same time to optimize it so that path-sutting is done in matter of seconds (instead of looking like I added an infinite loop somewhere). As the result, I only got the functional prototype with one level and placeholder graphics mid-Sunday instead of mid-Saturday. And the obvious result - not nearly enough time to make optional assets. And faced with this time-deficit I should have rearranged asset by time required rather than importance, and focused more on stuff I had a clue how to make (like polishing environmental graphics, setting up torches as light sources, basic sounds) instead of sinking all the time I have into animating the player model. Though a big part of this priority allocation was that my son wanted to see “the Knight” walking. After all the model was based on his drawing. Anyway - the model is there among the assets downloadable with sourcecode. It is a blender file if you are interested.
Lastly - itch.io HATES me. I don’t know why. The first time I wanted to publish my LD entry there it glitched denying access from my IP for several days - up to the point of me being unable to download games from itch.io. This time it refused my credentials and said that it doesn’t have a record associated with either of my emails. And at the same time it stated that my username is still locked. I will contact the support team to sort this out, but for now it’s publishing on Google Drive… again.
Now some short bullet point:
What ended up missing in the game
- The protagonist model. - I could’ve at least put it in T-pose into the game instead of the capsule… but I only got this idea now.
- Sounds - Not even basic sound effects of keys collection, and “Whooshing” of the flames. And definitely no music… :( I even disabled the sound ratings…
- Floor/Wall variations. - I had planned some environmental details - like some unobstructing debris, spiderwebs, wall-torches and chandeliers to be added to some of the tiles to add variations. Also to have 2-3 different templates for walls and floor cobblestone placements to randomize them a bit and make tiles less-obviously-repeating. And to have 3 types of blockages - Collapsed tunnels, and metal bars in addition to “Flame wall” made of particles. ((And in hindsight I should’ve added size-by-lifetime on particles as well…))
- Keys and Exit models. - I only realized this as I was rushing to publish what I had, but I never actually made a pretty graphic for the keys and Exit as well. The exit was supposed to be stairwell going upwards and “keys” were supposed to be gems…
- Combat and Enemies. - I know all of you wanted to whack things in the dark dungeon, but… maybe next time. :)
What went well
- Map generation - I really like how the map generation was implemented. The script uses a pixel map where white is the background, and black pixels are rooms and passages. Anything that is 1 pixel wide is a passage. All intersections, dead-ends and larger volumes are room. Also you can add colored dots for start position (green), exit position(blue) and key placements(red) but those are optional. If you don’t state them the generator will randomly scatter the items. And it will them assign some of the passages to be blocked, randomly choosing on which key count it will trigger. One option to improve the algorithm would be to assign some passages to be blocked on count =0 and drop them from layout initially so the mazes from the same layout map will end up slightly different. And this offloading most of level generation to script allow to easily add more potential layouts to the game (more levels) and even potentially read the layout maps from external file allowing players to mod in more layouts!
- Floor Graphics - I found this kind of neat way to make cobblestones and I like them. And it didn’t take much time!
- Player Model - I know that it didn’t make it into the game, but I still glad how the model turned out. If only I could make animations in time…
What went poorly
- Working environment. - I knew that it would be harder to work while family is around. And it’s not like I mind having a board game evening for a break, or having my son as an early playtester, but it did take a sizable chunk of my time.
- Map Generation - Yes. I know I listed it as “went well”, but this was related to the end result. It was really good. But the process of creation, testing and optimization, were a hell of a mess. And the worse part - I figured out what more could be optimized in this script. But I still think that optimizing this pathfinder from iterating around 200k routes down to slightly below 20k was a hell of an task. And I still had to put a loading bar on the process to show that the game is not stuck. ((On a sidenote - putting label on the progress bar helped to figure out what tasks needed more optimization!))
- Animation pipeline - Honestly - I did create animations for the character. Idle cycle. Walk forward and run forward. But they were kind of poop. At first the Root movement didn’t get added to Walk/Run animations. Then some movement got baked into Idle animation. And the result looked terrible. You can find this horror in the assets. By the end of the process I figured out some workflow that yielded some bearable result for walk cycle, but it was like an hour before the deadline, so I switched to other tasks.
- Game Menu - It is functional at best. But it is ugly as heck... Though... it was just a placeholder...
Overall this LD was a really fun experience. And I do see my improvement across my entries. (Woot!) but I still have miles to go before my gamedev skill will catch up to my imagination… if they ever will.
I do believe that this game deserves a post-LD version to be added. ((And maybe add combat back in and turn it into a roguelike…))
Source: ldjam.com archive