Diablo reverse-engineered in four months, without source code

Originally published at: https://boingboing.net/2019/07/03/diablo-reverse-engineered-in-f.html


Oh, I remember that I had to cheat in that game to get over with it.

I hope the new version does include the options to cheat…

BTW, Rob, typo.

Don’t do that in the source. It might spawn demons which have special powers. shudders


Add another fact in evidence of the (being as polite as I can) stupidity of the game-software management style of running 24/7/365 death marches with every corner cut.


That’s a bit of an exaggeration, surely? I had the impression it underwent a mostly similar process to the currently-available versions of FFVII and FFIX (whose original source code wouldn’t be available either). I would think to truly remake it from nothing would be far too costly to justify. But perhaps I missed something in the news.

In 1983 my then-manager told me I didn’t need specifications for a new product since the schematics were all available for a previous somewhat-related one. I blew up and said, “we shouldn’t have to reverse-engineer our own products!”

A software engineering professor asked in 1989 for permission to quote that line in a new textbook, but this week I heard from one of my kids who wasn’t even born at the time of the original event that he’s fighting the same battle in a shall-remain-nameless government agency. It really is endemic to the entire software world, and according to researchers in software engineering from the 1970s to today the management is more to blame than the programmers.


Disassembling binaries can show you some pretty cool stuff, especially if you’re familiar with whatever processor the code was written for. This is why I have an ASCII chart posted on my office wall :slight_smile:


Crazy, but hardly surprising looking at the shape of the whole world these days. “Preservation” seems to be a thing of the past.

But hey, this Diablo project is cool.


Did someone say, *“hacked?”


The issue in this case though is companies like Blizz are as adamant about copyright as Disney is. So this dude may find himself in some hot water…or getting a job offer. Could go either way.


Got to love the way he casually drops in at the end “Oh, by the way, I’ve ported it to the Nintendo Switch” (a completely different CPU and architecture to the original version, with joypad and touchscreen instead of mouse and keyboard).


Fresh Meat!!


wow, that looks really good on the Switch. Brings back memories…

I’m anxiously awaiting Craddock’s Stay Awhile and Listen II.

1 Like

My favorite Heroes of the Storm characters. the Butcher.

1 Like

Stories of lost source code always feel like they are being dispatched from nega-Earth to me because, especially for text; storage has been cheap enough long enough that my general tendencies toward clutter and accumulation have cemented themselves into a “default retain” policy years ago.

I’d pity the poor bastard who had to grovel through it all looking for something useful; but it’s all there and then some.

I understand, in sort of the same way that I understand the logic of palimpsest production, that bit buckets were once scarce and precious and commonly reused; but it still feels weird.


the original blizzard, legend says, had a “it’s not done till it’s done” schedule. they didn’t crunch to an artificial deadline, they just kept working and revising till the game was good

( if memory serves, they did a lot of spring releases rather than the traditional black friday release because of that. )

that’s the thing about games. flappy bird, diablo, whatever seem really simple. but it’s like any good puzzle, the answers seem simple once you’ve found and solved the problems.

figuring out how a (new) game is put together, that’s the hard part. not so much reimplementing it.

well, for some mechanic based games anyway. if you’ve got tons of unique one-off content, that can take a while.

just ask borges:


Meh. I’ve seen projects with source code that still had to be reverse-engineered.


I learned to code in perl. Consequently, I have had to reverse engineer my own projects.


Indeed – but the game itself is not nearlyas good a specification as an actual written specification is when you’re developing. Not least because if you have a specification ahead of coding you can save an enormous amount of time in chasing bugs, not least because you can be coding up test suites for both modules and integration in parallel with coding the main program.

We actually did a test of that theory back in '85-'86 when Management wanted results on a very tight deadline and we told them we’d give it shot only if they STFU and let us do it our way. We spend the first several months writing specs and testbenches as Management blood pressure rose like a rocket because where was the code?!?!?! Then we actually wrote the program itself and it was totally anticlimactic because it all just snapped together, with every bug detected, localized, and corrected so quickly it was over before Management heard about it.


with most styles of computer games it’s basically impossible to do.

you really don’t know if mechanic x works unless it has existed before. good designers can guess. or you can copy some features note for note from another game. but you’re really not going to know to you play it.

doesn’t mean the whole thing needs to be done. maybe you build a dozen one-off prototypes first. maybe you have artists make a bunch of videos first. but you never really can know till it’s in your hands.

( same way a book is not done in the writing, but in the rewriting. it all gets fixed in post. )

The most accurate map possible would be the territory, and thus would be perfectly accurate and perfectly useless.
The tale^h^h^h^h game is the map that is the territory.
You must remember this.

with apologies to neil gaiman


I think the sweet spot here is to have a written goal which can be modified during development. What is the desired play effect? Can it be storyboarded? How did it turn out after development?

It’s why I spend so much time in Confluence* and why I encourage my team to do so as well. I will write things that I know are wrong, because that will encourage someone to edit and correct me.

*For those who don’t work in software development, Confluence is a popular Wiki-like app for documentation.