Repository navigation
DoD Studio window: every tab shows how far the demo and its highlights have loaded, and highlights start loading as soon as a demo plays (#797) - #804
Conversation
… loading, and the highlights start finding as soon as a demo plays (#797) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…w and progress bar (#797) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Live-tested unattended (game_probe, Brain account, DLL
Left for a decision (cosmetic): on the Highlights tab the status label ( Also for a decision, from the PR body: the highlights analysis now starts for every demo the hook sees playing, including the ones Studio plays while capturing. |
…OV demo's player, greyed out (#797) The status line wrapped under the filter row, and once the loading strip says how far the analysis is, it only repeated the file name. Messages with nothing to list (no demo, no kills, a failure) go on the hint line beside Go instead. The Player box shows for every demo: an HLTV demo's narrows the list, a POV demo's holds the recording player's name and is disabled. The list moves up into the freed rows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
User live test on POST (DLL Decisions from the test:
Seen during the test, not this PR: some demos sit at |
… in words, not a byte dump (#797) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ting it (#797) ListPanel::SetItemVisible puts a row shown again at the end of the visible rows, so narrowing and widening the Player filter shuffled them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…w # order, with no heading sort forced (#797) Instead of hiding rows (SetItemVisible puts a row shown again at the end) and then sorting by Row #, typing in the Player box refills the list with the matching streaks in highlight order. A heading the user clicked still sorts it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Probe test of 62b2068 (DLL
|
Probe test on today's dev, together with #820 #806 #804 #816 #814 (2026-10-18)One local build of dev b7603c4 (with #734 kill-feed scale, #838, #840) + #820 + #806 + #804 + #816 + #814 merged (
Frames: |
Release note: New: The in-game DoD Studio window shows how far the demo and its highlights have loaded along the top of every tab, and the highlights start loading as soon as a demo plays; the Highlights tab is simpler (no status line or Min kills, the Player box names a POV demo's player).
Closes #797
Changed after the user's POST test (2026-10-17)
Test DLL now
local\test-797e\(head 62b2068, dev merged in).SetItemVisibleshows again goes to the end of the list, so rows came back out of order). No heading sort forced; a clicked heading still sorts. Leaks the rows per keystroke as it did per demo: Free the Highlights tab's list rows instead of leaking them #812.analysispasses its parse error throughintegrity::parse_error_reason(nowpub), and the hook does the same to an older Studio's text. Seen onhltv-2508021304-dod_solitude_b2(server crashed mid-recording; reading up to the break is Analyze a damaged demo up to the point where it breaks #811).What changes
hook::poll()now callsload_strip::request_highlights()every frame, before the "no window yet" early return: oncedemo_reload::current_demo()isSome, it asksstreaks::requestfor that demo (once per demo name, so the path is worked out once). Window open or closed, any tab. The Highlights tab only shows the result now; its ownrequestcall stays and is a no-op.LoadStriplabel inDodStudio.res, shown on every tab while either load runs:Loading: Demo 45% Highlights 60%(only the parts still running). Gone, and the tabs back to full height, once both are done.load_progress::demo_percent(), factored out of the Playback tab's update, which now uses it too, so the strip and the Playback bar (While a demo loads, the demo player bar shows how far along it is (#465) #758) say the same number. It no longer depends on the Playback page being visible.streaks::loading_percent()(the samePERCENTatomic the Highlights tab's bar reads, without cloning the streaks found every frame). While the worker holds the job lock for a frame, the strip keeps its last number.load_strip_text(demo, highlights)with unit tests; placement fromload_strip_bounds(page_wide), tested too.LoadLabel/LoadProgressand the Highlights tab'sStreakProgress+ status line stay as they were.Layout approach
The strip goes on the page showing, over the top of the page area, and the page's controls move down under it:
load_strip::update(run beforefit_pages, only while the window shows) reparents theLoadStriplabel from the window onto whichever page is visible (set_parent, as loans do) and places it at(8, 2, page_wide - 16, 18)in page coordinates. On the page rather than the window because a page paints over whatever of the window lies under it, so a window child overlapping the page area would sit under it.fit_pagesfits each tab's controls to the page height lessLOAD_STRIP_TALL(20 px) and adds 20 to every control's y while the strip shows; 0 otherwise. Lent controls follow their slots as before, and a list that fills the tab's height (FILL_HEIGHT) loses those 20 px.fit_sheetunchanged).DodStudio.reswithoutLoadStripgets no strip and no inset.No console names were added; none is needed.
Things to check / open questions
LoadStripentry into that tab's.res. Harmless (it would be found and used first), but unusual.Local checks (worktree, own target dir)
rustup run 1.98.1 cargo fmt --all --check: cleanrustup run 1.98.1 cargo clippy -p goldsrc-hooks --all-targets --locked --target i686-pc-windows-msvc -- -D warnings: cleanrustup run 1.98.1 cargo clippy -p goldsrc-hooks --all-targets --locked -- -D warnings(host): cleancargo test -p goldsrc-hooks --target i686-pc-windows-msvc --locked: 578 passed, 1 ignored (incl. the two new strip tests)cargo build -p goldsrc-hooks --release --target i686-pc-windows-msvc --lib --locked: built; DLL atlocal\test-797\dodstudio_goldsrc_hooks.dllin the main checkoutNot tested in the game yet.
Live test plan
DLL:
local\test-797\dodstudio_goldsrc_hooks.dll. Run on PRE (Half-Life - PRE-Anniversary for Movies) first, then POST (Half-Life - POST-Anniversary for Movies). Demo:wsod25_grp2_h1_hltvin PRE'sdod\(copy it to POST'sdod\for the second run). For the highlights half to show progress, the demo must not be in the analyzer cache yet (else it shows Ready at once): rename its cache entry aside, or pick another uncached demo.dodstudio_viewdemo_in_panel 1, thenviewdemo wsod25_grp2_h1_hltv. The window opens on Playback: a line along the top readsLoading: Demo NN% Highlights NN%, and the Playback controls sit ~20 px lower than usual. The Playback tab's own "Loading the demo: NN%" says the same demo number as the strip.studio_panel: loading strip: gone, both loads donein the hook log.dodstudio_viewdemo_in_panel 0,viewdemothe demo again (renamed cache entry back aside first), never open the window for ~20 s, then ESC -> DoD Studio -> Highlights: the analysis is already well past 0% (or done), so it started without the tab.🤖 Generated with Claude Code