Build: the BT_GLASS/BT_STEAM compile gates -- glass-cockpit dev-layer scaffolding
Step 1 of the desktop developer layer: option(BT_GLASS OFF) + option(BT_STEAM OFF) (BT_STEAM requires BT_GLASS, configure-time FATAL_ERROR), defines flow to all three targets via BT_DEFS. Defaults build = the pure pod game, verified: 3-config configure matrix + negative test + defaults Debug build (known mech3 /FORCE externals only). New topic context/glass-cockpit.md + ledger docs/GLASS_COCKPIT.md; router rows added. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
# build output
|
||||
/build/
|
||||
/build-pod/
|
||||
/build-steam/
|
||||
*.obj
|
||||
*.pdb
|
||||
*.ilk
|
||||
@@ -15,3 +17,8 @@ cdb_*.txt
|
||||
*.user
|
||||
Thumbs.db
|
||||
__pycache__/
|
||||
|
||||
# glass-cockpit dev layer: per-developer / per-machine runtime files
|
||||
content/bindings.txt
|
||||
content/frontend.egg
|
||||
content/steam_appid.txt
|
||||
|
||||
@@ -73,12 +73,13 @@ precise than anything you can infer.
|
||||
| Cockpit gauges / MFD HUD | `context/gauges-hud.md` |
|
||||
| Multiplayer, replication, netcode | `context/multiplayer.md` |
|
||||
| Pod hardware, monitors, RIO, MFD surfaces | `context/pod-hardware.md` |
|
||||
| Glass cockpit desktop dev layer (BT_GLASS/BT_STEAM gates, PadRIO, miniconsole, Steam) | `context/glass-cockpit.md` |
|
||||
| Content archives, maps, where data lives | `context/content-archives.md` |
|
||||
| Offsets, ClassIDs, addresses, resource types, env vars | `context/decomp-reference.md` |
|
||||
| What we don't know / deferred systems | `context/open-questions.md` |
|
||||
| Term / acronym definitions | `reference/glossary.yaml` |
|
||||
| The complete verbatim detail (fallback) | `docs/PROGRESS_LOG.md` (the old 2236-line CLAUDE.md) |
|
||||
| Detailed running ledgers | `docs/RECONCILE.md`, `docs/GAUGE_COMPOSITE.md`, `docs/HARD_PROBLEMS.md`, `docs/SUBSYS_PLAN.md`, `docs/P3_LOCOMOTION.md`, `docs/RESOURCE_AUDIT.md`, `docs/VEHICLE_SUBSYSTEMS.md`, `docs/BGF_FORMAT.md`, `docs/ASSET_PIPELINE.md`, `docs/BT_SOURCE_STATUS.md`, `docs/WAVE_PLAN.md` |
|
||||
| Detailed running ledgers | `docs/RECONCILE.md`, `docs/GAUGE_COMPOSITE.md`, `docs/HARD_PROBLEMS.md`, `docs/SUBSYS_PLAN.md`, `docs/P3_LOCOMOTION.md`, `docs/RESOURCE_AUDIT.md`, `docs/VEHICLE_SUBSYSTEMS.md`, `docs/BGF_FORMAT.md`, `docs/ASSET_PIPELINE.md`, `docs/BT_SOURCE_STATUS.md`, `docs/WAVE_PLAN.md`, `docs/GLASS_COCKPIT.md` |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -10,11 +10,35 @@ set(CMAKE_CXX_STANDARD 14)
|
||||
# --- external dependency: legacy DirectX SDK (June 2010); override with -DDXSDK=... ---
|
||||
set(DXSDK "C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)" CACHE PATH "Legacy DirectX SDK root")
|
||||
|
||||
#===========================================================================#
|
||||
# Compile gates -- the desktop developer layer (glass cockpit).
|
||||
# Default OFF: a no-flags configure builds the PURE POD GAME (the build of
|
||||
# record). BT_GLASS adds PadRIO input, the on-screen cockpit panel/plasma,
|
||||
# and the miniconsole mission launcher; BT_STEAM adds the Steam transport +
|
||||
# lobby on top. Convention: BT_GLASS/BT_STEAM are the only COMPILE-time
|
||||
# gates -- every other BT_* name is a runtime env gate (BTEnvOn).
|
||||
# Build dirs: build-pod/ (defaults), build/ (-DBT_GLASS=ON),
|
||||
# build-steam/ (-DBT_GLASS=ON -DBT_STEAM=ON). See context/glass-cockpit.md.
|
||||
#===========================================================================#
|
||||
option(BT_GLASS "Desktop developer layer: PadRIO glass cockpit, miniconsole front end" OFF)
|
||||
option(BT_STEAM "Steam transport + lobby for internet MP testing (requires BT_GLASS)" OFF)
|
||||
if(BT_STEAM AND NOT BT_GLASS)
|
||||
message(FATAL_ERROR "BT_STEAM requires BT_GLASS (configure with -DBT_GLASS=ON)")
|
||||
endif()
|
||||
message(STATUS "bt411 gates: BT_GLASS=${BT_GLASS} BT_STEAM=${BT_STEAM}")
|
||||
|
||||
set(BT_DEFS WIN32 _WINDOWS UNICODE _UNICODE NOMINMAX
|
||||
_CRT_SECURE_NO_DEPRECATE _CRT_SECURE_NO_WARNINGS
|
||||
_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS)
|
||||
set(BT_OPTS /permissive /W0 /wd4996 /EHsc /bigobj /MP)
|
||||
|
||||
if(BT_GLASS)
|
||||
list(APPEND BT_DEFS BT_GLASS)
|
||||
endif()
|
||||
if(BT_STEAM)
|
||||
list(APPEND BT_DEFS BT_STEAM)
|
||||
endif()
|
||||
|
||||
#===========================================================================#
|
||||
# Engine: MUNGA (shared sim/render engine) + MUNGA_L4 (Win32/D3D9 HAL).
|
||||
# The 2007 RP411 Windows engine, carrying our BT render/loader work
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
id: glass-cockpit
|
||||
title: "Glass Cockpit — the desktop developer layer (BT_GLASS / BT_STEAM)"
|
||||
status: living
|
||||
source_sections: "plan 2026-07-17; CMakeLists.txt gates; BT412 prior art (reference only)"
|
||||
related_topics: [pod-hardware, build-and-run, multiplayer, gauges-hud]
|
||||
key_terms: [PadRIO, miniconsole, glass-cockpit]
|
||||
open_questions: [".CTL positional-attribute off-by-one — audit pending (step 2a)"]
|
||||
---
|
||||
# Glass Cockpit — the desktop developer layer
|
||||
|
||||
**Purpose:** developer tooling so game developers can test their work WITHOUT booting a Tesla II
|
||||
pod — and stay far enough out of the game that nothing a real pod requires can break. NOT a
|
||||
consumer product (GDI-grade UI is the ceiling). Pod fidelity outranks desktop convenience in
|
||||
every trade-off.
|
||||
|
||||
## The compile gates (the ONLY compile-time feature gates in the tree)
|
||||
|
||||
| Gate | Default | Adds |
|
||||
|---|---|---|
|
||||
| `BT_GLASS` | OFF | PadRIO input (XInput+keyboard), on-screen cockpit button panel, desktop plasma window, `glass` platform preset, miniconsole mission launcher |
|
||||
| `BT_STEAM` | OFF (requires `BT_GLASS`) | Steam transport (`ISteamNetworkingSockets`) + `ISteamMatchmaking` lobby |
|
||||
|
||||
- A **no-flags configure is the pure pod game** — the build of record. `cmake` options are
|
||||
cached, so a developer configures a `build/` with `-DBT_GLASS=ON` once.
|
||||
- Build dirs: `build-pod/` (defaults, purity), `build/` (dev, glass ON), `build-steam/` (ON/ON).
|
||||
- **Convention:** `BT_GLASS`/`BT_STEAM` are compile gates; every other `BT_*` name is a RUNTIME
|
||||
env gate (`BTEnvOn`) — do not add compile gates without updating this file.
|
||||
- No weak-linkage/optional symbols — `/FORCE` turns unresolved externals into runtime AVs
|
||||
([[reconstruction-gotchas]]); gated calls must be structurally present-or-absent at compile time.
|
||||
|
||||
## Plan of record (2026-07-17)
|
||||
|
||||
Working branch `glass-cockpit` (from master `e2c21c4`). Steps: (1) gates+scaffolding [THIS],
|
||||
(2) PadRIO glass cockpit, (3) miniconsole self-launch, (4) Steam transport+lobby. Full plan:
|
||||
the approved plan file; running detail: `docs/GLASS_COCKPIT.md`. The retired BT412 trees
|
||||
(`C:\VWE\BT412`; local branch `local-abandoned-20260717`) are read-only reference — no code is
|
||||
copied from them.
|
||||
|
||||
## Status
|
||||
|
||||
- **Step 1 (gates + scaffolding): IN PROGRESS 2026-07-17.** CMake options + defines land with
|
||||
this file; gated `target_sources` blocks are added as each TU lands.
|
||||
- Step 2 (PadRIO + displays): pending. Secondary displays reuse the EXISTING dev-gauge modes
|
||||
(dock-bottom `BT_DEV_GAUGES=1`, combined separate window `BT_DEV_GAUGES_WINDOW=1`, overlay
|
||||
inset `BT_DEV_GAUGES_DOCK=1` — see [[gauges-hud]] + `docs/GAUGE_COMPOSITE.md`); NO new MFD
|
||||
display code, never re-enter the `L4VB16.cpp` split-view region.
|
||||
- Step 3 (miniconsole): pending. Architecture: the console stays a WIRE PEER — an in-process
|
||||
worker-thread console client over loopback; no engine-loop hooks.
|
||||
- Step 4 (Steam): pending.
|
||||
|
||||
## Key Relationships
|
||||
- Extends: [[pod-hardware]] (RIO input path) · Uses: [[gauges-hud]] dev-gauge modes ·
|
||||
Feeds: [[multiplayer]] (miniconsole hosting, Steam transport) · Build: [[build-and-run]]
|
||||
@@ -0,0 +1,21 @@
|
||||
# GLASS_COCKPIT — running ledger (desktop developer layer)
|
||||
|
||||
Detailed running log for the `glass-cockpit` branch work: PadRIO, on-screen panel/plasma,
|
||||
miniconsole, Steam transport/lobby. Curated digest: `context/glass-cockpit.md` (read that
|
||||
first); this file carries the step-by-step detail, evidence, and verification transcripts.
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-17 — Step 1: branch + compile gates + scaffolding
|
||||
|
||||
- Branch `glass-cockpit` created from master @ `e2c21c4`.
|
||||
- `CMakeLists.txt`: `option(BT_GLASS OFF)` + `option(BT_STEAM OFF)`; `BT_STEAM` without
|
||||
`BT_GLASS` is a configure-time FATAL_ERROR; gates append to `BT_DEFS` (flows to all three
|
||||
targets); `STATUS` line prints gate state at configure. Gated `target_sources` blocks will be
|
||||
added per-TU as they land (CMake would reject nonexistent source files now).
|
||||
- `.gitignore`: `build-pod/`, `build-steam/`, `content/bindings.txt`, `content/frontend.egg`,
|
||||
`content/steam_appid.txt`.
|
||||
- Verification (this step): defaults configure prints `BT_GLASS=OFF BT_STEAM=OFF` and builds
|
||||
(purity build); `-DBT_GLASS=ON` and ON/ON configures print correct gate state; the
|
||||
BT_STEAM-without-BT_GLASS negative test FATAL_ERRORs. Full 3-config BUILD matrix becomes
|
||||
meaningful from step 2 (first gated code) and is re-run there.
|
||||
Reference in New Issue
Block a user