Skip to content

Immersive native entry, environmental response and measured performance - #133

Merged
hoainho merged 1 commit into
mainfrom
task/130-immersive-experience
Oct 18, 2026
Merged

hoainho merged 1 commit into
mainfrom
task/130-immersive-experience

Conversation

@hoainho

@hoainho hoainho commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

Closes #130

Scope

  • Replace the always-running TitleStage with an actual 2560×1440 native Greenwake plate and lightweight CSS motion; preserve English controls and the candidate banner.
  • Make introduction/story text and Continue/Skip immediately readable; retain real subtitle settings, keyboard/gamepad handler and live OS Reduced Motion. Loading exposes actual phases/asset progress, not a decorative countdown.
  • Diagnose the bridge screenshot: its figure was baked into /asset-source/ui/maps/greenwake.jpg, used as a CSS background, not a live actor penetration. Replace that backdrop with a native scenery-only plate without altering CameraDirector/support authority.
  • Add native house scuffs/bounded flex and two native loose wooden crate stacks with swept motion, settling and break; rooted trees remain fixed. Simulation owns damage; presentation never changes quest/reward state.
  • Bake the existing blocked-candidate simplification recipe into five heavy native dependencies, compact vertices and resize embedded textures. Preserve native bindings/skins/selected vertex values and leave asset qualification blocked. Add a conservative path-sweep broadphase preserving narrow-phase decisions/order.
  • Integrate on merged feat: remake native enemy and boss attacks #132 (a380076); retain native attack queue/sync/presentation and gate-birth timing.

Observed acceptance

  • Production UI: keyboard title activation → readable intro → Escape skip → phased loading → real dialogue/next line/Skip Cinematic → tutorial dismissal and movement.
  • Held required Yara GLB for 14 seconds: 54%, Loaded 41 of 49 scene assets, no gameplay HUD; release reached the actual dialogue.
  • Responsive 390×844 and 960×540: no horizontal overflow. Live OS Reduced Motion: zero running title animations; mounted intro static with zero particles. Synthetic gamepad A/B samples exercised the actual handler (not physical-controller certification).
  • Actual GameApplication/native scene + real K/J contacts: house health 180→148.07 without translation/collapse; tree 137.50→130.30 without translation; crate 80→57.40→0, removed colliders, no campaign-fact change during isolated break. Hero placement was seeded near each material before input; no camera/damage override.
  • 84 native catalog output hashes match. Five native derivatives match the actual existing client recipe's ordered triangle attributes and fitted bounds. 2,672 exact path comparisons + six mutable collider/support transitions: zero mismatches.

Matched production measurements

One sequential cold/warm pair, one owned headless Brave/Chromium155 on AppleM1/16GB, 1568×817/DPR1. Same Aren/Koro Greenwake UI route, 2s hero-preview and1s intro dwell. CPU/frame, sampled CPU, all-pass GL and GPU query windows measured separately. Baseline is merged #131 main a380076, not the earlier pre-#131 run.

Metric Before After
Cold / warm observed title ready 1770 / 2114ms 878 / 745ms
Selection→first dialogue, cold / warm 24.19 /23.88s 8.26 /8.15s
Cold title transfer 20.12MB 1.52MB
Encoded resources through cold gameplay 489.59MB 142.42MB
Game JS / counter window 5173 /5187ms 1693 /5013ms
Game RAF p95 / long tasks 116.7ms /43 16.7ms /0
Post-GC game JS used / backing storage 24.68 /112.03MB 22.97 /62.41MB
Separate GPU median / p95 32.06 /34.28ms 19.73 /20.74ms
All-pass draws / triangles 80 /1,158,061 84 /1,160,805

Query-only differential runtime 2412→215ms is not an FPS benchmark. Draws/triangles increase slightly for native crates; no batching-reduction claim. Three normal title/new-run cycles retain stable game backing storage after change, but title used heap rises13.44→14.38MB and DOM329→345→361 (baseline also +16 nodes/cycle): not leak-free certification. One host/pair is not fleet percentile, locked60fps, all-boss stress or production asset acceptance.

Verification

  • TypeScript + Vite build: pass,331 modules,8.62s wall; existing >500KB warning remains.
  • Focused UI/environment/geometry/native candidate gate: 88 pass,0 fail,38,037 assertions,8 files.
  • Node24 release tests: 236 pass,0 fail.
  • Prior unrelated full-suite hero timeouts and Aren animation failure remain disclosed; no full-suite pass claimed and no repeat solely to confirm them.
  • Production pageErrors empty. Favicon404 and navigation-aborted audio requests disclosed; audio playback not accepted.

Evidence

Acceptance ledger · UI/performance documentation · bridge/native budget diagnosis

Portable actual H.264/yuv420p/24fps/1280×720/fast-start videos:

No paid generation, commercial binary decompilation, dependency/lockfile change or unrelated worktree edit. Commercial Game1/2 references are presentation references only. Temporary probes and unused derivatives removed; worktrees preserved. Main session owns the two-stage spec/code review; no independent external approval is claimed.

@vercel

vercel Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
wild-crown Ready Ready Preview Oct 18, 2026 4:29pm UTC

@hoainho hoainho left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Main-session review of 1ec0d1d. Coordinator review, not independent external approval.

  1. Spec compliance: all #130 acceptance items exercised and mapped in acceptance.json. Actual native pre-rendered title; immediately readable introduction/dialogue; truthful held-required-asset loading; source-based bridge backdrop diagnosis; real native house/tree/crate offensive response; fresh matched production measurements against merged #131 main; English, candidate banner, keyboard/gamepad handler, live Reduced Motion and camera/simulation ownership preserved. No paid generation or commercial binary/source claim.

  2. Code quality/state lifetime/regression: TitleStage and every old callback/caller removed; native preview lifetime remains separate. Narrative/choice text escaped. Versioned baked candidate marker only skips the same expensive client recipe for blocked candidates; hashes and native clip/skin validation remain fail-closed. High-water typed sweep buffers retain indices, not departed region objects; conservative AABBs preserve original order/narrow phase, and no recursive path query occurs within the sweep. Rooted structures never translate/collapse/change support. Broken crates stop receiving hits, sleep with zero velocity and lose their colliders. Actual fixed-step offense—not VFX—owns environmental damage. #131 cue queue/native sync/presentation ordering and current-frame gate birth retained.

Observed gates:88 focused tests,38,037 assertions;236 release tests;TypeScript+Vite build;84 catalog hashes;5 exact native-client geometry equivalence checks;2672 path queries+6 mutable transitions,zero mismatches. Actual production entry/readiness and native contact videos reviewed. No blocking finding identified within this scope.

Residual limits are intentional and published: native candidates remain blocked; not full-suite/all-boss/release or locked60fps approval; prior unrelated hero test failures disclosed; +16 DOM nodes per title cycle on both baseline/current prevents leak-free claim; audio playback not accepted; synthetic gamepad samples are not physical hardware. Await both build runs and deployment checks before merge.

@hoainho
hoainho merged commit 834e4d5 into main Oct 18, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Immersive title, introduction, storytelling and loading with measured runtime performance

1 participant