The Fire of Ardor - Developing a Dungeon Crawler Challenge Submission

posted in cpfr
Published January 20, 2019
Advertisement

Hi, this is my first blog entry here and also the first time that I actively participate in Gamedev.net. I am a software developer who develops application software at work. At home, I develop games in my spare time. I used to read Gamedev.net articles and blog posts for inspiration and motivation. Since I have the RSS feed subscribed on my phone, I read about the Gamedev.net Frogger challenge and I thought that I'm not interested in Frogger, but that I liked the idea of the community challenges. When the Frogger challenge was over, I read about the dungeon crawler challenge and I thought: "Okay guys, now you've got me!".

I always wanted to create an old-school RPG in the style of Daggerfall or Ultima Underworld with modern controls (although I never really played them). More than 10 years ago, I started to write a small raycasting renderer in C++. Raycasting is the rendering technique that was used by the first person shooters of the early 90's (see also [1]). I never really finished that renderer and put the project ad acta, until, some years later, I stumbled across the old code and started porting it to Cython[2] in order to be able to use it with the Python programming language[3]. After some time, I was able to render level geometry (walls, floor, ceilings and sky), as well as sprites. After solving the biggest problems, I lost interest in the project again -- until now.

I thought the dungeon crawler challange was a great opportunity for motivating myself to work on the engine. At the same time I would create a game to actually prove that the engine was ready to be used. I started to draw some textures in Gimp[4] in order to get myself in the right mood. Then I started to work on unfinished engine features. The following list shows features that were missing end of December 2018:

  • Level editor
  • Hit tests for mouse clicks
  • Processing mouse scroll events
  • Writing modified level files to disc (for the editor)
  • UI
    • Text
    • Buttons
    • Images
    • Containers (layouting child widgets in particular)
  • Scheduling tasks (async jobs that are run at every frame)
  • Collision detection for sprite entities
  • Collision detection for level geometry (walls)
  • Music playback
  • Fullscreen toggle
  • Animated sprites
  • Directional sprites (sprites look different depending on the view angle)
  • Scaling sprites
  • Refactorings / cleaning up code
  • Documentation & tutorials
  • Fixing tons of bugs

Luckily, many of the above features are implemented right now (middle of January 2019) and I can start focusing on the game itself (see screenshots below; all sprites, textures and UI are hand-drawn using Gimp[4] and Inkscape[5]).

screenshot-rat.png.a232eddbc0e05b48a63714f687fd56d0.pngscreenshot-ingame02.png.569308296425cf6eda478d695f144425.pngscreenshot-banner.png.b57e7a3980774237b95079f3992c8c7d.pngscreenshot-talk.png.9828a7d74608c4b48ab6c5d5ea70a273.png

 

The game takes place in a world which is infested by the curse of the daemon lord Ardor. Burning like a fire and spreading like a plague, the curse causes people to become greedy and grudging, some of them even turn into bloodthirsty monsters. By reaching out to reign supreme, the fire of Ardor burns its way into our world. The player is a nameless warrior who crested the silver mountain in order to enter Ardor's world and defeat him. To open the dimension gate, the player has to defeat tree dungeons and obtain three soul stones from the daemon's guardians.

 

The following videos show some progress:

First attempt: Rendering level geometry and sprites; testing textures; navigating through doors (fade-in and out effects)

 

First update: Adding a lantern to light up the dungeon:

 

Second update: Rendering directional sprites and animations

 

  1. Raycasting (Wikipedia): https://en.wikipedia.org/wiki/Ray_casting ↩︎

  2. Cython: https://cython.org/ ↩︎

  3. Python: https://www.python.org/ ↩︎

  4. Gimp: https://www.gimp.org/ ↩︎

  5. Inkscape: https://www.inkscape.org/ ↩︎

7 likes 3 comments

Comments

Rutin

Very interesting! Good job! :) 

January 22, 2019 12:22 AM
cpfr

Thanks! It's sometimes hard to focus on the game when I notice that an engine feature doesn't work perfectly. I'm switching back and forth between game and engine development. Seems like I have to cut my expectations, since I'm slowly running out of time.

I originally planned to release the engine as an open source library, but I won't be able to do this on the challenge's deadline. I will have to fix some inconsistencies and minor bugs I'll have to work around for the challenge.

January 23, 2019 06:53 PM
Rutin

Well best of luck. You only have so much time in a day so you gotta make due with what you have. :) 

January 23, 2019 07:05 PM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Advertisement