TrueFlight is a native C++ flight game/runtime built on SDL3, Vulkan, ImGui, and procedural world simulation.
This repository currently contains:
- A playable Windows native executable target:
TrueFlight - A native smoke-test target:
TrueFlightNativeSmoke - Procedural terrain/world generation and persistent world storage
- Flight, walking, terraforming, paint, HUD, instrument, and online/Steam menu systems
- Asset loading for built-in,
.glb,.gltf, and.stlmodels
The native port in this repo already implements these major systems:
- SDL3 windowing, input, audio, and GPU/Vulkan rendering
- Procedural terrain with chunk streaming, caves, tunnels, water, biome coloring, terraces, craters, and decoration controls
- Native flight dynamics, atmosphere/wind, propulsion, collision/crash handling, and live tuning
- Chase/cockpit flight camera plus on-foot walking mode and terrain editing tools
- Runtime model loading and per-model paint overlays saved as PNGs
- Configurable HUD and instrument panels
- World instance creation, selection, deletion, and persisted terrain/world metadata
- Native networking/replication foundations plus optional Steamworks integration
Not everything is handled the same way:
- SDL3 is fetched automatically by CMake with
FetchContent - Dear ImGui is expected in
NativePort/third_party/imguiand is already referenced by the build glslangValidatormust be available from a Vulkan SDK install or onPATH- Steamworks is optional, Windows-only, and only enabled when you provide a valid SDK
The build does not vendor the Vulkan SDK or Steamworks SDK.
From the workspace root:
cmake -S . -B build/workspace-layout -G "Visual Studio 18 2026" -A x64
cmake --build build/workspace-layout --target TrueFlight --config ReleaseOr use the helper script:
python NativePort\build_trueflight.pyUseful script options:
--ctest: buildsTrueFlightNativeSmokeand runsctest--enable-steamworks: forces Steamworks on if a valid SDK is available--disable-steamworks: forces Steamworks off--steamworks-sdk-root <path>: points at a Steamworks SDK root orsdkdirectory--no-package: skips stagingbuild/package/<config>/TrueFlight
Build outputs are staged under:
build/workspace-layout/NativePort/Release/TrueFlight.exebuild/package/Release/TrueFlight/
- Windows
- A Vulkan-capable GPU/driver stack that SDL3 can use through the Vulkan backend
- Shader compilation support via
glslangValidatorduring build
If Steamworks is enabled, the build script/CMake flow also stages steam_appid.txt and steam_api64.dll beside the executable.
.\build\workspace-layout\NativePort\Release\TrueFlight.exeThe executable also accepts a Steam lobby launch argument:
.\build\workspace-layout\NativePort\Release\TrueFlight.exe +connect_lobby <lobby_id>Default flight controls:
W/S: pitch forward/backA/D: roll left/rightQ/E: yaw left/rightUp/Down: throttle up/down- Mouse move: flight stick input
- Mouse wheel: throttle
Ctrl+ mouse wheel: elevator trim[/]: rudder trim left/right- Right mouse: zoom
Space: air brakesC: chase/cockpit cameraM: map toggleF3: debug toggleR: reset flightEsc: menu/pause
Walking and editing:
W/A/S/D: move while on foot- Mouse move: look
Shift: sprintSpace: jumpT: toggle terraform modeLMB: fire projectilesB: drop bombsA: afterburner
Paint editing:
1: brush mode2: erase modeF: fillCtrl+Z: undoCtrl+Y: redoP: commit paint
Voice:
V: push-to-talk when the online voice mode uses PTT
All bindings are configurable in-game.
The pause/menu flow currently includes:
MainSettingsCharactersPaintHUDInstrumentsControlsHelp
Settings sub-pages currently include:
GraphicsCameraSoundFlightTerrainLightingOnline
Character and paint tools are split across:
PlanePlayerEnemyTarget
The game uses SDL preference paths under:
SDL_GetPrefPath("Don Reagan", "TrueFlight")
The runtime stores data there, including:
native_settings.iniHUD-settings.inipaint/worlds/terrain_chunk_cache/
Included sample assets currently include:
portSource/Assets/Models/DualEngine.glbportSource/Assets/Models/DualEngine2.glbportSource/Assets/Models/DualEngine.stl
The runtime supports loading:
.glb.gltf.stl
If no external model is selected, the game can fall back to built-in/native visual defaults.
There is a native smoke-test executable and a registered CTest target:
python NativePort\build_trueflight.py --ctestAt the time of this README update, the smoke-test target builds successfully, but the current ctest run is not fully passing.
- The top-level
CMakeLists.txtis a workspace wrapper that buildsNativePort - Third-party license notices are collected in
licenses/THIRD_PARTY_LICENSES.txt - Main project license text is in
LICENSE.txt - Forks and sumbissions of changes are encouraged but must have permission given prior to posting of said submissions.
- This is Source-Availabe Not Open-Source.