Phase 1 mid-review + stress harness

- docs/MIDREVIEW.md: what M0'-M2.5 proved, bridge-layer LOC (~1100),
  key technical conclusions (4x4 transpose, animation method B, no
  handedness flip needed), remaining risks, recommendation = enter Phase 2
  with a 3-item wrap-up (compare.py, dump_materials oracle, refocused perf).
- harness MTGODOT_STRESS=N: grid of N animated warriors, vsync off, dumps
  test/godot-macos-stress.json. Frame times are throttle-capped in a
  background window (~30fps to 50 chars, 52ms at 100); the reliable signals
  are build cost ~165ms/char and the 100-char breakout.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WaHYEY9rwLWt21PULiYjeJ
This commit is contained in:
Claude
2026-08-29 09:46:54 +09:00
parent 83c48f0c14
commit 528a6390ea
4 changed files with 208 additions and 2 deletions
+63
View File
@@ -0,0 +1,63 @@
{
"note": "macOS, background/unfocused window -> Godot throttles to ~30fps; frame_ms rows at ~33.3 are the throttle ceiling, not measured cost. build_ms_per_char and the 100-char breakout (52ms) are the reliable signals. Proper frame timing = Phase 2 (focused window / on-device).",
"renderer": "Apple M2 (Apple8)",
"method": "per-frame set_bone_global_pose (B)",
"runs": [
{
"build_ms_per_char": 170.682,
"build_ms_total": 170.682,
"characters": 1,
"cpu_process_ms_avg": 34.1602583333333,
"cpu_process_ms_p95": 34.405,
"fps_avg": 29.345480700072,
"frame_ms_avg": 34.0767973856208,
"frame_ms_max": 58.8235294117647,
"frame_ms_p95": 33.3333333333333,
"frames": 240,
"method": "per-frame set_bone_global_pose (B)",
"renderer": "Apple M2 (Apple8)"
},
{
"build_ms_per_char": 167.27,
"build_ms_total": 1672.7,
"characters": 10,
"cpu_process_ms_avg": 35.1748875,
"cpu_process_ms_p95": 41.667,
"fps_avg": 30.0000000000001,
"frame_ms_avg": 33.3333333333332,
"frame_ms_max": 33.3333333333333,
"frame_ms_p95": 33.3333333333333,
"frames": 240,
"method": "per-frame set_bone_global_pose (B)",
"renderer": "Apple M2 (Apple8)"
},
{
"build_ms_per_char": 164.90146,
"build_ms_total": 8245.073,
"characters": 50,
"cpu_process_ms_avg": 34.5210166666665,
"cpu_process_ms_p95": 34.624,
"fps_avg": 30.1173930643639,
"frame_ms_avg": 33.203405017921,
"frame_ms_max": 33.3333333333333,
"frame_ms_p95": 33.3333333333333,
"frames": 240,
"method": "per-frame set_bone_global_pose (B)",
"renderer": "Apple M2 (Apple8)"
},
{
"build_ms_per_char": 164.65813,
"build_ms_total": 16465.813,
"characters": 100,
"cpu_process_ms_avg": 54.0874916666667,
"cpu_process_ms_p95": 62.877,
"fps_avg": 19.1516169676607,
"frame_ms_avg": 52.2149122807017,
"frame_ms_max": 52.6315789473684,
"frame_ms_p95": 52.6315789473684,
"frames": 240,
"method": "per-frame set_bone_global_pose (B)",
"renderer": "Apple M2 (Apple8)"
}
]
}