7DRL 2024 Version and Postmortem


I've been lurking on the fringes of the roguelike development community for years and tried to make one several times. Usually I don't get further than thinking of a silly name.  If I can start coding, unavoidable things happen in real life that force me away from the computer or I eventually get bogged down in elaborate architectural schemes to the point of running out of time to actually finish and submit a game.  Sometimes I've been close and in last years' 7DRL challenge I actually did complete something you might want to play more than once but I botched the submission and just abandoned it out of frustration.

This year the stars aligned and in approximately 60 hours of coding (and debugging!)  I wrote approximately 2500 lines of C++ 20  code plus another 1000 or so lines I eventually threw away in refactoring.  D.C.B.A (TV) was written on Ubuntu Linux 22.04.4 LTS using the g++ 11.4.0 compiler and the ncurses 6 library.  Learning from my past mistakes, I had the architectural plan ready beforehand with Model-View-Controller and Entity-Component-Systems and all that good stuff so implementing it was mostly smooth sailing.  A couple of times baroque intricacies of C++ tripped me up and in one really bad case, I lost about 4 hours due to row and column variables being accidently reversed.  I started the project at 10:20 am on Saturday March 2, and finished at 6am on Sat March 9.  I didn't submit until today (Sunday March 10) due to the desire to make a Windows build.  I hope that is within the rules.   Unfortunately the PDCurses library for Windows is missing some needed functionality so I had to give up on that idea.  In hindsight I should have used one of the newer cross-platform console libraries but I thought it would be cheating to pivot to one of those after the 7 days were up.  Or I will probably move to a cross-platform GUI library like SFML which I am familiar with.  All the cool roguelikes are graphical these days but I personally like the charm of good  old-fashioned ASCII.

Things I Managed to Complete

  • Grid-based, procedurally generated map.
  • Turn-based movement for players and enemies.
  • Rudimentary combat.
  • Some modicum of AI for enemies. (They wander around and start following you if you are near enough but are easily bamboozled.)
  • End of game screens for victory and defeat.
  • Field of vision and automapping.  (You only see new tiles in a five tile (or less if a wall is blocking.  Already seen tiles are visible but dimmed.)
  • Camera follows the player.
  • Things I Started But Ran Out of Time to Complete
  • Doors.  (There is code for opening and closing doors but it needs more work.  All doors are currently just open gaps in the room walls.)
  • Better enemy AI.  (I wanted to do Djikstra maps but couldn't.  This would also fix the current bug of enemies accidentally killing each other.)
  • More variety of enemies.  (They are all the same right now but there should be different types with varying hit points, speed and powers.)
  • Treasure.  (Again there is some code but I didn't have time to enable it.)
  • Items.  (At the very least some way to heal and regain hit points.)
  • Some purpose to it all.  (Victory condition should be something other than just kill everything.)

After a short rest I will get started on these and do an update.

Longer Term Things to Add

  • Ranged combat.
  • Magic Spells
  • Windows port (Android? Web via emscripten?)
  • Your Suggestions?

Also, I will eventually open source the code.

Files

dcba 1 MB
66 days ago

Get Dolorous Coronach of the Baleful Abyss (Taylor's Version)

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.