Jump to content
  • Advertisement
  • entries
  • comments
  • views

Project: DungeonBot3000

DungeonBot3000: Postmortem

Sign in to follow this  


I've gotten done about all I'll be able to on this project before the deadline. It was pretty fun to do, even if I didn't end up with as much time for it as I would have liked. Still, I did manage to implement all requirements, so I have that going for me which is nice. The zip file is live now on the project page:


You can watch some current gameplay (with lots of me dying) here:

Be warned: lots of deaths. I'm kinda terrible at my own game.

So, postmortem. I've been tinkering with isometric dungeon crawlers and ARPGs off and on since I played Diablo 1 back in the late 90s, so I've gotten a bit of practice at some things. Still, this effort managed to teach me quite a bit. I didn't reuse much of that old code; almost everything this time was written from scratch for this project. The game is written using the Urho3D engine, using the OpenGL backend. Usually I write mostly in Lua, but this time it's straight C++. The data files come as a mix of XML and JSON documents.

The premise of the game is that you play an experimental battle robot from centuries ago, tasked with eliminating the evil Cult of Gamed'ev. This cheesy lore skin, of course, satisfies the "minimum one gamedev.net reference" requirement. The game is an ARPG. You have access to 2 skills (I had hoped for more, but ran out of time): a spinning blades attack (akin to the Whirlwind skill of Diablo 2 barbarians, or Cyclone from Path of Exile) and a channeled laser beam attack. These skills are boosted by equipping a Blade (for the spin attack) and a Laser Beam(for the laser, obviously). Items are randomly generated, can have multiple mods in classic ARPG style, and are gained by killing mobs. Currently, there are 3 types of items: Blades, Lasers and Shells, and they can draw from a fairly broad pool of random modifiers including Increased Life, Life Leech, Damage Reduction, etc... Items come in Normal(white), Magic(blue), and Rare(yellow) varieties. There are also 4 base types for each, with each base type being more powerful than the previous ones, and hence only dropping on lower levels of the dungeon.

I wasn't able to implement an inventory system in time, so to equip items you simply click on them in the world and the item you click on will replace the one you are currently using in that slot. Hovering over an item on the ground will show info boxes for both the item you are looking at and the one you are already using in order to compare.

You progress through a maze that consists of 10 labyrinthine levels. Stairs up/down are used to transition between levels. Each level is populated by a random assortment of Users (regular gamedev forum members, non-named), Moderators (larger, redder, and having a small number of random mods; named based on the current gamedev.net moderator list), Emeritus (even larger, purple, and with more mods; named from the GDNet Emeritus member list) and Staff (green, very large, and named, only 2 variants: Khawk and jbadams). Khawk and jbadams reside on the very bottom, Level 10, of the dungeon. As you progress through the floors, mob density grows larger. As well, the mobs scale based on the dungeon level, in both health and damage dealing, so that the very last level is quite dangerous indeed.

What went right:

Lots of things really came together on this project: I drew inspiration for a stats container system from my Goblinson Crusoe project, implementing a system whereby I can have stats drawn from various sources, that all work together to provide complex systems from simple parts. The combat system is definitely something I'd like to flesh out more fully in the future.

What went wrong:

@Rutin kindly found a crash bug on level transition late last night, almost at zero hour. I was able to fix it, but due to the time constraints there are a lot of other sloppy things in this project that need to be refactored. I did a last-minute revamp of the game state handling system to fix this bug, but there are certainly other bugs lying in wait. 

Also, balance is sort of ROFL. I have managed to get to L10 using Blades, with lots of death and respawning (luckily, if you respawn you keep your equipment and restart on a fresh instance of your current level). I haven't made it that far with lasers yet, and I haven't managed to kill Khawk or jbadams at the current numerical values yet. They roll with 5 random mods, so they almost always end up with both Quick and Berserk, which when coupled with Life Leech and Life Regen, make them basically unkillable at current power levels. Someone out there might have better luck/skill/determination than me, though, so if you manage to kill them let me know.

The UI is rudimentary-to-nonexistent. I hacked the bare minimum to get by, but it's not very user friendly. Luckily, it's an ARPG so all you really gotta remember is: Right Mouse Button to kill, Left Mouse Button to loot or RUN AWAY! You can use 'q' and 'w' to switch between Spin Attack and Laser Beam. Given more time, I wanted to implement at least an inventory screen to manage equipment, but alas...

Mobs are not varied in their attacks. Users, Moderators and Emeritus all do just a single Kick attack. I If I get a chance today before the deadline, I might try to add a little bit more variety to their attacks. Khawk and jbadams have custom attacks, at least.

Other details:

For the Credits, I implemented an Energy system. You use Energy when you attack, slowly, but you can also spend it using a button strategically placed in the upper righto corner, to gamble on an item. This gamble rolls an item from the full pool of item bases, and rolls it at Level 10 so you can potentially get any mod. I've never gotten anything that useful from it, though. I had intended to make gambling reachable by using a kiosk of some sort in-game, but ran out of time.

Sign in to follow this  


Recommended Comments

Great entry! :) My reply here: 

Was able to beat both Khawk and jbadams, only because of leech and killing them with a second. :D 

Share this comment

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!