Let’s build a Dungeon Crawler with Hollywood-MAL! (part 1, Designing the game)
Since I’m an RPG & JRPG lover I’ve played tons of these games and I’ve always wanted to build my very own game.
I’ve tried several times to build a dungeon crawler game, and most of my tries failed because the lack of time and the project complexity, but now I feel that the time has come so I started again from scratch. I’ve also some original mechanics in mind that I will explain in a future article.
I’ll try to post articles regurarly in the hope to help other people to find their own way on the hard coding road, so let’s start! 🙂
Forgot to say that the game will be turn based and the player will be alone without faithful companions.
We will start with the game logic, the needed data structures to handle all this huge project while I’m trying to create a text based prototype, and finally, when all will run smoothly, I will implement the graphical side with all the needed whistles and bells.
SO, WHAT DO WE NEED?
Well, to be honest a lot of stuff! Here is what comes to my mind :
- Dungeon Generator
We need code to create levels, spawn enemies, treasures, traps, doors, stairs, etc… I’ve an almost complete code to do this, I’ll talk about it in another article.
We need to define classes for our brave heroes and scaring enemies, in each class we must describe attributes, point of strenght, weaknesses, allowed spells and weapons, and so on… we will check this out in this article.
Spells are a must-have in this game genre, so some code must be written to define spells and the effects that they have on the target.
Abilities is a must have too, for example thiefs and explorers could have the ability to discover hidden stuff!
You know: helmet, vest, boots and one ring for this initial design but can be expanded, wearable stuff can alter attributes so we must describe them carefully. We also have two slots for the left and the right hand, here you can place weapons, shields, wands, orbs, etc… Each item can alter attributes, damage the target or cast spells.
Potions, spells, tomes, food, etc…
Here we can put all the rest like weapons, armours, rings and in general anything we can put into a wearable slot.
We should also have money we can spend to buy things we need or just to became the richest hero of the kingdom.
Ehm… seems huge isn’t it? But I’m quite sure that more things will be added in this list 😉
Let’s start with the class, the character archetype that describes the character attitudes, abilities and his physical and magical traits. I’ll try to discuss how I’m going to define a class and here is my initial design, if you have suggestions you are invited to leave a comment!
So let’s go with some key points, keep in mind that we are going to build a class template we will use later to build our player and enemies characters so it must be generic:
- Name & Description
We need a name and a description field for each class we are goin to create (Warrior, Monk, Priest, and so on…)
The current level : it is a place holder for the living characters we will build later
A table we will use to raise the character level according to the gained experience
Base attributes like Intelligence, Strenght, Dexterity, etc… we will use these attributes to calculate secondary attributes (see below).
- Secondary Attributes
A set of attributes calculated from the main Attributes, for example Hit Point, Mana, Critical, etc…
- Health & Mana Regeneration
We also need how Health and Mana regenerates over time (at each turn)
The slots where we can put wearable items, for this initial design we will have:
- Left Hand
- Right Hand
Right now is just a place holder for the characters we will create using this template
- Max Weight
We need a formula to calculate how much weight (inventory + worn items) this class can carry
All allowed spells for this class, these are references to the spell database we will discuss later.
All allowed abilities for this class, like spells these are references to the abilities database we will discuss later.
Another place holder for the learned speels and abilities
- Resistances to magical hits
A list of magic types this class can resist
- Resistances to physical hits
A list of physical types this class can resist
- Weaknesses to magical hits
A list of magic types to which this class is weak
- Weaknesses to physical hits
A list of physic types to which this class is weak
A place holder for the characters created with this template, it holds all active modifiers, for example “Bleeding”, “Blindness”, “Paralisys”, “Regeneration”, “Protection”, etc…
Finally the last place holder we will use to store the character position in the map and the direction where the character is facing.
It’s pretty huge, but don’t be scared!
What’s coming next?
In the next article I will discuss the class-template details and how I’m going to implement formulas for calculated fields (like Health, Mana, Weight, Critical %, etc…), I also show you all the linked databases that we need to implement.
Let’s build this thing together! 😀
Stay tuned and if you like this project support me on Patreon!