Donify runs as a native Unreal Engine project. The current supported development path is Linux, Unreal Engine 5.8.1, and Vulkan. The current source prerelease is 0.8.0-alpha.1. The repository contains source, configuration and tooling; large runtime resources are downloaded separately.
| Requirement | Notes |
|---|---|
| Unreal Engine 5.8.1 | Install the engine and its Linux compilation toolchain separately under Epic's terms |
| Linux graphical session with Vulkan | Required to launch and inspect the game; the checks also launch Unreal |
| Vulkan-capable GPU and working drivers | The reviewed demo used an NVIDIA RTX A5000; no minimum GPU or VRAM specification has been established |
Git, Bash, Python 3 and ripgrep (rg) |
Used by repository and asset/check scripts |
| Disk space | Allow room for Unreal Engine, fetched assets, intermediates and shader caches; no minimum has been validated |
| Internet for initial setup | Needed for the engine and asset downloads; prepared gameplay reads local files |
Windows, macOS, packaged standalone builds and additional hardware remain unverified. Blender and generative-service API keys are only relevant to optional asset preparation, not an ordinary build and flight.
Clone the public repository. Set DONIFY_ENGINE_DIR to the directory containing your Unreal installation's Engine/ folder:
git clone --branch v0.8.0-alpha.1 https://github.com/w4coder/donify.git
cd donify
export DONIFY_ENGINE_DIR="/path/to/UnrealEngine5.8"
python3 Scripts/assets.py fetch
python3 Scripts/check_architecture.py
./Scripts/build.shReplace the example engine path with your installation. Keep the variable set in terminals used to build or launch Donify. Fetching restores runtime files from the versioned asset manifest. Public downloads do not require storage credentials. If you need editable source assets for content work, fetch the optional pack separately:
python3 Scripts/assets.py fetch --pack sourcesThis extra pack is not required to compile and fly with the runtime resources.
The runtime pack for 0.8.0-alpha.1 contains the rebuilt detailed reference houses with open doors, windows and connected floors. The other twelve main residential buildings are built by C++. No Blender regeneration or import is required to use indoor flight or run its checks. See the indoor flight guide for approach controls and optional asset authoring.
The target is DonifyEditor, Linux, Development. Compilation generates local outputs under ignored directories. Never copy the engine into this repository.
Close any running Donify game or editor before updating. From the existing repository, fetch the release tag and select it:
git fetch --tags origin
git switch --detach v0.8.0-alpha.1
python3 Scripts/assets.py fetch --force
./Scripts/build.sh
./Scripts/launch.shIf you follow the default development branch instead of a release tag, use git pull --ff-only to update it, then fetch its assets and rebuild. Git will report any local source changes that prevent switching or updating; keep those changes rather than resetting the repository.
fetch --force replaces differing runtime files listed in the selected manifest, including the older solid house meshes. Save any intentionally edited runtime assets elsewhere before using it. Files outside the manifest are not removed. The optional authoring pack can be refreshed separately with python3 Scripts/assets.py fetch --pack sources --force if needed.
A running session keeps the geometry it already loaded. Rebuilding or fetching assets alone does not change that session: close it and launch the new build.
./Scripts/launch.shThe default game window is 1600 × 1000. Override it when needed:
./Scripts/launch.sh -ResX=1280 -ResY=800Allow initial shader compilation to finish. Interactive play starts on the pad with motors off. Press T to take off, Space / Left Ctrl to change height, movement keys to select a velocity, K to brake and hover, and L to land. Read Controls before using motor cutoff or automatic missions.
To edit the scene or resources:
./Scripts/editor.shUse Play in the editor to enter the simulation. Launching the game or editor does not rebuild changed C++ sources automatically.
After building:
./Scripts/check.shThis checks module boundaries, runs the in-game scenarios and verifies results in Saved/Logs/Validation.log. It expects 23 markers: one aggregate of 13 deterministic dynamics checks and 22 integration scenarios, including six indoor checks. The release runtime pack supplies the reference-house assets required by the suite. Test sessions are silent. The public release validation record describes the tested scope and remaining limits.
| Symptom | Check |
|---|---|
| Engine not found | DONIFY_ENGINE_DIR must point to the folder containing Engine/; verify that the Linux engine executables exist |
rg not found |
Install ripgrep through your distribution's package manager |
| Missing materials, meshes or prepared sounds | Run python3 Scripts/assets.py fetch and review any download or integrity error |
| Old C++ behavior still visible | Close the game, run ./Scripts/build.sh, then launch again |
A reference-house doorway blocks the drone, or reference_interiors fails |
Follow the upgrade steps, including assets.py fetch --force, then build and relaunch; see Indoor flight |
| First launch takes longer | Check the Unreal log for ongoing shader compilation and wait for it to finish |
No sound during check.sh or capture fixtures |
These modes are intentionally silent; use normal gameplay or -DonifyAudioProbe |
| No sound during normal gameplay | Check game volume and system output device; try ./Scripts/launch.sh -DonifyAudioProbe -DonifyShot=9 for an audible diagnostic |
| Movement continues after releasing keys | Stabilized mode preserves its velocity target; press K to brake and hover |
| Controller differs from the displayed layout | Check Linux gamepad detection and mappings; physical controller calibration remains unverified |
| A check fails | Inspect Saved/Logs/Validation.log and include the failed or missing marker in an issue |
For a report, include OS, engine version, GPU, reproduction steps and expected behavior. Logs may contain local paths; remove private information before sharing.
On Linux/X11 with FFmpeg and PulseAudio-compatible tools installed:
python3 Scripts/record_gameplay.pyThe recorder starts a dedicated game instance, sequences normal flight controls in real time and captures its audio into a local video. This is separate from the cockpit's PNG screenshot button. Read GAMEPLAY_RECORDING.md for dependencies and outputs.