A better approach (IMHO) to loot in RPG games is to give NPCs/monsters actual equipment they can use and then drop naturally. You can combine this with a trinket generator to give each one a little more flavor. Of course some mobs carry stuff they can't use themselves (for example because it is assumed they looted it off someone), that's also fine - just put it into the "character generator" function or the monster template.
I'm a huge fan of giving mobs some history and uniqueness, and that's an easy way to do it. A nice side effect is that you don't have to think about loot separately when designing the content, because it comes naturally from the design of the mob. This also means that, by definition, a mob can never drop an inappropriate item.
Recently, I re-discovered the ancient Baldur's Gate games (enhanced edition), and they do something similar. Mobs drop the actual equipment they have.
Some loot traditionally comes from the body of the monster itself, like a rat's tail or a wolf's fur which you can bring to the next merchant or quest-giver for reward. A more natural method of doing it would be solely through the skill/crafting system, instead of dropping pre-defined animal parts just because they happen to be important to some quest.
I think that's a cool idea, but in practice it doesn't seem to lead to very fun gameplay. It means a large swath of monsters: jellies, giant insects, wolves, bears, spiders, serpents, etc. wouldn't drop anything. You'd end up basically just trying to kill "monsters" that are humans. To me, that's not very fun.
> You can combine this with a trinket generator to give each one a little more flavor.
I do have that. They are "powers" and work similar to items in Diablo where they can be a prefix or suffix on the name of the item and modify its stats. So you can get a "Glimmering Stick of Wounding".
> This also means that, by definition, a mob can never drop an inappropriate item.
I did try this, but my experience was that it made killing mobs predictable and boring. "Oh, look, the wizard dropped yet another robe." I deliberately sacrificed realism (which is of limited value in my book anyway) to get a more exciting, surprising game.
> Some loot traditionally comes from the body of the monster itself, like a rat's tail or a wolf's fur which you can bring to the next merchant or quest-giver for reward. A more natural method of doing it would be solely through the skill/crafting system, instead of dropping pre-defined animal parts just because they happen to be important to some quest.
I do have that too. There is a "crucible" in the "town" where you can combine items to make new ones (again similar to Diablo). It's a fun mechanic, but I don't want to lean to heavily on it. I find games where you go into the dungeon, amass a pile of rat's tails, sell them, repeat, to be super boring.
>I did try this, but my experience was that it made killing mobs predictable and boring. "Oh, look, the wizard dropped yet another robe." I deliberately sacrificed realism (which is of limited value in my book anyway) to get a more exciting, surprising game.
My opinion is somewhere between the two. While yes, repetitive loot is boring, seeing an enemy shoot fireballs at me and knowing its because of an item he has (an item i can loot), has its own thrill. "ooo! i want that!". It makes battles more fun, knowing that you are gonna get something cool.
> It means a large swath of monsters: jellies, giant insects, wolves, bears, spiders, serpents, etc. wouldn't drop anything
Sure they would - a jelly drops a potion made from its body, the other animals have stingers, teeth and claws that are excellent weapons, and skin or plates that make armor.
A petrified dead snake makes a great wand.
A web from a spider can be used as a trap item (throw it at someone and "stun" them for a time). Make it reusable by pulling back the cord attached to it.
If going for realism, it could be argued that rare ferocious beasts, or their unique body parts could have very high trophy value (as opposed to humans).
Just witness the extinction of many real life species that are killed for perceived magical qualities of a small body part. For added realism, it makes it easy to just leave the body to rot and sell the small rhino horn to shady criminals.
For added effect, if they are rare enough, they become more valuable the more you kill them...
In contrast this was one of the things I most liked about Everquest (in its early releases).
First, most loot had a reason to be there and some logic to it. You need bone chips? You'd go whack a skeleton. You needed some beetle eyes? Go whack a beetle. Bear meat or skin? Go hunt for bears. It gave the world a cohesiveness and logic that you didn't even have to think about.
Also in the early days you could give mobs items and they would equip them. If you traded a sword and shield with a skeleton and it would drop those back to you when you killed it. This was also pretty cool, because you could tell what damage to expect from the mobs based on what the mob looked like. If it was a skeleton wielding a staff you knew you'd found a catch because those would sell for a pretty penny.
Later on, in subsequent zones that all started to break down a bit more. But overall, I think it kinda retained this in essence. Had the game had a stronger crafting mechanic behind it (instead of being broken from the get go), it would have been quite interesting.
I agree whole heartedly on the just blindly gathering 100's of rat tails or wolf pelts being boring beyond redemption. But there's some charm to being able to hunt for what you need.
The Elder Scrolls series is pretty close to implementing exactly this in practice, and they solved this conundrum in an interesting way: To enchant gear, you need souls. Normally, you can't humanoid souls for this purpose (unless you use black soul gems, which are scarce and not seen in a good light), so you basically get gear from humanoids, and alchemy/enchanting bits from monsters.
> It means a large swath of monsters: jellies, giant insects, wolves, bears, spiders, serpents, etc. wouldn't drop anything.
I guess at a fundamental level it depends on what kind of game you want to make/play. To me the allure of RPG-style games is that they can be story vehicles. Run-of-the-mill animals dropping weapons and gems has the opposite effect on me: I think it disrupts the world's integrity and as a player I always think it's a design weakness.
In any case, they do drop something - their bodies.
> You'd end up basically just trying to kill "monsters" that are humans.
Nope, at least not if we're talking standard fantasy RPGs. You could argue that all the tool-using monsters are human-like, but to me that's not very accurate. If there's a moral in-game argument in there, well, you generally don't kill Goblins because they're not human, you kill them because they're evil or they attack you first. There are generally tons of tool-using monsters in fantasy settings that aren't even humanoid. But yeah, I think it's OK to have human bad guys as well. To me, basing the distinction whether to kill some creature on whether they're human or not feels weird and questionable.
> I think that's a cool idea, but in practice it doesn't seem to lead to very fun gameplay.
Obviously, I disagree. Not every mob needs to drop riches, especially if the loot doesn't make sense within the story. Providing predictable and nonsensical short-term rewards is not a player retention strategy I'm overly fond of, I might as well just install ProgressQuest and watch that for half an hour. On the other hand, there are many games that do just that, so your view is clearly commercially viable.
> "Oh, look, the wizard dropped yet another robe."
That's only a problem if the expectation is that every lootable item is indeed loot-worthy.
> I deliberately sacrificed realism (which is of limited value in my book anyway) to get a more exciting, surprising game.
I see you're not kidding about not caring for realism. That's of course totally fine, do your thing. I'm not trying to convince you of anything. My point is that I personally think the choice between fun and realism implies a false dichotomy. Yes, dropping "realistic" loot is a bit predictable - but it's a good kind of predictability that makes the in-game world more convincing. And with just a little bit of good will and creativity you can still make them drop unique and surprising things without breaking their character.
Maybe I'm mistaken but you sound a bit defensive, which was not my intention. Once again, this is not a critique of your game. It's a very personal opinion about loot and the style of games I like to play. At the end of the day, you're the guy building something amazing and I'm just a random dude on the internet who except for the occasional abysmal LD entry never even made a real game. So: rock on :)
Sure, but this is exactly how Titan Quest (not a roguelike, but an action-RPG) works. Animals will never drop spears, but if you see an enemy with a bow, you will most likely find a bow on its corpse (or nothing).
It's also worth pointing out that all sorts of realistic history has all sorts of random stuff being carried by combatants. Organised raiding parties that are returning will be carrying loads of valuable odds and ends. Stories abound of the stuff that was initially being carried on the retreat from Moscow for instance e.g. milking stools!
In the non-humanoid space you have nesting/crow like behaviour - i.e. "shiny" things, the most famous being dragons and gold. So it's entirely possible for whole classes of creatures to generically carry certain things.
> To me the allure of RPG-style games is that they can be story vehicles.
For my game, I'm not using it as a narrative vehicle. (Or, I am, but I want the narrative to be the player's experience, and not a story the game immerses them in.)
> There are generally tons of tool-using monsters in fantasy settings that aren't even humanoid.
Sure, but if you're going for realism, that still founders on the "how come my seven foot barbarian always fits perfectly in goblin armor?" problem.
Personally, I love the general fantasy environment. Dragons, trolls, swords, wizards. I dig the whole trope. But I'm not hung up on making a detailed, coherent fantasy world. Ultimately, I'm trying to make a fun game. The fantasy stuff is just trappings on top of abstract pieces. They are hugely important because they give the player some intuition about gameplay, but if I have to pick between a fun mechanic and a realistic one, I'll pick the fun one.
Real-life members of the clergy are perfectly capable of walking due north, but no one hates on chess for being unrealistic because bishops only go diagonally.
> Not every mob needs to drop riches, especially if the loot doesn't make sense within the story.
Sure, but the rarity of loot is orthogonal to how you pick loot for the mobs that do drop something.
> so your view is clearly commercially viable
I'm not trying to make a commercial game. I'll be open sourcing it. I'm just trying to make a game that's fun for me to play.
I don't have a lot of free time now that I have kids, so huge immersive detailed games with big stories aren't that appealing to me. I don't have time for that kind of commitment anyway. I want a game where I can drop into the dungeon for ten minutes, get a guaranteed sense of accomplishment from getting some XP and maybe get some great rare loot or kill something cool.
(Of course, the irony of spending an insane amount of time creating a game that is intended to not take much of my time to play isn't lost on me... Maybe I just like coding more than playing.)
> My point is that I personally think the choice between fun and realism implies a false dichotomy.
Absolutely right. Where I can make it more realistic I do. I think realism is really important for usability. To the degree that the game world is consistent, users can predict the effects of their actions.
For example, if you get hit with a cold attack in my game, you get "frozen" and your speed is lowered until it wears off. If you take fire damage after that, it will warm you up and cancel out the cold status. I think that's a nice little bit of edge case behavior that may delight a user when they see the game world following (sort of) the real world's rules.
DCSS works exactly like this: plenty of monsters don't drop anything useful. The other mobs rarely drop anything that useful (except for ammo). Actually, it turns out to be a great game.
I agree that DCSS is a great game, but I think that its loot system leaves much to be desired. Don't get me wrong, the user interface for item and inventory management is smooth as buttered silk (if you know your history, this is in fact the reason for DCSS's ascendance in the first place), but it merely serves to make tolerable the practice of sifting through mountains of worthless garbage to get at the goodies.
In fact, I'd go so far as to say that monster drops in DCSS are universally useless, with the following exceptions: corpses, artifacts dropped by unique monsters, and a few god abilities that are powered by dungeon trash (with Jiyva's being the only one that's actually interesting). Other than that, all interesting items in the player's possession will have generated either randomly or via vault loot.
Recently, I re-discovered the ancient Baldur's Gate games (enhanced edition), and they do something similar. Mobs drop the actual equipment they have.
Loved that mechanics in Fallout; the mobs (being 99% human anyway) had equipment, which included weapon(s), armours and some random stuff like money, drugs you'd expect a particular character to have. They could use all of their equipment in combat, and that's what you were taking after defeating them.
If I recall correctly, in Baldur's Gate mobs could also use the items they had. This made for some particularly fun battles when a mob had a powerful artifact that they were able to use. I imagine it also made design easier: to create an interesting new boss fight, instead of having to create a new creature, the designer could just use a common mob equipped with a powerful artifact.
This can lead to a harder balancing problem, though, as the player becomes as powerful as the sum total of all previous monster equipment. If encounters aren't done in a specific order, that can be especially problematic.
That's a good point. One potential way to handle it is to make many of the powerful monsters optional, and then have a more difficult "bonus dungeon" for players who had defeated all the optional, powerful monsters. Many JRPGs I've played did this, as did the expansion to Baldur's Gate 2.
I have had this explained by a friend in the business as, it was between you and the item; not necessarily carried or wielded by your foe.
still it does make sense to more closely align items with the mobs that your fighting. This could be weapons, armors, trinkets, and such or craft supplies where you have to skin/harvest the kill.
Final Fantasy Tactics was a lot like that -- every random enemy in every random battle had a randomly generated name, and human enemies always had an interesting mix of level-appropriate armor and spells.
>Some loot traditionally comes from the body of the monster itself, like a rat's tail or a wolf's fur which you can bring to the next merchant or quest-giver for reward
Monster hunter follows this idea as well. Almost all the loot comes from killing and carving monster. When you are on a quest you can do some stuff on the side like fishing/mining etc and you will get rewards which can be used in crafting weapons and armour.
One of the many things I love about Dark Souls - enemies drop the arms/armor that they're wearing. It is a low to very low chance per drop, sometimes requiring farming if something you want isn't carried by a merchant, but the variance is good for normal gameplay.
Initially some of the drops are specified using percentages. My advice is to never use percentages when selecting chances to pick an item from an arbitrary list of items. Instead, use numbers which loosely correlate to ratios. Here is an example list of items:
1, 1, 2, 2
the chance of picking the first item is 1/(1+1+2+2) or 1:6. The chance of picking the last item is 2:6. Using this method, you can add arbitrary odds to the list and it will automatically total up the odds for you. For example:
1, 1, 2, 2, 3
The first is a 1:9 chance, the last is a 3:9 chance. The numbers still maintain relative chance next to one another - i.e. you are 3 times more likely to get the last item than the first.
This is better than using percentages because you can add items without having to recalculate the percentages so that everything adds up to one hundred percent (yes you could normalize the percentage but this still makes it tougher to understand the chance of each item relative to one another. If you want to make a high chance of dropping nothing, simply add a null item to the list with a really high chance, i.e.:
(null) 99, (diamond) 1
This results in a 99/100 chance of dropping nothing, and a 1/100 chance of dropping a diamond.
Oh, great comment! I've gone back and forth on exactly this a number of times. I'm not a big fan of percents for exactly the reason you specify. The reason I'm still doing it instead of automatically totalling the odds is because it makes it easier to specify the chances of not dropping anything at all.
> If you want to make a high chance of dropping nothing, simply add a null item to the list with a really high chance, i.e.:
Brilliant. I'm going to change my code and do that. Thank you!
Check out http://diablo2.diablowiki.net/Item_Generation_Tutorial for a slightly more complex system that IMO is a lot more flexible and can give some truly astronomical drop rates on exceptionally rare items (i.e. Zod runes, Tyrael's Might sacred armor).
The trick D2 uses is using a table similar to this:
As you can see, some of the items are actually TreasureClasses, which have their own entries. Whenever the item picker lands on a TreasureClass, it drops to the corresponding table row and "rolls the dice" again, so to speak. This is repeated until the item picker lands on an actual item.
If you look at TreasureClassEx.txt from Diablo II, you'll see that they further use this system to calculate nodrop rates, item generation per act/per difficulty, etc. Pretty cool once you wrap your head around it!
That's a good idea and probably what I'd do if I were to take it one step further - in particular if you went with null item drops, it would be great to "subclass" that so that its ratio does not interfere with the rest of your calculations. I.e. - 1:20 chance of dropping an item, 1:6 chance that it is item type XYZ.
+1 for Diablo 2, the game that destroyed my grades in school. :)
Over the whole area, you should get 5/9 goblins, but any given room can be an interesting mix -- 3 hobgoblins and one soldier, 2 wolves and 2 goblins, one of each, etc.
> It made it impossible for the player to seek certain items. Let’s say you’ve got a good kit of armor except you really could use some high quality boots. How do you fill in that gap?
In many games, believe it or not, is a actually intended. Once certain mobs start dropping certain items, people start camping only those mobs and ignoring everything else causing a large bottle neck for the population (in the case of multiplayer only obviously).
Additionally, say you give a mob 0.01% chance to drop The Sword of a Thousand Truths. And of course everyone wants the The Sword of a Thousand Truths. So every day you go out and farm these kobolds until your fingers are numb rather than exploring the world.
Finally, by providing a clear path to getting what you want, you will likely max out sooner and stop playing until the next content patch, which in turn means less revenue for your game
What does this have to do with a single-player roguelike? I can sort of see
> of course everyone wants the The Sword of a Thousand Truths. So every day you go out and farm these kobolds until your fingers are numb rather than exploring the world
but playing for such a duration is already a massive design failure.
In most of the roguelikes I've played mobs don't continuously respawn like that anyway. If you stay in a dungeon too long, either they'll be no more mobs and you'll starve, or higher level mobs will randomly start popping in.
Did you look at Nethack? Certain monsters have set loot. Dwarves have a high chance of carrying a pickaxe, noble variants have a high chance of having dwarven mithril, shield, iron shoes. Same with Elves. Soldiers carry K- and C-rations. Paper golems leave piles of blank scrolls!
Monsters will pick up items. If you are in the dwarves mines and there's a mining dwarf about, gnomes and other creatures will pick up the piles of rocks they leave behind.
Additionally monsters with the right flag set will often use items. This can reveal their blessed/uncursed/cursed status ("The dagger welds itself to the goblin's hand!") or identify the item - which is sometimes a real pain, when a consumable you needed is used. ("The gnome zaps a wand of lightning! You die...")
Nethack is still unparalleled in how dangerous a monster can be with "your" loot (think you kill a monster with a magic missile, it drops loot, but before you can get to it another one dives into the pile, and quaffs the potion of invisibility/healing you desperately needed).
Neat idea! I am constantly impressed by the number of different and interesting things that Bob works on. All of his game programming work, and his several (if prototypical) programming languages, each exploring some unique idea. https://github.com/munificent?tab=repositories
I've always wanted to write a roguelike. I wrote a woefully incomplete MUD a long time ago. It had the interesting (to me) property of representing items and features as .NET assemblies. Servers could link so that a doorway could move players, with their items and effects, seamlessly onto another. If I recall correctly .NET even had the security model to (nominally) support it safely, where all items may invoke only approved engine APIs, and where trusted assemblies might be loaded while untrusted items and their consumers pass through to be loaded again later on another server. The idea was to enable a sort of open web of interconnected MUD worlds. Only ever made it to the tech demo stage; I recall spending a long time on that system, event handling, and other engine features (classic game dev mistake) and never got around to game content! I don't regret the time: it was primarily a project of exploration and the act if building just the engine was its own reward. (Tomorrow I might try to dig up my old source for the MUD but I suspect it will be like http://www.xkcd.com/1360/ )
Anyway, could anyone recommend a good OSS roguelike that's accessible and easy to hack on? Looks like Angband is OSS, and of course there's NetHack, which if I remember correctly is written in C. Stone Soup's site appears to be down.
Stone Soup is a good community, and sounds like the right idea. The TOME suggestion is also good.
If you just want to write something to share with friends, go with rot.js. It's a nice approach, and it takes away all the complications of delivery. I did a 7drl entry a few years ago. The task of making it deliver in a clean package for multiple platforms took longer than everything else about writing the game put together.
> Anyway, could anyone recommend a good OSS roguelike that's accessible and easy to hack on?
As soon as I get around to open-sourcing mine, I'd recommend it. :)
It's a pretty clean, small codebase. I've spent a ton of time designing it to have a clean extensible architecture. It's written in Dart and runs on the web, which is nice.
I just need to check with work, but that should be fine and I'll put it online soon.
> I learned the hard way that a huge part of the fun of roguelikes is the “lottery effect”. Every time you kill a monster there should be a small chance of getting something really amazing.
That's one way to handle item drops, but it's not the only way, even considering only Angband variants. The other popular loot system has you making your own stuff -- instead of "dragons always drop dragon scale mail" (boring?), you'd have something like "dragons always drop scales, and you can use them to forge dragon scale mail".
I do have crafting too, but I don't want to lean too heavily on it. I don't think it's that fun to spend a lot of time outside of the dungeon just slapping items together.
In the paper and pencil RPG world, if you want to generate a reasonable level 5 sorcerer player character or whatever, there are (usually) extensive systems to go direct to lvl 5 and skip the earlier levels. So just generate your NPCs / Monsters the same way. Obviously all paper and pencil RPGs have a "system" for generating level 1 PCs, and randomly simulating in a computer the lifespan of a character as it levels up doesn't sound all that hard or time consuming.
I fooled around with this idea in the 80s and it wasn't feasible computationally at the time, but it would work now. One funny problem I ran into is a stereotypical adventure eating monster tends to accumulate a lot of lower level adventurer cruft, not as much good stuff as you might hope for. Lets be realistic, a dragon is going to have to spend a large part of its lifespan eating unlucky dwarves if you hope to catch it with a cache of exotic gems harvested from those dwarves. A gang of thieves would on the surface have "harvested" lots of loot from peasants and occasional nobles over the years, but over the years most of that has drained out due to simple weight and need to eat. So thieves were another disappointment. As I recall corpse robber monsters tended to accumulate the best loot over time. Also nest type monsters, due to inability to move / spend anything they get, killer trees got the best loot. This can't be an original idea? I think this is how dwarf fortress generates people but I'm not sure?
For pathfinder, although I can't recall the name, there is an entire book (article? chapter?) just on custom NPC/Monster design techniques. Actually using a OGL licensed scheme might have issues. But the existence of one solution does imply the problem is solvable in at least one situation (LOL).
"In Angband, any monster that drops stuff can drop pretty much anything. Monsters have a level, and if they drop loot, it just randomly picks any item near the monsters level."
-> (RPG related) I felt like this was an issue with Diablo 3 compared to Diablo 2. You basically just had to mash around in D3 grinding the top-level monsters and hoping... whereas in Diablo 2 you could make conscious choices over where to farm if your goal was to find a certain item (albeit the drop chances were extremely low, so most people just did Meph runs or Baal runs and traded their way up). Here though the author is doing drops way more realistic than either of those games heh, so that's quite an awesome feat.
Itemization seems really tricky; analyzing Diablo 2 vs Diablo 3 can actually provide some interesting insight into how item systems affect gameplay etc... maybe those devs even tried doing it realistically at some point but found it didn't pan out gameplay-wise?
Having played both games extensively, I feel the most interesting thing to analyze about in which parts of the game are randomized, and how that randomization impacts gameplay. Let me pick 2 examples.
In Diablo 2, areas were randomized internally but externally consistent: the individual makeup of areas would be different every game, but the connections between different areas would remain the same.[1] This means that repeatedly exploring the same area remains entertaining for a relatively long time in Diablo 2. This is important, because as you say, items have a higher chance of dropping from certain monsters than from others. If you "have to" keep farming the same area over and over, it helps prevent boredom if that map is different every time.
In Diablo 3, the internal layout for each outdoor area is always the same, and even indoor areas are relatively static, compared to Diablo 2's. After a while, you know the best way to maximize efficiency, which encourages people to repeatedly farm one area, but this is a double edged sword: once you know what the most profitable way of playing the game is, playing any other is much less attractive. This actually reduces the range of (rational) possible actions in the game, inducing boredom more quickly. In addition, some of the best areas to farm in Diablo 3 are the dungeons. These are (smaller and optional) sub-levels within areas. Each area had fixed dungeons in Diablo 2. In Diablo 3 areas can often spawn 5 or 6 different special events, while it has only 2 or 3 (fixed, just like the areas themselves) spots for such events. This adds another layer of randomization: you need to be lucky twice: once to find the dungeon and once again to find the item in the dungeon.[2]
Something else that changed between Diablo 2 and 3 is the way item affixes are randomized. In both games, magical items can spawn with certain properties, and those properties have stat ranges. You might find a Short Sword with the Red prefix, giving +1 or +2 damage. In Diablo 2, the best items (Uniques, Sets and Runewords) had fixed affixes with random stat ranges: you might find a Tyrael's Might with anything between +20 Str and +30 Str (in addition to have a dozen other affixes), but that it would get a significant +Str roll was guaranteed. Even the worst Tyrael's Might was a great find. Relatively casual players would be happy with any stat rolls, while true Diablo 2 addicts would make do with nothing less than a +30 roll. Such a perfect roll could (and still can) increase the value of an item by a factor of 10 to 1000+,[3] even if the objective difference between a random roll and a perfect roll is fairly small in the grand scheme of things.
In Diablo 3, this was thrown out the window. Legendary and Set items get some fixed affixes, but even if you got the best item in the game and perfect rolls on the fixed affixes, you still need 1-3 other affixes to get a genuinely good item. In addition, the stat ranges were much wider. Immortal King's Tribal Binding could get +30 or +200 Str, and with the right random affix, all the way to +300 Str.[4] This makes the relation between gear cost and power fairly linear. You might have to find half a dozen Tribal Bindings before you got one worth using. In addition to finding the dungeon, and then the item, you also need to get good affixes on the item, then get good rolls on your affixes. Finally, in some slots, the best items in the game were not Legendaries, with their half-random setup, but Rares, with fully random affixes, which instead of 1-3 good affixes, need 5 or 6. It is no wonder then that players were unable to find their own items, and were forced to turn to an auction house, where they were primarily supplied by bots and gold farmers (unknowingly, but still).
Blizzard tried to address some of these issues in the Reaper of Souls expansion. Here's a few examples relating to the above points:
* Enchanting was added: allows you to replace one of each item's affixes with a different one (only one affix per item, but you can repeatedly change the same affix until you get one you like), reducing the impact of random affixes.
* Rifts were introduced: random dungeons with random monsters and a random boss at the end, which are generally slightly more efficient than just farming normal areas.
* The auction house was removed, reducing the impact of bots and farmers, allowing an increase in the drop rate. Trading in general was removed as well, making it impossible to turn to third-party trading sites (as was common in Diablo 2).
* The stat ranges on affixes were reduced, lessening the dependence on highly random items. Many Legendary items got unique Legendary-only affixes that (when combined in clever ways) make them far better than fully random Rare items.
Overall, this has significantly improved the game, but having played Diablo 2, Diablo 3 and Diablo 3 after the Reaper of Souls expansion, I can't help but feel like these are in the end just patches on a fundamentally flawed design, and that some of those patches actively prevent it from becoming better. Diablo 2, on release, was a bad implementation of a great design. This allowed it to be improved over the course of almost a decade (sporadically by modern standards, but impressive at the time). Diablo 3, on release, was a mediocre implementation of a bad design. Blizzard improved the implementation (at significant cost, to the point of forcing them to postpone the expansion), and details of the design, but it is still only a good implementation of a mediocre design, and improving it much further strikes me as uneconomical, to put it mildly.
[2] It's worth pointing out the two different types of randomization in games. One is the type the player can influence, like which area to farm and whether to play solo or in groups. The other is forced upon players, like what affixes your drops have or whether a dungeon spawns in a given area. Players tolerate the latter to much higher degree than the former.
Play Path of Exile. It's a much better game than Diablo 3.
Whether or not Rares or Uniques are best in slot items is a matter of designers taste when it comes to Action RPGs. You can tune the item drop tables however you want. I would argue its nicer to have rares be BiS items, as its more fun when you see item diversity in the top builds. Seeing everyone walk around with the same Uniques is boring.
Diablo 3 fails because it does not provide enough ways to customize a character's build. There are a handful of stats that are important, and they mostly scale linearly. The skills are all unlocked, and you can change them at will.
If you do not have enough ways to customize your character, the item drop tables are moot. You can't drop items that are interesting if there are no interesting stats.
Path of Exile is the true successor to Diablo 2. The options for customization are endless, so every item that drops has the potential to be interesting. You should check that out if you are interested in ARPGs, especially something like Diablo 2. And if you are really interested in game analysis, their systems are really unmatched in today's game marketplace.
Diablo 3 is not a game in the Diablo genre. D3 is closer to something like Baldur's Gate: Dark Alliance, or the X-Men Legends games.
Edit: I focused on the itemization part of your post, but I totally missed the map part of your post.
I'm not sure map randomness was relevant at all in Diablo 2. That game was pretty much all Meph runs, and then Baal runs. The maps didn't really matter, you just teleported to the boss and hoped for good drops.
I've played Path of Exile a little, but while I'm don't usually care much about graphics in game, the style in PoE was an incredible turnoff for me. It's a real shame, because the game design indeed has some very interesting ideas, and I would've loved to explore them in more depth.
I agree with your point on maps. Diablo 2's focus on bosses over general farming was one of its weak points. The map structure would've been more important if Blizzard had made boss runs and general farming rewarding in distinct ways.
There are other things that I feel Diablo 3 did wrong, but my comment was getting dangerously long as it was: lack of build permanence (you touched on this), non-existent social features (slightly improved in the expansion), uninspired items (less so since the expansion) and badly tuned reward structure (I appear to be alone in feeling the expansion has not improved this aspect).
There's something strangly satisfying about analysing how many things were wrong with Diablo 3 compared to Diablo 2. I probably put 200-300 hours into Diablo 2 and loved it, but I think I played Diablo 3 for about 8 hours before quitting.
Give the expansion a try. I am thoroughly enjoying it now, where I only played 2 characters to 60 and then stopped with the core game. Most of the things that put me off playing are now fixed.
Back when I played adventure/RPG games...the one thing that broke me out of the suspension of disbelief in most games was how, after defeating an enemy who was clearly using some amazing equipment, your party wouldn't bother picking it up and instead, pick up a few GP and maybe a "Short Sword"
Of course, I realize now that that was a reasonable constraint of game design and balance. So it's not coincidental that my favorite RPG of all time, Ultima 7, had a famously in-depth inventory system, and yet also was so unbalanced that combat was mostly pointless.
Halo 1 actually does that. The Covenant Elites have neregy swords that dissipate once you kill them, and the grunts had plasma cannons that would just explode when the grunt was killed. That's why it was so epic when they made those weapons pick-able in Halo 2
(And Tartarus's Gravity Hammer in Halo 3!!)
Still waiting to be able to pick up Hunter's built-in arm weapons though....
Folks who enjoyed this article might also like the book Game Programming Patterns: http://gameprogrammingpatterns.com/ - also written by the author Bob Nystrom.
The title mangling introduced a case of RAS syndrome. RPG games is redundant since the G stands for game.
The original title of this article is just "Dropping Loot". If you're going to mangle the title, at least mangle it in a way that doesn't introduce a new error!
Redundancy is an important part of communication and error- robustness I both human and computer languages.
RAS Syndrome is a sweet spot trading off economy of characters/syllables vs clarity of message. As with most things humans gravitate to, it is a rational act, not a stupid one.
"A foolish consistency is the hobgoblin of small minds."
Nope, completely disagree. It is not a rational act, it indicates thoughtlessness in language. And much as I like the Emerson quote, it does not apply here. The question isn't consistency, it's accuracy and clarity. The redundancy does not add anything -- your assertion that it adds error robustness makes no sense because the communication medium is not lossy.
Even if in the general case redundancy can be useful -- I don't correct others' spoken conversation so long as I can understand what's being communicated any more than you do -- in this case it detracts and distracts.
OK, so this increases realism, but at the cost of making balancing much harder. If you decide you want the player to get healing potions at a certain rate, you now don't have a single place where you could specify that.
Just for once I'd love to play a game that emphasizes realism at the cost of game balance. Because constant focus on the latter in pretty much every game makes for a lot of ridiculous and suspension-of-disbelief-killing situations like a group of soldiers with chainguns shooting down from the sky an armoured FTL-capable Battlecruiser, or small bats dropping swords and a metric ton of gold from their "inventory".
Realism is unbalanced, but guess what, the real world is also unbalanced. I want to play a game reflecting that.
I'm pretty sure you wouldn't want to play that game for long. If you want the real world, you know where to find it. People play games to have fun. To some degree (but much smaller than most people think), realism increases fun, but when it makes the game frustrating, boring and unwinnable, it's bad.
But you can make great games with more emphasis on simulation. For instance, Operation Flashpoint/ARMA(?) or the original Rainbow 6, where firefights are absolutely deadly.
I recommend having a listen through some of the http://www.roguelikeradio.com/ podcasts. They focus heavily on roguelike design and development topics. I don't believe they have featured a podcast specifically on loot but it has featured as a topic in several of them.
It would be quite neat to extend this with an evolutionary algorithm for picking starting positions in the hierarchy and probabilities based upon some proxies of enjoy-ability or play-ability.
This is probably the best TL;DR: The author created a nice way of specifying loot dropping behavior such that (begin quote): "Any monster has a chance of dropping almost any item, so you have that pleasant anticipation. At the time time, the probabilities are weighted so that each monster still has a unique “feel” to their drops, and you can seek out monsters that are more likely to drop what you want."
And the author achieved this with a concise but clear DSL in which you specify the probability of starting at a particular point in the equipment hierarchy, and then an object is chosen by traversing (probabilistically) the equipment hierarchy.
I'm a huge fan of giving mobs some history and uniqueness, and that's an easy way to do it. A nice side effect is that you don't have to think about loot separately when designing the content, because it comes naturally from the design of the mob. This also means that, by definition, a mob can never drop an inappropriate item.
Recently, I re-discovered the ancient Baldur's Gate games (enhanced edition), and they do something similar. Mobs drop the actual equipment they have.
Some loot traditionally comes from the body of the monster itself, like a rat's tail or a wolf's fur which you can bring to the next merchant or quest-giver for reward. A more natural method of doing it would be solely through the skill/crafting system, instead of dropping pre-defined animal parts just because they happen to be important to some quest.