Skip to content

Latest commit

Β 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

AC7 Cockpit

Turns Ace Combat 7: Skies Unknown into a home-cockpit sim: real force-feedback and bass-shaker haptics driven by live game telemetry, plus F-35-style glass MFD panels β€” on a game that ships no telemetry output at all.

Three parts, all in this repo:

Part What it does
mod/ UE4SS Lua mod that reads live aircraft state out of the running game
bridge/ Fuses that with your HOTAS and feeds MOZA FFB, ButtKicker and HF8
mfd/ F-35 PCD-style MFD panels (HUD, tactical display, stores, engine)

Everything is derived from the game's own data β€” no screen capture, no guesswork.

How it works

Ace Combat 7
  └─ UE4SS mod (AC7Telemetry)      reads AcePlayerPawn + all mission objects
       └─ named pipe (JSON lines)
            └─ bridge (DCS.exe)    fuses telemetry + HOTAS, derives G / AoA
                 β”œβ”€ MOZA      TCP 3476    force feedback
                 β”œβ”€ ButtKicker UDP 16384  bass shaker (HaptiConnect)
                 β”œβ”€ HF8       UDP 31090   haptic seat pad
                 └─ MFD feed  UDP 8172 ──> mfd_server ──> browser panels

The haptics path works by speaking DCS World's telemetry protocols, so HaptiConnect and MOZA Cockpit treat Ace Combat 7 as a fully supported sim. The bridge ships as DCS.exe because MOZA identifies the game by process name.

What the game gives up

The mod pulls real values out of the engine using the reflected Nimbus class dump:

  • Flight state β€” position, attitude, velocity (G-load and AoA are derived)
  • Weapons β€” true gun / missile / special / flare counts and their maximums
  • Damage and the real mission clock
  • Every mission object β€” with the game's own category (Plane, Heli, Vehicle, Building, Battery, Ship), subcategory (Fighter, SAM, Tank, Cruiser…), faction (GetFaction(): Enemy or Ally) and kill bounty
  • Missiles in flight and the cockpit missile-alert state

Requirements

  • Ace Combat 7 on PC (Steam)
  • UE4SS built for AC7
  • Python 3.11+ with pygame and pywin32 (pip install pygame pywin32)
  • Optional hardware: MOZA FFB base, ButtKicker + HaptiConnect, Next Level Racing HF8
  • Optional: Microsoft Edge for the MFD panels (any Chromium works)

Install

# 1. install the UE4SS mod into the game (auto-detects your Steam library)
.\deploy-ue4ss.ps1

# 2. start the bridge - this is the app you keep open while playing
python bridge\ac7_bridge.py        # or build a DCS.exe, see below

# 3. launch the MFD panels (or use the bridge's "Launch MFD" button)
mfd\launch_mfd.cmd

Build the bridge as DCS.exe (needed for MOZA to recognise it):

pip install pyinstaller
cd bridge
python -m PyInstaller --onefile --noconsole --name DCS ac7_bridge.py

Offline / campaign only. AC7's multiplayer anti-cheat flags injected code. Rename dwmapi.dll to dwmapi.dll.off in the game folder before playing online.

Controls

AC7 can bind arbitrary DirectInput hardware through a config file the UI never exposes β€” no vJoy or controller emulation needed. See docs/BINDINGS.md for a full worked example (MOZA yoke + WinWing throttle + VKB pedals), including the menu/cutscene bindings that are otherwise unreachable without a gamepad.

MFD panels

Each window is one half of an F-35 Panoramic Cockpit Display: a FAB status bar over a portal you can switch between pages by tapping its title.

  • HUD β€” MIL-STD-1787 symbology: pitch ladder, flight-path marker, speed and altitude boxes, G / AoA / Mach, bank scale
  • TSD β€” NTDS/MIL-STD-2525 tactical display: hostiles as red diamonds, friendlies as cyan circles, unknowns as yellow squares, missiles as darts, range rings with a scale bar, and a DCLT declutter control
  • SMS / ENG / EFI / ICAWS β€” stores, engine, flight instruments, caution list
  • ALL β€” everything at once (the default)

Windows remember where you drag them. Set "display": N in mfd_config.json to pin one to a specific monitor, borderless and full-screen.

Missile warning audio (bring your own)

The MFD plays a tone when the game raises a missile alert, but no audio ships with this repo β€” the sounds used during development came from a third-party DCS module and are not redistributable. Drop your own files here:

mfd/web/audio/missile_lock.ogg     played on "missile near"
mfd/web/audio/missile_launch.ogg   played on "missile very near"

Volume is a slider in the bridge window. Browsers block audio until you interact with the page, so tap either panel once per session to enable sound.

Configuration

Copy the examples and edit to taste:

bridge/bridge_config.example.json -> bridge/bridge_config.json
mfd/mfd_config.example.json       -> mfd/mfd_config.json

Both are written automatically as you adjust settings in the UI.

Tools

  • tools/axis_finder.py β€” shows live DirectInput axis/button names for binding
  • tools/bk_probe.py β€” replays synthetic telemetry to test ButtKicker effects without launching the game

Docs

Credits

  • UE4SS and the AC7 build on Nexus
  • Nimbus-Template β€” the reflected class dump that made precise reads possible
  • B612 β€” Airbus's cockpit display typeface (SIL OFL, bundled in mfd/web/fonts/)

Not affiliated with or endorsed by Bandai Namco. For personal, offline use.

License

MIT β€” see LICENSE.

About

Live telemetry, force-feedback haptics and F-35-style glass MFDs for Ace Combat 7 - a game that ships no telemetry at all

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages