
An Oral History of Diablo II - fitzwatermellow
http://www.usgamer.net/articles/in-their-own-words-an-oral-history-of-diablo-ii-with-david-brevik-max-schaefer-and-erich-schaefer
======
abritinthebay
I used to work with Stieg Hedlund (the sole designer of D2) and it was really
interesting to hear him talk about the issues he used to have to both solve
and create (game design is often about creating problems - for players as well
as solving technical problems).

Would like to have seen more of the nitty gritty about the game. This is a
very project-manager-ish view of its development and as such sadly misses a
lot of the work involved.

That said - it's also invaluable. Very interesting read.

------
derptacos
Also recommend reading Stay Awhile and Listen: How Two Blizzards Unleashed
Diablo and Forged a Video-Game Empire - David L. Craddock
[http://www.amazon.com/dp/B00G8UL474](http://www.amazon.com/dp/B00G8UL474)

Really interesting read, covers Diablo/Warcraft development from its humble
beginnings.

------
panic
It's interesting that the cinematics were made by an entirely separate team
that barely communicated with the game developers. Somehow it produced a
better story than Diablo 3's more traditional mixing of story with gameplay.

~~~
stormbrew
Well, I don't think this is why. Diablo 3's problem is just that the story
writing, and particularly the dialog writing, is extremely trite.

Diablo and Diablo 2 had fairly simple but compelling stories that were dropped
in at key moments. Diablo 3 is largely progressively more annoying demons
telling you how unlikely you are to beat them. It just gets tiresome. That'd
be true if they were separated cut scenes as in Diablo 2 or integrated dialog
as in 3.

~~~
jonhohle
I was a fan of the "Death" diplomacy in D3 /sarc. At least for the barbarian
role, the solution to all problems was to murder the current antagonist, even
when it seemed like the antagonizer's goal was effectively the same as the
hero's; they just weren't the hero.

The hero him/herself was responsible for as much or more death than any of the
enemies.

~~~
TeMPOraL
> _The hero him /herself was responsible for as much or more death than any of
> the enemies._

Isn't it so true about many popular stories? If you tally the body count, it
often turns out that it's the protagonist who is the monster.

~~~
qznc
The Sword of Good
[http://lesswrong.com/lw/169/the_sword_of_good/](http://lesswrong.com/lw/169/the_sword_of_good/)

~~~
TeMPOraL
A great story, thanks for reminding me of it!

Another interesting but little-known story by Eliezer is
[http://lesswrong.com/lw/y4/three_worlds_collide_08/](http://lesswrong.com/lw/y4/three_worlds_collide_08/).

------
vernie
I'm always disappointed by an oral history that I can't listen to.

~~~
simoncion
Feed the text of the article through Festival? >:D

~~~
Strom
It's not that the audio is missing, it's that you can't hear the emotion when
the history was told. That extra data is missing from the text.

------
atomical
I would be interested in an oral history of Dungeon Siege.

~~~
brownbat
In part, from Scott Bilas, from Gas Powered Games during its development:
[http://scottbilas.com/games/dungeon-
siege/](http://scottbilas.com/games/dungeon-siege/)

------
hitlin37
one of the best games ever made.

~~~
gt565k
Seeing this brought back some memories.

I used to run farming bots for Diablo II when I was 13-16 years old and had
about 20 copies of the game. Bots would run all day (while I was in school),
and all night. I'd wake up early in the morning. Check the loot and transfer
it to mule accounts, then restart the bots and go to school. I'd then try to
trade items for general commodity items, like high runes, or certain skill
items that were used as a form of trading currency due to their high demand.

The bots had some custom features that would let you bypass IP bans by logging
into your router's settings, changing the mac address, and restarting your
internet connection so you can get a new IP address.

One of the bots I used was written in the AutoIt Scripting Language. Since the
bot was open source, I was able to see how the code was structured and modify
it myself.

I attribute my introduction to programming to this farming bot, and I believe
is one of the reasons I chose to study Computer Science.

The cherry on top was that I made about $600-$700 when I was 14 or 15 years
old by selling a lot of farmed items on ebay.

Personally, Diablo III was a big disappointment for me. The game felt quite
different from a lot of aspects. Common loot was now split into player
specific loot, too many crafting recipes, unique items were garbage, etc...

I'd be happy to answer any questions regarding Diablo II or even the
hacking/botting community around it.

~~~
gadrfgaesgysd
Can you give a in-depth description of how the bots worked? You can assume the
reader has good knowledge of programming, AutoIt and Diablo 2.

~~~
gt565k
Typically you had 2 types of bots:

1\. AutoIt bots that simulate human interaction

2\. Other bots that manipulate game memory (usually caught by the anti-cheat
dubbed 'Warden', more on that later)

The reason most bots were PindleSkin bots, is because the PindleSkin unique
monster spawns on Act 5 and can be accessed through a red portal. The level
generated is always the same, so the path taken to the monster is always the
same.

1\. AutoIt bots simulate keyboard input and mouse clicks, and can check pixel
colors at an x,y location on the screen. This alone allows you to navigate to
the portal, enter it, and reach the monster. Enter a predefined number of key
strokes and mouseclicks to cast spells and kill the monsters, and afterwards
collect the loot.

Some examples of usage: Check the health and mana spheres pixel colors. You
could estimate what percentage of HP or Mana your character had, by using some
basic math, since the HP and Mana spheres were symmetrical. If the percentage
was below a threshold, send keystroke 1, 2, 3, or 4 (this tells the game to
drink a potion from one of those slots in your belt).

Checking inventory space and unloading items into the stash was done in a
similar matter. The inventory is a 2d grid of squares, and each square has the
same pixel color at the center. You'd count how much space you have by
checking the pixels of each square and building a 2d array. You could also
figure out how big an item was in terms of inventory space, by checking the
empty spaces before and after lifting it off your inventory, and subtracting
to get the difference.

Collecting the loot was initially done by using a d2loader pick-it hack, which
injects into game memory, and uses a predefined list of items you want it to
pick up. Now since this modified the memory, it was easily detectable, so when
blizzard released the 'Warden' anti-cheat, it became useless.

Some guy by the name manus-magnus came around and released a new PindleSkin
bot, written in AutoIt, which had a built in OCR. He was able to literally
scan the items that were dropped, turn them into text, determine if they are
rare, unique, or normal (based on pixel color), and whether to pick them up
based on the pre-configured data the user specified.

He also took advantage of the ability to modify sprites on the client side,
and add colored blocks to key points of interest places on the level. This
allowed him to use these colored blocks as markers and navigate to reach the
monsters he wanted to kill. All without manipulating game memory. I believe
his bot included the 2 other unique monsters on Act 5 (Shenk and something
else?)

Blizzard had such a hard time catching this bot, some believe it is the reason
they added a 20 game / hr limit, and if you exceeded it, you got a temporary
15 minute IP ban.

2\. Non AutoIt bots relied on injecting into the game memory, and using a
maphack to find the monsters on randomly generated levels. They were a lot
more powerful, as they were able receive a lot more information from the game,
but were usually banned swiftly. I don't know that much about the
implementation details of the non AutoIt bots.

If you want to find more information, you can search around the AutoIt forums
for a pindle skin bot, or search online for manus magnus pindleskin bot.

~~~
gt565k
I could also go into detail on how the Diablo Clone hunting was done on
irc.dclone.org.

The TLDR is that a bunch of people get together and pool in Stone of Jordan
rings, and then decide which servers they'll spawn the clone on, and once
they're all sitting on a few of those servers, the initiate the selling and
"popping" (spawning the clone) on the server.

~~~
tgb
I'm interested if it's half as good as your other post! Can you explain what
exactly they're trying to achieve here? Was this getting the Uber diablo
triggered by selling SoJs?

~~~
gt565k
Yes indeed in order to spawn the Diablo Clone, you have to sell SoJs.

No one knows what the exact number of SoJs is, so a community was created and
it used irc.dclone.org as the IRC server to manage all of this and collect
data over time. This gave some historical data on how many SoJ's were sold for
a certain IP address before that server "popped" (the clone spawned)

Each Diablo game you create, has a unique IP address.

Let's say you're on a server with IP 123.123.123.XXX

When you sell SoJ's, all servers that end with XXX will eventually spawn a
Diablo Clone and receive the "XYZ SoJs have been sold to merchants" message.

People would gather on irc.dclone.org and pool together say 100-150 SoJs on
the NON-LADDER mode. Items were cheaper on NON-LADDER, so the SoJ's were sold
on a NON-LADDER server, but, the people who organize the event, would in
advance hog the predetermined servers that end with XXX on LADDER mode. That
way, they'd get the annihilus charm the clone drops and it'd be worth more.

So in essence, you're selling the SoJs on the NON-LADDER servers, but their
effect propagates to the LADDER servers. Thus, your returns are much higher.

In order to find these servers, you'd use a similar AutoIt bot to basically
create a game every 3 minutes and use some basic netstat commands to extract
the IP address and once a game has the .XXX address you want, the bot will
idle in it, until your group spawns the diablo clone.

A private diablo clone spawning event would typically go in the following
order:

1\. Get number of people to transfer SoJs to one account (buy-in is usually 10
SoJs/person assuming ~10-12 people party)

2\. At time T, the SoJs selling will begin

3\. Announce the IP address XXX at (T - 5 hours), this will give you 5 hours
to search for game servers with IP address XXX.

4\. Start selling SoJs at time T

5\. Clone Spawns, everyone kills the clone in the games they have found, and
collects the annihilus charm.

When I was doing this regularly, an unidentified annihilus charm was worth
$20-$30 on ebay, one with perfect or near perfect stats could go up to $100.

~~~
tgb
Wow, non ladder affected ladder? How bizarre that they would do that. Such a
strange mechanic for Blizzard to introduce.

------
lamontcg
Diablo didn't invent cheating in internet games. I was writing bots for
nettrek back in 1992, and it had been going on for a lot longer than that.

Nettrek probably invented anti-cheat practices including RSA signing the
binaries and moving most of the logic to server-side. You could program info
borgs to give you better display of information than other humans, and you
could program combat borgs that simply reacted faster than humans could
(particularly with automatic tractor/pressors, auto phasers at close distance,
and auto aiming torps), but cloaked ships had their positions randomized
server side so you couldn't get magic accuracy to lock on them, and torp
wobble and hits were all computed server side so there was no way for client
hacking to change the basic physics.

------
listic
Great game designers are not necessarily great game historians and/or have
good memory.

> It's amazing how many new standard things came out of Diablo and Diablo II.
> [...] The rarity thing [for loot], for example, just kind of made sense.

While Diablo certainly helped popularize quite a few such features and even
arguably gave birth to a genre (I heard people calling various other games _a
Diablo_ ), it would be overconfident for them to claim inventing it: Magic the
Gathering [1] had it years prior. There, rarity was implemented with printed
pages: you print all your common cards on a Common sheet, uncommon cards on an
Uncommon sheet and rare on Rare sheet; then put 1 card from Rare, 3 from
Uncommon and 9 from Common into each booster pack. (not actual numbers! there
are also Mythic Rares and each card has a tiny chance to be a Foil version,
which complicates the situation, but the basic idea is something like that;
from memory)

Same goes for the idea of a quest log: I don't have a specific example in
mind, but I have a hard time believing no game had it before Diablo II.

[1]
[https://en.wikipedia.org/wiki/Magic:_The_Gathering](https://en.wikipedia.org/wiki/Magic:_The_Gathering)

~~~
lmkg
That's not the same thing, though. They're not just talking about the fact
that some items are more common than others, or even the correlation between
power and rarity.

What Diablo did (that M:tG didn't) was that the same weapon could have
multiple rarities, with the rarer versions being more powerful. Each card in
M:tG has only a single rarity, and the foil version is just a cosmetic
difference with no gameplay effect. An Uncommon (or equivalent) in Diablo is
not a _sui generis_ item, it is a common with upgraded stats. A Rare is the
same thing with magic effects added.

~~~
PhasmaFelis
I'm not clear how that's different from e.g. the random loot tables in D&D,
except that Diablo's version called some different items by the same name for
added confusion.

------
lobo_tuerto
I hope all those working on it like this got a great compensation back for the
extra hours/days:

"...to the point where everyone was having to work seven days a week, all
waking hours, for almost a year."

------
Legion
I can't stand articles with pagination that lack a "single page" view,
defeating convenient read-it-later offline saving.

