I thought it was weird to credit someone as Diablo's "creator" since there must've been a large team given how long I remember the credits being. But indeed if you look at the wiki he seems to be the main programmer listed: https://en.wikipedia.org/wiki/Diablo_(video_game)
Some other team members such as Max Schaefer and Erich Schaefer (co-designers of Diablo and Diablo II) went on to make Torchlight so many consider it to be Diablo's spiritual successor: https://en.wikipedia.org/wiki/Torchlight
I was a programmer on Diablo 2 and used the Diablo 1 source code as a starting point for some features - all of the source files I looked at had David Brevik as the author, it was very straightforward C that one person could keep in their head.
Ha - that would require some time travel plot twist, IIRC the cow level got added late in the D2 development as homage to the fans - I wrote the code for the Horadric Cube UI and the triggers to call the level/item changes (other programmers wrote the level stuff and item stuff separately). The gem that did nothing in the Battle.net chat was added just to spur rumors.
It's quite a serendipitous surprise to be able to meet the creators of one of the most played video games of all time (or at least me) on a random thread here.
What are you working on these days? Are you still in the games industry?
>> I was a programmer on Diablo 2 and used the Diablo 1 source code
> Don't leave us hanging,
Yes, don't leave us hanging!
Did you ever work on the problems of item duping on Closed Battle.Net?
I never understood why some games were "bugged": Certain characters would leave a game and find that their inventory would not save. This meant they could go back in the game, drop all their items, leave the game, and repeat this while the characters that did save could pick it up, creating copies of good items. The mule character could even join another game where it would save, stock up on good items and drop those.
I also never understood what would trigger a bugged game. We used IRC for announcing whenever a "run" turned out to be buggy for a single player. And I wrote an IRC bot for keeping track of item trades for some dudes who gave me several accounts full of characters full of really good items. I gave it to my brother who eventually made thousands selling those items.
> is there a hidden cow level in the Diablo 1 source?!
Diablo I has a ton of lost treasure hidden in diabdat.mpq. I recall that they shipped the game prematurely and simply dropped a large chunk of the storyline; full characters, dialogues, items, plot triggers. Some of that storyline ended up in Diablo II. I can't find a good archaeological overview online - perhaps this isn't as well-documented as I assumed.
If anyone feels nostalgic, there's a really good Diablo I mod called The Hell out there. I believe mods are written by disassembling the original game, extending this with your own, custom assembler code, and reassembling it. What a beautiful consequence of the simplicity of writing games in C.
OK, one of the item duping bugs was my fault. It took a while for one of the battle.net moderators to tease how to do it from one of the Chinese players using it to make a killing in real world cash. At some point we made the single player game that worked into a multiplayer game without changing anything else or reviewing the code for exploits - I did all the code for the interactive objects in the game and there was a trigger on objects that we should have made authoritative on the server ( and that million dollar lesson that I always learned to do nowadays in client server projects...) but wasn't for opening chests so people with modded clients we're able to open chests an infinite amount of times. I don't know about the bug you are describing - was it peer to peer or b.net multiplayer? Though it sounds like it would depend upon some server/client synchronization timing that was not working in all situations correctly, I didn't work on the network/server team, but we must have missed something like the other bug, where it made sense in single player but should have been thoroughly rethought.
A lot of the features we added to D2 were things the original creators wanted to do in D1 or even the D1 expansion, the D1 expansion was outsourced and they were really unhappy about the quality of the add-on and were determined to make things right with D2 and do the expansion in house as well. I finished my work early so I added the keyboard customization feature for fun. There's a making of book about Diablo 2 that interviews the guys who also started Blizzard North/made Diablo 1 so a lot of information about the process is in there.
Absolutely fascinating read. Thanks for sharing, strange to think that my computer has run your code countless times and contributed to years of enjoyment.
Usually a character leaving a game without having their inventory saved indicated a desync between the game server and the MCP servers. The game server was authoritative over your character for a specific game, while the MCP server was authoritative for your character between games. If the game server became disconnected from the MCP server for whatever reason, you could drop all of your items, leave the game, and the MCP server would still believe you had those items as the game server never saved your character's state with MCP.
This desynced state resulted in a ton of commonly known dupe methods in 1.11 and 1.12 where you forcefully disconnect the GS from MCP. The popular one was spamming bone wall (creating entities on the map), then spamming AoEs which interacted with said entities. The game server would have to loop over all entities for each AoE spell you cast to determine if the spell applied to it, which caused the single-threaded game server to spend too long in each iteration of the main game loop that caused it to desync from the MCP. Blizzard eventually "fixed" this by adding a check for how long the main game loop took to complete. If it hit a certain value, it would disconnect all players from the game to despawn entities and 'prevent' dupes.
There were more fun bugs between GS <-> MCP as well. For example for many patches there was a size limit on your character. If your character data was over a set size, the GS wouldn't even try saving your character to the MCP and would roll it back to the last valid save. If you joined a game near the limit, dropped an item, picked up an item that was larger in size (had more stats etc) which pushed you over the limit, then left the game, the server would revert your save back to when you had the original item.
D2 was full of esoteric exploits like these. It was made worse by some Blizzard developers going rogue and abusing the buggy state of the codebase to assist third party item sellers for personal profit.
You definitely have more expertise at your fingertips on the server side of D2 than I do!
I vaguely remember the strike team talking about those game server issues, it's been so long I totally forgot about it. We had the servers on racks in the data centers running Windows NT and I remember the very first problems were trying to get the game to support hundreds of games per server and finding all sorts of memory issues and network issues that caused the games to crash or run out of memory. I was unaware of the developers going rogue - that's wild.
But there was one guy in our office who got hauled away by the FBI because he was hosting a file sharing node using the office T1.
Thank you for your work. I have spent thousands of hours playing your game, and even more than that trying to exploit it. Many of my dearest friends today are people I met 15 years ago while playing D2. The game has had a massive influence on my life.
You're welcome, there was a team of talented artists and programmers at Blizzard North and Blizzard South working together to make D2 so just my two cents.
I agree with your first line. I'm a coder (sometimes a game coder, even) and I'm all for giving credit where credit is due, but the main programmer on a game isn't the game's "creator". The software which renders the sprites and plays the sound effects is the game engine, and Brevik is undoubtedly the game engine creator, but the actual game itself is in the story and characters and game mechanics and challenges that the player experiences while playing the game. These are created by the game designers (both gameplay and artwork), and it's these people, if anyone, who are the "creators" of a game.
If you read the back story of Diablo, Brevik was definitely involved in the decisions one would typically attribute to one credited with creating the game, it was certainly a team effort so he definitely wasn’t the only creator. Keep in mind this was a different time and everyone was generally expected to wear more hats back then and blizzard north wasn’t that big of a company at that time regardless.
Particularly he had a lot of experience with the rogues which heavily inspired the original Diablo. Because of this he was initially opposed to making the game real-time as opposed to the traditional turn based, enemies only move when you do rogue style.
However as he tells the story he programmed real time movement in a few hours on a Friday night just to see what it would be like. When he tried it out for the first time and clicked the mouse; almost magically the warrior walked over and smashed a skeleton into a pile of bones.
He was convinced right then that real-time was the right choice.
That moment may have been the birth of the ARPG genre.
> That moment may have been the birth of the ARPG genre.
Gauntlet (1985) had real-time combat, and predated Diablo by at least a decade. If that isn't RPGish enough, Ultima Underworld came four years before Diablo.
Brevik was one of the founders Condor (Brevik was the president while the Schaefer brothers were vice-presidents) which later became Blizzard North when Blizzard bought them. The work on Diablo started before Blizzard bought them. He really was one of the "creators". IIRC they made the first Diablo game with a team of 15-20 people. In a team that small pretty much everyone is a "game designer" as in everyone wears many hats (especially the president of the company)
Yes, you're right -- Diablo did a lot for the ARPG genre, but if you enjoy digging through the history of games there is a ton of interesting ARPG stuff from at least the 1980s: https://en.wikipedia.org/wiki/Action_role-playing_game
I came here thinking that "they again mistake game designers for game creators". And found out that this is actually by a main programmer of the game - I was pleasantly surprised.
From my experience programmers influence the way a product looks like, they are not merely "engine creators". They have too kill some "features", create new ones that designers didn't think of.
Programming is not a simple assembly line, where designers create the whole product and workers do it as they are told.
I'd also say Path of Exile does the [PC] free-to-play thing right. They offer an extremely good product up front for free, they don't have any of the time counters or other F2P bullshit from mobile, and they don't put up arbitrary gates to any of the gameplay. They just sell cosmetic stuff for your in-game avatar. And the game is so good, and they know their fanbase so well, that they have apparently been doing well with that model considering the game has been around for a good while now and they keep putting out expansion packs and such.
Maybe games need the director concept from movies where one person can act as the face of the project. I think it helps everyone that group efforts are projected through single person who carries responsibility of the outcome.
He did hellgate london (pile of shit) and Marvel Heroes (kinda a mmo successor to the marvel ultimate alliance games but deeply diablofied (didn't play much but it seemed .. ok))
It Lurks Below combines Diablo-style dungeon-plumbing mechanics with sandbox-style worlds that let players dig and construct, à la Terraria and Minecraft. In an interview with Polygon, Brevik said he’s a big fan of those games (and Starbound), but wanted to add something of his own to the genre.
“I wanted more of a point to a lot of those games,” Brevik said. “I wanted to make an RPG, with classes and leveling up, random items, where you get more and more powerful as you go down into the core of the world and fight baddies.”
Oh, that sounds right up my alley. I might have to look up the twitch stream of it he's doing this weekend later when I have time.
Is there any resources for those interested in making these kinds of games?
I'm relatively confident with programming in general, but I don't know where to start with something like this. Did he use an existing engine or framework like Unity? Is that the best place to start game development?
This game looks amazing and I'd like to try to draw some inspiration from it.
My advice, which I wish was plastered everywhere because I never found it: start and finish many small games first. Keep dreaming up and writing down the ambitious ideas, but leave those for another time.
Also, don't build your own game engine(unless you have plans to never ship). Learn to use Unity/UE4/GameMaker/etc.
Writing game engines is a blast, but they're the ultimate in feature creep/nerd sniping. You'll spend all your time building the engine rather than focusing on gameplay.
But I also think that for most small games (1-2 developers) it can also a be a good idea not to use an off the shelf engine either.
Write the absolutely minimum that you can get away with to achieve the gameplay and look you want to achieve. Hard code everything for your specific game.
It's true that if you want to write an engine you can distract yourself from focusing on gameplay. But I think you can actually fall into the same trap using an off the shelf engine too. You end up spending a pile of time learning and working with the advanced tools and not focusing on gameplay either!
The basic rendering APIs are actually not that hard to use if you forget about generalising everything for some future that never arrives, and there is a hell of a lot to be said for working on a code base that one person entirely understands. The development speed benefits of this should not be underestimated.
Yeah, but those 6 months you spent on getting the ocean waves in the background, for that 15 second cut scene, just right are the best 6 months ever. :)
Godot 3 was recently released. I've only gone through one tutorial so far but having used both unity and game maker it has so far been a good experience. Not that the others were bad.
I hear it has an excellent and very fair licensing model too, besides the fact that it has templates for everything. Want to write an FPS? They have a template for it.
Building an engine is a project of its own. If you want to build an engine and a game, then go ahead. If you want to build a game, there are enough engines available that you can find something to fit whatever you'd like to make.
Just get started with something simple and gradually increase / add complexity. Nowadays there are really great engines that pave your way. Do make good use of them. Any of them will teach you about the game loop, gfx, control, sound, ai etc subsystems that needs to work together to deliver an experience for your players.
Also do read about game design. I personally liked Jessie Schell's Art of game design book with the 100 lenses that helps younalong the way.
Not really an answer, but I recently saw there's an effort to modernise the Moria source code: might be a fun way to play/help with a game that's loved by many:
My strategy is to look at the type of games already made that are of the type I want to make (whether it be Minecraft, Flappy Bird, or Diablo) and look at what game engine/program the developers of that used. Then I know it is possible and in all liklihood a good idea to use that framework to make that sort of game.
If you don't want to use Unity or another one of the big engines and know C++, I've written a library for 2D games like this which focusses on being easy to use: https://github.com/jhasse/jngl
I recommend Unity. It's about as beginner-friendly as it gets, and you can see results fast. My brother and I have both had a blast playing with it. If you already know how to code, you can probably do a lot with it.
As an experienced hobbyist game developer, I find Unity to be an incomprehensible airplane cockpit of bad UI.
For the kind of game presented in the article, Gamemaker Studio would be more reasonable. Unity has a lot you don't need, which obscures the path to making something simpler like this.
I'm sure there are other good options too. I think there's a JS-based platformer-oriented engine out there.
+1 love2d. I made the beginnings of an arcade graphics style roguelike a couple of years ago https://github.com/globalcitizen/zomia ... it was the first game code I'd written in 20 years and the positive results came fast enough (despite zero Lua experience) that I could stay motivated to keep at it!
> I'm relatively confident with programming in general
Out of curiosity, why do you bother writing a statement like this? Is it to assuage your ego? If you haven't done game development before, it's safe to assume there are gaps in your knowledge and you're better off admitting it outright.
Could you please follow the site guideline that asks you to "respond to the strongest plausible interpretation of what someone says, not a weaker one that's easier to criticize"?
passivepinetree did admit to have knowledge gaps, hence the "I don't know where to start". The point of that statement is to inform people who might want to help (rather than mock or chide) that passivepinetree doesn't need a guide to learn how to program, only specifically about writing games.
You should read the article, he wanted to give terraria and starbound more of a point.
"It Lurks Below combines Diablo-style dungeon-plumbing mechanics with sandbox-style worlds that let players dig and construct, à la Terraria and Minecraft. In an interview with Polygon, Brevik said he’s a big fan of those games (and Starbound), but wanted to add something of his own to the genre.
“I wanted more of a point to a lot of those games,” Brevik said. “I wanted to make an RPG, with classes and leveling up, random items, where you get more and more powerful as you go down into the core of the world and fight baddies.”"
Some other team members such as Max Schaefer and Erich Schaefer (co-designers of Diablo and Diablo II) went on to make Torchlight so many consider it to be Diablo's spiritual successor: https://en.wikipedia.org/wiki/Torchlight