christmas background, fog, forest, conifers, trees, coniferous, conifer forest, foggy, haze, mist, misty, dark, gloomy, fir forest, coniferous forest, nature, outdoors
// log ·

we killed the 3d map after a week

five weeks of work against a six-week launch. the math made the call.

// the note

Voidcrown is a dark-fantasy ARPG one guy built in Godot, partly with AI help, the way a lot of things get built now. Six weeks to a Steam launch. About 8k followers on Twitter who'd actually watch the trailer. No marketing budget left and no website at all. He came to us for the website. We almost gave him the wrong one.

The wrong one was gorgeous. We wanted to build the whole site as a navigable 3D map of the game's world — fly the camera over the dead kingdoms, drift down into a region, hover the cursed cathedral and have the lore bleed in. A WebGL world you could lose an afternoon in. We had moodboards. We had a camera path sketched. For about four days it was the most exciting thing on either of our screens.

Then we did the math, out loud, in a call that went quiet halfway through.

That map was five weeks of real work. Camera rig, level-of-detail so it doesn't melt a laptop, the asset pipeline to get Godot scenes into Three.js without them looking like garbage, the lore-trigger system, mobile fallbacks because half the followers are on phones. Five weeks. Against a six-week launch window where the dev still had to finish the actual game and run a Steam page.

So the real question wasn't "can we build it." We could. The question was what the six weeks were for. He didn't need a website that proved we could do WebGL. He needed the 8k followers turned into wishlists, and the wishlists turned into day-one sales, and a thing he could ship a trailer into and not be embarrassed by. The map would've eaten the whole runway and shipped the day before launch as a tech demo nobody had time to share. Impressive and useless. The worst combination.

We killed it after week one. Said it out loud so it stayed dead.

what we shipped instead

Parallax-driven regional scrolling. You go down the page and the world goes past you in layers — foreground ruin, mid-ground army, far-off storm — and each region of the game gets its own band of the scroll. Same emotional beat as flying the map. You feel the size of the place. It's just on rails instead of free-flight, and rails cost a fraction of free-flight.

One real piece of 3D, saved for where it earns its keep: a Three.js item viewer on the DLC pages. Spin the cursed blade, see the runes catch the light, read the stats. One focused interactive thing people will actually touch and share, instead of a whole world they'd visit once.

The stack stayed small on purpose. Next.js for the site. Three.js for the one item viewer. Stripe Checkout for the DLC and the soundtrack. Payload so the dev posts his own patch notes at midnight without writing us a ticket.

Roughly 80% of the gut-punch for 20% of the time. We shipped with room to spare, and he spent the leftover days where they mattered — on the launch, not on us.

Here's the part a vendor would never tell you, because the impressive version is the version that gets you the next gig. The impressive version was the wrong version. Every hour we'd have spent making the map breathe was an hour stolen from the only thing that mattered to him in week six. Shipping beat showing off. It usually does. We just had to want it more than we wanted the cool screenshot.

see the case study →