Most "make me a game" prompts die in the first hour. The AI writes a renderer, a camera, a character controller, then a second character controller, and by the time anything walks there is no game. NGIN is the part I got tired of regenerating.
It is a code-first Three.js 0.186 engine on WebGPU with TSL, Jolt physics in WASM, no build step and no framework. Static HTML, browser ES modules, a PHP server to open it. The thing that walks, drives, floats and carries is already written. You describe the game.
What is already built
- Walking. An R6 character on a Jolt virtual character. Run, crouch, jump, first and third person, drag or captured mouse look.
- Driving. Car, truck, bus, a Kenworth with a trailer on a hitch, or your own GLB with wheels found by name. Press E to get in.
- Water. Buoyancy volumes, a pool in the ground, a fishing boat and a speedboat with wake.
- Interaction. Look at a thing, press E, F or G. Carry crates, stow them, drop them from a slot.
- Worlds. 16 px procedural block textures, instanced blocks, a voxel hill, a scrap yard, fans, a trampoline, a fire pit, a fountain, ramps and wedges, all with colliders.
- Effects. Smoke, fire, sparks, dust, spray, wake. Rain and snow. A day and night cycle. Opaque SSAO you can switch on.
Everything shares a handful of materials and pipelines on purpose. On WebGPU the pipeline count is the load time, so the engine keeps it low and the handbook tells the AI to do the same.
How you use it with an AI
Open the folder in Claude Code, Cursor, Codex or whatever reads your repository. The rules are in AGENTS.md and the prompt is in the handbook. One game lives in one folder under games/, copied from the starter. That folder is the only thing the AI may write. The engine, the sandbox and the starter stay as they are, and a small Node script snapshots everything else before you start and checks it after, so you know the AI built a game and did not quietly rewrite the character controller.
The skill file below is that contract in one page: the boot order, the API surface, the rules, and what "done" means. Drop it where your tool picks up skills, or paste it at the top of your first prompt.
A prompt that works: "Copy the template to games/maze. Build a hedge maze on a 30 m grid with instanced brick blocks, a key on a pedestal, a locked gate that opens when I carry the key to it. Industrial preset, rain on. Everything solid gets a collider." The engine already knows how to carry the key.
Try it, take it
- Open the sandbox. WASD to walk, E for a vehicle or boat, F to carry, V to switch view, L for the flashlight.
- The creator handbook, written as things you can prompt rather than as an API.
-
SKILL.md, the one-page contract for your AI. -
ngin.zip, the whole folder, built on request so it matches what is live.
Unzip, open a terminal in the folder, php -S localhost:8080, and the landing page, the sandbox and the starter all run. Node 24 is only needed for the boundary checker and the tests.
What to expect
It is an alpha. WebGPU only, on Three.js 0.186, with no WebGL fallback, so it wants a current Chromium or Safari. The look is Roblox and Minecraft, not photoreal, and the handbook steers the AI that way too: simple geometry, shared materials, 16 px textures, effects that earn their frame time. If you need something the engine cannot do, that is a change to the engine, made on purpose, not a fork inside your game.
I use AI to write a lot of this. The boundaries, the order and what counts as finished are the part I do not hand over, and that is what the skill is for.