Street Legends Devlog 2: The Block is Alive
Vega5 min read

Last time, we rolled a city. This time we’re filling it with people.
For the first few weeks, civilians were simply scenery. They had an extremely simple pathfinding script and wandered around aimlessly. In addition, they witnessed nothing. Probably the perfect “model citizens” from our crew’s point of view. But that’s no fun!
Crimes need witnesses and witnesses need reasons to be where they are when the crime occurs. In addition, they need a reason to talk or keep their mouths shut. So the NPC’s got lives.
Everyone has somewhere to be and their own opinions and set of values.
Each resident has:
A name. An actual government name not just “NPC_035”.
A home. Well, most. About 93% of the population are housed. The rest live rough. Homeless or ___________
Usually some type of job. Around two-thirds work at one of the city’s businesses
A schedule. Wake, shift, home, bed. A quarter of the city are night owls and run it on the other side of the clock. So 3am isn’t completely empty.
Going home literally means going home: They walk to their front door and step inside. While they’re in there, the sprite switches off and they witness nothing. So, a crime committed at 2am on a residential street has mostly closed doors as an audience, and the same crime at 5pm will have residents walking home, thus witnesses.
Food and drink get bought at venues that sell them.
Sleep only refills better in one’s own bed while those sleeping on the street get less
Company fills by standing near somebody and talking.
In addition to needs, they have feelings: content, happy, optimistic, accomplished, sad, angry, scared, ashamed, tired, bored, or lonely. Usually, it comes from whichever bar is emptiest. Events can override it for a period: feeling accomplished after a shift, happy after a night out with friends, scared when a crime is committed in front of them, and so on.

Four Bars and a Feeling
Each feeling has a reason:
Feeling tired: slept rough again
Angry: running on empty
Happy: night out at the boom-boom room
The cart is read-only as these people do not take orders. That will change later, in certain cases, when recruiting is added.
They Have Opinions About You
Every civilian holds an opinion, from -100 to 100, of every homie who’s ever worked in front of them. It drifts back towards zero over time as it is a memory not a permanent record.
Watching a homie put in work costs them a lot of standing: -16, and more if it scared them.
Hearing about it costs a little. Word gets around the neighborhood, so a job on the block sours everybody who lives there, even people who were at work at the time.
Neighbors form opinions of each other by talking. Chats usually go well, unless one of them brought a bad mood to it.
The neighborhoods themselves carry an attitude too: friendly, indifferent or hostile. Keep working the same block and it turns on you.
The chain I built this for
This is the whole reason civilians got lives:
A homie shakes down a corner store in daylight.
Anyone within the witness radius sees it. The radius is halved at night.
Each witness rolls against that homie's reputation. A nobody gets reported. A Legend (with a pistol showing) scares up to 75% of them into keeping quiet.
The ones who talk put heat on the crew, more in hostile neighbourhoods (1.5×) and less in friendly ones (0.6×). A rat emoticon pops over their head as they do it.
The ones who don't talk get a zipped-mouth emoticon and feel Scared.
Once the fear wears off, they don't go back to Content. They go to Ashamed: "Kept my mouth shut."
That last beat doesn’t change any numbers. It’s there because it should be. Somebody watched a man get robbed, said nothing, and has to live on that street.
Emoticons

Everyone carries a small standing mood icon, and events pop a bubble above them for a couple of seconds. Laughing during a good conversation or a completed crime. Drunk upon finishing a drink. Sad when beaten in a fight. Shocked when being arrested.
You can read the street at a glance: a knot of rats on the corner means the heat you’re about to take. Selecting somebody puns their mood icon.
The bubbles run on real time rather than game time, so they last the same two seconds whether the game is on normal speed or 12×. At 12× game time, a bubble would otherwise be gone before you ever saw it.
Traffic

Vehicles cruise around the map without much purpose or destination for the time being. They come in at the edges of the map and drive right-hand traffic. They pick a turn at each junction, brake behind a car ahead, and leave off the far side. The number of cars follows the clock: full traffic during the day, 70% at dusk, 35% overnight.
Every crossing was classified back at generation, so downtown has signals, residential streets have stop signs, and empty corners have nothing. Getting that right took more passes than I expected:
The stop line is behind the crosswalk. It's the car's nose that has to stop short of it, not its middle. The first version parked everybody on the stripes.
A car that's through the line is committed. Otherwise the light changes while a car is halfway across the junction, and it freezes in the middle.
Every approach reads the post on its own corner, the one facing it, not the one across the intersection. Each junction gets four posts.
Signals cut a green short if a line of cars is waiting on red and nobody is using the green. No sitting through a full cycle for an empty road.
Lights are staggered by position, so the city doesn't blink in lockstep.
Drivers brake for anyone on foot: homies, civilians, cops, rival soldiers.
Everybody obeys, for now. Rolling stops and red-light runners are the obvious next layer once drivers get personalities.
The homies run of the same idea, turned up. They get hungry, tired, and want a drink, and when they’re idle they look after themselves: buying meals at the taco shop and sleeping at the crib.
Their mood is a number built from DF-style thoughts that expire: Ate well +8, Put in work +6, Got locked up -15. Let it drop below 25 and they start rolling towards a crash out. That’s either a bender, drinking the crew’s money, or a rogue robbery: unauthorized, fully witnessed, with the homie pocketing half. A broke crew can’t eat, and a crew that can’t eat snaps. You can end up with a homie on a rogue robbery because you spent the good money on bail
Next Time
The crew has been shaking down corner stores this whole post. Next time I'll talk about what that money actually buys: protection has to mean something. Robberies, rival crews working the same streets, and the counter that eventually tells your collector to get lost.
Street Legends is built in Unity.

Comments