Dune II - The Maker
Dune II - The Maker is a Dune 2 remake and port for Windows, Linux, and macOS.
- Type: PC port
- Game: Dune II
- Runs on Windows, Linux and macOS
- By Stefan Hendriks
- Latest release bleeding-edge-c0eece28, 2026-10-31
- Source: https://github.com/stefanhendriks/Dune-II---The-Maker
- Website: https://www.dune2themaker.com
README
Dune II - The Maker
A.k.a. D2TM. Is a Dune 2 remake.
- Website: https://dune2themaker.fundynamic.com
- Discord: https://dune2themaker.fundynamic.com/discord
- Twitter: https://twitter.com/dune2themaker
Report bugs via Discord, Twitter or add one in Github.
Read the wiki for more information about startup params, controls, and more.
Sponsor
Compiling
Prerequisites
CMakeversion 3.21 or higherGCCversion 14 or higherSDL3withSDL3_image,SDL3_ttfandSDL3_mixerCatch2version 3 (for the unit tests)
The install_dependencies_*.sh scripts (and the MSYS2 package list for Windows, see below) install the libraries.
Make sure you can run make (or ninja) from command line.
Warnings as errors
CI treats all compiler warnings as errors. Local builds don't, by default, so a
work-in-progress build isn't blocked by them. To reproduce CI's strictness
locally, configure with -DD2TM_WERROR=ON:
cmake .. -DD2TM_WERROR=ON
Windows (MinGW64)
It depends on a MinGW64 environment, via MSYS2. From
an MSYS2 MINGW64 shell, install the same packages CI installs (see the
install: line of the "Install MSYS2 with MinGW 64-bit" step in
build_pr.yml for the current list) via
pacman -S <packages>.
- git clone this project
- create a
builddir
mkdir build
cd build
cmake .. -G "MinGW Makefiles"
cmake --build . --target all -- -j 6
ctest --output-on-failure
If you use ninja you can use cmake .. -G Ninja instead.
Or run rebuildwin.bat from the MSYS2 MINGW64 shell, which does a clean build in build/ and runs the tests.
Once compilation is done you'll end up with a d2tm.exe file. The DLL's it needs are copied into bin/ together with it by create_release.bat (see Running).
Ubuntu
- git clone this project
- run
./install_dependencies_ubuntu.sh(only required once) - create a
builddir
mkdir build
cd build
cmake ..
make -j4
ctest --output-on-failure
Or run ./rebuildmacos.sh, which does a clean build in build/, runs the tests and copies the binary to bin/.
MacOS
- git clone this project
- run
./install_dependencies_macosx.sh(only required once) - create a
builddir
mkdir build
cd build
cmake ..
make -j4
ctest --output-on-failure
Or run ./rebuildmacos.sh, which does a clean build in build/, runs the tests and copies the binary to bin/.
Tests
Unit tests (Catch2) live in tests/ and are built together with the game as d2tm_tests. Run them from the build dir with ctest --output-on-failure. CI runs them on every platform.
Clion
Mac OS
Make sure you set up your toolchain to use gcc-15 and g++-15. Ie, change your default toolchain
OR create a new one (and make sure CMake points to that one), with the following values:
| Field | Value |
|---|---|
| C-Compiler | /opt/homebrew/bin/gcc-15 |
| C++-Compiler | /opt/homebrew/bin/g++-15 |
Then make sure to (re)load CmakeLists.txt
Running
Run create_release.bat (Windows) or ./create_release.sh (Linux/macOS) once after building to produce a complete runnable package in bin/, including all required dependencies. Then run the executable from bin/.
Music (MIDI soundfont)
D2TM plays music from MIDI files via FluidSynth. FluidSynth requires a General MIDI soundfont (.sf2) to render audio — without one, music is silent.
Install a soundfont:
- Linux:
sudo apt install fluid-soundfont-gm(installs to/usr/share/sounds/sf2/FluidR3_GM.sf2) - macOS / Windows: Download FluidR3_GM.sf2 or GeneralUser GS and place it anywhere.
Point the game at it:
Set the SDL_SOUNDFONTS environment variable to the path of your .sf2 file before launching:
export SDL_SOUNDFONTS=/path/to/FluidR3_GM.sf2 # Linux/macOS
set SDL_SOUNDFONTS=C:\path\to\FluidR3_GM.sf2 # Windows
Add the export line to your shell profile (~/.zshrc, ~/.bashrc) to make it permanent.
Project status
See the Project Board what's going on.
Binaries
You have various options:
- Grab the latest release from Github
- Grab a version from D2TM's homepage
- Compile this project yourself
Topics
In the code there are several known concepts; see below for extra information about them: