DEV Community

Cover image for Building Stillwater Lake: a multiplayer 3D game in one HTML file, with Claude and Skapi
Skapi
Skapi

Posted on

Building Stillwater Lake: a multiplayer 3D game in one HTML file, with Claude and Skapi

Building Stillwater Lake: a multiplayer 3D game in one HTML file, with Claude and Skapi

Golden hour at Stillwater Lake: Hana casting from the dock, Mina fishing, friends dancing on the shore

Play it: stillwater.skapi.com · Source: github.com/broadwayinc/stillwater-lake-game

Stillwater Lake is a quiet 3D lake you can walk around with whoever else is there. You cast a line, gather branches and stones, light a campfire, grill your catch, and sit down to eat a fish someone else cooked. Every fish you eat earns an appreciation dance. You can say a kind word to the lake, take a photo and share it, swim out to the middle, and wander over the ridge until the world loops you back to the same shore. The light follows your own clock, so it's dusk at the lake when it's dusk where you are.

It runs on phones and computers, in Safari and Chrome, and even inside the Threads and Instagram in-app browsers. It has live multiplayer, guest accounts that need no sign-up, and its own web address.

And here's the part that still feels unreal: the whole game is one HTML file, and it's smaller than your Instagram photo. About 158 KB. A single photo on your phone is usually bigger. There's no app to install, no project folder with a hundred files and no server to run. Just one file.

It was built almost entirely hands off. The developer described what they wanted in plain sentences in claude.ai, the same chat app people use every day. Claude wrote the game, showed it running right in the chat, fixed what didn't feel right, connected it to Skapi for multiplayer and accounts, and put it online at its own address. Nobody opened a terminal, set up a server or wrote a deployment script.


Software is becoming a document

For decades, "building software" meant a toolchain: a framework, a package manager, a build pipeline, a backend, a database, a deployment process and a hosting account. Each piece needed its own expertise.

Stillwater Lake is a single document, no different in kind from a Word file or a PDF. It holds everything it needs and opens anywhere. You can email it, put it in a folder or attach it to a chat. Skapi gives that file a backend (accounts, live multiplayer and hosting) without the file needing a server of its own. The AI gives anyone the ability to write it.

That is the shift worth paying attention to. If you can describe it, you can now ship it. The barrier is no longer knowing how to set up a stack. It's knowing what you want to make.

Friends gathered by the campfire. One is eating a grilled fish, one is sharing a kind word.


What Skapi gives the game

Skapi is a backend you don't have to build: accounts, a database, file storage, live messaging and website hosting, all ready to use. Stillwater Lake uses three of them, and Claude wired up all three.

1. Accounts with no sign-up. Every visitor gets a guest account the moment they walk in. There's no e-mail, no password and no form. If someone leaves the tab for a long time and their guest account expires, the game notices, welcomes them back and gives them a fresh one.

2. Live multiplayer. Everyone at the lake is connected to the same live channel. A few times a second, each player tells everyone else where they are, what they're wearing and what they're doing, along with their campfires and the fish on their grill. Catches, kind words and dances show up for everyone the moment they happen.

3. Its own web address. The game lives at stillwater.skapi.com. Claude registered the address, uploaded the file and put every new version online itself.

Two anglers on the dock. Sora's line is already out.


How the development was set up

How the pieces fit together: you ask in plain words; inside claude.ai, Claude writes the HTML and uses the Skapi MCP connector to wire it to Skapi and upload it; your Skapi project hosts the page and runs the backend

There are two players inside claude.ai, and it helps to know who does what.

Claude writes the game. Every line of the HTML, the 3D world, the controls and the animations come from Claude, and it shows you each version as a playable preview right in the chat. That includes the small piece of Skapi code inside the file that signs players in as guests and connects everyone to the same live channel.

The Skapi MCP connector does the Skapi work. MCP (Model Context Protocol) is a standard way to give an AI assistant extra tools. Once you connect Skapi's MCP server to claude.ai, Claude gains tools that act on your Skapi project as you. It reads the Skapi docs through the connector, so the backend code it writes into the HTML matches how Skapi actually works. It registers your subdomain, uploads the finished HTML to Skapi's web hosting and refreshes it when you ask for changes. It can also look at your project's users and data and change project settings.

Your Skapi project is the backend and the home. It serves the page at your address and runs the guest accounts and live multiplayer. There's no server of your own in between: when someone opens the link, the Skapi code inside the HTML talks to your project directly.

So you talk, Claude writes, and the connector ships. You never touch a terminal, an upload form or a hosting dashboard.

This is the whole setup. It follows the getting-started guide in the Skapi docs, using claude.ai in your browser or the Claude desktop app.

Step 1. Create a Skapi project

Sign up at skapi.com, then create a project at skapi.com/new-project. Give it a name, pick a region and choose a plan.

Creating a new project on skapi.com: a name, an optional description and a region

Your new project opens on its own page. The Information card shows your Project ID; click it to copy. This tells Claude which project to build on.

The Stillwater Lake project page. The Project ID is on the Information card.

Step 2. Connect Skapi to Claude

This is the step that makes the whole thing hands off. The Skapi MCP server lets Claude work on your project for you: set up your web address, upload your game, put new versions online, look at your users and data, and change project settings. It signs in as you, so it only touches your own projects.

You need one address. It's on the For AI Agents card on your project page:

The MCP endpoint on the For AI Agents card: https://mcp.broadwayinc.computer

Then, in claude.ai:

  1. Open Customize, go to Connectors, click + Add and choose Add custom connector.

    The Connectors page in claude.ai, with the Add menu open

  2. Name it Skapi, paste https://mcp.broadwayinc.computer as the MCP server URL, and click Continue.

    The Add custom connector form, filled in for Skapi

  3. Sign in with your Skapi account when asked. There's no key or secret to copy anywhere. Skapi now shows up in your connectors with a check mark.

    Skapi listed under Yours, connected

On Team and Enterprise plans, an organization owner adds the connector once under Organization settings › Connectors, and then each member just clicks Connect.

That's it. Claude can now see your Skapi projects and build on them. You don't need to download or attach anything else.

Step 3. Describe what you want

Open a new chat in claude.ai and just start typing. Tell Claude which project to use, then describe your idea in your own words.

A new chat in claude.ai with the Stillwater Lake prompt being typed: "Use my Skapi project <Project ID>", then the game description

The Stillwater Lake prompt started like this:

Use my Skapi project "<Project ID>".

Build "Stillwater Lake": a quiet, shared 3D lake that anyone can walk into from a phone or a computer, with no sign-up. Everyone at the lake sees everyone else in real time. Show me the game as a playable preview here in the chat after each step…

The world. A round lake in a basin, with a sandy shore, grassy rolling hills, rocky mountains with snow on the peaks… A wooden dock reaching into the lake, with a glowing lantern… A base camp near the dock: a stone-ringed campfire…

Fishing. Near the water, Space (or a big round "Cast" button on phones) casts toward the middle of the lake… After 4 to 13 seconds it bites…

Camp life. With 3 branches and 2 stones, build a campfire anywhere on land… Anyone at the lake can eat your grilled fish… Every fish you eat banks one appreciation dance: a cha-cha after the 1996 "Dancing Baby"…

You don't have to get it all right the first time. Play the preview, then just say what you'd like changed, the way you'd talk to a friend who's helping you. The full Stillwater Lake prompt is further down if you want to build your own copy in one go.

Claude in claude.ai: the conversation on the left, the game running right in the chat on the right

The same game opened full size inside claude.ai, already playable before it ever went online

Step 4. Ask Claude to put it online

Every Skapi project can host a website at https://<your-name>.skapi.com. You need your own address, since stillwater is already taken by this game. You don't have to set it up yourself. Just ask Claude in the chat:

Register the subdomain "my-lake" on my Skapi project and put the game online there.

Through the MCP connector, Claude registers the address, uploads your game and gives you the link. When you ask for changes later, Claude puts the new version online the same way. One thing stays with you on purpose: changing or removing an address once it's registered is done by hand on the Skapi dashboard.


What "hands off" actually looked like

The game on a phone: Mina doing her appreciation dance by the lake

The developer never left the chat window. Here's what Claude handled on its side of the conversation:

It showed the game running, right in the chat. Every version appeared as a live, playable preview inside claude.ai. You could walk around, cast a line and try the new feature before anything went public. Feedback was as simple as playing it and saying what felt off: "the dance feels glitchy", "both hands should touch the fish", "make the name box as tall as the title card".

Claude's work steps in the chat: changing the game, running its tests, checking its own screenshots

It tested its own work. Before saying something was done, Claude opened the game in a browser of its own at phone and desktop sizes. It walked the character through campfires, grilled and ate fish, pretended to be a second player joining, and checked what happens when a guest account expires. When something failed, it fixed it and tried again.

It solved the hard problem by itself. Players coming back after a while couldn't reconnect. Claude dug into how Skapi's guest accounts work and found the cause: a phone pauses background tabs, and after half an hour of silence the guest account is cleaned up. Claude built the fix: notice the lost account, sign out cleanly, and show the welcome screen so walking back in starts fresh.

It put every version online. When asked to ship, Claude uploaded the game through the Skapi connector, checked that every byte arrived intact, refreshed the site and confirmed it was live. It also kept a backup copy of the previous version, so there was always a way back.

Claude putting the game online through the Skapi connector: the whole game goes up as one file

It took care of things nobody asked for. It made the preview inside claude.ai multiplayer too. It reconnects quietly when the network drops. People who just arrived don't see a replay of old events. Campfires burn for exactly as long as their builder is at the lake. And in the Threads and Instagram in-app browsers, where photos can't be saved, it offers to open the game in your normal browser.

Customizing your angler on a phone: name, shirt, pants, cap and shoes


Take a photo, share the lake

Press P or tap the camera button, and the game captures the scene, adds a small caption with your name, and opens a sheet with Share and Save. On phones, Share goes straight to your phone's share menu: Messages, Instagram, AirDrop. Inside an in-app browser, the camera button explains why photos need a real browser and offers to open one.

The photo sheet: a snapshot from the lake, ready to share


The takeaway

Stillwater Lake has 3D graphics, a day and night cycle, swimming, fishing, cooking, a shared economy of grilled fish, and a dance borrowed from 1996. It has live multiplayer, guest accounts with no sign-up, touch controls, photo sharing and its own address on the web. And the whole thing is one file, smaller than a photo on your phone.

Nobody wrote it line by line. Someone described it in a chat, Claude built it, and Skapi gave it a backend and a home, with the Skapi connector doing the setup and the shipping. The only "technical" step was pasting one address into Claude's connector settings.

If you have an idea for a small shared place on the internet, you can build it this afternoon:

  1. Create a Skapi project and copy its Project ID.
  2. Add https://mcp.broadwayinc.computer as a custom connector in claude.ai and sign in.
  3. Tell Claude your Project ID and describe what you want, or paste the Stillwater Lake prompt.
  4. Play the preview in the chat and say what to change.
  5. Ask Claude to register your own address and put it online.

Night at the lake, by the campfire

Stillwater Lake is open source: github.com/broadwayinc/stillwater-lake-game. Built on skapi.com.

Top comments (0)