A work-in-progress free and open-source replacement for the Diablo I engine. Simply import the Diablo assets, and enjoy the same old game with faster performance and modern resolutions, and first class support for mods.

What's this all about?

We love Blizzard's popular game, Diablo. We love it so much, in fact, that we're willing to spend our precious time developing a free and open source solution for those wanting to play it on a modern computer.


Is that legal?!

Short answer, yes. We don't distribute any copyrighted game assets, which means you'll need to have a copy of Diablo to be able to play.

  • 2020 status update

    Hi all,

    Things have been quiet for a while, but freeablo has been moving forward, and I have a pretty important change in the development to share with you all. I have decided to switch to working part time on my main job, and spend 2-3 days a week working on freeablo. If you’ve been following the project for a while, you have probably noticed that things tend to go in phases, where I work on it for a month or so and then drop off. Working full time makes it hard to stay motivated to commit your limited free time to working on a large project like freeablo, which is why I decided to bite the bullet and just get the job done. For the next few months (at least 6, maybe more) I will be working an average of 2.5 days a week on freeablo, in a final push to get it finished. This should mean that things will move a lot faster than before, and I will still have free personal time on the weekend.

    As for what has actually been happening on the project, the main thing is that the implementation of combat is now much advanced. Health, mana, hit recovery, armor class, to hit chance, and melee damage are all calculated accurately now, and the only things missing for melee combat (as far as I know) are proper attack speed, and unique weapon effects. The freeablo 0.4 version will be a massive one, partially because I’ve moved the goalposts for it several times. originally, I wanted it to just introduce multiplayer, but it’s since accrued a plethora of other features, and honetsly I haven’t even made a proper list for the release changelog yet, so I won’t try to list them here. What I will say however, is what I now plan to get done before releasing, and that is as follows:

    • Correct movement speeds for players / monsters
    • More automated tests for melee combat (specifically hit recovery)
    • Correct weapon speeds / hit frames
    • Monster / weapon type combos (eg, clubs deal 1.5x damage to undead)

    Since starting with this new part time setup a couple of weeks ago, I wanted to make a push to release 0.4 soon, but I also wanted to get a bit of development done before I did, which is why I decided to get a really proper melee combat implementation in before I did.

    As for what else remains to be done before I call the engine “version 1.0”, I’ve brainstormed the following rough outline (note, this doesn’t include a whole bunch of extra features I want to add later, like mods and fancier graphical effects).

    • Knockback
    • Ranged combat
    • Unique items
    • All the other vendors (we have Griswold)
    • Full NPC dialogue
    • Quests
    • Basic lighting
    • Unique enemy effects
    • Resistances
    • Cutscenes
    • Premade dungeon segments (for boss fights)
    • Difficulty levels
    • Zoom
    • GUI scaling
    • Magic
    • Special weapon effects
    • Generate items with prefixes and suffixes (eg Shining bow of the owl)
    • Correct sprite positioning (currently we kinda guess it)
    • Render batching (there is an almost ready pull request open for this, it bumps the FPS by an order of magnitude)
    • Better sprite loading
    • Multiplayer chat

    In other news, I’ve been in contact with Pedro Faria / Jarulf, the author of a sacred tome known as “Jarulf’s Guide to Diablo and Hellfire”, which is a document that has been floating around on the internet since the 90s, and contains a whole load of detailed information about how Diablo performs various calculations internally. I’ve been using it as a reference during development, and it is a truly invaluable resource. I wanted to reboot and modernise it a bit, so I’ve made a version available here. It’s a bit rough, since it is largely autoconverted from the old .DOC files, with a bit of manual cleanup after. Further cleanup / additions / corrections are very welcome!

    So, that’s it for now. Stay tuned for more updates :)