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
+8
-12
@@ -786,15 +786,11 @@ class Operator(QMainWindow):
|
||||
def guarded(header, sets, run, tail):
|
||||
return ("@echo off\n" + header +
|
||||
"cd /d %~dp0\n"
|
||||
# Prefer the GLASS build when present (dev checkout): PadRIO
|
||||
# makes the cockpit buttons mouse-clickable; the pod build's
|
||||
# clicks are a no-op. Player zips ship only build\\.
|
||||
"set GAME=build\\Release\\btl4.exe\n"
|
||||
"if exist \"build-glass\\Release\\btl4.exe\" (\n"
|
||||
" set GAME=build-glass\\Release\\btl4.exe\n"
|
||||
" set BT_PLATFORM=glass\n"
|
||||
")\n"
|
||||
"if not exist \"%GAME%\" goto badpath\n"
|
||||
# ONE unified build (2026-07-21): every layer is in the one
|
||||
# exe; BT_PLATFORM=glass arms the desktop cockpit (clickable
|
||||
# buttons / trigger config / bindings.txt keymap).
|
||||
"set BT_PLATFORM=glass\n"
|
||||
"if not exist \"build\\Release\\btl4.exe\" goto badpath\n"
|
||||
"if not exist \"content\\" + egg_name +
|
||||
"\" goto badpath\n" +
|
||||
sets +
|
||||
@@ -834,7 +830,7 @@ class Operator(QMainWindow):
|
||||
"set BT_RELAY=%s:%d\nset BT_LOG=join.log\n"
|
||||
"set BT_START_INSIDE=1\nset BT_DEV_GAUGES=1\n"
|
||||
% (host, self.f_port.value()),
|
||||
"..\\%GAME% -egg %s -net 1501\n" % egg_name,
|
||||
"..\\build\\Release\\btl4.exe -egg %s -net 1501\n" % egg_name,
|
||||
net_tail))
|
||||
lan_ip = _detect_lan_ip()
|
||||
lan_relay = ("%s:%d" % (lan_ip, self.f_port.value())) if lan_ip else "auto"
|
||||
@@ -851,7 +847,7 @@ class Operator(QMainWindow):
|
||||
"rem Joining over the INTERNET? Use join.bat instead.\n",
|
||||
"set BT_RELAY=%s\nset BT_LOG=join.log\n"
|
||||
"set BT_START_INSIDE=1\nset BT_DEV_GAUGES=1\n" % lan_relay,
|
||||
"..\\%GAME% -egg %s -net 1501\n" % egg_name,
|
||||
"..\\build\\Release\\btl4.exe -egg %s -net 1501\n" % egg_name,
|
||||
net_tail))
|
||||
with open(os.path.join(out_dir, "play_solo.bat"), "w",
|
||||
newline="\r\n") as f:
|
||||
@@ -862,7 +858,7 @@ class Operator(QMainWindow):
|
||||
"(ARENA2/DBASE/FOGDAY/...).\n",
|
||||
"set BT_START_INSIDE=1\nset BT_DEV_GAUGES=1\n"
|
||||
"set BT_LOG=join.log\n",
|
||||
"..\\%GAME% -egg ARENA1.EGG\n",
|
||||
"..\\build\\Release\\btl4.exe -egg ARENA1.EGG\n",
|
||||
"echo.\necho The game has exited. If it closed unexpectedly,\n"
|
||||
"echo send the operator content\\join.log.\npause\n"))
|
||||
self.log.appendPlainText(
|
||||
|
||||
Reference in New Issue
Block a user