4.4 KiB
SE2 Revival
GPG's Siege Editor 2 (Dungeon Siege II Tool Kit 1.1, 2005) on the Steam release of Dungeon Siege II - and, for the first time, with Broken World. Nothing is installed into the registry, the game or the tool kit: an ASI plugin answers the editor's lookups in memory, and an extension DLL lets it read Broken World's scripts.
Install
Full guide, settings and troubleshooting: INSTALL.md (also in the release zip as README.txt).
- You need Dungeon Siege II from Steam and GPG's free tool kit,
DS2TK-1.1.zip, from siegetheday.org (not part of this project). Broken World is optional: put its files in aBroken Worldfolder inside the game folder. - Unpack the tool kit's installer without running it (it refuses the Steam game):
innoextract DS2TK-1.1.exe(innoextract), and copy theappfolder's contents to a folder you can write to, e.g.C:\Games\DS2Toolkit. - Download
SE2-Revival.zipfrom Releases and extract it into the same folder:version.dllnext toSiegeEditor2.exe, plus thescriptsandbwfolders. - Start
SiegeEditor2.exe. With Broken World installed it asks which game to edit (hold Shift at start-up to be asked again). First time per game: File > Convert .ds2map to files,Maps\World.ds2mapfor Dungeon Siege II,Broken World\Maps\xDS2XWorld.ds2mapfor Broken World.
Settings: scripts\DS2Toolkit.ini (game and Broken World folders, which game, QuietErrors, SkipArchives, and
[Settings] for any Siege Editor 2 setting). Uninstall: delete version.dll, scripts and bw.
What is here
| Path | What it is |
|---|---|
mods/toolkit/ |
DS2Toolkit.asi: loaded by Ultimate ASI Loader (version.dll) next to SiegeEditor2.exe. Serves, when missing, HKLM\Software\Microsoft\Microsoft Games\DungeonSiege2 (InstallationDirectory: the game, found through Steam), HKLM\Software\Gas Powered Games\DS2TK (the tool kit folder) and the editor's settings key HKLM\Software\Gas Powered Games\SiegeEditor2. Broken World mode serves res_paths / map_paths with both games' folders, ds2dll_path, skrit_retry=false, and teaches the editor Broken World's new enum names (bwenums.h). A start-up question picks the game. Also keeps the clothmap_rollover lines the editor drops when it saves start_positions.gas, and hides archives listed in SkipArchives. |
mods/bwcompat/ |
BWCompat.ds2dll, generated by tools/bwcompat_gen.py: the editor's FuBi imports *.ds2dll exports as script functions; this DLL exports, as stubs with the right calling convention and stack cleanup, the 772 functions Broken World's exe added (GoMind::GetHomeLeashDistance, ...). Functions differing from the editor's only in return type are left out (the editor would reject the whole DLL). |
tools/pe_rename_exports.py |
writes the decorated C++ export names after linking (the linker cuts aliased export names at the first @). |
tools/package_toolkit.py |
builds dist/SE2-Revival.zip (README.txt is INSTALL.md as plain text). |
tools/siegelet.py, tools/tank.py |
pack an edited region (the editor's Bits folder) into a playable .ds2map. |
tools/ci_build.py, tools/ci_release.py, .forgejo/ |
the release build (below). |
Build
Windows, Visual Studio 2022 or newer (Desktop C++), Python 3.10+:
python mods/build.py --only DS2Toolkit,BWCompat- Ultimate ASI Loader x86
dinput8.dllatbuild/asiloader/dinput8.dll python tools/package_toolkit.pywritesdist/SE2-Revival.zip
Linux (what CI runs), Python 3, clang and lld 19 or newer: python3 tools/ci_build.py --project se2. It fetches the
MSVC CRT and Windows SDK with xwin (pinned versions; running it accepts
Microsoft's license for those build tools) and Ultimate ASI Loader (pinned, SHA-256 checked), cross-compiles both
plugins with clang-cl + lld-link with the same flags as the MSVC build, checks them (x86 DLLs, static CRT) and writes
dist/SE2-Revival.zip and its .sha256.
Releases are built by CI (.forgejo/workflows/build.yml): every push to main builds the zip as a workflow
artifact; a v* tag (e.g. v1.0.0; v1.1.0-rc1 makes a prerelease) also publishes it as a release with the notes
in .forgejo/release-notes.md.
To regenerate the Broken World stubs: python tools/bwcompat_gen.py <Broken World DungeonSiege2.exe> <SiegeEditor2.exe>.