mkdist: redist runtime DLLs + versioned tester README
The first zips (pre-mkdist) shipped d3dx9_43.dll / msvcp140.dll / vcruntime140.dll next to the exe -- testers without the VC++ / DirectX redistributables cannot load the exe otherwise. mkdist missed them (the clean-extract boot test passed only because this machine has them system- wide). Carried into redist/ (recovered from BT411_4.11.341.zip) and packaged next to the exe. Also: players/README.txt -- the tester instructions (updated for the unified build: one exe, clickable cockpit surround, trigger-config regroup, the settled keymap, play_steam.bat) -- stamped with the version and placed at the zip root, matching the original zips' shape. Clean-extract verified on BT411_4.11.435.zip: root has README + 4 bats, exe dir carries all 4 DLLs, glass-profile boot simulates. 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
10ed66bd7c
commit
dd74d13120
@@ -0,0 +1,38 @@
|
||||
BattleTech {VERSION} -- multiplayer client
|
||||
==========================================
|
||||
|
||||
IMPORTANT: FULLY EXTRACT this zip first (right-click - Extract All).
|
||||
Do NOT run anything from inside the zip. The .bat files must sit next
|
||||
to the 'content' and 'build' folders.
|
||||
|
||||
TO JOIN AN INTERNET GAME: double-click join.bat
|
||||
(waits for the operator's session if it's not up yet)
|
||||
TO JOIN A LAN GAME: double-click join_lan.bat (operator's LAN)
|
||||
SINGLE-PLAYER PRACTICE: double-click play_solo.bat (no network)
|
||||
STEAM INTERNET PLAY: double-click play_steam.bat (EXPERIMENTAL --
|
||||
needs the Steam client running; host or join from the menu)
|
||||
|
||||
Your seat and mech are assigned automatically by the operator.
|
||||
If the game closes unexpectedly, send the operator content\join.log.
|
||||
|
||||
You start INSIDE the cockpit with the pod's MFD panels composited
|
||||
around the view (one window). The red MFD buttons, radar rails and
|
||||
joystick buttons are all MOUSE-CLICKABLE -- right-click a button to
|
||||
latch it held. Press V any time to toggle the external camera.
|
||||
|
||||
CONTROLS (keyboard):
|
||||
W/S or Up/Down ....... throttle lever X / NumPad5 ... all stop
|
||||
A/D or Left/Right .... turn pedals Alt ........... reverse thrust
|
||||
Q/E .................. torso twist R/F ........... torso aim
|
||||
NumPad 8/2/4/6 ....... torso aim/twist (alt) Shift ......... throttle up
|
||||
1 or Space ........... main trigger 2 ............. middle thumb
|
||||
3 or Ctrl ............ upper thumb (missiles) 4 ............ pinky
|
||||
V view | B look-behind | M control mode | N schematic | J/K/L MFD pages
|
||||
G (hold) + fire key .. regroup a weapon onto that trigger -- or hold a
|
||||
weapon panel's red PROGRAM button with the mouse and tap a fire key;
|
||||
the joystick diagram on the panel shows the binding live.
|
||||
|
||||
An Xbox controller works out of the box. Rebind keys in
|
||||
content\bindings.txt (regenerates with defaults if deleted).
|
||||
|
||||
This build: {VERSION}. Private -- do not redistribute.
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -66,8 +66,20 @@ def main():
|
||||
if f.lower().endswith(".dll"):
|
||||
exes.append(d + "/" + f)
|
||||
|
||||
# System runtime DLLs the exe needs on a bare tester machine (32-bit
|
||||
# d3dx9 + MSVC runtimes -- carried in redist/, shipped next to the exe;
|
||||
# the first zips included them and machines without the redists fail
|
||||
# to load the exe otherwise).
|
||||
redist = ["redist/" + f for f in sorted(os.listdir("redist"))
|
||||
if f.lower().endswith(".dll")] if os.path.isdir("redist") else []
|
||||
|
||||
total = 0
|
||||
with zipfile.ZipFile(zpath, "w", zipfile.ZIP_DEFLATED, compresslevel=6) as z:
|
||||
# versioned tester README at the zip root
|
||||
if os.path.exists("players/README.txt"):
|
||||
readme = open("players/README.txt", encoding="utf-8").read()
|
||||
readme = readme.replace("{VERSION}", name.replace("BT411_", ""))
|
||||
z.writestr(name + "/README.txt", readme)
|
||||
for p in bats: # bats at the zip ROOT (next to
|
||||
arc = os.path.basename(p) # content\ + build\, per the guard)
|
||||
z.write(p, name + "/" + arc)
|
||||
@@ -75,6 +87,9 @@ def main():
|
||||
for p in exes:
|
||||
z.write(p, name + "/" + p)
|
||||
total += os.path.getsize(p)
|
||||
for p in redist: # next to the exe
|
||||
z.write(p, name + "/build/Release/" + os.path.basename(p))
|
||||
total += os.path.getsize(p)
|
||||
for p in tracked:
|
||||
if not os.path.exists(p):
|
||||
print(" (skipping tracked-but-absent: %s)" % p)
|
||||
|
||||
Reference in New Issue
Block a user