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:
For the initial release of ODRADE, four types of game data can be modified:
Changelog generation is automated.
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.
License: GPLv2.
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
DUNE??S0.SAV
file inside your Dune 1 save file directory by the DUNE??S0_compressed.SAV
file produced by the modder;