Idle game multiplayer browser game template for Net Forge, the open-source multiplayer browser game engine built for AI coding agents.
This is a template for an idle game that runs in the browser: BRINEWORKS, a complete multiplayer game you can start in one command and change in one file. A shared idle and incremental game: pumps draw brine, pans boil it into salt, kilns cut salt into crystals, and salt buys and levels more plants.
- Up to 8 players, each running a production chain on one shared salt flat.
- Five plant kinds to buy and level, and one contract the whole room fills together.
- Fixed-length shifts of fifteen minutes, then a fresh one starts.
- An authoritative room at 30 Hz; the economy is integer state on the server, so no client can mint its own output.
- 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 30 Hz | 1,800 |
| Server cost per tick (mean) | under 0.005 ms |
| Softlock | none |
The playtest also checks the economy: first payout after 199 s, at most 552 coins an hour a seat.
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 idle --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. Space rakes salt by hand (or click your plot), keys 1 to 5 buy a plant, and S ships crystals.
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-idle 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/idle-game
- Net Forge engine: https://github.com/netnetdev/net-forge
- Docs: https://forge.netnet.capital/docs
- npm: create-netforge, @netforge/template-idle, @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.
