Balancing Drifting Lands / How to handle the difficulty of a Diablo-like game (part 2)

So here we are. You have a vision, a clear idea of where you want to go with your game. How the difficulty should evolve across the experience. You have a layout with your main values which will drive your entire work from there (see part 1)


Before we move on, it’s important to remember that one cannot always think about everything or plan for every situations. This preliminary work is not destined to be set in stone. Should you realize later that you have gravely underestimated some factors, you may have to return to this part and change some of the base values. More often than not, there will be a lot more rules governing the statistics of the player avatar than for their enemies. Hostiles will probably be influenced by fewer global multipliers for their damages and resistance. So if you need to do quick yet radical adjustments, keep in mind that it will probably be simpler to change the curve of difficulty for the environment rather than the curve of power for the player.

Choosing your game systems

This part of the work is probably the trickiest. One could debate indefinitely about what you should or should not do here. How far you should or should not go. How complex it should be. Well, it really depends on your initial vision, again… You only can decide the kind of audience you’re targeting. And this, in turn, will decide how much efforts you can require of your players to experience, understand or master your game. I’m not one to think that everything in a game must be crystal clear and written explicitly in little pop ups. I can live and appreciate some kind of mystery in the inner workings of a game. If it makes sense, if you can decipher how it works given the right amount of effort… fine by me! But you’ll find people to disagree veeeeery strongly with that choice, game creators and players alike. You just need to be aware of the consequences of your choices.

That being said, we’re here to create a Diablo-like experience. A game where you make choices, a game where you create builds, a game where you have to analyze game mechanics and try to optimize your way through. Because YES, playing a Diablo-like by blindly following a build found on the internet is a disgrace. You would not be playing the game or not the entire game… certainly not the interesting part. But to be an interesting challenge your game systems must be significant, coherent and generate interesting choices.

Significant because each one of your systems must add a real value to the whole. If it does not bring new ways of making things right or wrong for the player, it’s probably useless. Cut it.

Coherent because all systems must work together, avoid being antagonistic and have enough logic or be sufficiently explained to be understood (provided the players made the kind of commitment you were expecting of them of course)

Generate interesting choices because there’s no point in creating complex systems if you can’t actually play with them. Creating an armor system to soak part of the damages do not make sense if you don’t have things like light armors, heavy armors, with very different efficiencies but also very different requirements or penalties. If you have globally just one type of armor, you should probably just add upgrades to health points instead.

Armor in Drifting Lands

I won’t be able to cover all game systems in Drifting Lands but I’ll explain how Armor is handled for your ships. Why some equations were chosen and how values were defined. Hang in there, there’s a lot to say!


What can we say about armor? Let’s retrace the different steps in the reflexion process I went through in a very condensed form

  • health is diminished by damages, no health you’re dead. Easy.
  • health needs to increase with levels to keep up with enemy damages.
  • health can be increased directly or indirectly through damage mitigation. Damage mitigation which is usually called “armor”. Damage mitigation must not always have a linear effect because it wouldn’t be significant. You might as well just give a relative bonus to health.
  • we want classes of ships to have very different level of perceived health (real health + damage mitigation) so we need ways to give more armor and or more health to sentinels and less to interceptors.
  • … but at the same time, for multiple reasons, we do not want to promote class specific items.
  • we want sentinels to rely more heavily on items than interceptors. So let’s give more item slots to sentinels than to interceptors and more specifically more armor slots.
  • Sentinels will have 6 armor slots, 5 armors slots for marauders and 4 armor slots for interceptors. Sentinels will have 12 items slots and interceptors 10. It will make a difference when it comes to resistance, a very significant one. It won’t prevent Interceptor players to enjoy a lot of combinations and choices with their stuff.
  • armor can be increased with items but also by spending experience points in the base statistics Structure (an equivalent of Strength or Vitality in most aRPG). You have the choice of buying or not more resistance with Structure instead of increasing damages with Navigation or Power.
  • These 3 base stats are also the only requirements to equip items so buying more or less Structure influences which items you will or won’t be able to equip. Heavier armors required of course more Structure. More consequences for your choices!

What now? How do you chose the Math and numbers for your game? Well first, you should play a lot of aRPG and dig deep enough to learn and understand how they actually work. Then you make game design decisions: significant choices or behaviours you want for your game. You tell yourself stories of how the game will unfold for different types of players, for different types of strategies. How it must react to different builds across all your difficulty levels. Then you find the Math and choose values that will fit in your pattern.

Back to our armor. As I said, we need the effect of armor to be non linear across all values. With a linear effect there’s no reason to have a damage mitigation system when it’s similar to just x% of additional health. Very often armor effects use a mildly complex mathematical function causing diminishing returns. It means that the effect is tending to a maximum and that each point has less and less effect than the previous one. This maximum effect is usually reached by an increasing value of armor with each new level of difficulty.

For Drifting Lands, I wanted to keep things very simple and choose values or limits with a clear meaning. For each level, there is a set of 3 values, 3 targets for armor with different effects.

  • the No Modifier Player Armor : if your total armor equal this, you have no damage mitigation but no damage penalty either for physical damage
  • the x2 Damage Player Armor : if your total armor is equal or inferior to this value, you will take double damage from physical damage
  • the -90% Damager Player Armor : if your total armor is equal or superior to this value, you will take 90% less physical damage

Between those values the effect is linear. So if you have a total armor average of No Modifier Player Armor and x2 Damage Player Armor, you’ll take 1.5 more damage. Here are the actual values for the game :


Where do they come from? Well the first column is really just a set of purely arbitrary values. 100 is a good value to start from because we know that several items will give armor to the ship (6 for a Sentinel, 4 for an Interceptor). So we need a minimum of granularity here. Then we ramp up more and more rapidly to reach a linear slope around level 70.

These values are the primary target players must reach for their ships if they don’t want to be severely punished. It must be a fairly easy objective to reach or even overcome at first. These values are just here as a “check” that you are equipped with items of the correct level.

The second important column of values (x2 Damage Player Armor) is just half of the first column. These values are fairly close because we want the penalty to apply really quick if you don’t match the no penalty requirement and then cap at x2 damages.

The third colum of values (-90% physical damage armor) is the objective to reach the maximum damage mitigation. Unless you’re playing at a level inferior to your stuff level, we wanted this be nearly impossible to reach. These values are 6 times the ‘no modifier’ values. Why?… well mainly because since the effect is linear between these 2 values, we wanted to keep a damage mitigation of 25% for an armor which is a bit over 2 times the armor with no mitigation. Through the rest of our work, we’ve tried to keep this target of 25% mitigation really easy to overcome with a Sentinel and a bit hard to reach with Interceptors.

Now that we’ve got those target values, the really important part is how we break them down into bits for players to collect. Here’s another very important table for armor values in the game.


The first important column, Max Target Armor Total, defines the maximum we want you to be likely to reach for each range of levels. Well, likely to reach with a Sentinel. As you can see, at first it’s very close to the 25% damage mitigation target for armor then it quickly ramp up to 30 000. Why is that? Since the game difficulty is still growing after level 65 and items won’t get any better after this, we wanted to let you reach the 25% damage mitigation level even at difficulty level 100. It does mean that between level 50 and level 80, it’s probably quite easy to reach a fairly good damage mitigation if you farm a bit, but it also means that you can still progress quite rapidly even if you don’t always maximize your armor. On the other hand, armor is only effective for physical damage and you have to take care of your resistances at the same time so it’s not THAT easy.

The 3 following columns defines base armor for ships themselves. In Drifting Lands, at least for now, you have 3 levels of quality for each class : basic at level 1, premium at level 20, elite at level 40. Each ship has a base armor stat, highly influenced by the class. It’s very much on purpose that those values are not very high compared to the Max targets. It’s a loot based game remember? We want players to look for items, not just buy better ships. And that’s about now, that you exclaim : “hey! Your table is wrong! It says here that the armor for ships changes at level 30 and 60 not 20 and 40.”
Difficulty_armor04Aaaaaand, you’re right. I haven’t updated these values on purpose to make a point: all this work is temporary. There’s no way to be sure you’ve thought everything through. We’ve changed those levels to unlock better tiers of ships for a reason that became apparent later once the game was pretty much done. 30 levels to unlock a better tier was too long and I suddenly discovered that i wanted it to be possible (even if hard) to skip the premium level entirely. It was way too hard with an elite ship unlocked at level 60. And yes, we’ve kept the original values of base armors for those ships. Because, well because it rarely hurts a game to be a little more forgiving than what you first imagine as its designer. Believe me: most people will find your game MUCH HARDER than you do right now. Want to know exactly how hard? Easy: once the game is complete, stop playing it for 2 or 3 years and then try again. If you don’t want to wait, have your game tested by a total stranger to the project.

And on we go! The next columns decompose our Max Target Armor Total into the different sources of armor :

  • armor granted as a base statistics for armor related items : armor plates, thrusters, engines
  • armor granted as a flat bonus modifier by some items
  • armor granted as a relative bonus modifier by some items

Let’s study only the highest level of difficulty. We want you to be able to reach about 30k armor. Your base hull at this point will grant you 500 to 1000 armor whether you have an Interceptor or a Sentinel. From there, we imagine 3 archetypal scenarios :

Heavy Sentinel at level 100
you have 6 items armor related with a main Structure requirement. We want to attribute 10k armor to these items so roughly 1700 each. These are the heaviest pieces of armour in the game. We will grant a maximum of 7680 armour points via an absolute bonus for items which can be present on 8 items for Sentinels. Finally the same 8 items can grant a maximum of 75% of increased armor. So the total is : ( 1000 + 1700*6 + 7680 ) * 1.75 = 33 040.
We’re a bit above our 30k target. This is ok.

Medium Marauder at level 100
Marauders can equip any kind of armors provided they have the right requirements, but for the sake of our reflexion we will consider a Marauder with medium items requiring Structure but a lot less than heavy armors. Marauders can have 5 pieces of armor (3 plates, 1 thruster and 1 engine). We will aim a total of 7500 so 1500 armour per item. Marauders can only have 7 items granting absolute or relative armor bonuses, so it’s not 7680 and 75% you can reach but 6720 and 65%. For this case the total is : ( 750 + 1500*5 + 6720 ) * 1.65 = 24 700
It’s well under the value for a Sentinel but it’s still doing good even at level 100.

Light Interceptor at level 100
Interceptors can only have 4 armor pieces of armors and 6 items with armor bonuses. Let’s image, it has the pieces of armor with the lowest requirements in Structure to maximize a damage oriented build.
The total will be more like : ( 500 + 1250 * 4 + 5760) * 1.55 = 17 453

Ok so you might think that these are pretty forgiving scenarios. Gosh, even the Interceptors can go well over the 12 000 armor mark defining the “no penalty” target for a difficulty of 100. But what you have to remember is that we have considered each time the maximum values for stats and modifiers. More often than not, you’ll have to equip items with sub-optimal values: because some of them have bonuses you want to have, effects you haven’t yet found on high level gear. Because some of them are unique items with special effects and you’re reluctant to replace them just yet.

These values are born from a lot of tweaking, a lot of studied potential cases. They are the consequence of my will to make differences between difficulty grades quite significant, my will to make a difference between classes… yet to keep it possible to equip a lot of different items whatever your ship. The whole thing is certainly not perfect and sometimes I made late changes to further improve some aspects. A good example for armor is that we added a flat bonus of 5 points per Structure points you get (bought or granted by items). Another way to strengthen survival oriented builds if you spend most of your experience on Structure.

To fully study the whole thing, I would have to cover how Armor interacts with Health, how levels gets harder and harder with more bullets or more damage types… There’s no end to this. In the end, unless you’re a large team, you must try to cover what’s more important for you. You take a guess at what part is unaccounted for as best as possible and then you roll with it. Your first iteration might not good but it must not stop you.

Loot part 1: defining item stats


Drifting Lands is a loot based game first. Yeah I know it looks a lot more like a shoot’em’up. My bad, I thought most people could get over it and I was probably wrong. If i wanted to get one thing right above everything else, it was how we handle items. Items must be the main source of your power. Your equipment must define your build as much as the skills or powers you’ve chosen to play with. As you’ve seen above for armor, the vast majority of what you can get is brought to you by your stuff and not by the simple act of leveling up a characteristic.

In Drifting Lands items can have a main characteristic (Armor, Skill power, Shield, Weapon Damage) and modifiers. These modifiers and base characteristics are the main sources of firepower and survivability. There are 42 modifiers in Drifting Lands to increase some of your stats. 27 of them are primary (structure, navigation power, health flat, health %, armor flat, armor %, fire rate %, cooldown reduction %, etc.) and 15 are secondary (movement speed %, resists to different damage types, shield cooldown reduction %, etc.). Ok, it may seem a lot, maybe a bit overwhelming, but it was how “rich” we wanted our system to be. Each of them serves a purpose and deeply influence some aspect of the actual gameplay.


Beware though! Choosing how many modifiers you have will deeply influence how likely your players are to get the exact combination they want. Because of course, all items have a maximum number of modifiers. So this is not a competition of how many modifiers you can pile into your game. There must be a balance between how hardcore you want your game mechanics to be and how easy it should be for your players to get what they want.

For all our modifiers, very much like described above for armor, we had to define maximums you should be able reach for each grade of difficulty. Those maximums are not independent. Like armor can’t be isolated from health, shield or resistances, weapon damage is linked to fire rate, critical damage probability, etc. Your main table of difficulty curves, discussed in the first part, must help you to define global maximums for firepower, toughness and other “high level” values of your mechanics. Then you break it down into individual maximums for each modifiers. For example if you combined ALL damage related modifiers of Drifting Lands, you would end up with a grand total of 600% increased damage. It’s very unlikely that you will ever reach this maximum. But if you were able to do it, since the best weapon of the game do 25 times more damage that at level 1, you would end up with roughly 150 times more damage. 150 is also how many times a level 100 enemy has more health than at level 1. Coincidence? Again, we don’t talk about average stuff here but about the maximum damage optimization you can reach probably sacrificing any chance of surviving at level 100 in the process. If you remember correctly the only thing we wanted to guarantee was that a level 70, players would do an average of 25 more damage.

Once you have your maximum by modifier, you have to define a maximum per item. This maximum should of course depend on how many items you can actually equip with this particular stat or modifier at the same time. At this point you can start to create a biiiiig table looking a bit like this:  (click to enlarge)


In most cells of this table, you can see two values. You’ve probably guessed these were minimums and maximums for modifiers. Because yes, so far we’ve mostly talked about maximums you could or could not reach for a stat. But of course there is some variability to all our values. Finding the perfect item is not only a question of getting the modifiers you want but also getting the best possible “rolls”. Since we did not want Drifting Lands to be particularly punitive or extremely demanding in terms of farming, we chose a fairly limited variability for most stats. Except for very small values, the minimum is often 80% of the maximum. It’s enough to create a significant difference between what’s best and what’s worst but it’s not so big as to create a real chance of having a higher level item being less interesting than an inferior one. Again, this is a very personal choice. Feel free to think that a wider range could be more fun / interesting / rewarding.

Loot part 2 : generating items

We now have a list of modifiers and bonuses all items can grant. They have to be combined to create actual equipment you’ll find in the game. For Drifting Lands, I’ve decided to take a LOT of inspiration from Diablo 3 and more precisely Diablo 3 post Loot 2.0 (the patch just before the release of Reaper of Souls).

I think it’s necessary here to take a few lines and explain why I personally think that Reaper of Souls is my favorite Hack’n’Slash while I didn’t enjoy Diablo 3 vanilla that much (except for its kick ass art direction of course). It’s all about how the loot is generated and how the Auction House was a necessary evil in the initial draft. In the first Diablo 3 iteration, loot was really, really, REALLY random. You could find pretty much any modifier on any item with huge variations even for a given level. And it was by design: the goal of the first game designers was really for any player to spend literally years on the game and still continue to find better items. Because they had this notion that Diablo was necessarily a game you SHOULD play for years and that it would be cool to keep finding better items years after the release. I really encourage you to watch this GDC conference by one of the lead GD behind the revolution that is Reaper of Souls for Diablo 3. It explains in details the evolution of the game and why this initial design was chosen… Now, Reaper of Souls is pretty much the opposite. There is loot, it is random, but by no mean as much as the loot of D3 vanilla. Because all items follow far stricter templates when they are generated. Templates with generation rules. Yes, it means that you’ll find good or optimal stuff, much more quickly. Yes it means that you can see nearly all there is to see in Diablo 3 in a few “pitiful” hundreds of hours. And for that, I’ll choose RoS over D3 Vanilla every single time because I was able to actually enjoy the experience while having a family life and a job (feel free to disagree).

Sorry, I got carried away… back to our item templates! Templates are sets of rules to define the numbers and types of modifiers you can roll on each item. The most famous addition of Loot 2.0 in Diablo 3 (which i shamelessly transferred to Drifting Lands) is the classification between primary and secondary modifiers. In a few words, primary modifiers are very powerful or very useful in nearly every builds. Unless you’re looking to create a very specific or extremely optimized build, most combinations for primary modifiers should be ok for you. Secondary modifiers are more circumstantial. You might or might not need them but you are guaranteed to have at least the primary modifiers to make for it. This way, when you drop items of higher levels than what you have right now, it is very unlikely that it will be completely useless.

Here’s how it work for Drifting Lands :

  • we define a variable number of slots of primary modifiers depending on the rarity of the item
  • we define a variable number of slots of secondary modifiers depending on the rarity of the item
  • we defined a variable number of slots of flaws depending on the rarity of the item. Flaws are a particularity of Drifting Lands. All powerful or rare items in Drifting Lands have random side effects which range from slightly annoying to extremely risky.
  • for each item and each category, we’ve got a list of possible modifiers including a subset of modifiers from the global list.

Each time the game creates a new item it will roll :

  • a level
  • then a category (helm, reactor, weapon, etc)
  • then a rarity
  • then a number of modifier for primaries, secondaries and flaws
  • then select lists of modifiers for each slot
  • then select one of the modifier in each list
  • then roll a value between the minimum and maximum for this modifier at the correct level


Simple! And of course you can even control how likely it should be to roll this list of modifiers compared to this one, or inside the list how likely this modifier is compared to the others…

All these rules bring control to your loot system. By fixing rigid or very lax rules, you’ll change drastically the influence of RNG in the experience, how easy it can be to find optimal items for different builds. The number of modifiers you allow by item is also crucial : you need enough modifiers to reach average or top values in different stats to keep up with the difficulty of your game, but you don’t want too much modifiers and make it possible to max everything! You need to keep an eye on that and wire calculators in your balance documents to track what your current maximums are for… well for nearly everything!

Loot part 3 : distributing items

Your game is now able to create interesting and balanced items but you still have to hand them over to your players! Now is the dreaded time to decide what should be your drop rates. As always it’s really up to you to decide how generous your game should be. A few key things to keep in mind :

  • people are here to get loot so you might have to guarantee that you give them some regularly
  • nearly no one likes to collect piles and piles of junk, so you might have to guarantee at least some of these items are actually interesting

In Drifting Lands each enemy as a loot table, a list of possible drops with different probabilities, different bonuses to the rarity of objects and sometimes a list of possible unique items available. On very small and numerous enemies, you want to keep drop rates really low (beneath 0.5 or even 0.25%) and ramp up towards bigger mid-bosses or bosses. Those tougher, larger enemies have often one or more “guaranteed” drops with a few more that may happen or not.

It’s usually not desirable to change drop rates over the course of the game. It would probably mean that you would have too low drop rates at the beginning or far too high drop rates during the end game. Instead you will probably want to offset the quality or the rarity of items over the difficulty scale. In typical Diablo-like games a higher rarity is synonym of more modifiers rolled on the same item. With time, players will expect a minimum of modifiers to keep up with the difficulty of the game. Unless they find an item with base statistics that are far greater than what they already have, they won’t consider anything less than a given rarity. With time all your common and uncommon items become automatically junk. Hell, at the end, anything that is not a unique item is junk!

Here’s a table fixing rarity ratios for the different difficulty grades in Drifting Lands :


You can see how rare items represent only 5% of the items at level 1 and 27.8% (17/61*100) at level 100. You can also see how unique items vary from 0.5% to 6.5% according to this chart. And unique items are really a key part of a good loot based game for me, so we added an additional mechanic here.

At first, you want your uniques to be really rare. You don’t need them: you have many things to keep your players interested. You can reward them with new skills, new environments, new enemies, new ships, etc. But with time, you want your players to drop them more and more regularly because they have to become those little moments of excitement. And once the routine of the game is there, you don’t want these moments to be too spaced in time. It’s a classic trick but we added a small invisible counter increasing with each item you grab. This counter increases more for with rare items and less for more common items. With this counter, your chance to drop a unique grows until it reaches 100%. Once the bonus is enough to actually make you drop a unique item, the counter is reseted and you start over.

Why did we chose this method?

  • because it scales with difficulty: if you play at higher levels, you have more rare items and the counter is increased faster
  • because you have to actually destroy a maximum of enemies and not just play ineffectively
  • because you have to focus on levels with tougher enemies to drop more items and not farm over and over again the calm levels with only small opponents
  • because it’s not giving you a unique every X minutes every time. If you are lucky, sometimes a +10% of unique drop rate will be enough to drop a unique item. Sometimes, your counter will have to reach a higher value for its effect to trigger.

At very very high level of difficulty and for longer levels, this counter can trigger several times in a single mission!

And once more, I’m slowly realizing that there’s still too much left to say… So I’ll take a break here and come back soon with the 3rd and last part of this modest summary of what I’ve learnt about balancing a Diablo-like game.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>