Completes the Fixed daytime lighting and basic ambience item for 0.1.0. All 14 screenshots approved by the owner.
Lighting rig (Tools/ue_build_demo_map.py)
Sun pitch -50 / yaw 120, intensity 4, warm (255/245/230), atmosphere sun light
Sky light 2.6 with real-time capture, sky atmosphere, height fog (density 0.008)
Unbound post-process volume with fixed exposure (min = max brightness) so a shot cannot wash out or crush to black depending on how much sky it frames
Dynamic-only: r.AllowStaticLighting=False + all lights/MOVABLE, so the editor's LIGHTING NEEDS TO BE REBUILT warning no longer fires and no build is required
Bugs found and fixed on the way
Blender diffuse colours do not survive the FBX -> Unreal import. Every site material arrived white and the terrain arrived with WorldGridMaterial — this, not the sun, was what made the scene look blown out. The demo builder now creates and assigns M_Asphalt, M_Concrete, M_Ground, M_RoadPaint.
Only one of the three crossings reached the game. Each zebra band was its own object, so Blender renamed the duplicates .001/.002 and exact-name site assembly skipped them. All bands are now one Crossing_Markings mesh (36 verts, 3 bands).
Demo cameras were wrong. Street-level sat inside the facade body (rendering its unlit back face); the crossing camera aimed at the s=36.6 crossing instead of the designated s=130.1 (UE X -14956).
Terrain had no material and imported as a bright default grid; now gets a ground material in the builder.
Cleared a committed Android File Server SecurityToken (plugin disabled, shipping-excluded, must stay empty).
Docs
Screenshots/README.md: one consolidated table for all 14 shots with map, camera view and description; all approved.
MEMORY.md: records the material-import, exposure, light_color struct, band-naming, camera-bounds and lighting-build traps.
Collision/reset/pause still need a human keyboard check (code is in place).
Completes the **Fixed daytime lighting and basic ambience** item for `0.1.0`. All 14 screenshots approved by the owner.
## Lighting rig (`Tools/ue_build_demo_map.py`)
- Sun pitch -50 / yaw 120, intensity 4, warm (255/245/230), atmosphere sun light
- Sky light 2.6 with real-time capture, sky atmosphere, height fog (density 0.008)
- Unbound post-process volume with **fixed exposure** (min = max brightness) so a shot cannot wash out or crush to black depending on how much sky it frames
- **Dynamic-only**: `r.AllowStaticLighting=False` + all lights/`MOVABLE`, so the editor's `LIGHTING NEEDS TO BE REBUILT` warning no longer fires and no build is required
## Bugs found and fixed on the way
1. **Blender diffuse colours do not survive the FBX -> Unreal import.** Every site material arrived white and the terrain arrived with `WorldGridMaterial` — this, not the sun, was what made the scene look blown out. The demo builder now creates and assigns `M_Asphalt`, `M_Concrete`, `M_Ground`, `M_RoadPaint`.
2. **Only one of the three crossings reached the game.** Each zebra band was its own object, so Blender renamed the duplicates `.001`/`.002` and exact-name site assembly skipped them. All bands are now one `Crossing_Markings` mesh (36 verts, 3 bands).
3. **Demo cameras were wrong.** Street-level sat *inside* the facade body (rendering its unlit back face); the crossing camera aimed at the s=36.6 crossing instead of the designated s=130.1 (UE X -14956).
4. **Terrain had no material** and imported as a bright default grid; now gets a ground material in the builder.
5. Cleared a committed Android File Server `SecurityToken` (plugin disabled, shipping-excluded, must stay empty).
## Docs
- `Screenshots/README.md`: one consolidated table for all 14 shots with map, camera view and description; all approved.
- `MEMORY.md`: records the material-import, exposure, `light_color` struct, band-naming, camera-bounds and lighting-build traps.
- `TODO.md`: lighting item marked done.
## Remaining in Gameplay for 0.1.0
- Geographic attribution display (`(c) OpenStreetMap contributors` + licence link) — separate task/branch.
- Collision/reset/pause still need a human keyboard check (code is in place).
Fixed daytime lighting and basic ambience for the DemoMap:
- Sun pitch -50 / yaw 120 (intensity 4, warm), sky light 2.6 with real-time
capture, sky atmosphere, height fog, and an unbound post-process volume with
fixed exposure (min = max brightness) so no shot washes out or crushes to
black depending on how much sky it frames.
- Root cause of the washed-out look was NOT the sun: Blender's flat diffuse
colours do not survive the FBX->Unreal import. Every site material arrived
white and the terrain arrived with WorldGridMaterial. The demo builder now
creates and assigns M_Asphalt / M_Concrete / M_Ground / M_RoadPaint.
- Crossing fix: each zebra band was its own object, so Blender renamed the
duplicates .001/.002 and site assembly (exact-name append) kept only one.
All bands are now a single Crossing_Markings mesh (36 verts, 3 bands).
- Terrain gets a Ground_Earth material in the builder so it stops importing
as a white grid.
- Demo cameras: street-level no longer sits inside the facade body (was
rendering its back face), and the crossing camera aims at the designated
s=130.1 crossing (UE X -14956) looking along the crosswalk.
Screenshots re-rendered; the four demo views are marked needs-review for the
owner's approval. MEMORY.md records the material-import, exposure,
light_color, band-naming and camera-bounds traps.
The editor warned 'LIGHTING NEEDS TO BE REBUILT' (Build Lighting Only /
BuildLighting) because the sun and sky were Stationary with no baked lightmap.
The demo is a fixed daytime scene lit entirely dynamically, so:
- Config/DefaultEngine.ini: r.AllowStaticLighting=False - nothing to build.
- DemoMap + ReviewMap builders: sun, sky light, height fog and the staged
mesh components are set to ComponentMobility.MOVABLE.
Also clears the Android File Server SecurityToken in DefaultEngine.ini: the
plugin is disabled and excluded from shipping, and the value is a credential
that must not be committed.
All 14 screenshots re-rendered; no lighting warnings in the build or run logs.
- Screenshots/README.md: one table for all 14 shots (review + demo) with an
index, the map each came from, camera view and description; all approved
2026-11-07 by the owner. Scene conventions now document both maps and the
dynamic-only lighting setup.
- TODO.md: Fixed daytime lighting marked done; the stale 'corridor renders
near-black' note on the crossing item updated.
Completes the Fixed daytime lighting and basic ambience item for 0.1.0. All 14 screenshots approved by the owner.
Lighting rig (Tools/ue_build_demo_map.py)
Sun pitch -50 / yaw 120, intensity 4, warm (255/245/230), atmosphere sun light
Sky light 2.6 with real-time capture, sky atmosphere, height fog (density 0.008)
Unbound post-process volume with fixed exposure (min = max brightness) so a shot cannot wash out or crush to black depending on how much sky it frames
Dynamic-only: r.AllowStaticLighting=False + all lights/MOVABLE, so the editor's LIGHTING NEEDS TO BE REBUILT warning no longer fires and no build is required
Bugs found and fixed on the way
Blender diffuse colours do not survive the FBX -> Unreal import. Every site material arrived white and the terrain arrived with WorldGridMaterial — this, not the sun, was what made the scene look blown out. The demo builder now creates and assigns M_Asphalt, M_Concrete, M_Ground, M_RoadPaint.
Only one of the three crossings reached the game. Each zebra band was its own object, so Blender renamed the duplicates .001/.002 and exact-name site assembly skipped them. All bands are now one Crossing_Markings mesh (36 verts, 3 bands).
Demo cameras were wrong. Street-level sat inside the facade body (rendering its unlit back face); the crossing camera aimed at the s=36.6 crossing instead of the designated s=130.1 (UE X -14956).
Terrain had no material and imported as a bright default grid; now gets a ground material in the builder.
Cleared a committed Android File Server SecurityToken (plugin disabled, shipping-excluded, must stay empty).
Docs
Screenshots/README.md: one consolidated table for all 14 shots with map, camera view and description; all approved.
MEMORY.md: records the material-import, exposure, light_color struct, band-naming, camera-bounds and lighting-build traps.
Collision/reset/pause still need a human keyboard check (code is in place).
Completes the **Fixed daytime lighting and basic ambience** item for `0.1.0`. All 14 screenshots approved by the owner.
## Lighting rig (`Tools/ue_build_demo_map.py`)
- Sun pitch -50 / yaw 120, intensity 4, warm (255/245/230), atmosphere sun light
- Sky light 2.6 with real-time capture, sky atmosphere, height fog (density 0.008)
- Unbound post-process volume with **fixed exposure** (min = max brightness) so a shot cannot wash out or crush to black depending on how much sky it frames
- **Dynamic-only**: `r.AllowStaticLighting=False` + all lights/`MOVABLE`, so the editor's `LIGHTING NEEDS TO BE REBUILT` warning no longer fires and no build is required
## Bugs found and fixed on the way
1. **Blender diffuse colours do not survive the FBX -> Unreal import.** Every site material arrived white and the terrain arrived with `WorldGridMaterial` — this, not the sun, was what made the scene look blown out. The demo builder now creates and assigns `M_Asphalt`, `M_Concrete`, `M_Ground`, `M_RoadPaint`.
2. **Only one of the three crossings reached the game.** Each zebra band was its own object, so Blender renamed the duplicates `.001`/`.002` and exact-name site assembly skipped them. All bands are now one `Crossing_Markings` mesh (36 verts, 3 bands).
3. **Demo cameras were wrong.** Street-level sat *inside* the facade body (rendering its unlit back face); the crossing camera aimed at the s=36.6 crossing instead of the designated s=130.1 (UE X -14956).
4. **Terrain had no material** and imported as a bright default grid; now gets a ground material in the builder.
5. Cleared a committed Android File Server `SecurityToken` (plugin disabled, shipping-excluded, must stay empty).
## Docs
- `Screenshots/README.md`: one consolidated table for all 14 shots with map, camera view and description; all approved.
- `MEMORY.md`: records the material-import, exposure, `light_color` struct, band-naming, camera-bounds and lighting-build traps.
- `TODO.md`: lighting item marked done.
## Remaining in Gameplay for 0.1.0
- Geographic attribution display (`(c) OpenStreetMap contributors` + licence link) — separate task/branch.
- Collision/reset/pause still need a human keyboard check (code is in place).
Squash-merged into main as commit accf3a5 (git merge --squash gameplay-lighting-0.1.0, then one commit; pushed 1dbe737..accf3a5). All 14 screenshots were approved by the owner before merging. Closing.
Squash-merged into main as commit accf3a5 (git merge --squash gameplay-lighting-0.1.0, then one commit; pushed 1dbe737..accf3a5). All 14 screenshots were approved by the owner before merging. Closing.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Completes the Fixed daytime lighting and basic ambience item for
0.1.0. All 14 screenshots approved by the owner.Lighting rig (
Tools/ue_build_demo_map.py)r.AllowStaticLighting=False+ all lights/MOVABLE, so the editor'sLIGHTING NEEDS TO BE REBUILTwarning no longer fires and no build is requiredBugs found and fixed on the way
WorldGridMaterial— this, not the sun, was what made the scene look blown out. The demo builder now creates and assignsM_Asphalt,M_Concrete,M_Ground,M_RoadPaint..001/.002and exact-name site assembly skipped them. All bands are now oneCrossing_Markingsmesh (36 verts, 3 bands).SecurityToken(plugin disabled, shipping-excluded, must stay empty).Docs
Screenshots/README.md: one consolidated table for all 14 shots with map, camera view and description; all approved.MEMORY.md: records the material-import, exposure,light_colorstruct, band-naming, camera-bounds and lighting-build traps.TODO.md: lighting item marked done.Remaining in Gameplay for 0.1.0
(c) OpenStreetMap contributors+ licence link) — separate task/branch.Completes the Fixed daytime lighting and basic ambience item for
0.1.0. All 14 screenshots approved by the owner.Lighting rig (
Tools/ue_build_demo_map.py)r.AllowStaticLighting=False+ all lights/MOVABLE, so the editor'sLIGHTING NEEDS TO BE REBUILTwarning no longer fires and no build is requiredBugs found and fixed on the way
WorldGridMaterial— this, not the sun, was what made the scene look blown out. The demo builder now creates and assignsM_Asphalt,M_Concrete,M_Ground,M_RoadPaint..001/.002and exact-name site assembly skipped them. All bands are now oneCrossing_Markingsmesh (36 verts, 3 bands).SecurityToken(plugin disabled, shipping-excluded, must stay empty).Docs
Screenshots/README.md: one consolidated table for all 14 shots with map, camera view and description; all approved.MEMORY.md: records the material-import, exposure,light_colorstruct, band-naming, camera-bounds and lighting-build traps.TODO.md: lighting item marked done.Remaining in Gameplay for 0.1.0
(c) OpenStreetMap contributors+ licence link) — separate task/branch.Squash-merged into main as commit
accf3a5(git merge --squash gameplay-lighting-0.1.0, then one commit; pushed 1dbe737..accf3a5). All 14 screenshots were approved by the owner before merging. Closing.Pull request closed