I've been working on a turn-based roguelike dungeon crawler the past few weeks and it's going pretty well.
Features I've implemented so far:
- Room generation
- 5 different classes (Knight, Wizard, Elf, Dwarf, Lizard)
- Enemy AI (patrolling, pursuing, searching)
- Slime enemies which can split into smaller slimes
- Element absorption for slimes (for example attacking a slime with an ice attack can turn it into an ice slime)
- Movement and combat in 8 directions
- Melee, ranged and magic weapons
- Elemental damage from fire, ice, lightning, or poison weapons
- Different types of armor with physical defense, magical defense and evasion bonus
- Line of sight calculation for ranged attacks
- Field of vision using symmetric shadowcasting
- Status effects
- Attributes (STR, END, DEX, AGI, INT, WIS)
- Perception and stealth
- Equippable items and inventory management
- Message logs
- XP gain and level up
I still have a lot on my to-do list before I would consider the game complete enough to release a public demo. This includes:
- Skill trees
- Allowing the player to select an attribute to increase upon level up
- Tooltips
- Traps
- Teleports
- Food, potions and beverages
- Room decoration and obstacles (barrels, tables, cracks in the wall, etc)
- A wider variety of enemies (ranged attacks, magic attacks, AOE attacks, healing other enemies, two movements per turn)
I also plan to create more complex enemy AI where each enemy has its own behaviors that can further distinguish it from other enemies. For example, some will retreat when their health is below a certain amount, some will correlate their movements with others, some will protect other enemies, some will alert other enemies of your presence, and others will block the player's escape routes.
I want to create an experience where the dungeon and its enemies feels very dynamic. The player should have many tools to use at their disposal while also needing to meet a variety of unique challenges.
I'm developing the game using Godot with gdext bindings to Rust. https://godot-rust.github.io/
The dungeon is generated using an algorithm I wrote called Tatami. Feel free to use it for your own games if you want! It's intended for people who know the Rust programming language.