Uploaded June 2026 | Updated September 2026, 2 weeks ago
How I lit a full UE5 city — thousands of glowing windows, lit street lamps,
ground spill puddles, atmospheric fog — without placing a single light actor.
In this video I walk through the architecture, decisions, and lessons from building CityGen V1.3's day/night system: a single CityGenTimeOfDay actor writing one scalar into a Material Parameter Collection, with every emissive material in the city reading from it. One actor. One scalar. Zero point lights — and zero performance cost from lighting at this scale.
────────────────────────────────────────
🏙️ GET CITYGEN
────────────────────────────────────────
► Get it on FAB: fab.com/listings/943e7e83-f24c-4914-a3b5-d6ac38a9f017
► Free Playable Demo: patreon.com/CodeLikeMe/posts/try-citygen-demo-160098745
► Project Files: patreon.com/CodeLikeMe/posts/161477888
Covered:
• Why per-source light actors don't scale (shadow maps, culling, draw calls)
• Separating "appears lit" from "actually casts light"
• ACityGenTimeOfDay actor architecture — sun, moon, sky light, post-process
• Lesson: directional light intensity is in LUX (and why this caught me out)
• Lesson: ForwardShadingPriority silences the "competing directional lights" warning
• Lesson: high Min EV keeps night dark (counter-intuitive exposure semantics)
• SkyLight RecaptureSky on an interval instead of per-frame
• Material Parameter Collection pattern — one scalar, many materials
• Smooth 0→1→0 ramp with configurable lit window + 30-min fades
• M_House_Windows + M_Light material implementations
• Light spill decals via UDecalComponent (cheaper than spot lights)
• Door spill decals using the same pattern
• ExponentialHeightFog colour-shifting with the sun for free
• Honest tradeoffs: no real shadows, no dynamic character lighting, when to use real lights instead
Tradeoffs covered honestly — this is a cityscape technique, not a replacement
for real lights at character scale. The video tells you exactly where it breaks
down so you can mix the two approaches.
#UnrealEngine #UE5 #GameDev #IndieDev #CityBuilder #UE5Lighting #MaterialParameterCollection
How I lit a full UE5 city — thousands of glowing windows, lit street lamps,
ground spill puddles, atmospheric fog — without placing a single light actor.
In this video I walk through the architecture, decisions, and lessons from building CityGen V1.3's day/night system: a single CityGenTimeOfDay actor writing one scalar into a Material Parameter Collection, with every emissive material in the city reading from it. One actor. One scalar. Zero point lights — and zero performance cost from lighting at this scale.
────────────────────────────────────────
🏙️ GET CITYGEN
────────────────────────────────────────
► Get it on FAB: fab.com/listings/943e7e83-f24c-4914-a3b5-d6ac38a9f017
► Free Playable Demo: patreon.com/CodeLikeMe/posts/try-citygen-demo-160098745
► Project Files: patreon.com/CodeLikeMe/posts/161477888
Covered:
• Why per-source light actors don't scale (shadow maps, culling, draw calls)
• Separating "appears lit" from "actually casts light"
• ACityGenTimeOfDay actor architecture — sun, moon, sky light, post-process
• Lesson: directional light intensity is in LUX (and why this caught me out)
• Lesson: ForwardShadingPriority silences the "competing directional lights" warning
• Lesson: high Min EV keeps night dark (counter-intuitive exposure semantics)
• SkyLight RecaptureSky on an interval instead of per-frame
• Material Parameter Collection pattern — one scalar, many materials
• Smooth 0→1→0 ramp with configurable lit window + 30-min fades
• M_House_Windows + M_Light material implementations
• Light spill decals via UDecalComponent (cheaper than spot lights)
• Door spill decals using the same pattern
• ExponentialHeightFog colour-shifting with the sun for free
• Honest tradeoffs: no real shadows, no dynamic character lighting, when to use real lights instead
Tradeoffs covered honestly — this is a cityscape technique, not a replacement
for real lights at character scale. The video tells you exactly where it breaks
down so you can mix the two approaches.
#UnrealEngine #UE5 #GameDev #IndieDev #CityBuilder #UE5Lighting #MaterialParameterCollection










