The Fire of Ardor - Post Mortem (Dungeon Crawler Challenge))

posted in cpfr
Published February 14, 2019
Advertisement

This is the post-mortem for the dungeon crawler challenge submission The Fire of Ardor. You can find the project here:

It is done. The last two months have been exciting, as well as exhausting.

I took the challenge as an opportunity to push the development of the raycasting game engine I started years ago. I wanted to create a game in order to be forced to implement engine features as they are needed by the game.

I always wanted to create an RPG-style game. In order to be realistic according to the time schedule, I cut many of my ideas: There should be three small dungeon levels with different enemy types per level and only few NPCs and items. However, finally, I had to further cut down my goals in order to hold the deadline.

Engine Programming vs. Game Programming

Using the game as a driver for engine development worked out well. The positive effect of the deadline is that I had to focus on important aspects and I didn't have the comfort to defer the implementation of inconvenient tasks. When I started the development of the game in the end of December, many of the engine features weren't finished. There was no collision detection, no animated sprites and no UI elements, just to name a few. In fact, I spent most of the time in developing engine features, fixing bugs and developing tools. I didn't have any level editor, so I had to edit the level in a hex editor. The level editor I have now is far from being complete. Since I only implemented UI elements that were necessary for the game, the editor contains almost no UI and is controlled by a bunch of keyboard shortcuts.

Although I had to cut my expectations during development in order to ship a full game and to meet the requirements, I am very satisfied with the end result. There is only one dungeon level, only three different enemy types and only one non-enemy NPC. Nevertheless, I implemented sword fighting, fireball spells, a simple conversation system for talking to the NPC and reading books. I have a couple of items and a win and lose condition. All in all, I would say that the game is far from perfect, but a very well-rounded thing, also considering the fact that I only had time for development after work and after my little daughter was sleeping.

What was bad

I spent a lot of time on the collision detection code in the engine. In theory, collision detection in 2D space is relatively easy to implement - and in fact it was easy to detect collisions. The difficult part was to move the player without suddenly stopping on a collision (i.e. adjust the movement vector so that the player slides along a wall instead of getting stuck). The current code works, but it is not perfect, since it can glitch in some rare cases (no time to fix that though).

The UI code also swallowed a lot of time, although it was only needed for the menu and the inventory screen. I came up with the idea of different automatic widget layout containers -- they are roughly implemented, but in some combinations (those which I don't use in the game) the layout is simply wrong.

While the engine code is still pretty okay-ish, at some point the game code started to get messier and messier. Before continue developing this project (more levels, features), I will have to invest some weeks of refactoring. It felt a little bit like the effect that you have on a game jam (I also participated in the Global Game Jam this year and it was very hard to switch to another project for a weekend, knowing that so many things were undone).

Building C - Python Extensions on Windows is a pain (Cython works really well for me on Linux). I didn't manage to create a Windows executable, yet. That means that the game is currently Linux only. Sorry Windows guys, I'll keep on digging into that (different compilers, different architectures, 32 and 64 bit libs) and deliver a Windows build as soon as possible.

What was good

Having a goal with a fixed deadline was motivating. I never worked that steadily on a hobby project. That effect was even enhanced when I decided to write blog posts about the development -- now I was not the only one who knew that I was developing something and I wanted to show that I would be able to complete the project.

Having the deadline in mind, I also learned to cut features that would not contribute to the end product in an important manner. For example I cut an almost finished lantern that could be used to light a dark dungeon level, because other things were more important (for instance spending money for buying potions). While cutting down features, I still kept an eye on the features I implemented, like the sliding animations in the menu and health bar, the sounds in the inventory, etc.

For the entities in the game I used an ECS approach. This one turned out to be very flexible. It was easy to add new items enemy types without or with only little coding. I also like the tools I used. I used Gimp for drawing sprites and textures, Blender for pre-rendering some of the sprites and audacity for editing sounds. The music tracks are CC0-licensed pieces from opengameart, the sounds are also CC0 licensed files from freesound and opengameart which I edited to fit to the game. All in all, I think that the game has a reasonably consistent art style (although the level of detail tends to differ from sprite to sprite).

Conclusion

I am satisfied with the end result, although I achieved less than I originally planned. I want to thank my wife who has been very patient with me the last couple of weeks. I am looking forward for you guys playing the game and giving feedback. Thank you for reading.

Carsten

4 likes 0 comments

Comments

lawnjelly

Well done! ? I think for the windows guys a youtube video if you have kazaam or something installed would be really cool until you can make a build for them. I will try it when I get back home next week (only have 32 bit linux on my laptop here).

I have the same problem for windows builds incidentally, I probably need to get a dedicated windows machine and another monitor for this. I've managed to get some simple programs cross compiling but I don't know if cross debugging is possible. Or maybe virtualbox is the answer.

February 14, 2019 08:49 PM
cpfr

Hi,

thanks for your reply. I recorded a video of the game (full playthrough, so spoilers ahead -- you'll probably notice that I know the dungeon layout...) and uploaded it to Youtube:

The Windows version will have to wait...

February 15, 2019 10:11 PM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Advertisement