VECTOR ARENA — PLAYABLE WEB DEMO Hosted modes at /arena Versus: standard human-versus-Reyn behavior (default). Combo-gym: watch the trained duo cooperate against a stationary target; optional standard-damage rules and experimental human target control. Sim: choose 2–32 Reyn AI players (ten by default). Use the selector at the top. Switching modes starts a fresh match and loads only that mode's model. Share /arena?mode=combo-gym or /arena?mode=sim. The former /arena1 and /arena2 endpoints have been removed. Mode-switch memory cleanup Before loading another mode, the shared shell terminates the current model worker, aborts downloads (including partially read response bodies), stops intervals/render frames/timeouts, releases WebGL and closes audio/voice. Mode tabs replace the current browser history entry so previous matches do not accumulate. Returning from a cached page starts a fresh runtime. The lifecycle is installed before mode import, covering switches during load. Chrome verification: nine switches across Versus, Combo-gym and Sim left one active model worker after every load, no growing history, and closed audio / lost WebGL contexts in every outgoing mode. After garbage collection the main-page JS heap stayed around 4.9–5.1 MB (Versus/Combo) and 6.8 MB (Sim). These are main-page heap measurements, not total GPU/Wasm/process memory or a guarantee that every phone can run the largest 32-player simulation. Voice (Versus) Click Talk to Reyn, allow microphone access, and play. Try "use your blaster", "use your reflector", "be aggressive", or ordinary conversation. Captions show what was heard and Reyn's reply; a green check confirms that the real policy instruction was consumed in a game frame. It does not guarantee a hit. Voice on/muted controls speech separately from game effects; Stop talking releases the microphone and connection. Voice uses the shared H100 service and records audio, as disclosed before connecting. One voice session can be active at a time; busy attempts never interrupt another player. Sessions last up to six minutes. Gameplay/model inference still runs locally without voice. The archive hosting instructions below describe the standalone Versus package. Local preview Extract this archive, open a terminal in vector-arena-demo, and run: python3 serve.py Open http://127.0.0.1:8080 and click Play. Opening index.html directly with file:// is not supported. Web hosting Upload the contents of web/ to an HTTPS static host. Keep its directory structure intact. Root and subdirectory hosting are supported. Serve .js and .mjs as JavaScript; serve .pack files as binary without a Content-Encoding header (the client decompresses them itself). No Node.js, backend, API keys, inference service, or special isolation headers are required. All assets and inference run locally in the browser. Use a current browser with WebGL2, WebAssembly, hardware acceleration and a keyboard or touchscreen. Phone controls appear when playing a human seat. Mobile controls Rotate your phone sideways and tap Fullscreen above the game. A left-thumb movement pad supports walking, running, up aiming and crouching. Right-thumb buttons: Jump, Attack, Special, Shield and Grab. Hold a direction with Special for directional specials, or Shield for rolls and spot dodges. Multiple fingers are supported; releases, cancellation and focus loss clear held controls. On-screen controls appear in Versus and Combo-gym's Take control mode, and stay hidden in spectator modes. Fullscreen requests landscape when the browser allows it. If the native Fullscreen API is unavailable or rejected, expanded view fills the browser viewport and retains an exit button. Rotate manually where orientation lock is unsupported; browser bars can remain visible (notably on iPhone). Native fullscreen/orientation behavior and model performance still need physical-device testing. Chrome phone-size and multi-touch emulation passed. Controls A / D: move W: jump S: crouch / fast-fall J: attack K: special L: shield W + K: up-special I: grab Q: walk E: aim up J while running: dash kick. The move glides, then recovers into walking. L + A/D: roll L + S: dodge in place. Sound on/off toggles synthesized effects; audio starts with Play. While grabbing: J pummels; A/D/S/E select left/right/down/up throw. Arrow keys: directional attacks Escape: pause / resume The match pauses on loss of focus. New match is on the pause overlay. Steering The buttons above the game send Reyn its bundled instruction presets: Free play, Pressure, Lasers, Shine, and Recover. The selected instruction appears below the buttons. Switch during play without restarting the match. The next inference uses the new instruction; one already-prefetched action may still finish. Steering conditions the model, not scripted character actions. Recover is easiest to judge when Reyn is knocked off the stage. Download budget (decimal MB; every deployed file counted) Game and runtime: 6,031,213 bytes (6.03 MB) Model bundle: 9,960,791 bytes (9.96 MB) Complete site: 15,992,004 bytes (15.99 MB) The model bundle includes controller codec and steering presets. The ZIP also includes this guide, the local server, and checksum manifest. Model and simulator Reyn v4, group-128 INT8 weight transport, expanded to FP32 for inference. No distillation. Download size is not RAM usage. Inference runs in a WebAssembly worker; rendering uses WebGL. Live game speed is simulation steps per second; inference is median model execution time over the last second of play. Performance depends on the device. Independently authored lightweight simulator with generated Fibi sprite art. 208 packed key drawings, with eight-frame punch/kick sequences, cover the playable moveset. Related states share animation sequences. Drawings follow Fox pose references and retain the approved chibi style; these are timed key poses, not a complete frame-by-frame recreation of all 185 source clips. No Melee ISO or extracted game assets are loaded in the browser. The solid main stage blocks its top, sides and underside with swept collision. Dynamic camera framing follows the fighters and gives offstage recoveries room. Hit shake is visual only. The sunset sky uses a 54 KB painting plus GPU cloud drift, petals and parallax; no video or background animation frames download. Reduced motion disables decorative animation and shake. Pause freezes the scene. This is a transfer demo, not a claim of exact original-game physics. Credits See web/credits/ for sprite provenance, Three.js, and ONNX Runtime notices.