Let’s get back to talk about one of my favorite topics, rules/game design for RPGs 😉
One of the biggest problems of all RPG designers is balancing the game difficulty and making the battles/random encounters interesting.
In my first two RPGs, Loren and Planet Stronghold, I used two similar approaches. The enemies would auto-level, but on a different scale from the player’s party, to make sure that as the player leveled up the battles would become easier.
I had defined a base enemy stats/skills values set at level 1. Then I decided how much increase they would get for each stat on every level up, and did some testing, making sure that the enemy progression wasn’t as quick/fast as the players.
For example, after 10 levels, the enemy could have gained +10 HP while the player (on average) +20HP. And then I was scaling those values based on the chosen difficulty.
However, it was very painful to code it, because I had to define every single enemy this way. Copy/paste helped, but when an enemy definition looks like this:
it’s not really the best to avoid mistakes 😀 Also, balancing the game required tweaking the numbers over and over, test again, and overall took a lot of time.
So what I have decided to do, to shorten development time and make at same time the battles fun and challenging?
The Ultimate RPG System!
I’m going to use a different system that combines auto-leveling with keywords-based allocation of enemies’ stats.
By default, the enemy will scale completely to the average values of the player party. So attack/defense/speed/magic, so that we have a 1:1 copy of the character average party members values. Then I’ll use keywords and/or relative values to define specific trait of each enemy to differentiate them.
For example I could write using relative values:
- Attack: -5% (the Attack would be inferior of the 5% to the party average)
- Defense: 50% (the Defense would be 50% better than the party average)
Or also write using keywords:
- “Defender”, and define it as an enemy having +10% Defense value and +15% HP value
- “Magician”, enemy having +25% Magic value and +10% SP value
- “Fury”, enemy having +25% Speed, +25% Attack but -40% Defense value
and so on, you get the idea! Also, the keywords will be parsed in sequence, so I could apply two or more and the final result would be a mix of the various modifier.
I think this system could lead to a MUCH faster development time, and also to a more fun/challenging battles, even to a better randomization of the enemies (for example in a region of Fire creatures, I could define the Flaming attribute that gives +25% Fire resistance).
Of course, this doesn’t mean that all the enemies are of SAME LEVEL. Only that the default/base level now matches the average party level. So while before I was struggling trying to have enemies match the party level, now I use that as starting point to create the opponents! But I can have in battles weaker or stronger enemies.
I’m going to use a system very popular in MMORPG, using color codes:
Green – weaker than your current party average
White – same level
Yellow – one level above your party averageOrange – two levels above
Red – more than two levels (it could be even 5 levels, like in the screenshot above)
This way is even more immediate to spot the most dangerous enemies just looking at the color in which their names are displayed 🙂
Those who like to grind will still be able to do it, because I can always define groups of low-level enemies, and they’ll still be easy to defeat. The items you’ll find can be sold to buy better gears, especially useful for those mad enough to play at the “Nightmare” difficulty level 😀
As you can see, I’m going to experiment quite a lot with this RPG! So far has been fun and the result are very pleasing (though as always I’ll need to wait for the feedback from testers).