Skip to content

Repository files navigation

VCG-Console

An open home game console for the games at VibeCoded.Games, new body-controlled games, and an optional rights-respecting retro arcade.

The target experience is a living-room appliance: turn it on, stand in front of a wide-angle camera, select a game with a controller or remote, and play through body movement. Camera processing is intended to stay on the console by default.

This repository now contains the first reversible desk prototype alongside the research workspace: a Svelte 5 boot-to-launcher experience, Motion hub, cooperative web bridge, skeletal replay, body-control lab, and initial Rust native host. Raspberry Pi 5 8GB plus AI HAT+ 26 TOPS is the selected lower-cost reference candidate, while ordinary x86-64 Linux/PC hardware is the premium reference class. Both remain subject to reproducible room, latency, thermal, storage, and multi-player qualification. The preordered 2026 Steam Machine is an optional compatibility target, not a requirement of the core console.

Run the desk prototype

Prerequisites: Node.js 22 or newer, pnpm 10.30.3 (directly or through Corepack), and Chrome for the end-to-end camera test. Native-host development also uses the exact Rust toolchain declared in rust-toolchain.toml.

pnpm install
pnpm prepare:assets
pnpm prepare:catalog
pnpm prepare:schemas
pnpm dev

Open the printed local URL. The boot sequence resolves into the launcher; Motion opens the existing synthetic skeletal replay and camera lab. Select Enable Pose Simulator for deterministic camera-free keyboard/controller fixtures, or Start Camera to run the pinned MediaPipe model locally. Camera pixels are not displayed or written. Export Skeleton Trace is the only diagnostic export in this prototype.

The camera is asked for the low-power 640x480 at 30 FPS mode by default, because browser pose inference on the Raspberry Pi 5 candidate runs on the CPU. Append ?capture=balanced (1280x720 at 30) or ?capture=target (1920x1080 at 60, the camera contract mode) to request a larger one. Every dimension is requested as ideal, and the running status line reports the requested mode alongside the mode the camera actually reported.

To serve a built console instead of the dev server, use pnpm serve. It applies the same cross-origin isolation, CSP, and camera permission policy as the dev server; a plain static file server returns the same bytes without them and silently breaks threaded inference and the camera. pnpm verify:console-headers checks a running server and fails when the boundary is absent.

For a first session on delivered Raspberry Pi hardware, follow the day-one bring-up guide and its scripts/pi/bootstrap.sh.

Useful verification commands:

pnpm typecheck
pnpm test
pnpm build
pnpm test:e2e
pnpm serve
pnpm verify:console-headers
pnpm validate:benchmarks
pnpm validate:manifests
pnpm validate:schemas
pnpm supervise:game catalog/determined.vcg-game.json --dry-run
pnpm native:verify
cargo run -p vcg-host -- doctor
cargo run -p vcg-host -- launcher --dry-run --browser /path/to/chromium --profile-dir /absolute/path/to/profile --url http://127.0.0.1:5173/
cargo run -p vcg-host -- watchdog --dry-run --heartbeat-file /tmp/vcg-game.heartbeat -- /path/to/game
cargo run -p vcg-host -- help

For an x86-64 Windows compatibility workstation, follow the Windows qualification guide. Its bootstrap script verifies prerequisites and runs the same repository checks without treating Windows or WSL as Linux-console qualification.

The browser Gamepad API and Chrome app-mode supervisor are desk spikes, not proof of the Rust/SDL3 input boundary, compositor-level Home/Back, origin containment, or target-Linux behavior. The Rust host now owns direct child lifecycle, heartbeat timeouts, bounded restart, an explicit resource-fault signal boundary, signed installed-package resolution, strict persistent opaque profile intake, idempotent game/profile launch intent, cancellation, contained RetroArch planning, and a signed native-executable adapter with artifact SHA-256 enforcement and per-profile storage. The native adapter is process-only: actual packages, RetroArch/2048 startup, OS sandboxing, environment/device/network filtering, descendant ownership, window readiness, Linux GPU/OOM detectors, compositor containment, a qualified profile writer/lifecycle, and target-hardware behavior remain unqualified.

Research workspace

Experience principles

  • Minimal, sleek television UI using a freely redistributable OCR-A typeface.
  • Back and Home actions remain easy to reach through menus, loading states, and games.
  • Supported controllers work automatically, including reconnect and player assignment.
  • Consistent branded loading screens distinguish active progress, slow work, failures, and recovery.
  • Every experience has a controller or remote escape path independent of body tracking.

Current direction

wide RGB camera
       |
capture, calibration, privacy controls
       |
pluggable pose tracker
       |
versioned VCG Motion API
       |
gesture and action recognizers
       |
launcher + web bridge + native/Godot SDK
       |
VibeCoded games | body games | optional retro frontend

The first useful milestone is not a finished enclosure. It is a wired living-room prototype that launches a small representative game set and sustains responsive one-player tracking in the real target room. Four-player tracking, appliance packaging, offline bundles, and retro support follow behind measured gates.

About

A home game console from https://vibecoded.games

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages