A Night With the Devil

Introduction

Diablo is one of the most critically and commercially acclaimed videogame franchises of all time. It has spawned numerous “clones,” and its gameplay conventions have been adapted across multiple genres. The latest entry in the series, Diablo III, boasts the honour of being the fastest selling PC game of all time and the best selling PC game of all time.

So what makes the series so special? Almost to a fault, Diablo games are described as being incredibly addictive. That’s a fairly vague assertion, though, so I figured it’d be interesting to take a closer look at the original game and get a little closer to nailing down its je ne sais quois.

design - table, stats, schedule, roguelike, rogue, reward, randomization, loot drop, loot, formula, diablo, CRPG, algorithm, addictive
The one that started it all.

From Roguelike to Diablo I

Various sources claim that Diablo started off as a turn-based roguelike, which makes sense considering the numerous genre tropes it employs.

Aesthetically it was not only a big step up from ASCII-based visuals, but it also outshone most other CRPGs of the era. Diablo ran at a 640×480 resolution and featured a dark, Gothic world rendered entirely in CG. Everything in the game animated smoothly, playable characters changed appearance based on equipment, a rudimentary lighting system helped set the mood, and a plethora of spell effects and item icons created a much more impressive presentation than that of its dungeon-crawling brethren.

Diablo was also fully voiced, and its music — especially the theme of Tristram — is fondly remembered to this day. More subtly, the game featured excellent sound design. This is most evident in the item drops that are represented by a spinning graphical icon, a whooshing sound effect, and an additional audio clip played when the item hits the ground. The sounds differed based on the item type that was spawned, and were clearer, louder, and longer in duration than all the other sound effects in the game. These cues ensured that spawned treasures were rarely missed and greatly enhanced the Pavlovian effects of loot-hunting.

design - table, stats, schedule, roguelike, rogue, reward, randomization, loot drop, loot, formula, diablo, CRPG, algorithm, addictive
One of the fully-voiced conversations with town folk.

From a gameplay perspective, Diablo retained many defining aspects of a roguelike despite being a real-time game. Randomization was present in level layouts, monster type and placement, item generation, and even the available quests. Character classes shared the same basic statistics and could all learn a large swath of common spells, but possessed unique abilities and statistical progression. Shrines and consumable items provided further boosts and ailments, and inventory management was big part of the experience (even gold had to be accommodated for, one 5,000-coin stack at a time).

However, Diablo wasn’t quite as unforgiving as a typical roguelike. There was no instadeath, and saving/loading was allowed at any point. If the player died while playing online, they would respawn in town and get the chance to retrieve their equipment from their corpse. There was even an option to restart the game at any time, retaining all of the character’s armament and upgrades.

None of the items severely handicapped the player either, and it was possible to equip unidentified items to benefit from their statistical boosts while foregoing their special abilities. A superimposed minimap was an option as well, and compensated for the more zoomed-in viewpoint compared to typical roguelikes.

design - table, stats, schedule, roguelike, rogue, reward, randomization, loot drop, loot, formula, diablo, CRPG, algorithm, addictive
Right mouse button abilities had colour-coded backgrounds: orange for staff-spell, pink for scroll, blue for memorized spell, gold for class ability, and gray for unusable (e.g., offensive spells in Tristram).

And of course there was multiplayer.

During the time of Diablo’s release, multiplayer usually meant configuring ports and IP addresses. Much like early server-browsers such as GameSpy Arcade and Xfire, Diablo’s Battle.net circumvented the issue by providing an easy graphical interface for getting online. The gameplay adjustments worked remarkably well too, with all monsters simply being given twice as much health for every player in the game. Granted friendly fire was always on, but this was still a very user-friendly online experience for the time.

All in all, Diablo was a very sleek package, and miles ahead of what one would expect from just a graphical roguelike.

design - table, stats, schedule, roguelike, rogue, reward, randomization, loot drop, loot, formula, diablo, CRPG, algorithm, addictive
The depths below the church are not a friendly place.

8 Hours

In large part Diablo consisted of lumbering around Tristram selling loot, healing, swapping equipment, and getting ready for the next excursion. Since these pit-stops were not the meat of the game, I decided to limit my observations to the actual dungeon exploration. I played as a Warrior and endeavoured to kill every enemy, open every container, pick up every item, and generally explore every corner of every map before moving on to the next area.

As it turned out, 8 hours of hacking and slashing was just enough time to complete the whole game.

design - table, stats, schedule, roguelike, rogue, reward, randomization, loot drop, loot, formula, diablo, CRPG, algorithm, addictive
Town portals and zone shortcuts made for fast-travel into the dungeon, but a substantial amount of time was still spent trodding around in Tristram.

Core Progression

Below is a graph that illustrates the amount of time (in minutes) devoted to each map of the dungeon, how many trips it took to eliminate all the enemies and pick up all the loot, and how many experience levels my Warrior gained on each floor.

The purple marks indicate special maps that were not entirely randomized and served as arenas for boss battles.

design - table, stats, schedule, roguelike, rogue, reward, randomization, loot drop, loot, formula, diablo, CRPG, algorithm, addictive

Right off the bat it’s obvious that the amount of time required for each map climbed steadily, but still varied noticeably from floor to floor. The major differences were caused by the static maps, but even without these there was enough variation to prevent the experience from feeling wholly homogenized. The shortest map clocked in at 7.5 minutes and the longest at 31 minutes, with the average coming in at 19.4 minutes. However, it’s also worth noting that the variations were in part due to my Warrior refusing to use the teleport spell (making backtracking more time consuming in some layouts) and combat difficulty (needing to spend time kiting enemies and running away to recharge health and mana).

design - table, stats, schedule, roguelike, rogue, reward, randomization, loot drop, loot, formula, diablo, CRPG, algorithm, addictive
The Warrior was never above taking a sip from a blood fountain to restore his health. Perhaps that’s why things didn’t go that well for him in the end.

The amount of trips required to fully explore each floor was more consistent, but this is more indicative of the loot-hauling than anything else. Having played a sturdy character with a focus on health-regeneration, retreating to Tristram in order to recuperate wasn’t an issue until the very end of the game. Instead, the trips were a direct result of inventory limitations and my determination to collect every spawned item. The relative consistency of the amount of trips indicates that despite unique layouts, monster populations, treasure chest distributions, etc., each floor produced a similar number of items throughout the game. In total, the smallest amount of trips to clear a floor was 1 and the largest 5, with the average coming in at 3.1.

Finally, much like the amount of trips, the experience progression was fairly consistent. On average, 1.3 levels were gained for every dungeon floor. This is noteworthy as none of the statistical progression in Diablo involves randomness. Each level-up grants 5 points that the player can distribute among 4 attributes, and each character class has a specific starting and maximum number for each attribute. This results in all the uniqueness of a character build coming exclusively from items — via equipment and spells — thereby putting further emphasis on loot-drops.

Overall Diablo is split up into 4 zones, each one consisting of 4 dungeon floors. There’s a steady progression of new monsters and map objects as the player delves further underground, but the interesting part is that each zone has a slightly different approach to generating its layout. This helps to give all the areas a unique atmosphere and even has some implications on exploration and combat mechanics.

design - table, stats, schedule, roguelike, rogue, reward, randomization, loot drop, loot, formula, diablo, CRPG, algorithm, addictive
Not everyone gets the Butcher quest their first time around, but everyone seems to remember it years later.

Another interesting factor is that the availability of quests is randomized as well. This is quite substantial as it means certain characters and bosses — and by extension entire maps — cannot be encountered in a single playthrough. Combined with the ability to start the game anew while retaining character progression, it’s clear that Diablo was designed with replayability in mind.

Loot Drops

Item spawning is often credited as being Diablo’s “secret sauce,” but all of its algorithms have been meticulously catalogued by devoted fans. According to the compiled data, entities that drop items follow slightly different formulas that help give them defining characteristics: chests drop 0-3 treasures based on size, sarcophagi can contain hidden monsters, weapon racks always yield armaments, etc.  However, it’s defeated enemies that make up the bulk of the loot. Let’s take a look:

Regular Monsters:

Gold: 30.3%
Item: 10.7%
Nothing: 59.0%
*Some monster types (Winged Fiends and Hork Spawns) never drop items.

Unique Monsters:

Item: 100%
*Unique monsters always drop an item, and it can either be a book or an item that can take on a prefix and/or suffix (or be unique).

Well, that’s rather simple, isn’t it? Over half the time nothing drops. When it does, it’s usually gold. There’s only a 10.7% chance an item drops from a regular monster, and special ones always drop good loot.

design - table, stats, schedule, roguelike, rogue, reward, randomization, loot drop, loot, formula, diablo, CRPG, algorithm, addictive
You should yield something good…

Aside from quest MacGuffins, items are either consumable or equipable. Consumables consist of health and/or mana recharging potions, stat-raising elixirs, scrolls that cast single-use spells without draining mana, and magic books that teach spells for permanent use.

Equipable items are split into weapons, shields, armour, helms, rings, and amulets. Armour changes the appearance of the player avatar, shields increase the chance of blocking, weapons have different attack speeds and monster-family properties (e.g., swords do 150% damage to Animals, 100% damage to Demons, and 50% damage to Undead), while rings and amulets are indestructible and always Magic or Unique.

All of the equipment also belongs to one of the three main types:

Normal – Standard swords, shields, helmets, etc.; no special attributes.

Magic – Enchanted items shown in blue; can contain one of the aforementioned prefix and/or suffix modifiers.

Unique – Gold items with multiple non-randomized statistics and a set of special properties; most often obtained through completing quests.

Normal items follow a set progression table for each equipment category, e.g., the helms table looks like this: Cap->Skull Cap->Helm->Full Helm->Crown->Great Helm. Each sub-category contains a unique visual, damage/armour range, durability range, sell-price, etc.

design - table, stats, schedule, roguelike, rogue, reward, randomization, loot drop, loot, formula, diablo, CRPG, algorithm, addictive
“Zodiac” branded jewelry was always a keeper.

Magic items are upgraded versions of normal items enhanced with one or two special properties. These properties include elemental damage/resistance, character attribute enhancement, hit chance boost, etc. Much like regular equipment, special properties can be split into categories and sub-categories, e.g., the added fire damage category contains the sub-categories of: Flame->Fire->Burning->Flaming, each one with a different extra-damage range.

Sub-categories also fall into a prefix or a suffix slot and get added to the actual name of the item, e.g., the Ivory Mace of Swiftness contains the “Ivory” prefix, granting 31-40 additional magic resistance, and the “Sorcery” suffix, increasing the player’s Magic attribute by 16-30.

It’s also worth noting that special properties can only be applied to certain categories of items, and some prefixes are incompatible with other types of suffixes.

… the highly-coveted suffix enchantment “of the Zodiac” (adds between 16 and 20 to all four Attributes evenly) is only available on rings and amulets, so the game engine cannot generate Shields of the Zodiac or Helms of the Zodiac.

…systemic limitations within the game mechanism prevent some prefixes and suffixes from appearing together on the same item. For example, the item “Godly Plate of the Whale” (abbreviated on Battle.net as “G.P.O.W.”) cannot be generated by any monster or vendor in the game.

Unique items can contain up to six special properties, but are not enhanced via the same mechanism as Magic items. Instead, each Unique item has a specific name, a potentially unique icon, and a custom set of statistics/special properties. For example, the “Gotterdamerung” helm has an armour class of 60, adds 20 to all character attributes, lowers damage by 4, drops all resistances to 0, and decreases the player’s light radius by 40%.

The actual formulae for generating items are quite complex and take into consideration the player’s level, type of spawn, location, existing items, and various other variables. Jarulf’s Guide offers a full breakdown of these, but here’s what the system produced during my playthrough:

design - table, stats, schedule, roguelike, rogue, reward, randomization, loot drop, loot, formula, diablo, CRPG, algorithm, addictive

It’s immediately obvious that consumables made up the largest group of spawned items. A total of 175 dropped throughout the game, with an average of 9.2 per map. As usual, the smaller static maps skewed this to be a bit lower than the median.

Consumables steadily declined throughout the game, and this is notable as it’s a fairly subtle way of adjusting difficulty. Early on in the game, health and mana potions are quite abundant in order to facilitate exploration and experimentation for newcomers. Later on, it’s expected that the player has a greater mastery of the game’s mechanics and needs to worker harder to maintain momentum.

Normal equipable items made up the second largest group of drops and, somewhat surprisingly, remained prevalent long after they had outlived their usefulness. Even in the last map of the game, Normals dropped quite frequently despite only being beneficial during the opening map or two. A total of 144 Normal items dropped during my playthrough, with an average of 7.6 per map.

Magic items didn’t start appearing until the second map, and from there on spawned regularly following a rough sine wave pattern. The 99 Magic drops in the game represented the bulk of the equipment changes, but only outnumbered Normal drops on a handful of maps with an average of 5.2 per floor.

design - table, stats, schedule, roguelike, rogue, reward, randomization, loot drop, loot, formula, diablo, CRPG, algorithm, addictive
Unique items get a custom pop-up window in the top-left as all of their special attributes wouldn’t fit in the properties box at the bottom of the screen.

Only 8 Unique items dropped throughout the whole game, an average of 0.4 per map, resulting in 4 equipment changes. This 50% equipment-change ratio might not seem that high for these powerful artefacts, but it’s a much higher ratio than that of Normal or Magic items: 2.1% and 8.1% respectively. What’s more, Unique items had the highest longevity out of all the equipables due to their usefulness, e.g., the Skeleton King’s Undead Crown obtained in map #4 was the helm I wore for the remainder of the game due to its life-leeching properties.

Overall 25 equipment changes took place in the game, but only 15 of these came from loot drops. This makes for a paltry 6.0% overall equipment-change ratio, which is all the starker considering various item slots were rarely swapped.

design - table, stats, schedule, roguelike, rogue, reward, randomization, loot drop, loot, formula, diablo, CRPG, algorithm, addictive
Trivia: it’s ordinarily impossible to pick up Diablo’s drops as the game ends immediately after he’s defeated. The trick here is to select the Telekinesis spell before the boss dies from ongoing damage, e.g., a summoned Guardian, and then click on the spawned item.

Economy

Economies in RPGs can be quite tricky. Their goal is to give the player plenty of paid options for goods and services without making the currency too rare or too prevalent. Diablo does a great job of hitting this goal as there’s always something to spend money on: identifying items, repairing equipment, recharging magic staves, or even getting a glance at one shopkeeper’s inventory. And of course there are the items themselves:

design - table, stats, schedule, roguelike, rogue, reward, randomization, loot drop, loot, formula, diablo, CRPG, algorithm, addictive

During my playthrough, consumables made up the bulk of the purchasables and climbed sharply towards the end of the game. The main reason for this was the need to stock up on health/rejuvenation potions in order to plow through the tougher monster encounters.

Normal items were purchased during the first 2 maps, but quickly became obsolete. Magic items replaced them and — with no possibility of buying Unique items — became the main gold-sink. Magic equipment was very expensive, topping off at tens of thousands of gold coins, but well worth it. In a way, Magic items made the economy work by making the shopkeepers a paid-for loot drop.

design - table, stats, schedule, roguelike, rogue, reward, randomization, loot drop, loot, formula, diablo, CRPG, algorithm, addictive
Wirt was far from a fan-favourite, but could procure extremely useful gear.

Unlike most RPGs, the inventory of each seller was generated via an algorithm similar to that of the in-dungeon item spawning. Merchant-items tended to stick around until the player leveled up, allowing a bit of time to gather enough gold to purchase them, and helped alleviate potential issues with consistently getting inappropriate items, i.e., high-dexterity bows for the Sorcerer. The shopkeeps were also notable for having their own personalities and adding a bit of flavour to the economy itself, e.g., they’d only pay 1 gold piece for “cursed” items (Magic equipment with negative special properties), Wirt the Peg-Legged Boy offered just one item at a time but could sell the best equipment in the game, etc.

Overall only 4 Normal and 6 Magic items were bought during my playthrough — compared to 157 consumables — but these accounted for massive 40% of the equipment changes.

The actual amount of gold obtained by picking up coins and selling items can be seen below:

design - table, stats, schedule, roguelike, rogue, reward, randomization, loot drop, loot, formula, diablo, CRPG, algorithm, addictive

Despite a few sharp peaks and valleys, gold accumulation slowly grew throughout the game. This was true of both the quantities of gold pieces dropped and the prices of sold items. What’s most interesting here is that it felt like my Warrior was constantly gathering huge amounts of gold, but these paled in comparison to how much merchants paid for equipment: I accumulated 60932 gold pieces in the game, but less than 10% of that came from gold drops.

When I completed the game, I had just over 5,000 gold pieces left over in my inventory. This was roughly the same amount of gold as the total number of coins picked up throughout the whole game. Essentially, if no gold drops were ever collected, my Warrior still could’ve afforded most (if not all) of his equipment and consumables.

Gold is by far the most common type of drop in the game, so it’s easy to see how it creates the impression that it’s available in large quantities. Since there are still plenty of useful ways to spend small amounts of money — buying potions or repairing equipment — it never feels pointless either. Ultimately gold drops serve as something of a large filler in Diablo, but it’s done quite subtly and the economy never suffers for it.

design - table, stats, schedule, roguelike, rogue, reward, randomization, loot drop, loot, formula, diablo, CRPG, algorithm, addictive
Saving up for a new sword.

Conclusion

Without a doubt, Diablo was very well received. It had an iconic look that spawned countless GeoCities and Tripod sites with Gothic fonts and firewall gifs. It sounded great as well, and its interface made both single-player and multiplayer easy to pick up. The roguelike elements it adopted were also fairly uncommon at the time giving many players a brand new type of experience via large-scale randomization and expertly tuned reward schedules.

Of course various titles tried to copy this template, sometimes wholesale, but never reached the same level of success. Its tempting to say that the reason for this was simply Diablo being more than the sum of its parts, but there’s one more element that might had something to do with it: intelligent design.

Diablo’s entire world, and most specifically its items, were not just randomly generated. The algorithms for creating them were heavily gated, pruning possibilities at each step. While this might sound limiting, it made for a more coherent world with its own atmosphere and ruleset. Instead of finding a “Longsword +1”, the player would receive the “King’s Sword of Haste,” a mighty weapon that — true to its name — increased swing speed and granted a few other bonuses. The item would stay equipped for hours on end, imbuing it with a sense of importance, and conjure images of a long gone dynasty and its skilled blacksmiths. It’d be natural for the player to form an attachment to the weapon, and its “specialness” would only get accentuated by the lack of any bows or shields with the same prefix and suffix. The presence of fixed items and quest would only add credence to the sword’s legacy, blurring the lines between scripted and generated content, and bring forth a tinge of longing and regret when something better came along.

And when Diablo was finally defeated, the player could simply keep going. The quest for better loot never quite ended, which is perhaps why the game is still played and modded to this day.

16 Comments

  • Jesus, that must’ve taken you a long while to compile. Any plans on doing a similar write up for the expansions/sequels?

  • Nice writeup. Diablo really was groundbreaking and that’s evidenced by the communities it spawned and the number of people that flocked to it. I still remember the ‘legit only no PK’ games, the dupers, the hackers, the scanners… but best of all, the variants. There was a whole group of people who would make up rulesets to apply to the game (such as naked mages who wouldn’t wear any items at all) to make it more challenging.

    • Yeah, I recall the original’s multiplayer being quite messy due to data being stored (and edited) locally, but all the more intriguing for it. My favourite hack was ghost-mode which allowed a user to join someone’s game while invisible to all participants. Mayhem always ensued.

  • Very comprehensive and interesting write-up. The provision of stats and the analysis is also very insightful. Well done and commendable effort!

Leave a Reply to LarLar Cancel reply

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