First game walkthrough
The runnable reference is examples/canvas-demo: session state, target, ten impacts, scoring and a final result.
Step 1. Presentation
Open index.html through a local HTTP server. Canvas has a 960×540 logical drawing surface and responsive CSS sizing. Change draw() without changing the connection contract. Controller target dimensions come from target_profile, not Canvas pixels.
Step 2. State
New session creates a new mock client and disposes previous subscriptions. session.start supplies the countdown; impacts are not scored until it ends. Pause stops the game clock while SDK heartbeat continues. A lost connection moves the interface into a stopped state.
Step 3. Impact and completion
The handler checks activity, countdown and shot_id, maps the point and scores it. The tenth event sends a single session.complete. duration_ms counts active play time without pauses. Score and event counts are integers.
Step 4. Your mechanics
Replace score resolution and drawing while retaining duplicate-completion protection, subscription disposal and stop handling. Test pause before the first impact, during countdown and just before the last shot. The example does not contain calibration or license management.