debrouxl / odrade

Original Dune Restructuring And Diversification Extension
GNU General Public License v2.0
4 stars 0 forks source link

Original Dune Restructuring And Diversification Extension

Goal and remarks

This repository aims at providing a framework for modifying save files for the original Dune 1 game by Cryo Interactive. Five known versions distinguished by the names of the save files they create are handled: DUNE21, DUNE23, DUNE24 (floppy versions), DUNE37 and DUNE38 (CD versions).

The framework was originally designed for reimplementing later versions of Dmitri Fatkin's A Harder Path in a scriptable way, and as such, it aims at modifying DUNE{21,23,24,37,38}S0.SAV files. However, with a bit of elbow grease, it could be used for other save file modifications, at different game points. Yes, you could be a dirty cheater increasing spice density and amount, raising Fremen troops' skill and equipment, lowering Harkonnen troops' skill levels and equipment, reducing equipment price at smugglers - completely spoiling the game balance, in other words.

However, note that:

Capabilities

For the initial release of ODRADE, four types of game data can be modified:

Changelog generation is automated.

Other notes

The framework is written in Golang, primarily because I needed to make practice in that language, but also because it's arguably relatively easy to program, and the toolchain supports combined build + invocation in a single command line without saving a binary: IOW, invoking go run ... isn't really different from invoking python3 ... or another script interpreter.

Authors

License: GPLv2.

Usage

Modding program

The framework uses a callback-based design: any modding program needs to implement several callbacks. See verbatim.go, the neutral modder, for an up to date list.

Sample invocations:

for file in DUNE21S0.SAV DUNE23S0.SAV DUNE24S0.SAV DUNE37S0.SAV DUNE38S0.SAV; do
    (path to `go`, /usr/lib/go-1.16/bin/go for me) run odrade.go verbatim.go location.go troop.go npc.go smuggler.go print $file; # just print out the contents of the original save file.
    (path to `go`                                ) run odrade.go ahp20c.go location.go troop.go npc.go smuggler.go modify $file; # apply modder A Harder Path version 20c onto the original save file. 
    (path to `go`                                ) run odrade.go (yourmodder.go) location.go troop.go npc.go smuggler.go modify $file;
done

Feeding modified save files into your Dune 1 install

  1. start the game, skip the intro with ESC key;
  2. replace the DUNE??S0.SAV file inside your Dune 1 save file directory by the DUNE??S0_compressed.SAV file produced by the modder;
  3. go to the mirror room (next room up from where the story began);
  4. look at the mirror;
  5. restart the game.