No description
  • C++ 98.6%
  • CMake 1.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Tronax 6b9ec746b3
docs: restyle README with custom SVG logo, shields.io badges and hero shot
Give the repository front page a proper identity:

- assets/logo.svg: hand-drawn vector logo (680x200) - dark sky gradient
  with horizon, stars and sun glow, a low-poly side-view aircraft with
  the livery's orange fin/wingtip and spinning prop disc, speed lines,
  ground shadow, and the AeroCade wordmark with an orange SIM badge.
  Committed in-tree so the README does not depend on external hosts.
- assets/screenshot.jpg: real engine capture (in flight at 136 kt /
  1446 ft, full HUD) as the hero image, replacing the accidental
  placeholder that pointed at docs/ARCHITECTURE.md as an image.
- shields.io badges: C++20, CMake 3.24+, OpenGL 4.6 core / 3.3+ fallback,
  vendored GLFW 3.4, Linux X11/Wayland platform, 120 Hz fixed-step
  physics, 24/24 selftest passing, release v0.1.0.
- README content restructured: centered header block, short overview
  paragraph, tables for debug flags, a Versioning section pointing at
  CHANGELOG.md and SemVer tags, and the existing build/controls/feature
  sections kept (English throughout).

Note: the Gitea release badge endpoint
(https://git.dietzlabs.net/Tronax/AeroCade-Sim/badges/release.svg) already
answers, but shows "Not found" until a release object is created from the
v0.1.0 tag in the web UI; the static badge can be swapped for it then.
2026-09-26 22:09:07 +02:00
assets docs: restyle README with custom SVG logo, shields.io badges and hero shot 2026-09-26 22:09:07 +02:00
config feat: AeroCade Sim v0.1.0 — complete SimCade flight simulator 2026-09-26 22:03:17 +02:00
docs feat: AeroCade Sim v0.1.0 — complete SimCade flight simulator 2026-09-26 22:03:17 +02:00
selftest feat: AeroCade Sim v0.1.0 — complete SimCade flight simulator 2026-09-26 22:03:17 +02:00
src feat: AeroCade Sim v0.1.0 — complete SimCade flight simulator 2026-09-26 22:03:17 +02:00
third_party/glfw chore(build): vendor GLFW 3.4 as an in-tree dependency 2026-09-26 22:02:38 +02:00
.gitignore chore(build): vendor GLFW 3.4 as an in-tree dependency 2026-09-26 22:02:38 +02:00
CHANGELOG.md feat: AeroCade Sim v0.1.0 — complete SimCade flight simulator 2026-09-26 22:03:17 +02:00
CMakeLists.txt feat: AeroCade Sim v0.1.0 — complete SimCade flight simulator 2026-09-26 22:03:17 +02:00
README.md docs: restyle README with custom SVG logo, shields.io badges and hero shot 2026-09-26 22:09:07 +02:00

AeroCade Sim

A keyboard-first SimCade flight simulator — GTA V-style handling, a procedural 16×16 km world, and a spring-damper chase cam.

C++20 CMake OpenGL GLFW Platform Simulation Tests Release

Chase camera view of the procedural low-poly aircraft flying over the terrain, with the full flight HUD

In flight at 136 kt / 1446 ft — compass tape, pitch ladder and instrument HUD, rendered entirely by the engine's own code paths.


Overview

AeroCade Sim is a native C++20 flight simulator that trades hardcore systems depth for instant, low-friction fun: responsive keyboard flying with smoothed analog response, forgiving ground handling, aerobatic authority (360° rolls in 1.5 s), and an optional auto-level assist that catches the aircraft when you let go. The world is fully procedural — no asset downloads — and the whole renderer is written by hand on top of OpenGL 4.6 core with a vendored GLFW, so the only external dependencies are GLM headers and a working GPU driver.

Build & run

cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/aerocade_sim          # game window
./build/aerocade_selftest     # headless physics validation (24 checks)

Requirements: a C++20 compiler, CMake ≥ 3.24, Ninja or Make, GLFW's system dependencies (X11 and/or Wayland dev packages), GLM headers, and an OpenGL 3.3+ driver. GLFW itself is vendored — nothing else to install.

Controls (GTA V standard, keyboard-first)

Input Key
Throttle up / down (airbrake at idle, wheel brake on ground) W / S
Rudder left / right A / D
Pitch down / up Numpad 8 / Numpad 5
Roll left / right Numpad 4 / Numpad 6
Landing gear G
Camera cycle (chase / far / cockpit) V
Auto-level assist T
Orbit camera Mouse or KP7/KP9/KP1/KP3
Toggle NUMPAD ↔ TKL layout F9
Reload configs F5
Reset to runway / pause R / P
Debug overlay (fps, pos, AoA, G) F3
Free cursor / recapture Esc / click

The TKL profile (F9) flies with the arrow keys — yoke-style, Up = push = nose down, mirroring the numpad profile's geometry — with Q/E/Z/C as camera orbit. Every action is remappable in config/controls.cfg (both profiles, plus analog shaping: attack/release rates, sensitivity, expo, deadband). config/settings.cfg covers resolution, vsync/fps cap, physics rate, base FOV, sun position, fog and terrain seed.

Feature map

  • Flight model — lift Cl(α) with smooth stall, induced + parasitic drag with a hard rise near Vmax, speed-lapsed prop thrust, weathervane stability, toggleable auto-level assist (bank-level + pitch-hold + climb-arrest), wheel spring/damper/brake/steering ground model, gear state machine (UP / DOWN / TRANSIT) with belly contact, gust turbulence.
  • Sim loop — fixed 120 Hz accumulator, decoupled render with per-system interpolation; thread pool for terrain generation.
  • Camera — second-order spring-damper chase rig with partial bank follow, bank slide, velocity look-ahead, dynamic FOV, orbit with auto-recenter, procedural shake, cockpit mode.
  • World — procedural heightfield (fbm hills, ridged mountains, flattened runway apron); the GPU mesh and CPU collision read the exact same data, so wheels can never float or sink.
  • HUD — pitch ladder, compass tape, IAS in kt/km-h, altitude ft + VS fpm, throttle, gear, assist/profile/camera indicators, event messages, stall warning.

Debug flags

Flag Effect
--screenshot N:path render N frames, save a BMP, exit
AC_AIR_START=<meters> spawn airborne instead of on the runway
F3 in game fps, position, AoA, G-load overlay

Project layout

docs/ARCHITECTURE.md   module breakdown, conventions, extension points
assets/                logo + hero screenshot
config/                settings.cfg, controls.cfg (hot-reloadable)
src/core               log, config parser, math, noise, thread pool
src/input              platform-neutral keys, InputManager + profiles
src/physics            FlightModel, TerrainWorld (shared heightfield)
src/camera             CameraController (spring rig)
src/game               World (sim orchestrator), Engine (window + loop)
src/render             GL loader, shaders, terrain quadtree, aircraft, HUD
src/audio              AudioEngine interface + null backend
selftest/              headless scenario tests (takeoff → landing)

Versioning

Releases are tagged vX.Y.Z following Semantic Versioning; every notable change is recorded in CHANGELOG.md. The latest tag: v0.1.0 (initial playable release).

Roadmap

Multi-draw-indirect terrain path, compute-based weather particles, cascaded shadow maps, velocity-buffer motion blur + speed lines, a real audio backend (the AudioEngine interface and cue points already exist), and a Vulkan backend behind the same render/ interface. Deep dive: docs/ARCHITECTURE.md.