Last year, I participated in the dungeon crawler game jam and submitted Cosmic Delusion. If you follow this blog, I talked about it here. This was a nice experience and contributed to making me want to develop video games. The 2024 edition of this just finished, and I am proud to present you with Duat.

We made this with the team of last year, which shows nicely our individual progressions.

I will go over how it was developed. First, in this jam, you’re authorized to bring a boilerplate code for moving around. Since I was working on a crawler already, it was easy for me. I also wanted to see the robustness of my framework. I went then to strip it to all its functionalities and keep the movement and map generation only (which I regretted in part and we will see why). A couple weeks before the jam, I took time to piece up some little experiments, mostly with UI, animating stuff, and writing some pretty shaders. I didn’t get to use it in the end, but it was instrumental in giving me some ease later in the jam.

The day of the jam, the theme went, and at first I was really uninspired. Ruins seemed like a given given the genre, and solitude as well, lost in that claustrophobic and abandoned dungeon, with only monsters and traps. Endless/Infinite felt overdone, with the thousands of roguelike on the market, and cosmic horror, has been a genre explored to death in videogame history. (These are my feelings, they’re not fact. Both sell well, which means there is a demand and enthusiasm for those mechanics, themes, and stories).

I was pretty lost, but my partner in crime came up with an idea that tied them well together. In Egyptian mythology (but other many mythologies) the cycle of day and night is represented by a Sun God on a vehicle. It can be a boat, a car, or anything. Often, he goes to the underworld or loses a fight, to be reborn in the morning endlessly. In Egyptian Mythology, it’s Re/Ra who travels on his bark and fights Apophis. Apophis is the chaos or night God, a terrible Snake eating life and other gods. The plot would be about the 3 daughters of Re/Ra, Bastet, Hathor, and Sekhmet, terrible warriors, coming to take back their father from Apophis. Mechanically, I wanted to have enemies following you around relentlessly, breaking walls and never stopping once they get you. But I did not have time for that.

For this jam, I wanted to explore a more traditional JRPG system. It’s risky, knowing an important part of the community is more in love with grid dance combat, and has a dislike with random encounters, and menu-based gameplay. But I never programmed one, and it’s MY game, I get to make the rules. I first worked on the design and went to pick a color palette by googling “Egyptian color palette” like a dingus. I inspired myself heavily by the last Persona game, Persona 3 Reload, which, unlike Persona 5, uses simple shapes for its UI and transition, making it easier to dissect. Since it was Egyptian-themed, I abused the triangle shapes to remind me of pyramids at all times.

For the mechanics, I wanted the least possible stats possible, because in a jam you don’t get to see much difference. I went for Power, Defense, and Agility. Power doesn’t differentiate from physical or magickal attacks. Same for defense. Agility would determine your speed, and your hit-and-dodge chance, making it very important. I also had Constitution, which was a mistake since, 1 CON = 10 HP in my implementation. I could have ditched it for just giving 10 HP and be done. To resolve the combat, I proceeded with resolving it via dice checks: 2 times a stat + 2D6. This was simple to think about and correct.

After this, I implemented a system of random encounters, with a minimal amount of steps before the next encounter (it’s so fucking enerving to finish a combat and start a second one immediately). I mocked up some exploration UI and reused the combat component as a status bar because I’m lazy. I soon got the artist for the 3D models and the texture to give me something, and our game looked themed already!

During this jam I left my partner to design the level, using the tools I made. After some directions, she was able to be really independent with it, and it was great, because I had a lot of implementation to do. Remember when I said I started with something barebone? Well turns out, that dungeons are more interesting when there is text to read and buttons to push! Minimaps really help people to play! I went fast to reimplement all of this, and we had a skeleton of the first level.

During this time, Tutas, our texture/3D artist made textures for the UI and I animated it. I really had fun with little things like that.

I implemented skills next, inspiring myself from an RPG system of a game I adore Sequel: Blight ( a lewd game, I reviewed here). And when I say inspired, it’s a bit of ripping off, I just put my favorite skills from it in the game, adapted to my system. I really love the kind of problems it creates, skills with cooldown making it impossible to attack to your full potential, or turtle all the way, you have to make choices, because your buff expires and bosses hit like trucks. Although my system was barebone, I could see it already working.

My partner continued to design levels, and create the monsters and heroes for the cutscene and combat. It went really smoothly and removed a lot of work I usually do. Plus, she designed the monsters to be able to be recolored easily and it works extremely well, especially for a monster like the Golden Scarab in the second level. I asked for something crazy to Tutas, a 3D model of a giant serpent for the last level. And he did, painted a pretty texture and animated it. With such a beautiful snake I decided to give it the exposure it deserved and made it looming over the level. I also spent most of my Saturday, making a transition for the boss fight, breaking the usual grey lifeless background with the 3D model.

On this last day, I would also make a crucial addition to the game. Unfortunately, my music and SFX partners were unable to work on the game because of real-life commitments. Mechanical Ghost composed the track used on the title screen, and Elizardbeth, graciously accepted I reuse her SFX from last year’s jam. I’m very thankful to them. I completed by tracks I found in an asset pack from OVNI. While choosing the battle theme, I realized that most of the games in the genre have really hyped up music during the fight and decided to use this sort of epic metal. Let’s just say it’s not my cup of tea and I find it really cheesy, but it works so well. Sometimes, you just have to learn the obvious lessons.

I would also write quickly a bunch of events, that give life and break dungeon monotony. It’s such a shame that those narrative decisions come last, but when you’re on a time limit and you don’t know if you will deliver a game, you have to cut somewhere. I should probably get some writing help in the future, even though, I am really afraid of letting go of creative decisions and that its scope creeps a lot (I’m fairly good at talking myself down of dropping the story bit, but I don’t think I would be fairly good at doing that, pressed by a deadline, with someone else).

And just like this, it was released. People seem to enjoy it, even though, it’s barebone and it has a lot of shortcomings. One of my biggest mistakes seems to have crossed-out a way to see who you select. I was implementing and went like, well you don’t really need it in old wizardries and Final Fantasy, so you don’t need it here. I was wrong. Should have at least named the monsters by A, B, and C. People expect this in 2024. Same for the health bar. I’m very pleased that the feel of movement seems to be generally appreciated as I worked hard to emulate what I like in crawlers. I still have a lot to learn obviously. First, to not be so stressed about the mechanics, Second, to make people more comfortable to give suggestions. My partner was also immensely helpful during this edition, removing the weight of drawing levels, creating encounters and drawing them. But I feel better about this entry than the one of last year. I wonder if I will make another entry next year ?