The idea
Reddit's r/place showed how much people enjoy a shared canvas with a slow drip of pixels: individuals become communities, and communities negotiate over space. WorldPlace moves that idea onto the planet itself. You zoom from the whole Earth to your own street, choose one of 64 colours and paint. Your town, your flag and your name all have a real location.
Each pixel costs a charge. Charges refill at one every 30 seconds, even while you are offline, so large pieces need either patience or other people. Painting earns XP and credits, which unlock more capacity, premium colours and country flags. Leaderboards track the most active players and countries.
How a pixel gets saved
Players draw a draft of up to 5,000 pixels, with undo, redo and erase, and nothing is shared until they press Confirm. The server then checks everything: charges, owned colours, locked areas and request rates. Nothing the client says is trusted.
The world is stored as 64 × 64-pixel blocks in Roblox DataStores, written with merge-safe updates. Each drawing is first recorded in the player's profile as a journal entry, so a crash or disconnect cannot lose an accepted drawing or charge for it twice. A placement is only reported as saved once the write has succeeded. Other servers are then notified so their players see the change straight away. Those notifications are treated as hints, never as storage.
Making it load quickly
Roblox players cannot download from the internet directly, so every pixel has to come through the game server and Roblox's database, which has strict per-minute read limits. Most of the world is empty sea and sky, and the first version spent a read on every empty block.
A small index of which blocks have ever been painted now answers roughly a thousand empty blocks with a single read. Blocks travel to players in a compact form: a short note for an empty block, three bytes per pixel for sparse ones and a 4 KB buffer for busy ones. Each arrives as one image on screen and loads from the centre of the view outwards. One server rebuilds the index every hour to repair any gaps.
A real map underneath
The zoomed-out globe uses public-domain Natural Earth relief imagery in Web Mercator projection. Up close, street detail comes from OpenStreetMap data, drawn into tiles by a small MapLibre service I run on Google Cloud Run. The game server fetches those tiles and passes them to players, while place names are drawn separately so they stay readable at any zoom.
Choosing 64 colours
A limited palette makes or breaks how pictures look. Instead of picking colours by eye, I tested them: 394 colours from well-known artist-made palettes were scored on the 24 Kodak test photographs plus a chart of bright cartoon colours. A script then chose the combination that reproduced the images most closely. Two rules applied. The free half had to include every basic hue and a skin tone, and no two colours could look nearly identical. When colours were chosen using half the photos and tested on the other half, the new free palette reproduced unseen photos with about a third less error than the original free colours.

The companion website
Copying a picture by hand onto a canvas this size is hard, so I built a small web tool alongside the game. It turns any image into pixel art using only the colours a player owns, offers a choice of dithering methods and estimates how long the painting will take to charge. It then tracks progress pixel by pixel and suggests the next batch to paint. Everything runs in the browser and nothing is uploaded.
Keeping it fair
Clicking any pixel shows who painted it. Players can report drawings, and the owner and appointed admins can review reports, issue timed bans and mutes, and undo one player's pixels without touching anyone else's. Admin powers are checked on the server and are deliberately economy-neutral: admins cannot give pixels, and their unlimited painting earns no XP.
