Skip to content
dgcor edited this page May 15, 2021 · 32 revisions

Welcome to the DGEngine wiki!

Build status

DGEngine is an implementation of the Diablo 1 game engine. It uses JSON files as configuration files.

Diablo.mp4
Hellfire.mp4
Diablo.Extended.mp4

You need the original Diablo game files either as an MPQ, zip or folder in order to run the engine.

You can create a zip with the original DIABDAT.MPQ using this tool: http://zezula.net/en/mpq/download.html

You run the engine by passing as an argument the path of the archive/folder with the gamefiles.

To run Diablo, you need the following:

  • DGEngine
  • DIABDAT.MPQ
  • gamefilesd

Run the game like this:

DGEngine gamefilesd

To run Hellfire, you need the following:

  • DGEngine
  • DIABDAT.MPQ
  • gamefilesd
  • gamefileshf
  • hellfire.mpq
  • hfmonk.mpq
  • hfmusic.mpq
  • hfvoice.mpq

Run the game like this:

DGEngine gamefileshf

Flare

flare

Diablo.Flare.mp4

As of v0.2.1, DGEngine can run using Flare gamefiles.

To run with Flare, you need the following (flare/mods):

  • fantasycore

Note: use version 1.0 or greater 1.08

Run the game like this:

DGEngine gamefilesflare

Flare gamefiles are provided to test the engine and help make it more generic.

Play using Diablo Battle.net Beta - ISO File

You can download a beta version of Diablo and use the provided DIABDAT.MPQ.
Get it from here.

Note: The provided Hellfire gamefiles require the original game's DIABDAT.MPQ.

Extract the files inside DIABDAT.MPQ using this tool:
http://zezula.net/en/mpq/download.html
Note: you can get this tool from the first link as well.
If you need the games list files to extract from the MPQ, go to the first link and download them from there.

Compress those files into a .ZIP archive, or leave the extracted folder DIABDAT next to the DGEngine and main.json files.

The files in the beta are not the same as in the original, so some things don't show (scrollbars on hero selection, etc), but you can use these to load the town level and see what's the engine's progress.

Diablo 2

Diablo 2

Diablo.2.mp4

As of v0.3.7, DGEngine can run using Diablo 2 gamefiles.

To run Diablo 2, you need the following:

  • DIABDAT
  • d2*

The d2*** MPQ files aren't supported by physfs (only v1 MPQ files are supported) You have to use diablo 2's gamefiles extracted into folders. Adding an external StormLib.dll or libstorm.so next to DGEngine will add support for Diablo 2 MPQ files.

Right now, you can load any of diablo 2's assets except level textures.

Run the game like this:

DGEngine gamefilesd2

If you're using linux or another OS with a case sensitive file system and you're using the extracted MPQ files, rename them to all lowercase like this:

find d2* -depth -exec rename 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;

Portable mode

to run in portable mode, create a folder portable next to the DGEngine binary.

Configuration files

You can see more information about configuration files here.

Current Status

The engine with the gamefiles provided mimics all of the original game's menus (pixel perfectly) and allows you to load levels (click on the town passages). Most of the effort has been put into getting all the required primitives done to mimic the original's UI. What's missing is basically all inside the game itself (items, players, spells, etc). Everything else (apart from multi player) is done. You can even set the music volume when the game is playing and the music will stop/restart if the volume reaches 0, just like the original (and it will persist that information).

DGEngine Running Diablo

dgengine_1 dgengine_2 dgengine_3 dgengine_4 dgengine_5 dgengine_6 dgengine_7 dgengine_8 dgengine_9 dgengine_10 dgengine_11 dgengine_12 dgengine_13 dgengine_14 dgengine_15 dgengine_16

Right now, the engine runs on Linux and Windows.

Other projects used in DGEngine:

  • PhysicsFS
  • RapidJSON
  • sfeMovie
  • SFML
  • StormLib

Vision

The project's vision is to become an RPG game engine, that just happens to be able to run Diablo, given the appropriate game files. This means that nothing can be hard coded in the game.

Contributing

See how to contribute here.