Cities: Skylines II Doesn't Have a Traffic Problem. It Has a Routing Problem.

#games#simulation
Highway 401 near Toronto Pearson, one of the widest stretches of the busiest highway in North America

Real traffic spreads across every lane it can find. CS2 traffic doesn't. (Highway 401 in Mississauga, near Toronto Pearson. Photo: Clashmaker, CC BY-SA 2.0, via Wikimedia Commons)

Anyone who has played Cities: Skylines II knows the pattern. You build a highway; nobody uses it. You add one small side road into a district; every car takes it and the big interchange goes empty. Delete the side road, and the interchange jams instantly. Somewhere a single pedestrian is holding up six lanes.

The usual forum reply is "you're building your roads wrong." I think the game is routing its cars wrong.

What CS2 actually does

Colossal Order's own dev diary says agents pick routes by minimizing a cost made of Time, Comfort, Money and Behavior, weighted by who is driving: teens care most about money, adults about time, seniors about comfort. Traffic is nominally part of Comfort. So on paper, congestion is in there.

The behavior says otherwise. Routes look like they're priced on free-flow time: road length divided by speed limit, i.e. how long the road takes when it's empty. If congestion feeds back into the cost at all, it's too weak to matter.

Combine that with every driver of the same type using the same formula, and you get what traffic engineers call all-or-nothing assignment: everyone computes the same best route, so 100% of them take it. A road's capacity never enters the decision. Three age groups don't change that; they just give you three herds instead of one.

What it should do

Real traffic settles into what's known as Wardrop equilibrium (1952): drivers keep switching to faster routes until every route in use takes about the same time. The standard way to model it is to make travel time grow with load, e.g. the BPR curve t=t0(1+0.15 (v/c)4)t = t_0 \left(1 + 0.15\,(v/c)^4\right).

Here's the side-road scenario with that curve, 2,400 cars an hour heading into one district:

Travel time on a side road vs. an interchange as more cars use the side road

Illustrative parameters: the side road takes 3 minutes when empty and carries 600 cars an hour; the interchange takes 4 minutes when empty and carries 1,800.

  • No side road (left end): everyone on the interchange, 5.9 minutes.
  • CS2 with the side road (right end): all 2,400 cars cram onto a road built for 600. Nearly two hours.
  • Equilibrium (the crossing): about a third take the side road, everyone gets there in 4.4 minutes, faster than either extreme.

CS2 only ever lives at the two ends of that chart.

One caveat about the left end. BPR is a smooth curve: past capacity, cars just slow down. They never queue or spill back upstream, so the chart says 5.9 minutes where the game shows gridlock. The difference is lanes. When every car crowds into the same lane and merges at the last second, the interchange's real capacity collapses far below what it was built for. That's fix #4 below.

The fixes aren't research problems

  1. Congestion-aware edge weights. The game already measures flow for its traffic overlay. Feed it back into routing through a curve like BPR.
  2. Don't let everyone reroute at once. Let 10–20% of drivers re-plan each update, or pick routes probabilistically weighted by cost. Otherwise traffic just flip-flops between roads.
  3. Route per destination, not per car. Trips share destinations. One shortest-path tree per destination zone is far cheaper than one search per agent.
  4. Pick lanes early. Look ahead and merge a few segments before the turn, not at the stop line. A May 2026 patch started doing exactly this for highway exits, and Colossal Order said it should noticeably improve car pathing. That's one item off this list, and a good sign for the rest.
  5. Give players the levers. Speed limits and tolls only matter if routing listens to them, and at launch CS2 didn't even let you set speed limits.

To be fair

This isn't trivial. CS2 simulates a huge number of agents and already shipped below its own performance target. Feedback loops cost CPU and can oscillate if tuned badly.

But traffic is the core of the game. A city builder where traffic doesn't behave like traffic is broken at the center, however good the lighting looks.


References