Publish a game

Publish your HTML5 game on every arcade at once

Write your game as one HTML page, put a small card in its JSON, and inscribe it. It shows up on the Apps tab of every arcade, on every chain that arcade reads. There's no store to apply to, nobody to ask, and no account to register beyond the one you play with.

How to publish an HTML5 game

  1. Write the game as one HTML file. Styles, script and pictures all go inside it, pictures as data: URLs. The page can load other inscriptions (/content/<txid>) and the arcade's own scripts (/r/*.js), and nothing from the open internet.
  2. Write the card. A little JSON that goes on the chain with the page. Only name is required.
    {"app": {"name": "Tap Counter", "description": "Tap. Beat your best.",
             "version": "1.0", "players": "1", "genre": "arcade",
             "family": "tap-counter", "cover": "<txid of a picture>"}}
  3. Get an account and test coins. Press Join on any arcade. Where the operator has the faucet on, a new account gets Pepecoin test coins. Try your game on the test chain first: an inscription can't be changed or taken back.
  4. Inscribe the page with its card. Go to Creator → NFTs → Inscribe one thing, choose your .html file, paste the card into JSON beside the file, and press Inscribe it. Developers can do the same from the command line with arcade-publish.
  5. Find it on the Apps tab. About a minute later, when the block lands, open Apps → Latest. Your card is there on every arcade, and /play/<family> always opens your newest version.
  6. Release new versions. Inscribe the changed page with the same name and a new version. The new card replaces the old one and keeps its stars, comments and tips.

The full walkthrough, every card field and a checklist are in Making an app and listing it.

What your game gets

Listing

Every arcade's Apps tab

One inscription lists your game everywhere. On a phone with the arcade installed, it's in the App Store and can sit on the home screen.

Multiplayer

Rooms with no game server

arcade.realtime puts players from any arcade in the same room, many messages a second. Each player is known by their own chain address.

Saves

Saves that follow the player

arcade.storage keeps a player's progress in their wallet's memory, the same on every device they sign in from, with the last ten values of each key.

On-chain state

Game state on each piece

arcade.state writes your game's record onto an NFT: a worn sword stays worn after it's traded, and every arcade reads the same state.

Players say so

Stars, comments and tips

Likes, comments and tips are ordinary chain actions aimed at your game. A tip goes to the address that inscribed it.

Trades

Swaps between players

arcade.swap.trade swaps a piece for a piece, a token or coins in one transaction both players sign, or nothing moves.

Games can also call a language model the player chooses, and a Game Boy ROM can be published as a cartridge.

The sandbox your game runs in

Every inscribed page runs in a sandbox with no origin of its own. That's what makes it safe to run a stranger's game inside a wallet.

Runs

Scripts, eval and WebAssembly

Inline scripts run, and so do eval and WebAssembly, so an emulator or a compiled engine works.

Can't

Phone home

The page can fetch only from the arcade showing it. No CDN, no web font, no analytics. Inscribe what you depend on, or do without it.

Asks first

Wallet, camera and contacts

Each sits behind a switch on your card that the player turns on. A game that only saves and joins rooms needs none of them.

Bigger games fit better as a small launcher plus parts, each its own inscription. The inscription API lists everything a page can ask for, and the technical paper explains the sandbox.

Questions

Where can I publish an HTML5 game without a store?

On ARCADE. Inscribe the page with an app card, and it appears on the Apps tab of every arcade, with nothing to register and nobody to approve it.

Do I need my own server for multiplayer?

No. Arcades link to each other peer to peer, and arcade.realtime rooms are carried by the arcades your players use.

Can I use a game engine?

Yes, if the engine's files are inscribed too, since a page can't load from the open internet. Inline small ones; split big ones into a launcher and parts.

Can someone copy my game under my name?

Only you can replace your card, because it belongs to the address that inscribed it. A card by someone else that looks made to be mistaken for yours is held back until the operator has looked.

Can I take my game down?

You can take its card off the Apps tab on every arcade. The inscription itself stays on the chain, as everything on a chain does.

Is publishing open to anyone?

Yes. Publish only games you made or have the right to publish, and start on the test chain.