Move sky and ambient lighting into the terrain preset #9

Open
opened 2026-08-15 15:55:54 +01:00 by liamjd · 0 comments
Owner

The sky and lighting live as a WorldEnvironment sub-resource in game.tscn, so every map gets the same blue-sky daylight regardless of where the colony is.

Current tuned values, for reference:

Setting Value
background_mode Sky (ProceduralSkyMaterial)
ambient_light_source Sky
ambient_light_sky_contribution 0.6
ambient_light_energy 0.28
tonemap_mode / tonemap_exposure Filmic / 0.7
Sun light_energy 1.0

An M-class habitable moon and an airless mining outpost want genuinely different skies: a blue gradient with a bright horizon versus near-black with a gas giant filling half the view and dim planetshine as the fill. That makes the environment a property of the location, alongside the palette in the palette issue.

Two things worth preserving in the design

Ambient is a readability tool, not a realism one. An airless moon physically has no atmospheric scatter, so its shadows should be near-black — but the camera is a fixed orthographic rig that cannot tilt to peer into shadow, and players build in canyons. Keep ambient high enough to read; get the airless feel from colour (cold blue-grey fill) rather than from dimness.

Tuning history worth not repeating: raising ambient to fix black canyon floors overshot badly and blew out the terrain, because ambient stacks on top of full sun. tonemap_exposure turned out to be the better lever than either energy value — it pulls the whole range down without flattening sun-to-shadow contrast.

This is where eclipse cycles hook in. The design docs have eclipses as a recurring, forecastable threat that cuts solar power and light. Implementing that is lerping the environment's ambient and the sun's energy over the eclipse window, so the per-preset environment wants to be something a system can drive at runtime, not just static scene data.

Also

gl_compatibility gives no SDFGI, SSIL or volumetric fog, so sky ambient is the only fill light available. Whatever shape this takes, it cannot lean on global illumination.

The sky and lighting live as a `WorldEnvironment` sub-resource in `game.tscn`, so every map gets the same blue-sky daylight regardless of where the colony is. Current tuned values, for reference: | Setting | Value | | --- | --- | | `background_mode` | Sky (`ProceduralSkyMaterial`) | | `ambient_light_source` | Sky | | `ambient_light_sky_contribution` | 0.6 | | `ambient_light_energy` | 0.28 | | `tonemap_mode` / `tonemap_exposure` | Filmic / 0.7 | | Sun `light_energy` | 1.0 | An M-class habitable moon and an airless mining outpost want genuinely different skies: a blue gradient with a bright horizon versus near-black with a gas giant filling half the view and dim planetshine as the fill. That makes the environment a property of the location, alongside the palette in the palette issue. ## Two things worth preserving in the design **Ambient is a readability tool, not a realism one.** An airless moon physically has no atmospheric scatter, so its shadows should be near-black — but the camera is a fixed orthographic rig that cannot tilt to peer into shadow, and players build in canyons. Keep ambient high enough to read; get the airless feel from *colour* (cold blue-grey fill) rather than from dimness. Tuning history worth not repeating: raising ambient to fix black canyon floors overshot badly and blew out the terrain, because ambient stacks on top of full sun. `tonemap_exposure` turned out to be the better lever than either energy value — it pulls the whole range down without flattening sun-to-shadow contrast. **This is where eclipse cycles hook in.** The design docs have eclipses as a recurring, forecastable threat that cuts solar power and light. Implementing that is lerping the environment's ambient and the sun's energy over the eclipse window, so the per-preset environment wants to be something a system can drive at runtime, not just static scene data. ## Also `gl_compatibility` gives no SDFGI, SSIL or volumetric fog, so sky ambient is the only fill light available. Whatever shape this takes, it cannot lean on global illumination.
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
liamjd/UntitledColonyBuilder#9
No description provided.