The author of this picture is Kelly Lee and they can be reached at Elfwood.com
Part 1 of this article introduced my thoughts on the idea of introducing resistances to my game, you may want to read that first to understand why I’m writing this follow-up.
In this second part I want to take a closer look at using the stats for the inhabitants of my game as an input into calculating the various resistance values.
When I first took a look at the stats I struggled to see which one(s) I should be using to derive the resistance value from, I put this down to my inexperience at having never actually designed a game as complex as a roguelike.
After much thought though I can now see that both willpower and luck will be having a big input for magic based resistances, these will be closely followed by Intelligence (or wisdom) and vitality, finally I think a measure of luck would add that unpredictability I want.
In addition external forces can either improve or decrease the calculated resistance value and provide further unpredictability. For example the player character could be within a part of the game environment that grants +1 to fire resistance, another example could be that the player character is suffering from a debuff that lowers his/hers intelligence stat by -2.
The next part of the design I considered was the timing of when the resistance value should be calculated, the options I considered for this were:
- At the start of every round/turn
- When incoming damage needs to be applied
- When one the stats (or triggers) change
Option 1 provides a clean and simple technical implementation, however it does lead to a possible game situation where by the resistance value will be based on the attributes from the previous turn and not on the actions (in this turn) of the inhabitants.
Option 2 I quickly discounted as it focused solely on incoming damage and not item/environment interactions of the player character during that turn.
I like option 3 as it represents/simulates the player character current situation, of course it means that this value could change many times during the same turn based on the actions of the player, inhabitants of the game and even the game environment. This would also be the most complex to implement as I’d need to track the changes to the triggers and as each one changes recalculate the resistance(s), which will lead to an increase in CPU times.
Additionally there is the aspect of representing this change to the player, my first thoughts are to display a message of some sorts, e.g. a reduction in the Intelligence stat could trigger a message something like…”your thoughts feel clouded”.
The next design area I considered was…Should there be a single resistance value for all incoming effects or should there be multiple resistance values.
A single resistance value is an attractive option as it keeps things very simple and abstracts the game even further. Technical implementation would be made a lot simpler and more effective. It also means the player has less to think about.
Implementing multiple resistance values is more complex from a technical viewpoint but they provide a potentially richer gaming environment that allows the player finer control over their character through fine tuning the equipment and spells based on any known information, e.g. kobolds cast lots of fire based spells.
In the third part of this discussion I cast my thoughts towards the technical implementation and some of the questions I need to answer before I start any coding.