slow roads

Slow Roads Scenes, Seasons and Weather Explained

Updated 2026-09-21 · All guides

Most pages that claim to list the "biomes" in Slow Roads are guessing. They name coastal routes, deserts, alpine passes, canyons. None of that exists. The build running on this site ships exactly two scenes and a fixed, countable set of seasons and weathers.

The full picture: two scenes, four seasons, five weathers per season in Hills, and three planets off-world. That is 20 distinct looks on Earth and 5 more off it. Everything below was read out of the game's own scene configuration, so where a number appears it came from the code rather than from squinting at a screenshot.

The two scenes

The scene list is a two-element array. In the settings menu it reads HILLS and OFF-WORLD; internally the keys are Hills and Planet, stored in your browser under config-scene-name.

HillsEarth-like. Grass, forests, water, drystone walls, sea fences. Tarmac road. Four seasons.
Off-worldThree planets: mars, venus, moon. No trees, no grass — the scene class sets hasTrees and hasGrass to false. Unpaved surface.

One curiosity: the Hills scene class is tagged sceneName = "Peaks" in the code, a leftover that never reaches the interface. It is not a third scene — the registry maps two entries and that is all you can reach, the same situation as the disabled Rover in the vehicle table.

Switching scenes is not a re-skin. It tears down the world: the scene object is removed from the environment layer, destroy() is called, every geometry and texture it cached is disposed, and the new scene builds from scratch. You get a loading pause and you lose your current run. Seasons and weather, by contrast, swap live while you drive.

A red roadster on a two-lane tarmac road curving through green hills under a clear blue sky, seen from the chase camera
The default state: Hills, summer, clear weather, normal road complexity. The game boots here every time because the saved weather index is forced back to 1.

Four seasons, five weathers each

Seasons are called "skins" internally, and they live in an ordered object. That order is what Q and E walk through. Each season owns its own list of five weathers, and the names are not shared between seasons — autumn has its own sunrise, winter has its own sunset, and so on.

springspringSunrise, clearSpring, springRain, autumnSunset, night
summer (key default)sunrise, clear, rain, sunset, night
autumnautumnSunrise, clearAutumn, autumnRain, twilight, night
winterwinterSunrise, clearSnow, snow, winterSunset, night

Four seasons multiplied by five weathers gives 20 combinations in Hills. Two facts fall straight out of that table. Snow is winter-only — both clearSnow and snow belong to winter and there is no snow anywhere else. Rain is spring, summer and autumn, appearing as springRain, rain and autumnRain; winter substitutes falling snow for it. And every single season terminates in night, which is the same shared weather entry in all four.

The spring bug that isn't quite a bug

Look at spring's fourth entry: autumnSunset. Spring does not have its own evening. It borrows autumn's. Every other season defines a bespoke dusk — summer has sunset, autumn has twilight, winter has winterSunset — but spring reuses autumn's asset wholesale, and the reuse is consistent, appearing in spring's automatic weather cycle too, not just its manual list.

In practice this means spring evenings look warmer and more amber than spring mornings have any right to. It reads as a deliberate shortcut by anslo rather than an oversight. It is also a reminder that this is the 2022 build, version 1.0.1, frozen in place; the official game has continued past it and may well have given spring its own dusk since.

What Q and E actually do

This is the single most commonly mis-stated thing about Slow Roads, including in earlier versions of this guide. Q and E are not season keys. They are bound to prevSkin() and nextSkin(), and the implementation increments a weather index first:

So the traversal is a single 20-step loop, not a 4-step one. From summer sunrise, pressing E repeatedly gives you clear, rain, sunset, night, then autumn sunrise, clearAutumn, autumnRain, twilight, night, then winter sunrise, clearSnow, snow, winterSunset, night, then spring sunrise, clearSpring, springRain, autumnSunset, night, and back to summer. Twenty presses returns you where you started. The season order is spring → summer → autumn → winter, which is why leaving summer takes you to autumn.

Count it out from a cold boot and the arithmetic is worth having. The game always starts in summer on clear, which is step 6 of the twenty; winter's snow is step 17. That is eleven presses of E forwards, or nine of Q backwards. Going the wrong way round the loop is the shorter trip, which nobody guesses correctly first time.

You do not have to press anything, though. The weather widget in the on-screen interface lists all four seasons with their five weathers underneath, and clicking one sets the season and the weather index together in a single action. Q and E are for adjusting without taking your hands off the wheel; the widget is for jumping. The rest of the key map is covered in the controls guide.

Snow falling across a white-covered road and bare hillsides, visibility closing in to a pale grey horizon
The snow weather sets fogFar to 0.75 and switches on dynamic fog. That is the tightest fog envelope of the twenty Hills weathers — every other one sits at 1.0 — and only Venus, at 0.5, closes in further. Short sightlines are the design here, not your graphics card giving up.

Lighting details worth knowing

The weather entries are lighting presets: ambient level, hemisphere and directional light, fog near and far, sky and water colours, and an optional audio track. A few values explain things you might otherwise blame on your machine.

A dark road lit only by the car's headlight cones, with the hills reduced to faint silhouettes against a deep blue sky
Night driving on this build. Headlights engage on their own; the faint terrain visibility comes from the ambient term, not from a moon.

Seasons change grip, not only colour

Here is the part no other page about this game mentions, and it is why winter feels different rather than merely looking different. Every skin may carry its own friction table, applied when the skin loads. Three of the four Hills seasons define nothing and inherit the defaults. Winter overrides all three surfaces downward.

spring, summer, autumnroad 1.4 · verge 0.95 · grass 0.85 (the inherited default)
winterroad 1.2 · verge 0.8 · grass 0.6
mars, venusroad 0.99 · verge 0.95 · grass 0.9
moonroad 0.99 · verge 0.9 · grass 0.8

Winter takes roughly 14% off road grip and nearly 30% off the grass. The road is slipperier and the ground beside it is much worse, so a wide line that costs you nothing in summer will carry you into a slow, sullen recovery in winter. Nothing in the interface hints at this. It is worth knowing before you put the Coach on a hard winter route and start blaming the physics.

Off-world inverts the relationship. The dirt track's 0.99 is well under Hills tarmac, so you will not carry the same corner speed, but its verges are the best in the game: 0.95 and 0.9 on Mars and Venus, against winter's 0.8 and 0.6. Leaving the road on Mars barely costs you anything. Leaving it in a winter Hills run costs you the corner. How much that matters depends on what you are driving, and the vehicle guide covers which of the three generate downforce to lean on and which one generates none at all.

The cycle timer, and why 15 minutes is the right choice

Beneath the weather controls in the on-screen interface sits a cycle timer with four settings: off, 3m, 8m and 15m. In the code these map to an array of durations in seconds — [0, 180, 480, 900] — and turning it on hands weather control over to an automatic sequence.

If you have ever switched to OFF-WORLD and found the timer gone, that is deliberate rather than a bug. The interface only renders the widget when the current scene reports that at least one of its skins defines cycles. The four Hills seasons all do. None of the three planets does, so the timer disappears entirely and off-world weather only ever changes when you change it.

Here is what most people miss. That duration is the length of the whole sequence, and each season defines its cycle as a five-step list which the timer divides evenly. Summer's two cycle lists are:

Two things follow. First, night occupies two of the five slots, so 40% of any cycle is night. Second, the game alternates between the dry list and the wet list, so a complete loop is ten steps, not five, and it always runs day → dusk → night → dawn, then repeats with precipitation.

At the 3m setting each step lasts 36 seconds. Colours are still mid-transition when the next one starts, and you spend most of the drive in a smear of dusk. At 15m each step lasts three full minutes, night lasts six, and a complete dry-then-wet loop takes half an hour. That is the only setting where the crossfades read as a passage of time rather than a slideshow. Winter alternates snow and clearSnow the same way, which at 15m gives you a storm that genuinely clears.

Off-world: three planets, five combinations

Switching to OFF-WORLD replaces the whole terrain system. The three planets are stored as skins in the same way seasons are, but they have far fewer weathers between them.

mars2 weathers: mars, marsRise. The default planet.
venus2 weathers: venus, venusSet. No water is defined at all.
moon1 weather, moon. Nothing to cycle through.

Five combinations total, so Q and E loop much faster out here. The moon is the odd one: its weather entry has amb: 2 and a directional light of 15 against a near-black sky, producing harsh, unfiltered, high-contrast light with no atmospheric haze. It also has no ambient audio and no wind track — both sources are null — so the moon is the only silent environment in the game beyond your own vehicle. The scene also mounts an Earthrise object whose visibility is gated on the skin being moon. Look up.

The road off-world is unpaved, and the scene class says so outright: it sets paved to false where the Hills cell class sets it true. That flag decides how the game works out the ground height under each wheel. On a paved cell it reads the road surface directly; on an unpaved one it falls back to sampling the terrain heightmap at that point. All three planets then share a single road_offworld surface texture, which on Mars reads as a graded dirt track cut across red rubble rather than a road.

There is a second consequence, subtler and more useful: the autodrive controller (F) keeps a separate cornering table for off-world. On Hills it scales its confidence by 0.6 / 0.75 / 0.6 for easy, normal and hard road complexity; off-world the same three settings give 0.55 / 0.55 / 0.4. Autodrive is measurably more cautious on another planet, and most cautious of all on a hard off-world route.

A pale dirt track winding between rust-coloured Martian rock formations under a hazy salmon sky, with no vegetation anywhere
Mars on this build. The absence of trees and grass is structural — the off-world scene class declares it has neither, so nothing is being culled for performance.

Combinations actually worth setting up

Pair any of these with a fixed seed and the terrain becomes reproducible too, which is the only way to compare two seasons over the same stretch of road. The terrain itself is procedurally generated from that seed using layered noise, and rendered with three.js — the season only changes materials, lighting and foliage tinting on top of it, never the landform.

What persists and what doesn't

Your season survives a reload. Your weather does not. The scene's configuration sanitiser runs on load, and after validating the saved skin it unconditionally forces the weather index — to 1 in Hills, to 0 off-world. So a saved winter returns as winter, but always at clearSnow, never at the snow you left it on.

The season lives in localStorage under config-scene-skin, alongside config-scene-name for the scene and config-scene-topography for road complexity. Clearing site data resets all three to Hills, summer, normal.

One last practical note on comparing seasons honestly. Because the weather index resets and the season does not, the cleanest way to A/B two seasons over identical ground is to fix the seed, set the season, drive a marked distance, then change season and reset with R rather than reloading. Reloading will quietly move you to a different weather within the same season and ruin the comparison.

Everything here describes build 1.0.1, captured from the public web version in late 2022 and hosted here unchanged. slowroads.io is anslo's official, actively developed version, and its scene and weather list has almost certainly grown past this one. If you want the current game, go there. If you want this specific 2022 snapshot, it runs here, and the rest of these guides document it the same way — by reading the code rather than guessing. If you have exhausted it, the games like Slow Roads list is where to go next.

Play Slow Roads → Free in your browser. Desktop or laptop with a keyboard.