7DRL submission: Incomplete and unplayable


Hi I'm Navax, I'm a developer in some part of Europe. I have always wanted to write a game and I have special interests in ASCII/tiles roguelikes (It fascinates how they shine with their complexity beside their lack of graphics).

I sign up for the 2022 7DRL 1 month ahead as an excuse to finally write a game. I have an idea about what kind of game I wanted to do and I started making mock-ups and design documents. I have little time due my work so I couldn't invest much of my time on it but I have some foundations. The thing is, few days before the Jam  I noticed that there already were games very similar to what I wanted to do, so I radially changed my approach (with the given consequences)

My girlfriend suggested to do a 911 kind of game where you manage firefighters, paramedics, police officers, soldiers etc...
For the 7DRL I wanted to focus just on the Fire Fighting part were you extinguish the fire and get the civilians out of there. The turns would be manage in a XCOM fashion (You move all the characters on your turn, then the environment and AI moves).

First difficulty I faced was my inexperience in the field. I don't work as a software developer and this is the first game I made so I'm not used to the tools and design patterns . I was partially familiar with libtcod because I did part of the python tutorial long time ago so I decided to go with that (but in C++ since I wanted a base that could give me performance). It was ok at first but I started to found limitations as I was progressing in the project and the poor documentation due the major changes made in the library during the last few years didn't help. I also decided to use EnTT for the entity-component patters. It was easy to use but that require me to take a good look at their crash course before I could use it correctly

My first target was the map generation. My idea was to have a skyscraper full of civilians trap inside due the fire. The layout was simple, there is a hall in the middle and the rest of the floor are rooms. These rooms are generated using libtcod BSP trees and assigned in round-robin fashion to flats (groups of rooms that have a connection to the hall).  After that, the generator connect all the rooms and it start trying to remove links until the configured connectivity is achieve or we can't remove more links without having rooms unconnected. The number of rooms, building size, rooms connectivity can be configured through a TOML file which makes it pretty reusable. Now that I written  sounds simple, but I'm not used to do this things an it took me 3 days to came out to this and get it working.

With this done I could start with room generation and entities (Day 4). I defined kinds of rooms (living room, bathroom, ...) and assigned a bunch of objects to each other. The map generation algorithm choose which room type needs to be generated based on the number of rooms in the flat. The object placement follows some constrains based on the room (TV in front of the sofa, stove next to a worktop, etc). All of those are entities and I started designing how the entity systems work and interact with each other. At this point I could place my first firefighter in the map!

On Day 5 I finally started to check user input. I was able to move my firefighter over the map and open doors using the keyboard, added support to my map class to support pathfinding and FOV using my libtcod. I wanted to start working on the GUI but i lost the rest of the day with one of these C++ issue where you are coping instead of referencing....

On Day 6 I managed to implement a GUI and implement some widgets (later I discovered that libtcod have widgets...). I started using the interface to select my firefighter and move over the place XCOM style. These GUI Actions are implemented as objects that are queued, capture the user inputs and released when are done.

And finally on day 7 I have a good engine and no game :D. I spent the whole day looking at firefighter videos on how the fire behaves and looking at thermodynamics mathematical models. I came up with an efficient system on how fire propagates, how gases are exchanged and how heat transmits but at this point of the project I was out of time and out of health too (I fell ill at Day 6 due the bad sleep and too much pressure I guess).

And that's my story. It was really fun and refreshing. I wasn't able to complete the project but I was able to learn a lot and build a base for my future roguelikes and more important, I was able to start writing roguelikes. I'm planing to finish the project and extend. Next year I hope I can prepare earlier and be able to provide a finished and polished project.

Thank you to the 7DRL organizers and the roguelike community. Special thanks for Tarn and Zach (Dwarf Fortress creators) and Kyzrati (Cogmind creator) for inspiring me to get into the roguelike development and my girlfriend for supporting me all this week.

Leave a comment

Log in with itch.io to leave a comment.