mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-26 00:14:33 -04:00
b309b6c6adb803cf31410c7799afdb028a828603
This fixes crashes when first entering North Faaron cave and Renado's Sanctuary due to system heap exhaustion resulting from multiple threads allocating on the heap at once. There's some sort of weird contention going on - for some reason the game gobbles up seemingly any amount of memory you throw at it when the two threads are competing for heap space. Using a separate heap in the async thread sidesteps the issue.
Dusk
Building
Prerequisites
- CMake 3.30+
- Windows: Install
CMake Toolsin Visual Studio - macOS:
brew install cmake
- Windows: Install
- Python 3+
- Windows: Microsoft Store
- Verify it's added to
%PATH%by typingpythonincmd.
- Verify it's added to
- macOS:
brew install python@3
- Windows: Microsoft Store
- [Windows] Visual Studio 2022 Community
- Select
C++ Developmentand verify the following packages are included:Windows 10 SDKCMake ToolsC++ Clang CompilerC++ Clang-cl
- Select
- [macOS] Xcode 11.5+
- [Linux] Actively tested on Ubuntu 20.04, Arch Linux & derivatives.
- Ubuntu 20.04+ packages
build-essential curl git ninja-build clang lld zlib1g-dev libcurl4-openssl-dev \ libglu1-mesa-dev libdbus-1-dev libvulkan-dev libxi-dev libxrandr-dev libasound2-dev libpulse-dev \ libudev-dev libpng-dev libncurses5-dev cmake libx11-xcb-dev python3 python-is-python3 \ libclang-dev libfreetype-dev libxinerama-dev libxcursor-dev python3-markupsafe libgtk-3-dev - Arch Linux packages
base-devel cmake ninja llvm vulkan-headers python python-markupsafe clang lld alsa-lib libpulse libxrandr freetype2 - Fedora packages
cmake vulkan-headers ninja-build clang-devel llvm-devel libpng-devel- It's also important that you install the developer tools and libraries
sudo dnf groupinstall "Development Tools" "Development Libraries"
- It's also important that you install the developer tools and libraries
- Ubuntu 20.04+ packages
Setup
- Clone and initialize the Dusk repository
git clone --recursive https://github.com/TakaRikka/dusk.git
cd dusk
git pull
git submodule update --recursive
- Generate assets
cp /path/to/GZ2E01.iso orig/GZ2E01/.
python3 ./configure.py
ninja
Building
Visual Studio (Recommended for Windows)
cmake -B build/dusk -G "Visual Studio 17 2022" -A x64 # Win32 for 32bit
ninja (Windows/macOS/Linux)
cmake -B build/dusk -GNinja
ninja -C build/dusk
Running
Pass the disc image as a positional argument. Supported formats: ISO (GCM), RVZ, WIA, WBFS, CISO, GCZ
build/dusk/dusk /path/to/game.rvz
If no path is specified, Dusk defaults to game.iso in the current working directory.
30 FPS on Debug
When compiled fully in a Debug the game runs too slowly to hit playable 30 FPS. To avoid this, you can set a CMake cache variable to optimize specific critical files without hampering debuggability in the rest of the program: -DDUSK_SELECTED_OPT=ON. When building for MSVC (Windows) you must also modify CMAKE_CXX_FLAGS_DEBUG and CMAKE_C_FLAGS_DEBUG to remove /RTC1 from the flags, like so: -DCMAKE_CXX_FLAGS_DEBUG="/MDd /Zi /Ob0 /Od" -DCMAKE_C_FLAGS_DEBUG="/MDd /Zi /Ob0 /Od"
Description
Languages
C++
54.8%
C
43.9%
Java
0.4%
POV-Ray SDL
0.3%
Pawn
0.3%
Other
0.2%