Skip to content

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.

The 60-second quickstart ​

sh
npm create aosengine my-game -- --template fps
cd my-game
npm run dev

That 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. (create-aosengine is not on npm yet; Install shows how to run it from a checkout.)

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 toRead
Play the examples in your browserPlay
Install the toolchainInstall
Build a first-person gameBuild your first FPS
See the whole architecture at onceConcepts
Understand how a frame worksThe engine loop
Understand the wasm splitThe wasm boundary
Do one specific thingRecipes
Look up a functionAPI reference
Fix an error messageTroubleshooting
Decode the jargonGlossary

If you are a language model ​

Read llms-fps.txt or llms-third-person.txt 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. These files also live at the repository root. The hard rules are in AGENTS.md.