Inspiration
We wanted the feeling of doodling a mountain on a napkin and then walking on it with other people. Most “draw something” apps stop at a flat image. Most multiplayer worlds are pre-authored maps. Infinite Terra sits in the gap: one careless sketch becomes permanent land, buildings, creatures, and sky in a shared 3D place that gets weirder and more yours the more strangers show up.
What it does
Infinite Terra is a public, shared 3D world anyone can visit and grow.
In under a minute, with no tutorial:
- Click to look around · WASD to walk · Shift to run
- Contribute with one key:
- E — draw terrain or a building silhouette
- R — create an animal (outline → pattern → sound → walk path)
- T — draw a cloud into the shared sky
- F — plant vegetation / a biome patch on the ground under you
- Commit → it appears where you’re standing (or hanging overhead), live for everyone
What your input becomes
- Terrain — a ridgeline sketch becomes walkable mountains (darker/thicker ink = higher ground)
- Buildings — a front-view silhouette becomes a full structure with culture-styled exteriors; walk through the door into generated multi-floor interiors with stairs and furniture
- Animals — colored outline + pattern sketches extrude into solid 3D creatures; record a short voice clip and a 5-second walk path; hear them when you get close
- Clouds — soft white strokes become clouds hanging over that spot in the shared sky
- Vegetation — type something like “cherry blossom” or pick a biome → hundreds of plants instance across the terrain with species-specific shapes and colors
Other travellers show up as glowing wisps (including inside the same building/floor). The landscape is a community garden, not a personal sandbox.
The Observatory (/dashboard) is a live analytics view of real contributions — growth over time, mix by type, spatial density / frontier, palette + weather mood, and a short curator insight grounded in the live numbers.
How we built it
Stack: Next.js, React Three Fiber / Three.js, Supabase (Postgres + Realtime Broadcast), Recharts for the Observatory, optional Gemini for curator notes.
The technical core is the transformation pipeline — not “AI draws a prettier picture,” but local, deterministic synthesis from a tiny sketch:
Terrain — Sketch → Synthesize
- Ink density → heightmap
- Blur (pen jitter → landform)
- Fractal detail weighted by altitude (peaks rugged, valleys walkable)
- Hydraulic erosion (~12,000 virtual droplets carve valleys)
- Rendered as walkable Three.js terrain
We store the 64×64 sketch (~2KB), not the heightmap. Every client re-runs the same synthesize() and gets identical mountains — cheap sync, no desync.
Buildings — Silhouette → Enterable Structure
- Bounding box / ink → width, depth, height
- Roof peak detection + floor-band profile so L-shapes and tapers survive
- Type classification (bungalow, tower, mansion, …)
- Deterministic culture styles (mediterranean, nordic, japanese, colonial, tudor, adobe, modern, …)
- Kitbash exterior + seeded interiors (rooms, stairs, furniture); terrain pads flatten at the door so you can actually walk in
Animals — Outline → Living Creature
- Color outline + pattern layers → solid 3D extruded mesh
- Optional mic clip (proximity audio) + recorded patrol path + speed
- Synced to the shared world so strangers meet your creature in the wild
Sky — Stroke → Cloud
- Soft white sketch → sky cloud asset over that location, blended into the daytime sky / fog system alongside any weather cells
Vegetation — Name → Forest
- Plant/biome string maps to species-aware geometry, color, and dense instanced placement on real terrain height
Shared layer
- Assets in
world_assets; traveller positions over Broadcast (~10Hz, not DB writes) - Presence works outdoors and indoors (same building + floor)
Observatory
- Same realtime table + traveller channel as the world
- Live charts, map, themes, and a curator note generated from computed stats (not fake demo data)
Challenges we ran into
- A traced drawing is not a mountain. Naively lifting ink into height made wobbly ramps. Blur + fractal detail + hydraulic erosion are what make it read as landscape.
- Sync without shipping megabytes. Storing heightmaps would be huge and fragile; sketch-as-recipe + deterministic re-synthesis fixed that.
- Buildings that look like the doodle and you can enter. Floor profiles, roof detection, culture kits, and door-aligned terrain flattening so silhouette quirks become real massing you can walk through.
- Creatures that feel authored, not pasted. Multi-step input (outline, pattern, sound, path) had to stay under a minute while still producing a colored 3D mesh with behavior.
- Realtime presence at walk speed. Position updates had to be Broadcast, not row writes.
- Demo reliability. The critical transform path stays local/deterministic so judging can’t die on a model rate limit.
Accomplishments that we're proud of
- A named, demoable transformation: one moment of drawing → permanent 3D world geometry, live for everyone
- Not just land — buildings you enter, animals you hear, clouds you draw into the sky, forests you plant
- A world that gets better with more people — denser skyline, stranger fauna, overlapping clouds, more travellers
- The Observatory — real usage data you can explore live, plus a grounded curator insight
- Something a stranger can figure out in under 60 seconds: click, walk, press a key, draw, commit
What we learned
- The “interesting middle” of a hackathon project is often geometry + simulation + realtime sync, not another prompt box
- Deterministic pipelines beat opaque generation when you need multiplayer consistency and a live demo
- Community artifacts need cheap contribution + expensive-feeling results — tiny sketch in, rich place out
- Surfacing usage data (Observatory) makes the shared artifact legible to judges and visitors
- Input can stay simple even when the transform is deep — one key, one sketch, one commit
What's next for Infinite Terra
- Keep the world up after the weekend as a living doodle-planet
- Sync vegetation the same way as terrain/buildings so forests are fully shared
- Richer creature behaviors and collaborative “districts” where groups shape a region together
- Deeper Observatory insights (themes across sketches, contribution “eras”)
- Lightweight curation so the frontier stays walkable and fun as it grows
Built With
- postgresql
- react
- recharts
- supabase
- three.js
- typescript
Log in or sign up for Devpost to join the conversation.