← All projects
Web Game

Pulsar

A tiny arcade orbit shooter — a complete, deployable game generated from a single zero-shot prompt to a fully self-hosted LLM.

Year
September 2026
Our role
Zero-shot LLM generation
Stack
Single HTML FileVanilla JSCanvas 2DWebAudioGo (static server)
Play Pulsar

About the Game

The star is dying. You are the only thing orbiting it — hold the line. Pulsar is a single-screen arcade shooter in which your ship rides a fixed orbit around a pulsing star. You can't fly inward or outward; you can only steer around the ring and fire. Everything else falls toward the star, and the star is the thing you're defending.

Debris, homing seekers, and closing rings with a single safe gap all converge on the center. Your shield absorbs two hits and regenerates slowly; waves escalate roughly every 1200 points. The whole experience — gameplay, difficulty curve, particle effects, screen shake, and a generative music loop — fits in a single HTML file.

Pulsar gameplay: the player ship orbiting the star while shooting drifters, seekers, and a cyan ring
Where it came from

One prompt. No examples. No scaffolding.

Pulsar was not written. It was asked for — a zero-shot prompt, with no examples, no specs, and no code scaffolding. The entire instruction was a single line:

> do something interesting

The model was Qwen3.8-27B, running entirely on our own self-hosted server — no external API, no cloud. The output was a working, deployable game: playable on first load, with a complete ruleset, escalating waves, pickups, screen shake, synthesized sound effects, and generative music, all from that single line.

We considered it a success the moment it shipped: the same Docker image and Helm chart pipeline we use for client work took it from generated file to https://demo.carefuldream.com/pulsar without modification.

The Rules of the Void

☀️

The star

Your orbit, your shield, your life. If it dies, so do you.

⭐

Gold drifters

Lazy rocks falling in — 100 points.

🌑

Purple splitters

Big, 3 hits, burst into 3 fast shards — 250 points.

🔴

Red seekers

Turn and hunt your ship — 100 points.

◌

Cyan rings

Close in as a circle with one gap: fly through the gap or blast the ring (3 hits) for 300.

✦

White shards

Fast, small, annoying — 25 points.

🛡

S pickup

Shield maxed.

⚡

R pickup

Overdrive: double fire rate for 5 seconds.

✕x

Multiplier pickup

Score multiplier +1, up to x8.

How to Play

  1. 1Steer around the orbit with A / D or the arrow keys (or by dragging — the ship follows your pointer around the ring)
  2. 2Hold SPACE or hold mouse / touch to fire; your cannons sweep with the ship
  3. 3Bank points on debris, thread the gap in incoming cyan rings or shoot them apart, and grab pickups to stack a score multiplier
  4. 4Manage your shield — it absorbs two hits and regenerates slowly, but no shield plus one touch is a nova
  5. 5Survive escalating waves. High score is saved locally in your browser.

Under the Hood

One File

The entire game is a single index.html — vanilla JS, no framework, no build step, no dependencies, no network calls, no tracking.

Canvas 2D + rAF

A requestAnimationFrame loop with delta-time updates, device-pixel-ratio scaling, particle systems, and screen shake.

WebAudio Everything

Every sound — lasers, explosions, power-ups, and the game-over sting — is synthesized at runtime, plus a small generative pentatonic music loop.

Boring Deployment

Shipped the way every client app ships: distroless Go static server in Docker, a Helm chart, and our normal CI pipeline. Live at demo.carefuldream.com/pulsar.

Why it matters

This is what self-hosted, small-model code generation looks like when the output is held to production standards. The game shipped through the same Docker, Helm, and CI/CD pipeline we use for enterprise work — generated once, reviewed, and deployed with zero prompt engineering and zero cloud dependence.

The takeaway we take to client work: a self-hosted 27B-parameter model, given one honest instruction, produced a complete, playable, deployable product. The interesting question is no longer whether it can — it's what your "do something interesting" would build.

Have a project like this one?

We'd be glad to talk through your goals, your constraints, and whether we're the right team for the work.