UNIFY: one exe -- retire the pod/glass/steam compile split
The three build dirs (build\ pod, build-glass\, build-steam\) were compile-
time splits of the same game; the tax was real: a stale steam exe shipped 2
days behind, the felt keymap flipped with the boot flavor, and cockpit
clicks were silently dead in the pod build (the trigger-config incident).
Now everything compiles into the single build\ exe:
- CMakeLists: BT_GLASS/BT_STEAM options removed; the glass TUs (PadRIO,
bindings, panel, glass windows, plasma) + FE/console + Steam transport
compile unconditionally; both macros always defined (seam markers).
- Steam: steam_api.lib linked with /DELAYLOAD:steam_api.dll + delayimp --
the DLL maps only when SteamAPI is first called, and every call site
gates on BT_STEAM_NET=1 (BTSteamNet_* short-circuit on steamActive), so
machines without the DLL run everything but Steam sessions.
- CABINET GUARD (btl4main): the miniconsole menu previously claimed any
zero-arg launch -- unified, that would hijack the pod cabinet's boot
shape. The menu now requires BT_PLATFORM=glass (or BT_FE_MENU=1);
platform parse moved above the fe_menu_mode computation. A bare boot
behaves exactly like the old pod build (DEV profile, wait for egg).
- Bats (play_solo/join/join_lan/play_steam) + the btoperator.py template:
single build\ path + BT_PLATFORM=glass. mkdist: one exe (+DLL scan
picks up OpenAL32 + steam_api). build-glass\/build-steam\/build-glass2\
(a stale Jul-20 cache) deleted.
Verified matrix on the unified exe:
bare zero-arg boot == old pod exe (same DEV profile + egg-load path;
the segfault on a missing egg is pre-existing, baselined vs the zip exe)
glass + BT_BTNTEST scripted click -> [cfgmap] ENTER/EXIT (trigger config)
runs with steam_api.dll ABSENT (delay-load proven)
glass zero-arg -> miniconsole menu
2-node loopback MP: 145 ticks each, cross-connected
BT_STEAM_NET=1 without Steam client -> "staying on Winsock", game runs
KB: context/glass-cockpit.md compile-gates section rewritten for the
unified model.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
d89ae71db5
commit
10ed66bd7c
+5
-11
@@ -49,21 +49,15 @@ def main():
|
||||
["git", "ls-files", "-z", "content/"]).decode().split("\0")
|
||||
tracked = [t for t in tracked if t]
|
||||
|
||||
exes = ["build/Release/btl4.exe", "build-glass/Release/btl4.exe"]
|
||||
bats = ["players/play_solo.bat", "players/join.bat", "players/join_lan.bat"]
|
||||
# ONE unified build (2026-07-21): every layer (pod game + glass cockpit +
|
||||
# Steam transport) lives in the single exe; steam_api.dll is delay-loaded.
|
||||
exes = ["build/Release/btl4.exe"]
|
||||
bats = ["players/play_solo.bat", "players/join.bat", "players/join_lan.bat",
|
||||
"players/play_steam.bat"]
|
||||
for p in exes + bats:
|
||||
if not os.path.exists(p):
|
||||
sys.exit("MISSING: %s -- build/refresh it first" % p)
|
||||
|
||||
# Steam build (EXPERIMENTAL): included when present -- play_steam.bat
|
||||
# hosts/joins internet sessions through the Steam lobby (needs the Steam
|
||||
# client running; steam_api.dll ships next to the exe).
|
||||
if os.path.exists("build-steam/Release/btl4.exe"):
|
||||
exes.append("build-steam/Release/btl4.exe")
|
||||
bats.append("players/play_steam.bat")
|
||||
else:
|
||||
print(" (no build-steam -- play_steam.bat left out)")
|
||||
|
||||
# Runtime DLLs living next to each exe (OpenAL32.dll etc.) -- the exe
|
||||
# fails to load without them (caught by the clean-extract boot test).
|
||||
for exe in list(exes):
|
||||
|
||||
Reference in New Issue
Block a user