Skip to content

DiaLight/Flame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flame

Flame modifies the Dungeon Keeper 2 code to fix the bugs found in both single and multiplayer. It works with the Disk, Steam and GOG versions of the game.

Warning: Saves and network sessions between Flame and non-Flame Dungeon Keeper 2 versions are incompatible. But you can use -original-compatible flag to disable some patches that breaks compatibility.

How to report a bug

  1. If you have any bugs in the game, please describe them in the discord channel: https://discord.gg/RvrQpCFUZc or in the GitHub issues.
  2. It helps a lot if you include steps how to reproduce found bug
  3. Attaching a good test map is welcome

If you reporting several bugs, please split them to several Discord messages / GitHub issues. Please, be sure to have followed the recommended installation steps.

What bugs are in priority to fix?

Imagine you are playing through a storyline campaign and there are moments that are extremely frustrating or simply prevent you from progressing further in the game. These bugs, I consider them critical, and those are the ones I will focus on fixing.

You can vote for an bug that you consider critical at your discretion by placing a rocket emoji(?) on the corresponding issue

How to install

  1. Go to the releases page and download the Flame-1.7.0-*.zip file of the newest release
  2. Extract the zip file into your Dungeon Keeper 2 game directory
  3. That's it. Now you can run DKII-DX.exe as usual

Note: It is possible to find newer test builds on github actions

Note 2: The Data directory are not required for this to work, but are recommended.

Files explained

The Data folder in the zip file contains patches by Quuz for level editor

For Software Developers

How it is done

Flame is a new approach to modifying the compiled code of Dungeon Keeper 2

Flame recompiles some functions of DKII.EXE into a separate flame/Flame.dll file. DKII-DX.EXE depends on PATCH.dll. I decompiled whole PATCH.dll functional and included it into flame/Flame.dll. Flame comes with its own PATCH.dll which handles loading flame/Flame.dll and replacing the references to the original functions with the references to recompiled functions. Recompiled functions are supplemented with switchable changes that fix some game bugs and add some functionality

History

Earlier, this project implemented an approach to recompiles some functions of DKII.EXE into a separate .exe file. Then it merges this file with the original .exe file, replacing the references to the original functions with the references to recompiled functions. Due to development and debug complexity the exe merge method was replaced by the dll dynamic loading with function replacement.

Also Earlier, this project implemented an approach to fully relinking DKII.EXE, which contains false positive references that caused new bugs. Due to problems with false positive references, the relinking method was replaced by the exe merge method.

Build requirements

How to build

cmd (instructions is not for powershell):

  • mkdir build && cd build
  • "D:\Program Files\Visual Studio Community\2022\VC\Auxiliary\Build\vcvars32.bat"
  • cmake -DCMAKE_BUILD_TYPE=Debug -GNinja -DCMAKE_INSTALL_PREFIX=../install ..
  • cmake --build .
  • cmake --install .
  • copy /Y "..\install\PATCH.dll" "<Dungeon Keeper2 dir>\PATCH.dll"
  • copy /Y "..\install\flame" "<Dungeon Keeper2 dir>\flame"

About

Dungeon Keeper II partial recompilation with bug fixes

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published