diff --git a/.gitignore b/.gitignore index 318ccd5..d66af16 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,5 @@ content/fe_last.ini /join.bat /join_lan.bat /play_steam.bat +# MP match forensic logs (matchlog.cpp) -- runtime artifacts +matchlog_*.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index ee99cf1..eaded18 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -286,6 +286,7 @@ add_library(bt410_l4 STATIC "game/reconstructed/emitter.cpp" "game/reconstructed/gnrator.cpp" "game/reconstructed/gyro.cpp" + "game/reconstructed/matchlog.cpp" "game/reconstructed/heat.cpp" "game/reconstructed/heatfamily_reslice.cpp" "game/reconstructed/hud.cpp" @@ -326,6 +327,7 @@ add_library(bt410_l4 STATIC "game/original/BT_L4/BTL4ARND.CPP" ) target_include_directories(bt410_l4 BEFORE PRIVATE + "${CMAKE_BINARY_DIR}" "${CMAKE_SOURCE_DIR}/engine/shim" "${CMAKE_SOURCE_DIR}/game/reconstructed" "${CMAKE_SOURCE_DIR}/game/original/BT" @@ -347,6 +349,7 @@ add_custom_target(btversion -P ${CMAKE_SOURCE_DIR}/tools/btversion.cmake BYPRODUCTS ${CMAKE_BINARY_DIR}/btversion.h COMMENT "Stamping btversion.h") +add_dependencies(bt410_l4 btversion) # matchlog.cpp stamps btversion.h into its HDR line add_executable(btl4 WIN32 "${CMAKE_SOURCE_DIR}/game/btl4main.cpp") add_dependencies(btl4 btversion) target_include_directories(btl4 BEFORE PRIVATE diff --git a/context/multiplayer.md b/context/multiplayer.md index 76cef36..1359dc2 100644 --- a/context/multiplayer.md +++ b/context/multiplayer.md @@ -74,6 +74,53 @@ emulator** (⚠ `NotationFile::ReadText` expects NUL-SEPARATED lines). [T2] INLINE (`char[N]` at the binary offsets), not a `const char*` pointer (garbage cross-pod). Check EVERY MakeMessage for pointer payloads. [T2] +## MATCH FORENSICS (`BT_MATCHLOG`, permanent -- 2026-07-22) [T2] +Per-peer forensic combat log for MP playtests, built for the first 8-player session. Because +damage authority is VICTIM-side, no single peer sees the whole match: every instance writes +`matchlog__