The Future of City-Building Games: A Developer-Player Perspective
Grab a coffee or tea, relax, and enjoy a journey through my thoughts on city-building games. This is the first part of a thorough analysis of the genre, a text that I hope will contribute to the genre's collective consciousness.
My Journey with the Genre
My first contact with the genre was a game called A-Train in the mid-90s. I remember being fascinated by watching my city evolve. I felt like a gardener tending my plants and flowers. They would flourish or die depending on my actions. What an amazing discovery for a kid! I didn't really understand what I was doing, but I knew that things were happening. The city was alive. Later, I enjoyed all the popular SimCity titles for thousands of hours, along with Cities XL and later the Cities: Skylines series. Recently, I've also tried Citystate 2 because of the hype around the new trailer for Citystate Metropolis.

As a programmer, I understand why it is such a difficult task to create a city-building game that will make everyone happy and keep your PC from exploding. But as a player, when they announce a new game, I really feel like that 10-year-old kid waiting to finish school to go and build his city.
Citystate 2 is like SimCity 4 with Politics
Citystate 2 is SimCity 4 with politics and a more complex economy. When I started playing Citystate 2, I began to experience the same feelings and reflexes as with SimCity 4. Mind you, I haven't played SimCity 4 for over 15 years, so I had no recent memories. After playing Cities: Skylines for so long, I had forgotten how different the experience was.
It is remarkable that one person managed to create Citystate 2. It's not perfect, but it could easily be considered SimCity 4.5. Maybe I'm wrong, but it's like the creator had a vision to take SC4 and add a deeper social and political layer. And he did that. He didn't try to innovate on the city-building part. He kept all the SC4 concepts almost identical.

In both SC4 and Citystate 2, there was a constant balancing act of bringing more people into the city to increase income from taxes while ensuring the infrastructure could handle it. This was the main loop for all my playthroughs: zone stuff, make money, expand infrastructure, lose money, zone stuff, make money, you get it. Playing with policies and making experiments was also fun. I enjoyed taking actions and anticipating how my citizens would react.
The downside of that experience was that it didn't allow me to be creative with my city. The pleasure of designing my city to look and feel realistic wasn't there. I just acted in order to influence the simulation. In the Cities Skylines games, I take great satisfaction from planning an area and manually placing intersections. I don't care that much about money and taxes. What I care about is whether my city makes sense. Does it look and feel realistic? Watching all the trains and vehicles carry on their tasks and blend together is really amazing. On the other hand, I miss the strategic aspect of how to make the city survive. I miss the feeling that the environment (both economic and physical) reacts to my actions. Is it possible to have both?
Cultivate the Environment
A skyscraper in SimCity 4 was the result of the sum of many parameters. Something difficult to achieve. An accomplishment. You had to create the circumstances in which a skyscraper would finally emerge as a testament to your city's evolution and economic success. In Skylines, it just happens. Too easy. Too anticlimactic.
I am not saying, just make skyscrapers difficult to make city-building more interesting. My point is that the idea of cultivating your environment to get results is a very satisfying game loop. Not only for good outcomes but for bad ones too. And cultivating the environment can extend to economic strategy, social policies, zoning decisions, transportation and the list goes on.

I should mention here Urbek City Builder, which is built around that idea. The game's core mechanic revolves around environmental cultivation. Buildings automatically upgrade based on their proximity to specific resources and neighboring structures.
Talking about bad outcomes brings me to another matter. It puts me off how clean everything is in Skylines. It looks plastic and fake. Where is the wear, the dirt? Where is life? I need the game to reflect time. Buildings get old and classic, roads crack and no one cares, neighborhoods can become slums, others will get gentrified.

Cities: Skylines' pitch focused on cities that tell stories. But how can you tell stories with a plastic clean environment? The models are lifeless. There is the option to manually add decals and such, but this is not the same as having the simulation react to the environment. I would prefer a game called Cities: Timelines to Cities: Skylines.
SimCity 5 Was a Magical Disaster
A revolutionary disappointment. A dream turned into a nightmare. The artistic style, although too playful for my taste, was implemented to perfection. The sounds and animations were stunning. The soundtrack was majestic. The anticipation made me feel like a child again waiting for Christmas.
I will not get into the details of why it was a disaster. We all know. The technical novelty was the agent-based system. A new blueprint for city-building games emerged where agents replaced the macroeconomic simulation. Cities: Skylines found the perfect timing to sell water to all of us, hyped and left dry. But they didn't try to create a better SimCity 4. Instead, they went to make SimCity 5 with more space and no multiplayer. We never got the "real" successor to SC4.
The Two Models of City Building
In SimCity 5 and Skylines 1 and 2, the outcome is now the result of agent behavior. The agents drive the economy based on some rules. They do their pathfinding, they buy stuff, they have an internal state. The sum of their behavior creates the final outcome. In contrast, in the macro-simulation model of SimCity 4, the algorithm reacts to user actions and then renders the reality. I know that this is a very simplistic explanation but the point is, these two models are entirely different. The agents are "what you see is what you get" in a way. A one-to-one representation of what is going on. The rules are hidden and they manifest themselves in ways you wouldn't always understand. Even the developers can't reliably predict. Agents are too dynamic in nature. Unlike the agent models where the process is visible in front of you, in the macro model the process is hidden and you just see the outcome.
I know that it's not accurate, but for the purpose of this text, I will refer to these two models as the "agent model" and the "macro model".
The macro model can be magical as you see a delayed reaction to your decisions, but it can also become quite boring when the rendered reality is not "real". The agent model opens up more interesting behavior. It just looks more like real life. You can "touch" every single one of your citizens. Everything is in front of you. And this is beautiful. But a lot of problems come with that, because the agents' interactions can be unpredictable and chaotic. Controlling and balancing the game as a developer could be tedious or nearly impossible. Another problem is that we players want to make cities with millions of citizens. And none of the three attempts seem to be able to deliver that. Is it impossible?
The Next Model
I think most players agree that the macro model is a step back. On the other hand, the agent model seems to have a computation limit and some serious balancing issues. So what is coming next? Is it a combination, or does something entirely new wait in the corner to be discovered?
I will attempt to break down some aspects of the game and demonstrate how I would structure a solution. Given that I don't have access to the code, my critique may be inaccurate or wrong, but I will give it a shot anyway.
In all the agent-based releases I noticed that they fall for the hammer case: "When you have a hammer, everything looks like a nail". Agents are everywhere. I suspect that this made sense for economical reasons. Once you make water work like that, why not make electricity and trash, education and the police and everything work in a similar fashion with some adjustments?

Water and electricity are extremely boring topics. They are just something that you have to do. Nobody admires the power line transferring electricity to the houses. Every couple of hours of gameplay you just have to manage the system to have adequate production. Does the agent system enrich the experience? No. Would a simulation approach free up some resources? I don't know. But if it does, then it's a no-brainer. Same with water and waste management.
Regarding deathcare: This is one of the most stupid things in the Cities Skylines games. The idea of managing the dead can be realistic. The fact that you have hearses flooding the streets is not and it is just not good game design. It is crystal clear that deathcare should not be another nail for the hammer. The question is which part of the deathcare makes sense to rely on the agent system and which part should be handled in another way to achieve a realistic representation.

This is a good scenario that someone should brainstorm on. One proposal is to create a "translator", a connection between the agent world, the macro model, and what the user will actually see. It doesn't matter how, but an agent representing a person will die at some point, either by an internal state rule or forced by the macro model. It doesn't matter. Our goal is to have a realistic death ratio on paper and a realistic representation in the actual city. Not having 15 hearses stuck at a traffic light.
In order for the game to be fun and engaging, the players have already accepted that time and space are not realistic. This is a significant abstraction. An agent looks, moves, and behaves like we are in the real world. But it will take an in-game time of 1 day to go from A to B, where in real life this would be a two-hour trip. For some reason we retain our immersion. I will assume that players want to see agents behave exactly as they do in the real world and at the same time are fine with letting time and space run in an imaginary representation. Players also need real numbers on building capacity. Real numbers on city management. Cars, services, and everything live and breathe as in a real city. Do you see the gap? We have parallel "simulations" running. Or we should have. One should take care of the macro numbers. One should take care of the agent representation. One should be the balancer between the two.
Back to the deathcare. A possibly better approach would be to let the macro model generate realistic numbers for death cases. Is it an epidemic, is it a normal situation, is it the boomer generation getting very old? Make the numbers make sense. Now use the "translator" to express that in realistic representation in the agent model.
The Absence of Construction Industry
A player decides to zone 100 houses at once and the game says "Fine! Give me 5 minutes and you will have 100 houses ready with 500 population". This is an unrealistic spike in the ecosystem. How could the city sustain the parallel building of so many houses in terms of material, workers, infrastructure, etc.? It's not realistic and it is the source of many problems down the line. "There is no such thing as a free lunch". This complete absence of the construction industry is a lost opportunity.
Having a construction industry would solve part of this problem and contribute to more interesting gameplay. The construction industry would trigger new construction projects, gentrification projects, maintenance, and repair of existing buildings. It would require offices, warehouses, and related industry and be part of the market for materials and resources. It doesn't have to be granular and detailed. It can be incorporated into the existing economy dynamics.
Workers & Resources: Soviet Republic is game that uses this idea. It treats construction as a simulated, multi-step industrial process that requires resources, vehicles, and workers, effectively making construction a key part of the in-game economy and agent simulation.

In this scenario, a player would get the best of both worlds. Construction becomes immersive and meaningful. It's not an unlimited resource. And the player can influence via taxes or incentives the construction capabilities of the city, which in turn will define how quickly we can build and maintain existing infrastructure and buildings.
Elevation, Perfection and Imperfections
When Skylines 2 was released, I was deeply disappointed with zoning. To me, it's unimaginable that a new city-builder doesn't support curved zoning and variability in elevation. Buildings zoned out of a strict grid are ugly and jellified with unnecessary gaps. Zero innovation from the previous game. Sure, you can use mods, but still, I don't want to place all the buildings by hand and hide imperfections with bushes and trees.

I am not saying that it is not a tricky problem, but I am sure that solutions can be found and this problem converted into a feature. Convert this miserable situation to interesting gameplay. Allow the player to decide and manage construction on difficult terrain. I am not knowledgeable on the subject, but I guess you can have some options like: build a flat platform, integrate the building on the slope, flatten the land, or build on incremental levels. Give options for the road behavior. Introduce steps in the pavements, different walls, and have a minimum rectangular concrete level to avoid the jelly effect. Imperfections in city design can become a feature and give character to communities.
Plopping and Forever Stuff
There are 2 things that I really hate and don't understand: plopping buildings and "forever stuff".
Plopping the same building again and again is boring. Why plop the police station and not just "design" a police station that will grow like other buildings? Let me choose architectural style and give me 10 components. Let me lego my way to a unique combination. This can be applied to buildings, parkings, complexes, services, and literally anywhere. Let me expand horizontally or go vertically. Let me make it small or huge. Once I've designed it, don't plop it, let the construction industry take action.
Regarding the forever stuff: I build a road and it will be forever clean, painted, and pristine. Same with parks, same with buildings, same with everything. Let everything evolve, age, decay, get dirty, and potentially get renewed and be fresh again.

Dreaming of a Million People
For some reason, a million people is the bar a city builder has to pass. But why a million? Why not 2, 3, or 15 million? If your goal is realism, a million limit is still not good enough. Most famous big cities have way more than 1 million people. The agent model seems to be close enough to achieve this. But what about 10 million people? How could the agent model achieve this?
Before I continue, it is a good time to recap some things mentioned in this text:
- The agent model alone is hard to control and provide a realistic outcome
- The macro model provides better control over the economy dynamics
- The agent model mimics reality in a very engaging way
- The macro model "fakes" the rendered reality and becomes boring soon
- The agent model needs very powerful computers to simulate large numbers of agents
Back to the question: How can we simulate millions of agents without frying our CPU? One solution to that kind of problem is clustering or agent aggregation. I will not get into details, but the idea is to group the agents in ways that make sense and reduce the computation needs. If you combine agent aggregation with our macro model, then maybe a new design will possibly emerge.
Time
I don't think that I have to debate that keeping time and space realistic would make the game unplayable. Players accept more easily abstracting time than space. The problem is: how do you model realistic traffic patterns and human behavior when time and space are not realistic at all? This is a hard problem. Some things you can abstract, some other things you can't. What is the goal? To maintain the immersion! Keep the macro model's numbers real and render something that makes sense.
In the current agent model, in my opinion the problem is that the agents are responsible for far too many things. They have to actually do their tasks, be visible in real-time as they do their tasks, and as a whole, achieve a balanced economy and a realistic representation for the player.
I'd argue that this could actually be possible if the goal was to achieve a realistic 1-to-1 simulation. But we decided that time should be different, and space should be different, and so many other variables are absent because it's a game!
Something has to balance out what was taken out of the equation.

A New Hybrid Model
I often wonder how I would design my dream city-building game. Maybe I am naive, maybe I am just wrong, but I will give it a try regardless.
A macro model will be responsible for managing the economy dynamics and setting the tendencies. A clustered agent model will be responsible for representing what is going on in the macro model. Between them, the translator converts numbers to agent behavior that makes sense in our altered time-space. The flow of the information will be one way and look like this:
Action → Macro Model → Translator → Agent Model
The macro model will be responsible for taking any action and transitioning the simulation to the next state. The translator is responsible for receiving the next state and manifesting it in the agent world.
An example: The macro model identifies that an area has high pollution. According to our formulas, a percent of the population should get sick. Let's say that 10,000 people live in that area and 10% will get sick each game year. That will result in 1,000 people sick. We know that 1,000 ambulances flooding the city is not realistic to see and certainly not possible to get processed in the user's system. And if you remembered, we abstracted time and space, so why not do the same with our sick people? The translator decides that 20% will be a realistic representation for the user and it will decide to spawn 200 agents in the course of a game year. The final outcome will be: realistic numbers when investigating your city stats, real agents running around the city making it look alive, and more optimal for the CPU.
The most important aspect of this approach is that it is reproducible and testable. You are not at the mercy of chaotic agent interactions. The agents are not responsible for running the economy. They just represent it in a way that immerses the user and is analogous to the economic dynamics. As a developer, having 3 individual systems, testing becomes more practical. The macro model takes the input and moves the game to the next state. The translator takes a game state and "demands" a representation from the agents. The agents receive the desirable outcome and regulate their behavior over time.
Potential New Problems with the Hybrid Model and Some Suggestions
Very briefly because this text is becoming too long. In order for the translator to be efficient and not become the new bottleneck, I would suggest 3 strategies:
- Have "templates" or cached commands for common scenarios or uninteresting events
- Batching computations: The translator should not be sensitive to every little game state transition. It should wait to compute only significant amounts of data. That threshold will differ for each subsystem
- A similar concept to eventual consistency between the macro model and the agent model will also help reduce unnecessary computations
If you are still reading, congratulations and thank you for making it this far. I wrote this text not because I believe that I am more clever than existing developers. I am not. I did it because I love the genre and I hope that a team of more capable people than me will potentially get inspired by some of these ideas.
Peace