Community

The City Gets Weather

BBox: Kingpin · published

Two things landed this week that change how the city looks and feels. One you notice the moment you load in. The other you notice at night.

It looks like a city now

We've been staring at the same grey-on-grey map for months.The color palette is gone; replaced with something closer to what you'd see if you pulled up a real neighborhood in a mapping app. The ground is a warm off-white. Parks and green space are actually green. Water is that specific shade of teal that somehow reads as water the moment you see it. Roads sit on top with a subtle outline, a darker halo around each line that gives them weight and makes the street grid legible at a glance.The city now communicates what it is before you've done anything. You can look at a block and feel the neighborhood: where the density is, where the open space is, where the streets get busy. That's new.The terrain data was always there. The shape of the city, the parks, the rivers, the road network were all loaded and real. We just weren't doing it justice visually. The map loads fast and stays fastHow the map gets built when you load in changed too.Previously, the city was assembled from a very large number of individual moving parts. Every road, every park edge, every water boundary was its own live thing; running, listening, taking up space every single frame. As cities got bigger, the weight of all that added up. Panning felt heavier than it should. The first few seconds after load had a soft stutter to them.We rearchitected that completely. The city's visual data; everything that isn't interactive, everything that doesn't move or change, is now resolved once, early, all together, and then it's done. What you pan around is the result of that, not the work itself. The individual pieces are gone by the time you see the map.The difference in feel is hard to put numbers on. The map is just there. Immediate. Smooth regardless of city size. Buildings that you can actually buy and interact with still exist as proper game objects; the city's character, the streets, the terrain, the water, is now backdrop in the best sense: real, detailed, not costing you anything to look at.

It rains at night

Not always. Not on command. Just sometimes, the way it actually works.When night falls, somewhere around 9 PM in game time, there's a chance a shower rolls in. It fades up slowly over a few seconds, holds for a while, then fades back out. The randomness is intentional: some nights are dry, some are a light drizzle, some are a proper downpour. And roughly one night in ten, you get a thunderstorm.The storm version is its own thing. The rain is heavier, the wind angle is steeper, and the sky flashes. Not a cutscene, not a notification; just the screen going briefly white-blue and a crack of thunder following a beat later, the way it does when the lightning is close. Each flash is its own event, spaced out and irregular, because storms aren't regular.All of this comes with sound. Rain builds in volume as the shower intensifies and fades as it clears. Thunder fires as a one-shot after each lightning strike with a slight delay; close lightning, short delay, distant, longer. The audio and visuals are tied to the same system, so they rise and fall together.

The streets stay wet

After the rain ends, the city doesn't immediately snap back to dry. There's a slow fade; the ground holds on to that slightly darker, cooler look for a few minutes of real time before it's gone. It's subtle. Just enough that when you're playing at night and the rain stops, something in the scene still says it just rained here.

How the atmosphere is built

The visual effects, rain, lightning, the wet-ground tint, a faint film grain that runs all the time, a slight darkening at the screen edges, none of it touches the game's simulation. The CPU doesn't know any of it is happening.We use the same approach that makes modern map rendering fast: represent things as mathematical patterns rather than individual objects. The rain isn't hundreds of raindrops being tracked and moved every frame; it's a noise function, a fast hash that runs on the GPU and asks, given this point on screen and this moment in time, is there a drop here? The answer is yes or no, computed instantly, across the entire screen in parallel. No lists, no positions, no tracking.The same principle applies to the film grain, the lightning, and the wet ground. The city can be raining, flashing, and glistening, and the frame budget is identical to a clear afternoon.

Tree shadows

Small thing, but we fixed an issue where tree shadows in parks were nearly invisible; the shadow color was too similar to the ground underneath, so they blended away. They're now a fixed dark tone that reads consistently regardless of what's below. Edge trees have proper depth; dense clusters still flatten out a bit, which is actually realistic. In a full canopy, ground shadows disappear.

More from BBox: Kingpin

Other announcements

All events