A camp on a ridge overlooking a wide autumn valley
Game / three.js / WebGL

Camping
Season

Where it's always autumn

You pilot a small camper through a procedurally generated autumn valley. There is no combat, no fail state and no timer. The pleasure is the drive, the light, and finding things - and it runs in a browser tab.

Free. No install, no account. Give it a minute to load a whole world.

Camping Season is a cozy exploration game where you drive around in a camper exploring a forever fall valley. You can camp, bike, kayak and other little mini games through out.

The whole valley, terrain, rivers, waterfalls, trees, grass, rock, sky, weather is generated from a seed. So are the vehicles, the camp gear, the boats, the bike and the journal you carry: every one of those is procedural geometry and vertex colours, with no texture map anywhere on it. Almost every sound is synthesised in the browser too. Though there are five recorded audio files in the entire game.

The animals are the deliberate exception, and they run on two tracks. The rabbit and the squirrel are procedural, lofted from profile curves and solved against the ground every frame. The fox, bear, deer, moose, raccoon, goat, ram and the camp dog are hand-authored in Blender, because I couldn't get the look I wanted with math alone.

Then it gets baked. A build runs the world generator ahead of time and ships the result as static files, so the first thing your browser downloads is a finished valley rather than the code to imagine one.

Photos from the Valley

Every image on this page is an in-game frame at real resolution. None of it is concept art.

Ways to Spend an Afternoon

🚙

Drive

Three procedural vehicles on Rapier physics with real suspension. They roll on one shared chassis, so no car handles better than another; the difference is entirely what you are looking at.

🔥

Camp

When you park, you can make a camp. Camp has a lot of little relaxing things to do. Look around, pet the dog, have fun.

🛶

Kayak

The rivers and waterways in the game can take you to some really cool places. A kayak there, or a canoe on the lake is a great way to keep it slow.

🚲

Bike

Every full camp gets a bike, and the valley is worth riding through. You can get closer to animals for better photos on a bike.

🍡

Roast

Roasting a marshmallow over a fire is one of my favorite camping things to do. Take your time, be patient with it.

🔭

Gaze

Sometimes at camp a telescope will spawn. It'll let you see some of the hidden treasures found in the night sky.

The Scavenger Hunt

Somewhere at camp there is a camera and a paper journal. The camera is a real one: two zoom lenses at 24–70mm and 200–400mm, a focus distance you rack by hand, and an aperture that actually controls the depth of field. The long lens exists because a bighorn ram will not let you walk up to it.

The journal holds a checklist of a number of things. Photograph one and the game detects what was genuinely in your frame, crosses the line off in ink, and tapes your actual photograph onto the page beside it.

Finish finding all of the animals in the journal to win the game. If you want to consider that winning.

The in-game paper journal, open to the scavenger hunt checklist with photographs taped in
FTwoour of animals found. The photos are yours.
  • a white-tailed deer
  • a cottontail rabbit
  • a grey squirrel
  • a northern raccoon
  • a red fox
  • a black bear
  • Great Moose
  • a mountain goat
  • a bighorn ram
  • Dog at camp
  • Bald eagle
  • Great horned owl
  • Great blue heron
  • American flamingo
  • White ducks
  • Fireflies in the meadow
  • Waterfall
  • A high mountain campsite
  • An over-roasted marshmallow
  • The Moon
  • A planet
  • A galaxy
  • ?

How It Was Built

01

One global shading pass, not per-material toon hacks

The first playable build got one note back from the art director: too realistic, too sharp, not soft enough. Rather than retune forty materials, the fix patches Three’s direct-lighting term once, for everything in the game — a very wide soft terminator, gently quantised into bands, floored so nothing goes fully unlit, specular pulled back toward matte. Every material gets the look for free, and nobody can fight it locally.

02

Warm key light, cool complementary shadow

Sunlit meadow is gold. A cast shadow on it is a soft, high-value violet-blue mass, not a darker gold. That complementary split is most of why the frames read as expensive rather than as a hobby renderer, and the value came out of measuring reference plates channel by channel — one round of guidance got it backwards and drove the cool out of every frame we shipped until a colour histogram caught it.

03

Render at a fraction, reconstruct to the panel

The scene and the whole post chain draw at a fraction of the canvas and get reconstructed by a Catmull-Rom plus contrast-adaptive-sharpen pass. An adaptive scaler aims for 50 fps and moves that fraction without reallocating the drawing buffer, so quality adjusts continuously instead of freezing the tab at every step.

04

Never trust a frame time you cannot pair

Performance work runs through an ablation harness that measures inside a single page load on a fixed schedule — baseline, feature off, baseline, feature off, baseline — and scores each arm against its own two neighbouring baselines. Thermal drift cancels out. A saving smaller than its own measured spread is printed as “within noise” and is not allowed to be ranked. Absolute numbers from a busy machine are worthless and the tooling refuses to quote them.

05

Every visual claim goes to a blind A/B

“It looks better” is not evidence, so changes get built two ways and judged blind by critics who cannot see which is which. Golden hour lighting was attempted five separate times and reverted every time on its own evidence — two judges who never saw each other’s frames independently condemned the same view in nearly the same words. The measurements then showed the knob was in the grass shader all along, not in the light rig.

06

Hosted where the bandwidth is free

Every first-time visitor downloads a whole baked world, which on a typical hobby plan capped the game at roughly 5,700 players a month before it would be throttled. It runs on Cloudflare Pages instead, where egress costs nothing. Both host configs are kept working side by side so either one can serve the repo without a code change.

138k
lines of JS + GLSL
577
commits in 17 days
81
tools and harnesses
5
recorded sounds in it

Go and sit by the fire.

It is free, it runs in the browser, and nothing in it is trying to kill you. Drive until you find somewhere you like, park, and put the kettle on.

Play Camping Season
Back to All Projects