Project Wildshard Play now ↗

how does it actually work?

How the MMO works.

The technical side, for the curious and for authors: what a shard is, how shards fit together, and how far along the road we are.

Today: a single-player alpha: seven shards, and a 3 × 3 grid you can walk across. Next: multiplayer, uploads, creator keys. Every part below says which it is.

  1. 01 · your machineBuild anything

    Claude or any coding agent writes the code, with any tool you like. The code stays home; only its output ships.

  2. 02 · the packageA shardfile

    wildshard build bakes it into data, assets and sandboxed WebAssembly.

  3. 03 · admissionChecked before play

    wildshard validate runs on your machine the check the server will run.

  4. 04 · the gridPlaced by the server

    Upload it with your creator key; the server gives it a cell and everyone walks in.

    Planned · not built yet

what is a shard, exactly?

The shardfile.

One sealed package: a shard.json, and every other file named by its SHA-256. No three.js objects, no functions, no custom shaders: only data the engine reads.

every shard is
data the engine reads, never code it trusts
baked assets inside fixed budgets
behaviour in a sandbox (wasm)
code that can reach another shard, or your browser
{
  "version": "0.1",
  "identity": {
    "author": "Wildshard",
    "name": "Template shard",
    "revision": 1,
    "seed": 357,
    "slug": "template"
  },
  "requires": { "sdk": "0.1" },
  "authorCaps": { "players": 32, "speed": 15 },
  "serverBudget": {
    "commandsPerTick": 32,
    "entities": 100,
    "memory": 16000000,
    "tickMicros": 5000
  },
  "runtime": null
}
The template's real shard.json: runtime: null means no trusted code at all
What else is in a shard.json?
  • identity: slug, name, author, revision, seed. Never a grid position: placement is the server's.
  • look: sky, sun, fog and grade, from the platform's fixed families, with a day cycle.
  • sim and state: a 60 Hz fixed step, and named shared and per-player fields, each public, owner-only or host-only.
  • creatures, encounters, quests, items: brains, packs, bosses and their phases, quest graphs and loot, as rows.
  • edge and entryways: four edge profiles, and an 8 m opening at the middle of every edge, at road height.
  • tiles, files, budgets: 62.5 m and 125 m tiles, every file's bytes, triangles and draws, and the caps it promises.
Version 0.1: 6,018 schema paths, every one in the generated reference. An unknown key fails.

how is a stranger's shard safe on my phone?

Budgets first.

Nothing loads until it fits. A shard declares what it costs, and admission checks the real bytes against it before anyone plays it.

wildshard validate my-shard

prints a report card: memory at the worst spot, draws, triangles, script CPU and fuel, download size, time to playable

  1. Strict data

    Checked as JSON before a field is read: functions, classes and unknown keys are refused.

  2. Exact bytes

    Every file's exact size and SHA-256, again on every load.

  3. Hard caps

    Library ≤ 25 MB in memory, 8 MB to download; simulation ≤ 25 MB and 2 MB. The whole page: 1,000 MB playing, 1,800 loading.

  4. Four roads in

    An 8 m opening mid-edge, flat, clear and dry. Miss one: "illegal shard".

  5. A measured run

    The simulation runs headless for 240 ticks to measure script CPU and fuel.

Built for the phone: an iPhone at 30 fps, inside 1.0 GB

can a shard run its own code?

Behaviour in a sandbox.

Yes, for new behaviour: a puzzle, a boss's mind, a gadget. It's written in AssemblyScript, compiled to WebAssembly, and run metered, with nothing to reach.

256 KiBthe most one module can be 4 MiBof memory, at most 2Mfuel per call, 8M a tick for all of them 0clocks, randomness, network, DOM or files
  • It only touches its own shard. It writes its declared fields, spawns, moves and sends events within limits, and asks the world four things: raycast, overlap, nearest walkable point, path.
  • A runaway is stopped, not waited on. Every loop pays fuel. On a trap nothing it wrote is kept, and after three failures the module is switched off.
  • The same result everywhere. Every float is guarded, so the same bytes give the same answer in Node and in Safari's WebKit: a gate checks it on every push.
Script ABI v0 · AssemblyScript first; other languages can target the same interface later

how do shards become one world?

The grid.

Every shard is a 500 m cube, built alone, then placed on the grid. A 15 m highway runs between shards and the platform eases each edge down to it: centres sit 555 m apart.

Open plot Pine Template Dunes Driftwood Nalati Open plot Sky Reach Open plot 500 m 555 m N ↑
Today's grid, to scale: six shards and three open plots, live in single player. The MMO's first grid is 5 × 5.
shard
20 m strip
15 m highway
20 m strip
next
The platform builds each strip from both neighbours' edges, so the seam always meets
  • No loading screen. The next shard gets ready while you're on the road. You enter its simulation 6 m before its edge and leave 10 m after, so a border never flickers.
  • The crossroads is the worst case. Where four shards meet, four corners are within ~39 m, so every budget is proven there. At most four shard simulations are in memory.
  • Each shard owns its frame. Inside, it sets the sky, sun, fog, grade and post. On the highway, the neutral road look.

what's the engine, and what's mine?

Four layers.

The code is four packages, and imports only point down. Guards in the repo refuse anything that points up or sideways.

  1. src/shards/<slug>

    One folder per shard. A shard never imports another.

  2. @wildshard/sdk

    What authors build against: the shardfile schema, the wildshard CLI and the runtime facades.

  3. @wildshard/game

    Knows it is Wildshard, never a particular shard. Holds what two or more shards share.

  4. @wildshard/engine

    Rendering, physics, input, audio. Knows no game and no shard: content arrives as data.

The truth today: the template is pure data. The six older shards still carry their own TypeScript in a runtime/ folder while they move onto the format, in stages: 80/20, then 90/10, then 100/0.

how will we play together?

Multiplayer, as planned.

Planned · not built yet

Not built yet: today every shard is single player. This is the design the shardfile is built to fit.

Your phonepredicts only your own character
inputs →← shared state
The roomthe shard's simulation, headless, on the server
  • The server decides everything shared: creatures, combat, loot, quests. Hits are settled against what you saw.
  • Rooms of up to 32. A full shard opens a copy and keeps parties together.
  • Two wallets. Your name, title, cosmetics and catalogue gear travel; a shard's own coins and items stay in it, so no shard can break the economy.
  • One ledger. Only what the server saw can grant a reward, and only once: a dropped connection never pays twice.

Already true: the simulation runs without a renderer (the template's runs in Node), and every shard.json declares a serverBudget, a promise for the server that doesn't exist yet.

who owns a shard, and what does it cost?

Yours. Free.

You keep the rights to what you build. Uploading gives Wildshard a licence to host it and show it in the world.

  • Playing is free. Building is free with your own agent. Uploads are never charged.
  • Your creator key is your author identity: it signs your uploads.
  • A renovated shard keeps its original author's name; a remix of a public shard credits it automatically.
  • The first authors to upload become Founding Authors, with a plaque on their shard.
Promised in the MMO's requirements (O9, O10, U5). Uploads and keys aren't built yet.

how far along is it?

The honest road.

States, not dates: the MMO's milestones, read from the plans on 10 October 2026.

  1. ✓ doneThe package

    The template boots from its shardfile with no trusted code, and its simulation runs in Node with no renderer.

  2. in progressThe grid

    A 3 × 3 you can walk across with no loading screen. The crossroads test passes on desktop; on iPhone, frame pacing still misses.

  3. in progressEvery shard on the format

    The template is data only; the six older shards are moving onto it, none at 80/20 yet.

  4. not startedMultiplayer

    Two players in one shard on an authoritative server. Designed; no plan yet.

  5. not startedUploads and creator keys

    An outside author uploads a validated shard and it appears on the grid.

  6. not startedThe 25-shard grid

    Twenty-five shards live, the highway between them, and profiles that travel.

Play now ↗