I didn’t record a timelapse video but I wrote this post talking about the development of my Ludum Dare game The Monastery. This will be a rather lengthy story of the development process so find a comfortable position and have a cup of tea or coffee. I want to get this out of my system now that the horrors are still vividly in my brain!
The Monastery is a type of game I’ve wanted to make for some time. I happen to like old school games and one game in particular that I have fond childhood memories of is SSI’s Pool of Radiance from 1988. For those too young to remember, Pool of Radiance (or just POR to friends) is a fantasy roleplaying game that features tactical combat and resource management and was one of the first games to fully implement the complex Advanced Dungeons & Dragons rule system. I really liked the game then and even today the battle system and the setting is very good. Naturally POR inspired me to revisit the genre and make The Monastery.
From the get go the project was not smooth sailing. On Friday, a day before the compo, I woke up with fever. I had already cleared my calendar for the weekend and had been very pumped up for the compo the entire week so I cursed my bad luck. I had to stay the day in bed and decided to check how I felt on Saturday. Luckily I woke up on Saturday and the fever was gone. Phew! I checked the theme, which was Beneath the Surface. Well, at least it’s not Breaking the Rules or whatever. I began thinking about ideas, mainly background stories, that would fit the theme while eating breakfast and taking a shower. Initial ideas that popped in my head felt too easy: being underground or underwater. I decided to have a walk around the neighborhood while pondering more on the theme. Then suddenly I had a vision of a large frozen pond. Even though it was sunny and warm outside I dreamed of travelling in a frozen landscape passing by a large building… perhaps a wizard academy? No, too Harry Potterish. Let’s make it a monastery!
I got back home and started googling and I found the book Haunted Monastery by Robert van Gulik. It was some kind of eastern horror detective story which gave me some ideas. I started to think how to make the monastery an interesting place for a group of adventurers. The monastery should be an eerie place, maybe abandoned but not empty. There was a mystery that needed to be solved. And I needed monsters to fight… Undead Monks? Then I started thinking what bad things had happened in the monastery and how the monks had been transformed into horrible undeads. And what about the abbot? Why is he missing? Where is he?
I spent about 3 hours working on the setting and background story. It was already afternoon when I turned on my computer and was ready to start drawing the graphics. I hadn’t drawn any real graphics for a loong time so it took me a while to get accustomed to the software and the process. I used Aseprite, a tool which I had never used before, but to my delight it turned out to be a great tool for pixel graphics. I started by drawing the font and then proceeded to make the player sprites. I needed sprites for the player charcters, the Fighter, Cleric, Wizard and… I pondered on the fourth guy for a minute — of course, there had to be a fourth guy — before settling on the Ninja, which I thought was pretty funny. Then I realized that I wanted to have character creation in the game like in all proper RPGs so I made four variations for each character and separate standing sprite and attack sprite. That’s 32 tiles in total, but luckily the variations are only different coloring. (Those who have played the game may have noticed that character creation was a victim at the cutting table and the color variations are not used by the game.)
After the characters were done, I did the enemy sprites for about 10 different enemies. When they were done it was already about 6pm and I had a dinner break. I realized I didn’t have a single line of code written yet so I decided that I had to have at least something on the screen before I called it a day. So I started coding a turn-based battle system. I like the Lua programming language a lot and it was a no-brainer to use it for the project. I had made SDL bindings for Lua a couple of a days ago as preparation work for the compo. Starting from scratch when coding can be painful and no surprises there, I had some problems with Lua error messages and stacktraces not being shown properly. I had no time to tackle the issue properly so I carried on. In hindsight this probably was a mistake because I was suffering from some quirks with the codebase the entire weekend.
At the end of day 1, I had the basics of moving on the battlefield and attacking done, but all the fancy things like spells and stats were missing. But hey I could now move on the battlefield and kill monsters! And the monster could do some simple pathfinding my way too.
I woke up on Sunday feeling very worried. I had only 19 hours left and I didn’t have anything ready that resembled the game I had in my head yet. The remaining todo list was daunting: character creation, exploration mode, spell system, healing, items, winning condition, monster statistics, character statistics, dungeon props, intro, main menu, level design, scripted encounters, sounds, music, playtesting, packaging the game for release… I decided to somehow try not to think about it and just start working. But I felt that the mother of all crunches was ahead of me.
I decided to work first on the most crucial parts: exploration mode and encounters. Without them the game would not feel at all like those good RPGs of old. I first considered whether I should make a random level generator but I thought that tuning it would be slower than just drawing a few levels by hand. So I grabbed a sheet of graph paper and started doodling and writing down names and purposes of rooms: entrance hall, storage, dining room, kitchen, lavatory… Upstairs: bedrooms, library… a ritual room! I tried to imagine myself walking in the monastery and thinking what I would need if I was living there. Then I started writing room descriptions and notes that the monks had left behind. I thought about the frozen pond and what has buried beneath its surface. The notes would be crucial in telling the story that I had in mind.
I quickly wrote a system for describing the levels and rooms in Lua. I made a simple encounter system, which was essentially as simple as an anonymous function called per room. The function would be called when the player entered the room. The function would print room description to the screen but could also execute any Lua code for triggering battles, placing items on the map and so on. Later the system would be extended to handle searching the rooms.
When I had the levels and rooms done the clock was already 3pm. Then real desperation struck me. Only 12 hours left and the game had huge gaping holes, important pieces missing everywhere. I really thought more than twice about quitting. I felt that it was impossible to do what I wanted in the remaining time. Besides I needed at least an hour, preferably three to playtest and polish the game at the end. That meant less than 10 hours to implement all the features. Quitting was tempting… But failure was not an option! I had already publicly announced that I would do this game. Damnit! I bit my lip and started furiously coding, banging the keyboard like a madman (my spouse was getting really worried at this point).
I only stopped a few times, a minute or two at a time to catch fresh air or eat a sandwitch quickly. During the coding marathon I consumed several litres of juice and soft drinks. Feature by feature I went through the list, working always on what seemed the highest priority thing. The order was roughly: winning the game, character stats, monster stats, key items, dungeon props (doors, stairs, etc.) and spells. 9 hours later, at midnight local time and four hours before the deadline I finally had a working game. There was still work to do but I was now feeling confident that I could do this. The main menu, sounds and music were created only about two hours before the deadline. I used the excellent BXFR for the sounds and cgMusic for generating the theme music.
Less than two hours left, it was time to start testing and polishing. I was very exhausted from coding and luckily I got some testing help from my brother Erik, who kindly stayed awake late and tirelessly played the game even though he had to go to his studies the next day. Thank you Erik, without your help The Monastery would be much less balanced.
I kept on tweaked the game till the last minute. The last feature, casting healing spells outside of combat, also requested by Erik, was added just about 15 minutes before the deadline! I was nervous about making changes so late and so tired. I quickly packaged the game and submitted it only a couple of minutes before the deadline. I did not have time to play through the game fully before submission. I had only tested the encounters in isolation and made balancing tweaks “blindly” by following Erik’s advice such as “take 1-2 skeletons from this encounter”, “reduce hp of spiders by a few points”, etc.
Now that the game was submitted I finally had time to play it myself. My head hurt from all the coding, I had been coding 19 hours nonstop. My neck was about to cramp and even the muscles in my face were hurting. But it did not stop me from enjoying the game — I think this was the first time playing my own game just after release and it did not feel exhausting. I played through the first floor and the game felt pretty good. Completed the second floor as well. Then the ultimate end fight — hard as a coffin nail just as it should be! I just barely survived it with two of my guys dead and the remaining two barely alive with 2 or 3 hp and no spells left. It had taken me about half an hour to play through the game. I was happy, I was relieved. I was dead tired! Satisfied I went to bed.
End of story. Or is it? After working so hard on The Monastery, I would really, really like to hear what you think about it. I certainly hope you enjoy it, especially if you like tactical RPGs but I can also take brutal honest feedback. I know there are things that could be improved — the UI could use some streamlining. In fact I’m considering making an updated version. Even if you do not like the game, then I hope it at least stands out from the crowd like a relic from a strange forgotten age!
Petri signing off.