Workflow | Status |
---|---|
Windows | |
Ubuntu |
Binaries are built automatically from the latest source and can be found here: Windows
The goals of this effort are to modernize the codebase, simplify the build system, and to improve performance. The game engine itself will eventually be moved off of the rendering thread, which will provide for a much more responsive user interface, particularly when many units are on the map.
All builds are now being done through CMake with regular testing
on Windows with Visual Studio 2022 and Ubuntu with g++. Windows
development is being done with VS2022's native CMake support, which uses Ninja for the actual build. (It
is unknown if the CMake Visual Studio generators produce usable vcxproj
files.)
Renderer = direct3d
or Renderer = software
under the [Video]
section
to request SDL2's DX9 or software renderer, respectively.At some point, some of these change might be incorporated into the upstream repository.
xoshiro256**
random number generator is different
from the one in the official release. There are also more generator instances used so
that a change to one part of the code that impacts how many times its generator is
called will only impact other users of the same generator instance.Renderer = software
under the [Video]
section in the INI file).Install Visual Studio 2022 including the "Desktop development with C++" workload. Go to the "Individual Components" of the installer to make sure "C++ CMake tools for Windows" is enabled (enable clang as well to enable builds with "clang-cl").
To build from inside Visual Studio, open the "dunelegacy" folder, select a configuration, then then select "Build" -> "Build All". It should be possible to open the repository directly by going to "File" -> "Clone Repository..." on the menu.
From the command line (a bit faster, but requires more typing):
First open a command prompt with access to CMake (for example, "Developer Command Prompt for Visual Studio 2022"). Get a copy of the code repository, along with the submodules:
git clone --recurse-submodules -j 8 https://github.com/henricj/dunelegacy.git
cd dunelegacy
Configure CMake's build folder, compile the source, and run the tests (alas, there are far too few tests):
mkdir out\build\x64-avx2-Release
cd out\build\x64-avx2-Release
cmake --preset=windows-x64-avx2-release -B . -S ../../..
cmake --build .
ctest
There should now be a working dunelegacy executable in out\build\x64-avx2-Release\src
.
To see the full list of CMake presets (from the top level dunelegacy directory):
cmake --list-presets
The build-essential, git, ninja-build, and cmake packages are needed. Either g++ or clang can be used for the build (tested with GCC 11 and Clang 13).
git clone --recurse-submodules -j 8 https://github.com/henricj/dunelegacy.git
cd dunelegacy
Configure CMake's build folder, compile the source, and run the tests (alas, there are far too few tests):
mkdir -p out/build/x64-Release
cd out/build/x64-Release
cmake -G Ninja -DCMAKE_BUILD_TYPE:STRING=Release -DVCPKG_TARGET_TRIPLET:STRING=x64-linux ../../..
cmake --build .
ctest
With a sufficiently recent version of CMake, a preset can be used.
mkdir -p out/build/linux-release
cd out/build/linux-release
cmake --preset=linux-release -B . -S ../../..
cmake --build .
ctest
There should now be a working dunelegacy executable in out/build/linux-release/src
.
Other platforms may work if the proper vcpkg triplet is available. For example, this has worked on FreeBSD 13.
mkdir -p out/build/x64-release
cd out/build/x64-release
cmake -G Ninja -DCMAKE_BUILD_TYPE:STRING=Release -DVCPKG_TARGET_TRIPLET:STRING=x64-freebsd -S ../../.. -B .
cmake --build .
ctest
If there are linker errors on a BSD platform, check to see if
/usr/local/lib
is in the link library search path (e.g., check
the LIBRARY_PATH environment variable).
Builds for macOS have not been tested, but should be similar to the Linux instructions.
Builds for Linux and other platforms with established package managers should be able to resolve their dependencies from those packages managers instead of vcpkg. Some enhancements to the CMake files will be needed to support this.
While developing, it can be helpful to use the following cheat codes to advance in the game. The cheats are available in singleplayer modes by typing the following text in chat (case sensitive!):
/-------------------------------\
| |
| Dune Legacy 0.96 readme |
| ----------------------- |
| |
\-------------------------------/
IMPORTANT: This software is provided as is, and you are running it at your own risk. I'm not responsible if any harm results from you aquiring, or running this software. If you distribute this software, make sure this readme file is included. The program Dune Legacy is an modernized clone of the excellent Westwood Studios game "Dune 2". It is ridiculusly easy to find Dune2 on the net anyways, but I won't provide it. I think you can still even buy it from Westwood studios, so do that. There exists a mod called Superdune 2. The PAK-Files Superdune 2 provides are nearly the same except SCENARIO.PAK.
This program would not have been created without the use of the excellent SDL library and its extensions. Thanks guys :).
The following PAK-files from the original Dune 2 are needed to play Dune Legacy:
It depends on your system and installation where to put these files. LEGACY.PAK is supplied with Dune Legacy and is already in the data directory. All the other files should be copied there too. If you are not allowed to copy files there you may copy these files inside the dunelegacy configuration directory (e.g. ~/.config/dunelegacy/data/ on unix).
It depends on how the game was compiled. Normally you should put these files under /usr/share/dunelegacy/ or /usr/local/share/dunelegacy/ . Just look for LEGACY.PAK. If you do not have root access to your system you should put them in your home directory under ~/.config/dunelegacy/data/ .
The installer has already asked for the files and put them in the installation directory. If not put the PAK-files inside your installation folder or
if you do not have administrator privileges you should put them to C:\Documents and Settings\
The PAK-files have to be copied inside the application bundle. If you have followed the steps in the supplied dmg you have already copied them there. Otherwise just right-click on the bundle and select "Show Bundle Content". Then navigate into "Contents" and then into "Resources". There you will find LEGACY.PAK. Put the other PAK-files there too. Alternativly you can put them in your home directory under ~/.config/dunelegacy/data/ but putting them inside the application bundle is the preferred way.
General Keyboard Shortcuts:
Key | Effect |
---|---|
Escape | Go to menu |
Space | Pause game |
Alt + Enter | Toggle fullscreen |
Alt + Tab | Switch to other application |
Print Key or Ctrl + P | Save screenshot as ScreenshotX.bmp with increasing numbers for X |
Enter | Start/Stop chatting |
Key F1 | Zoomlevel x1 |
Key F2 | Zoomlevel x2 |
Key F3 | Zoomlevel x3 |
Key T | Toggle display of current game time |
Key F10 | Toggle sound effects and voice |
Key F11 | Toggle music |
Key F12 | Toggle display of FPS |
Key Up, Down, Left or Right | Move on the map |
Key G | Cycle through construction yards |
Key F | Cycle through factories/other builders |
Key F4 | Skip 10 seconds (only in singleplayer) |
Key F5 | Skip 30 seconds (only in singleplayer) |
Key F6 | Skip 2 minutes (only in singleplayer) |
Key - | Decrease gamespeed (only in singleplayer) |
Key + | Increase gamespeed (only in singleplayer) |
Ctrl + (Key 1 to Key 9) | Save the list of selected units as unit group 1 to 9 |
Key 1 to Key 9 | Select units from unit group 1 to 9 |
Shift + (Key 1 to Key 9) | Add all units from unit group 1 to 9 to the list of currently selected units |
Key 0 | Deselect all currently selected units |
Ctrl + Key 0 | Remove currently selected units form all unit groups (group 1-9) |
Key M | Order unit to move to some position |
Key A | Order selected units to attack some unit, structure or position |
Key C | Order selected infantry units to capture some structure |
Key R | Repair selected structure or send selected units to repair yard |
Key H | Return selected harvester |
Key D | Request a carryall drop (only if this game option is enabled) |
Key U | Upgrade selected structure |
Key P | Place a structure (if a construction yard is selected) |
Map Editor:
Key | Effect |
---|---|
Print Key or Ctrl + P | Save a picture of the whole map as <Mapname>.bmp |
Ctrl + Z | Undo last edit |
Ctrl + Y | Redo last edit |
If you want to fine tune the configuration of Dune Legacy you might want to take a look at the configuration file "Dune Legacy.ini". Depending on your system it
is either placed in ~/.config/dunelegacy (on Linux), ~/Library/Application Support/Dune Legacy (on Mac OS X) or in C:\Documents and Settings\
To play online via Internet you have to manually enable port forwarding if you use a NAT Router. Forward the Dune Legacy Server Port (Default is 28747) from your NAT Router to your computer. Use the same port on your router as configured in Dune Legacy. Example: If your machine has IP 192.168.123.1 and your using the default Dune Legacy Port, than forward port 28747 from your router to 192.168.123.1:28747.
IRC: #dunelegacy @ irc.freenode.net
Web: http://sourceforge.net/projects/dunelegacy