one night = ONE log file: the 8MB size roll-over retired (it cost field evidence the moment it existed -- night16: Elengil's incident window sat in an unsent pre-rotation part; testers attach 'the log' = the newest part). The 6am log-day boundary stays. Transport moves to players/SENDLOGS.bat (ships at the dist root): one double-click zips every log/matchlog/lastrun from the last 36h to a Desktop BTLOGS_<machine>_<date>.zip (~10:1 text compression -- a 13MB night = 1.8MB, well under Discord's 10MB free cap, which is what the roll-over was protecting against). Handout HOW TO REPORT updated; mkdist carries the bat
This commit is contained in:
@@ -5,8 +5,11 @@
|
|||||||
build. Section A is the payoff -- please verify.
|
build. Section A is the payoff -- please verify.
|
||||||
=============================================================================
|
=============================================================================
|
||||||
HOW TO REPORT: drop a line in Discord with the issue number and PASS /
|
HOW TO REPORT: drop a line in Discord with the issue number and PASS /
|
||||||
FAIL / what you saw. Screenshots and rough times help; logs get collected
|
FAIL / what you saw. Screenshots and rough times help.
|
||||||
as usual.
|
LOGS -- NEW, ONE CLICK: double-click SENDLOGS.bat in the game folder after
|
||||||
|
the session. It puts ONE small zip on your Desktop with every log from the
|
||||||
|
night (session logs, matchlogs, launch breadcrumbs) -- attach that one file.
|
||||||
|
No more hunting for the right .log, no more missing parts.
|
||||||
=============================================================================
|
=============================================================================
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
|||||||
+12
-23
@@ -731,29 +731,18 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||||||
lt = shifted;
|
lt = shifted;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// SIZE ROLL-OVER -- never deletes anything, but keeps each FILE small
|
// ONE NIGHT = ONE FILE (the 8 MB size roll-over RETIRED 2026-08-13).
|
||||||
// enough to actually send. A playtest evening concatenates into one
|
// The roll existed because the evidence channel is a Discord
|
||||||
// file (4.3 MB from a single session in scratchpad/night5/), and the
|
// attachment (free-tier cap: 10 MB today; 8 MB when this shipped) --
|
||||||
// channel this evidence travels through is a chat attachment. Part 0
|
// but multi-part files cost us field evidence the moment they
|
||||||
// is <stem>_YYYYMMDD.log; once it passes the cap the NEXT launch opens
|
// existed: testers attach "the log" (the newest part) and part 0
|
||||||
// <stem>_YYYYMMDD.1.log, and so on. Checked only at open, so one very
|
// stays home (night16: Elengil's 20:17 ET incident window was in the
|
||||||
// long session can still overrun -- that is deliberate: never split a
|
// unsent pre-rotation part). Transport is now SENDLOGS.bat (ships
|
||||||
// live session across files.
|
// in the dist root): zips every log/matchlog/lastrun to one ~10:1
|
||||||
const DWORD part_max = 8UL * 1024UL * 1024UL;
|
// compressed attachment, so raw file size no longer matters and the
|
||||||
for (int part = 0; part < 1000; ++part)
|
// whole night reads as one uninterrupted file.
|
||||||
{
|
wsprintfA(resolvedLog, "%s_%04d%02d%02d.log",
|
||||||
if (part == 0)
|
logStem, (int)lt.wYear, (int)lt.wMonth, (int)lt.wDay);
|
||||||
wsprintfA(resolvedLog, "%s_%04d%02d%02d.log",
|
|
||||||
logStem, (int)lt.wYear, (int)lt.wMonth, (int)lt.wDay);
|
|
||||||
else
|
|
||||||
wsprintfA(resolvedLog, "%s_%04d%02d%02d.%d.log",
|
|
||||||
logStem, (int)lt.wYear, (int)lt.wMonth, (int)lt.wDay, part);
|
|
||||||
WIN32_FILE_ATTRIBUTE_DATA fad;
|
|
||||||
if (!GetFileAttributesExA(resolvedLog, GetFileExInfoStandard, &fad))
|
|
||||||
break; // does not exist yet -- use it
|
|
||||||
if (fad.nFileSizeHigh == 0 && fad.nFileSizeLow < part_max)
|
|
||||||
break; // still room to append
|
|
||||||
}
|
|
||||||
logSelfNamed = 1;
|
logSelfNamed = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
@echo off
|
||||||
|
rem ==========================================================================
|
||||||
|
rem BT411 -- package tonight's logs into ONE Discord-attachable zip.
|
||||||
|
rem Double-click me after a playtest. The zip lands on your DESKTOP as
|
||||||
|
rem BTLOGS_<machine>_<date>.zip -- attach that one file in Discord.
|
||||||
|
rem Collects: every session log, matchlog, and launch breadcrumb. Nothing
|
||||||
|
rem is deleted or modified; this only makes a copy.
|
||||||
|
rem ==========================================================================
|
||||||
|
cd /d "%~dp0"
|
||||||
|
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
|
||||||
|
"$d = Get-Date -Format yyyyMMdd_HHmm;" ^
|
||||||
|
"$out = Join-Path ([Environment]::GetFolderPath('Desktop')) (\"BTLOGS_{0}_{1}.zip\" -f $env:COMPUTERNAME, $d);" ^
|
||||||
|
"$files = Get-ChildItem -Path 'content\*.log','content\lastrun_*.txt','content\matchlog_*.txt','content\cdb_*.txt' -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -gt (Get-Date).AddHours(-36) };" ^
|
||||||
|
"if (-not $files) { Write-Host 'No logs found -- run me from the BT411 folder (next to the content directory).'; exit 1 }" ^
|
||||||
|
"Compress-Archive -Force -Path $files.FullName -DestinationPath $out;" ^
|
||||||
|
"Write-Host ('Wrote ' + $out + ' (' + $files.Count + ' files, ' + [math]::Round((Get-Item $out).Length/1MB,1) + ' MB)');"
|
||||||
|
echo.
|
||||||
|
echo Attach the BTLOGS zip from your Desktop in Discord. Thanks!
|
||||||
|
pause
|
||||||
+1
-1
@@ -77,7 +77,7 @@ def main():
|
|||||||
exes = ["build/Release/btl4.exe"]
|
exes = ["build/Release/btl4.exe"]
|
||||||
|
|
||||||
bats = ["players/play_solo.bat", "players/join.bat", "players/join_lan.bat",
|
bats = ["players/play_solo.bat", "players/join.bat", "players/join_lan.bat",
|
||||||
"players/joyconfig.bat"]
|
"players/joyconfig.bat", "players/SENDLOGS.bat"]
|
||||||
if steam_on:
|
if steam_on:
|
||||||
bats.append("players/play_steam.bat")
|
bats.append("players/play_steam.bat")
|
||||||
for p in exes + bats:
|
for p in exes + bats:
|
||||||
|
|||||||
Reference in New Issue
Block a user