Devilutionx: Easily editable object/spell/item/monster data

Created on 27 Jul 2019  路  3Comments  路  Source: diasurgical/devilutionX

Hello,

Quite some time ago I created the Open Diablo Editor. I was recently thinking of updating the editor, but, as someone has pointed out to me, it's a bit pointless with the DevilutionX project in place. I would ideally like to make an editor that could work for DevilutionX...

However, I have noticed that all of the data belonging to the game is still "hard coded" inside the binary. It would seem crazy to directly edit binary files for a modern version of the game... I propose that either (a) the data be moved out of the executable or that (b) some override location could be specified where .csv files or similar could act to override the internal data.

For instance, if someone provided a monster-data.csv file in a data or override directory it could override the monsterdata array in monstdat.cpp

I don't know to what extent you want to keep the source code exactly identical to the original. If you want to keep it very close then you may not approve of this suggestion. That said, I feel it would be a valuable addition to the game whilst keeping the experience vanilla Diablo.

I could work on this if approved. I don't know C++ at present, but am reasonably competent at Java coding so some of the knowledge will transfer.

Please let me know,
Thanks & regards,
Matthew

enhancement

Most helpful comment

As a sidenote - the "override" idea works I think very well for Infinity Engine games (Baldur's Gate, Icewind Dale, Planscape Torment) -- those games albo have an archive format similar to MPQ (BIF files) but any of the files inside can be easily overriden by putting a single file with the same name in "override" directory. New files (not existing in original archives) can also be placed there. This makes it easy to patch/mod things easily. I loved how easy it was to e.g. exchange goblins in Icewind Dale I (yellow) to goblins from Icewind Dale II (green, looked way more cool this way) by putting one file from IWD2 into IWD1 override directory...
I think we should have a similar approach here.

All 3 comments

We defiantly want to make the game more modable. We plan to be able to load sprites via PNG files and data either via Json or CSV.

We already have an experimental version that is able to load data via Json and a tool that can convert CSV to C++ but it not exactly clear what route we are going to go down eventually.

At the moment the plan is to hit future parity with Diablo 1.0.9b before we start altering the code in Source. The main reason being that we want to avoid conflicts when merging changes in from upstream Devilution. You can follow the progress on that front here https://github.com/diasurgical/devilutionX/milestone/1

As a sidenote - the "override" idea works I think very well for Infinity Engine games (Baldur's Gate, Icewind Dale, Planscape Torment) -- those games albo have an archive format similar to MPQ (BIF files) but any of the files inside can be easily overriden by putting a single file with the same name in "override" directory. New files (not existing in original archives) can also be placed there. This makes it easy to patch/mod things easily. I loved how easy it was to e.g. exchange goblins in Icewind Dale I (yellow) to goblins from Icewind Dale II (green, looked way more cool this way) by putting one file from IWD2 into IWD1 override directory...
I think we should have a similar approach here.

Overwriting graphics and sound files in this way is actually already supported.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

runlevel5 picture runlevel5  路  5Comments

interkosmos picture interkosmos  路  5Comments

vimino picture vimino  路  5Comments

AJenbo picture AJenbo  路  4Comments

kraileth picture kraileth  路  4Comments