Vector Drift
shippedAn original, single-page 3D browser arcade game built with Three.js that loads and plays instantly with no account, backend, or API key.
Approach
A single index.html loads a locally vendored Three.js build (three.min.js, fetched once at build time, never from a CDN at runtime) and an inline game.js that procedurally generates a tunnel of neon gates the camera races through in perspective 3D. On load, an attract-mode autopilot immediately steers through the first stretch of track so the scene is visibly alive, while a leaderboard panel beside it lists 20 pre-seeded prior runs with varied names, scores, and dates. Pressing Space or clicking #play-button hands control to arrow-key/A-D steering, hides the attract overlay, and resets the track seed so the player's run is fresh; clipping a gate or wall ends the run, shows a game-over panel with the final score, and a restart button returns to attract mode. Three.js is used, vendored rather than bundled, because real-time lit 3D perspective rendering of a procedural tunnel is impractical to hand-roll in raw WebGL, and a single vendored script tag needs no bundler or build step. Because collision and scoring happen inside a WebGL canvas with no inspectable DOM, game.js exposes a small window.__vectorDrift test hook (state, score, gateCount, forceCollision()) purely so the acceptance criteria are mechanically checkable.
The source post
https://x.com/vibezdotclub/status/2118465560317174023
Scoring
Pick
| surprise | 3 |
|---|---|
| demonstrability | 5 |
| self_containedness | 5 |
| honesty | 5 |
The other two candidates are tools whose entire appeal is a live AI agent writing or generating a game on demand ('turns a natural-language idea into a playable game', 'AI agent writes the code and you hit Play') — that requires a runtime LLM call, which this pipeline can't fake honestly and can't serve safely without shipping a drainable API key client-side, the exact failure mode that sank storefront-clerk on 2026-10-11. Sumiro sidesteps that: the AI-built-in-a-day framing describes the build process, not a capability the artifact has to perform live. The deliverable itself is just a finished Three.js game — fully playable, fully inspectable, nothing to fake. It's the only one of the three that is honestly a single static artifact rather than a service wearing one.
Review
| shipped | 2 |
|---|---|
| honest | 5 |
| worth_it | 3 |
| efficient | 4 |
proposed change: {'file': 'prompts/scout.md', 'block': 'query', 'edit': 'Add to the exclusion paragraph: \'or whose central claim is an AI agent generating code, a game, or other content live in response to user input (e.g. "type an idea, get a playable game back"). This pipeline ships static files with no backend, so a live generation capability can only be faked, not honestly demonstrated.\'', 'expect': "Scout stops surfacing 'type an idea, get an AI-generated app/game' pitches, so pick/plan no longer spend a cycle rejecting them on this exact structural ground.", 'falsified_by': 'Within the next 5 nights, scout still returns a candidate whose core appeal is live AI-driven code/content generation for the end user, and it again has to be rejected at pick or plan for that reason.'}
Two of tonight's three scouted candidates (DSH Game Studio, SETech Studio Lite) were 'AI agent writes the game live, you hit play' services, and pick.json had to reject both on the exact same structural ground that sank storefront-clerk at the plan stage on 2026-10-11 ('exposes a drainable key or isn't honestly live'). The existing exclusion clause in scout.md only names 'a live call to a paid third-party model API we don't hold keys for,' which is narrow enough that scout keeps treating live-generation-as-a-product pitches as in-bounds. This is the second time in four weeks the same shape of idea has cost a downstream stage real reasoning to reject (one of them wasted a full plan-stage attempt), so it's a repeatable pattern worth a one-line clarification rather than one bad night. I did not propose anything about tonight's actual failure (the published URL being down) because it isn't addressable through scout/pick/build/routing — the gate currently never verifies the live deployed URL at all, which is a gap in the gate contract itself, not in a prompt. That's flagged below rather than worked around.
escalated: The gate (gate.json) only validates the local build output before publish; it never curls the live deployed URL afterward. Tonight that let a night with a genuinely good, well-tested build (vector-drift) get marked shipped while the actual public URL (both the custom domain and the raw pages.dev deployment) was down with a Cloudflare 522 / TLS handshake failure, confirmed repeatedly and not a local DNS artifact. I'm not proposing a fix myself since changing what the gate checks is explicitly out of scope for this stage, but a human should decide whether the gate (or a post-publish check) should confirm the shipped URL actually serves the page before the night is recorded as shipped.
Cost
| total | $0.1165 |
|---|---|
| xai | $0.1165 |
What it looked at
DSH Game Studio**: Open-source tool that turns a natural-language game idea into a fully playable 2D/3D browser game (with auto-playtesting, iteration, and one-click export as standalone self-contained HTML/JS).
SETech Studio Lite**: Lightweight browser game engine where an AI agent writes the code and you instantly hit “Play” to run it—no build step or external runtime needed.
Sumiro**: Complete original 3D browser game (Three.js) built end-to-end in a single day with an AI toolchain and runnable directly at a public URL.
Gate
| pass | project directory exists — /Users/artax/code/builds/2026-11-07/project |
|---|---|
| pass | no build step needed — static project |
| pass | build output with index.html — /Users/artax/code/builds/2026-11-07/project |
| pass | index.html is a document — 7834 bytes |
| pass | local asset references resolve |
| pass | page loads without console errors |
Stages
| scout | grok · ok · 37.6s |
|---|---|
| pick | claude · ok · 44.2s |
| plan | claude · ok · 48.1s |
| build | codex · ok · 183.6s |
| gate | local · ok · 2.8s |
| publish | local · ok · 11.8s |
| review | claude · ok · 196.9s |
Notes
Omitted for lack of
None. No external service is required. Audio, touch controls, persisted scores, and track editing remain outside the specified scope.