# Pocket Engine 1.0 An original small modular 2D learning example, adapted from BINX Forge's MIT Coin Dash Timing 1.1. Keep LICENSE.txt. This is separate from the production BINX Engine and is not a general editor, physics engine, networking service or native export tool. Extract pocket-engine.zip. Keep index.html, game.css, main.mjs, files.mjs, serve.mjs, check.mjs, README.md, LICENSE.txt and the modules directory together. No packages, purchased assets or accounts are required. Node 24.19.0 was used for the automated checks and local HTTP helper. Run: node check.mjs node serve.mjs Open http://127.0.0.1:8080 in a current browser supporting Canvas, ES modules and Pointer Events. Unlike Coin Dash's classic script, ES modules need HTTP; double-clicking index.html is not a supported run path. If port 8080 is busy, use node serve.mjs 8081 and open port8081. The helper binds only to your own computer; it is not a public host. Stop it with Ctrl+C. A browser preview was not run in the current managed environment: automated simulation/module/HTTP checks do not establish phone, audio, clipboard or assistive acceptance. Start; focus the canvas; use arrows/WASD or hold direction buttons. Collect six coins around the edge while avoiding the central enemy, then choose Next room. Gallery uses the same core and controls with different data. Each room has a fresh 30-second simulated-active-time timer. Win, lose, restart, pause/tab away/resume and two consecutive runs must also be tested in your actual browser. Updates accept at most 0.1seconds per rendered frame and split into at most ten 0.01second steps. Longer stalls lose elapsed time intentionally; this is not a wall-clock competition timer or a device-FPS improvement. The reusable world module owns movement, bounds, circle collision, patrol and score; scenes owns start/pause/win/room transitions; input owns focused keyboard, pointer release/cancel and listener cleanup; render draws without changing game state. Its four phases change the coin centre at six phases/second; reduced-motion preference fixes the phase. No imported sprite sheet or character rig is included. Sound defaults off. Enable it through the user button; the audio module makes short original oscillator tones and caps active voices at four. Missing/blocked AudioContext leaves the game playable without sound. Browser policy and real audio output need their own checks. No microphone is requested, no audio file downloaded, and no third-party sounds bundled. Save checkpoint pauses and stores one versioned checkpoint under binx-forge-pocket-engine-checkpoint-v1 in localStorage. Load validates supported bounded fields, recalculates score, and returns paused. It does not resume automatically. Delete removes only this key. Saving is explicit, local to the browser/origin, may be blocked or erased, is editable by the user and cannot be trusted for an online score. It is not My Forge/cloud saving and does not clear unrelated site data. Publish the static index, CSS, main/files modules and modules directory with relative paths preserved on your existing HTTPS static host; no build or npm install is required. Node helpers are not a web backend. A subdirectory is supported. Try the actual published URL, correct .mjs JavaScript MIME, keyboard, touch cancellation, hidden-tab pause, reduced motion, sound opt-in, storage denial and win/lose/restart. Do not infer browser deployment acceptance from local tests. The standalone check executes the shipped modules: reference timing parity, both-room routes, state transitions, bounds/collision/timing, save validation/roundtrip/failure isolation, pure rendering/animation, input lifecycle, bounded audio ownership with test doubles and main-controller restart/save/page-lifecycle wiring with test doubles and complete-file local HTTP delivery. The doubles verify module logic; they do not prove native browser event ordering, physical sound, real device performance or a provider-generated game. Follow https://binxforge.com/guides/build-your-own-game-engine for numbered steps, build/debug/upgrade prompts, original technical sources and free-first resource options. Added art/audio/dependencies have separate licences and notices. The included original code/drawn shapes/tones are MIT; retain the copyright and permission notice when distributing covered code or substantial portions. No BINX branding endorsement or third-party rights are granted.