forked from phenom/healer-man
Release Healer Man 0.1.26
This commit is contained in:
1 parent
e7cc588bfc
commit
147c2804d4
27 files changed
+1010
-55
No files matched your search
@@ -1854,3 +1854,141 @@ Vite's existing large-chunk advisory remains informational.
|
||||
- Verification passed all 1,133 Vitest cases across 208 files. The production
|
||||
build completed with 974 modules transformed; arena, KTX2, and environment-
|
||||
performance audits remained green, and the release-candidate check passed.
|
||||
|
||||
# 2026-09-09 — dungeon wall and nameplate performance regressions
|
||||
|
||||
- The 0.1.24 material fallback honored BLEND tags on legacy WoW WMO walls,
|
||||
floors, and ceilings, disabling their depth writes. WoW environments now use
|
||||
their authored material roles again; RuneWaker environments retain their
|
||||
source MASK/BLEND semantics. Shipped Wailing Caverns wall materials, vines,
|
||||
and water are covered by regression tests.
|
||||
- The 0.1.25 boss-name occlusion scanned the complete rendered scene with
|
||||
Three.js raycasts. A live Kalin's Shrine CPU profile was dominated by triangle
|
||||
intersection and vertex decoding. Boss names and nearby NPC prompts now use
|
||||
bounded camera-to-label queries against Rapier's existing physical spatial
|
||||
index, at most ten times per second, skipping offscreen labels. Walls, floors,
|
||||
and ceilings occlude labels; actors and trigger sensors do not.
|
||||
- In an isolated offline Edge playtest at 1440 x 900 on an AMD RX 9070 XT,
|
||||
Kalin's Shrine improved from about 10 FPS (98.5 ms/frame, 167 draw calls,
|
||||
DPR 1.125) to 55.5-56.1 FPS (17.8-18.0 ms/frame, 168-170 draw calls,
|
||||
DPR 1.5). This is a representative entrance/combat comparison, not an audit
|
||||
of all thirty RoM dungeons. The environment alone took about 0.8 ms CPU and
|
||||
0.5 ms GPU with 14 draw calls.
|
||||
- Wailing Caverns screenshots show continuous opaque cavern walls and ceilings.
|
||||
A controlled toggle of the old material flags reproduced the missing wall
|
||||
sections at the same camera position; restoring depth-writing materials fixed
|
||||
them. Its full scene ran at about 57 FPS. No uncaught client errors appeared.
|
||||
- Evidence and repeatable local benchmark helpers are under
|
||||
`playtest-artifacts/2026-09-09-dungeon-rendering/`: `kalin-before.cpuprofile`,
|
||||
`kalin-after.cpuprofile`, `kalin-after-metrics.json`, `kalin-before.png`,
|
||||
`kalin-after.png`, `wailing-regression.png`, and `wailing-restored.png`.
|
||||
- All 26 focused material, label occlusion, combat sight, aggro visibility,
|
||||
instancing, and NPC-prompt tests passed. Physical-occlusion tests exercise
|
||||
actual Rapier worlds rather than just source-code assertions.
|
||||
|
||||
# 2026-09-09 — campaign rendering audit and Thor performance preparation
|
||||
|
||||
- Audited the actual visual GLB headers for all 54 WoW campaign dungeons:
|
||||
9,402 materials, including 3,586 legacy BLEND materials restored to opaque
|
||||
rendering by the shared policy. Every WoW package contained affected
|
||||
materials. A permanent shipped-asset test covers all 54 definitions and
|
||||
retains explicit cutout, blend, and additive roles. This is material-policy
|
||||
coverage, not a claim that every room has been visually traversed.
|
||||
- Live screenshots checked Wailing Caverns, Shadowfang Keep, Utgarde Pinnacle,
|
||||
the Nexus, and Tinkertech Showdown. The sampled walls, floors, stairs, and
|
||||
ceilings remain solid; authored lighting effects remain transparent. Kalin's
|
||||
Shrine and Forsaken Abbey provided RoM rendering checks. Roster and in-dungeon
|
||||
screenshots show character bodies and equipped weapon silhouettes after the
|
||||
shared character animation change.
|
||||
- A controlled Utgarde Pinnacle entrance test found about 1,739 draw calls,
|
||||
1.95 million triangles, and 30.5 FPS on the desktop GPU. Clipping at the
|
||||
existing full-fog distance reduced this to about 209 calls, 567,000 triangles,
|
||||
and 60 FPS at the same viewpoint. The camera now follows each dungeon's fog
|
||||
distance, including transitions that retain the existing Canvas/camera.
|
||||
The background uses the fog color to avoid a clipping seam at the horizon.
|
||||
All 84 dungeon definitions have render-distance coverage.
|
||||
- Static dungeon visual transforms are cached until the root or its parent's
|
||||
world transform changes. Tests verify imported matrices, repeated unchanged
|
||||
frames, root movement, and parent movement. Characters, moving world objects,
|
||||
and physics remain outside this immutable visual cache.
|
||||
The final 63-second Utgarde sample held 60 FPS with 213 draw calls:
|
||||
main-thread work averaged 9.2 ms/frame, renderer CPU averaged 7.5 ms
|
||||
(p95 8.3 ms), and GPU averaged 2.7 ms (p95 4.1 ms). Movement and jump input
|
||||
continued to animate the player while the environment remained stationary.
|
||||
- Character locomotion and jump clip selections are cached by animation
|
||||
library and weapon stance. The final Kalin CPU profile contains no sampled
|
||||
per-frame base-clip selection/name parsing. Frame-cap deadlines now tolerate
|
||||
sub-millisecond timestamp rounding without drifting or emitting catch-up
|
||||
frames; tests cover 60 FPS on rounded 60 Hz and 120 Hz callbacks.
|
||||
- A 31.5-second Kalin sample with a connected browser companion display held
|
||||
60 FPS: main-thread work averaged 8.7 ms/frame, renderer CPU averaged 5.4 ms
|
||||
(p95 5.9 ms), and GPU averaged 2.4 ms (p95 3.4 ms). The companion used about
|
||||
5.1 ms of main-thread time per second. Recent ability-cost snapshot work was
|
||||
not a dominant hotspot in this sample. Startup warmup is bounded to loading;
|
||||
companion snapshots are already limited to ten per second during gameplay.
|
||||
- These are isolated offline Edge desktop samples on an AMD RX 9070 XT at
|
||||
1920 x 1080 CSS pixels, DPR 1.5 (2880 x 1620 renderbuffer). Party composition
|
||||
can change between dungeon entries. They do not certify Android performance
|
||||
or sustained busy-combat headroom. ADB listed no connected Android device.
|
||||
- Thor acceptance should use the actual model, both native displays, target
|
||||
resolution, and a sustained 20-minute traversal/combat run after warmup.
|
||||
Provisional headroom target: p95 main-thread and GPU work each at or below
|
||||
12 ms, with p99 presented frame intervals within the 16.7 ms 60-FPS budget.
|
||||
Test large pulls, boss effects, menus, and repeated dungeon transitions;
|
||||
record thermal behavior and frame-time spikes, not only average FPS.
|
||||
The environment asset audit still has 60 grandfathered budget exceptions;
|
||||
its green result means no new asset regression, not a Thor FPS guarantee.
|
||||
- Evidence is in `playtest-artifacts/2026-09-09-thor-audit/`, including roster,
|
||||
dungeon, and companion screenshots, CPU profiles, and CPU/GPU JSON samples.
|
||||
The full material report is
|
||||
`playtest-artifacts/2026-09-09-dungeon-rendering/wow-material-audit.json`.
|
||||
- Validation passed 227 focused tests covering avatar rendering and animation,
|
||||
camera distances, material policies, frame pacing, static transforms, label
|
||||
visibility, and companion snapshots. The final static-cache change also
|
||||
passed the 105-test scene subset. The production build and release-candidate
|
||||
check passed; the existing large-bundle advisory remains.
|
||||
|
||||
# 2026-09-09 — additional CPU headroom from culling and shared skeletons
|
||||
|
||||
- Prepared dungeon visuals now group static siblings into conservative spatial
|
||||
bounds. One scene hook checks these bounds after the current camera and world
|
||||
matrices update, before Three.js traverses individual meshes. Bounds include
|
||||
complete wall geometry and all instances; lights, animated meshes, and meshes
|
||||
explicitly disabling frustum culling remain outside these groups. The hook
|
||||
supports streamed chunks and restores its predecessor after cleanup.
|
||||
- At the same Utgarde Pinnacle entrance, only 16 of 1,383 spatial groups were
|
||||
visible. The renderer examined 108 static meshes instead of 7,002, retaining
|
||||
the same 206 draw calls and 566,913 rendered triangles. Controlled culling
|
||||
toggles produced byte-identical canvas PNGs across eight camera headings.
|
||||
- In the same running scene, spatial grouping reduced average main-thread work
|
||||
from 9.45 to 6.83 ms/frame, and renderer CPU from 7.81 to 5.31 ms/frame.
|
||||
Removing containers emptied by static instancing reduced the final fresh-run
|
||||
averages further to 6.49 ms main-thread and 4.85 ms renderer CPU (p95 5.2 ms).
|
||||
The final sample lasted 87.8 seconds and held 60 FPS. Authored empty scene
|
||||
nodes are preserved; only containers emptied by our batching are removed.
|
||||
- The shared character renderer still uses SkeletonUtils.clone, then reuses
|
||||
equivalent skeleton palettes within that owned clone. Bone identities, order,
|
||||
and inverse bind matrices must all match; per-mesh bind transforms remain
|
||||
unchanged. Different characters retain independent bones and animations.
|
||||
Owned bone textures are now explicitly disposed during character teardown.
|
||||
- A live character audit found 66 skeleton objects for one player palette and
|
||||
256 objects for four party palettes. A Wailing Caverns toggle removed 309
|
||||
duplicate skeletons and produced an identical rendered image. Tests verify
|
||||
posed vertices, differing bind transforms, incompatible palettes, independent
|
||||
cloned characters, and redundant texture disposal.
|
||||
In the same Wailing scene, main-thread work fell from 7.40 to 6.70 ms/frame;
|
||||
renderer CPU fell from 5.51 to 4.86 ms/frame, and allocated GPU textures fell
|
||||
from 292 to 217. This measures palette sharing after spatial culling was
|
||||
already enabled. Both samples held 60 FPS.
|
||||
- The final built runtime showed a complete roster body and staff with one
|
||||
skeleton for 66 skinned meshes. Kalin's Shrine showed one player palette and
|
||||
four independent party palettes; walking retained the player body and weapon
|
||||
silhouette. Wailing Caverns and Utgarde screenshots retained solid dungeon
|
||||
surfaces. There were no uncaught client errors during these playtests.
|
||||
- All 210 targeted avatar, visibility, instancing, material, camera-distance,
|
||||
and label tests passed. The production build and release-candidate check
|
||||
passed. The existing large-bundle advisory remains.
|
||||
- Evidence is under `playtest-artifacts/2026-09-09-static-culling/`: paired PNGs,
|
||||
eight-heading pixel comparisons, profiles, before/after timing JSON, and
|
||||
screenshots. Measurements use the same desktop Edge/RX 9070 XT setup as the
|
||||
preceding audit. These CPU improvements do not certify Thor performance.
|
||||
Reference in new issue
Block a user