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

Voidcrown

An ARPG built by one. Sold to thousands.

2026·Indie games·Next.js · Three.js · Stripe · Payload·22 days
// The brief

A solo developer had a playable demo of a dark-fantasy ARPG built in Godot, partly with AI assistance, partly from forum tutorials. 8k Twitter followers. Steam launch in 6 weeks. He had no website and no marketing budget left.

// The approach

The site is the world. A scrollable journey through the game's regions — each one revealing lore, a piece of original music, and a path to the wishlist or the DLC store. The dev's own voice in copy, first person, raw. No marketing-speak; the audience would smell it instantly.

// The six regions
region 01

The Ashen Reach

where the demo opens. everything here has already burned.

region 02

Hollow Choir

a cathedral that sings when you bleed.

region 03

Saltmarsh Below

the tutorial boss lives in the water. people quit here.

region 04

The Gilded Wound

treasure, obviously. also the trap, obviously.

region 05

Nightfen

no map works. that's the mechanic.

region 06

Crown of Static

the last region. we won't spoil it. neither did the dev.

// Process · what we threw away
hands, world, map, global, earth, globe, world map, continents, palms, fingers, idea, concept
killed · week 1
full 3D navigable map · five weeks he didn't have

We almost built it as a fully 3D WebGL environment with a navigable map. Killed that after week one — it would have taken five weeks of work, and the dev needed marketing fuel for the six-week run-up to launch. Pivoted to parallax-driven regional scrolling with a focused Three.js item viewer on the DLC pages. 80% of the emotional impact, 20% of the time.

// we designed ten. they picked one.

Ten directions. One shipped.

Every project starts as ten homepages, fully built. The client picks the one that ships. The other nine aren’t waste — they’re the proof we looked before we leapt.

10 directions · drag or use the arrows
// The work

Long-scroll Next.js site. Six region sections, each linking to a lore page. Three.js item viewer on the DLC store. Stripe Checkout. Payload CMS so the dev could post patch notes himself without touching code.

forest, trees, sunlight, dark, forests, landscape, nature, moody, forest, dark, dark, dark, dark, dark, moody
bird skull, skull, creepy, dark, gothic, horror, fantasy, mysterious, raven, mystical, darkness, spooky, halloween, horror, horror, horror, horror, horror
summit castle, castle ruins, ruin, castle, pottenstein, middle ages, höhenburg, monument protection, imposing, landmark, sightseeing, historical, building, franconian, franconian switzerland, romantic, upper franconia, bavaria, castle, castle, castle, castle, castle
forest, wilderness, night, midnight, trees, woods, woodland, nature, horror, creepy, scary, dark, darkness, horror, horror, horror, horror, horror, creepy, scary, dark
fantasy, ruin, fog, sea, architecture, gothic, photomontage, dark, landscape, mysterious, castle, scene, nature, mystical, blue fantasy, blue dark, blue castle
mystical, castle, building, mysterious, night, goal, dark, twilight, mood, romantic, atmosphere, fantasy, historically, dream, chateau, gothic, castle, castle, castle, castle, castle, fantasy, fantasy, gothic
// Outcomes
// 01
12,400

Steam wishlist sign-ups in launch week

// 02
$47,300

DLC revenue, launch month

// 03
3

indie gaming newsletters featured it organically. we didn't pitch.

// Build log · 22 days, condensed
day 01

dm at 2am. a build, 8k followers, six weeks to steam. no site.

day 03

ambition: full 3D webgl map you walk through. we wanted it bad.

day 07

did the math. five weeks of dev for a six-week runway. killed it.

day 10

new plan: parallax regions. the world scrolls past instead.

day 14

three.js item viewer on the DLC page. spin the sword, buy the sword.

day 18

payload wired so he posts patch notes without us. he posted twice that day.

day 22

shipped. wishlist counter moving in real time. he stayed up to watch it.

// From the founder
I came in with a Notion doc and a build. They left me with a marketing engine I can run myself.
Erik Hagen
Erik Hagen
Solo dev, Voidcrown
Built with Next.js · Three.js · Stripe · Payload · 22 days
Want the next one to be yours? →