Platformer multiplayer browser game template for Net Forge, the open-source multiplayer browser game engine built for AI coding agents.
This is a template for a platformer that runs in the browser: SKYLEDGE, a complete multiplayer game you can start in one command and change in one file. A side-view platformer race: up to eight climbers race along cliffside courses to the flag, with tuned jump feel and seat bots that run planned routes.
- Up to 8 players per race, and seat bots that fill the empty places.
- Coyote time, jump buffering, variable jump height and an air dash.
- Springs, one-way ledges, moving platforms, thorns and per-player coins.
- An authoritative room at 60 Hz with your own climber predicted in the browser.
- Authoritative multiplayer. A room host owns the game state; every browser tab is a player. Locally,
npm run playruns that host on your computer. - Shared client/server simulation. The same ECS and Rapier physics code steps the world on the server and predicts your own player in the browser, with delta snapshots.
- three.js renderer with WebGPU, and a WebGL2 fallback.
- Bots and a headless playtest.
npm run testplays the game with bots and reports what happened. - TypeScript, MIT licensed. The library models, sprites and sounds the game uses are CC0.
- Ready for coding agents.
AGENTS.md,CLAUDE.md, Cursor rules, Copilot instructions and the Net Forge MCP server in.mcp.json,.cursor/mcp.jsonand.vscode/mcp.json.
Measured with npm run test (2 bots, 1 minute of game time, Node 22, Apple M2 Pro):
| Playtest report | Value |
|---|---|
| Ticks simulated at 60 Hz | 3,600 |
| Races won | 2 |
| Share of bots that finished | 100% |
| Earn rules fired (play money) | 13 |
| Server cost per tick (mean) | under 0.25 ms |
| Softlock | none |
Every number above is play money and a local run. Longer runs: npm run test -- --minutes 4 --bots 4.
npx create-netforge my-game --template platformer --yes
cd my-game
npm run playOr press Use this template on GitHub, clone your new repository, and run:
npm install && npm run playnpm run play builds the game, starts a local room and opens http://127.0.0.1:4663. Open the same link in another tab for a second player. A D or arrows to run, Space W or Up to jump (hold for height), Shift to dash, Down plus Jump to drop through a ledge, R or Enter to ready the next course.
You need Node.js 20 or newer. Use npm run play -- --no-open to print the link instead, --port 4700 if the port is taken, and --host 0.0.0.0 to let phones on your network join. Local play uses play money: no wallet, no chain and no hosted servers.
The whole game is src/game.ts: declarations against the typed API in @netforge/engine (the only import it may make). The template package @netforge/template-platformer provides the renderer, netcode, physics, controls, HUD and bots.
npm run test # compile src/game.ts and play it with bots; fails on a broken rule or a softlock
npm run typecheck # the TypeScript check of src/game.ts
npm run play # play the change (stop and start it again after each edit)The template guide walks through the usual changes:
llms.txt holds the rules the build enforces and recipes for common changes. Or ask your coding agent in plain words; AGENTS.md tells it where the rules live and how to test them.
- Template guide: https://forge.netnet.capital/docs/templates/platformer
- Net Forge engine: https://github.com/netnetdev/net-forge
- Docs: https://forge.netnet.capital/docs
- npm: create-netforge, @netforge/template-platformer, @netforge/engine
Pinned to Net Forge 0.2.0. Not affiliated with other projects named NetForge. Local play runs the game's own code on your computer with your permissions; play only games whose code you trust.
MIT (LICENSE). The library assets are CC0 1.0.
