Gameable Engine
Gameable Engine (aos-gameable-engine) is a browser game engine where the world is a gaussian splat, the renderer is WebGPU, and all game logic is a WebAssembly component.
Status
Milestones M0–M3 and M5 have shipped: splat worlds render on WebGPU and on the WebGL fallback, the wasm guest ticks at 0.19 ms, physics and input work, the first-person template is playable, and splat characters animate on both rig backends. npm create aosengine is not published to npm yet, so the quickstart below runs from a checkout. M4 (third-person template) and M6 (docs and the small-model eval) are in progress.
The 60-second quickstart
sh
npm create aosengine my-game -- --template fps
cd my-game
npm run devThat gives you a splat arena you can walk around, three capsule enemies you can shoot, an ammo and health HUD, and a win condition — with zero edits and no Git LFS.
Then open src/game.ts. It is one defineGame call:
ts
import { defineGame, input, physics, hud } from '@aosengine/sdk';
export default defineGame({
assets: './assets.json',
world: 'arena',
player: { spawn: [0, 1.7, 0], speed: 5, jump: 4.5 },
systems: [
(ctx) => {
if (input.pressed('fire')) {
const hit = physics.raycast(ctx.camera.origin, ctx.camera.forward, 100);
if (hit) ctx.damage(hit.entity, 25);
}
hud.set({ ammo: ctx.player.ammo, health: ctx.player.health });
},
],
});Edit it, save, and the guest hot-reloads through a snapshot/restore cycle. That is the whole loop.
Where to go next
| You want to | Read |
|---|---|
| Play the examples in your browser | Play |
| Install the toolchain | Install |
| Build a first-person game | Build your first FPS |
| See the whole architecture at once | Concepts |
| Understand how a frame works | The engine loop |
| Understand the wasm split | The wasm boundary |
| Do one specific thing | Recipes |
| Look up a function | API reference |
| Know why something is the way it is | ADRs |
| Fix an error message | Troubleshooting |
| Decode the jargon | Glossary |
If you are a language model
Read llms-fps.txt or llms-third-person.txt at the repository root before writing any game code. They are task-scoped bundles built for exactly this. The full corpus is llms-full.txt; the index is llms.txt. The hard rules are in AGENTS.md.