Let the Battle Begin (Mar. 14 '17)
I've been noticing an increasing number of concerned people over my latest very ambitious and highly technical plans and relatively silent weeks that I spent on research. Let me address some of this in this post, paint a picture why I think I am doing what I need to be doing and tell you what will be next.
1. An apparent loss in momentum?
I am deeply aware of how silent I can be as a developer, especially after my "2016 year of silence and complete lack of visible progress".
I completely understand how anxious some of my decisions have made you, like:
- What, he will switch languages? Twice?
- What, he really wants to have millions of detailed cars?
- What, he really wants to simulate millions of citizens at an impossible-sounding degree of detail? (most recently)
I completely respect your feelings about this and I try my best to communicate my reasoning behind such things, but I understand that sometimes I will fail or under-explain things, and sometimes you will just never be able to appreciate why I'm doing things in a certain way, because you are not in my position.
So yes, sometimes it might look like not much is happening, like the project is doomed and so on, but in the meantime, I'm thinking or working silently on exactly the things that need to be done to make all of this great dream a possibility - and this is more important than always having steady visible progress - but of a much more mediocre result.
2. Yes, I want the "impossible"
Another concern I hear very often is "what you are trying to do is computationally infeasible", in varying degrees of technical sophistication and often with the conclusion: "why don't you just try something simpler", where something simpler is usually: crude approximations and extreme aggregation.
It's very easy to point out all the things that make something difficult, it is very hard to overcome the difficulties and it is crucial to even have the motivation to overcome them. I would love to share my exact motivation with you and thus maybe hear more encouraging voices:
Citybound will be all about interacting with the complex behaviours of city transportation and city economy that arise from the interactions and lifestyle choices of individuals.
Both SimCity and Cities: Skylines went some steps in this direction, but were to differing degrees severely limited by a) their technical underpinning and b) their much more humble goals.
I want a game where I can interact with a city of millions, where the fate of the city is a direct result of the fates of every single citizen. I want a game where I see the consequences of my city planning, not based on some statistical models or replacable generic agents, but based on the detailed lifestyle changes that I force onto unique citizens and the new opportunities that I open up for them.
If I succeed, we will not only have the richest, most infinitely interesting and fun-to-interact-with toy the genre ever had, we will have a playful tool to understand ourselves as city-dwellers in the context of millions of others and how our very own lifes are affected by policy, economy and processes which happen, almost imperceptibly, over years and decades. All of this would unfold in front of our eyes and in reaction to our actions in powerful and simple planning tools, so that even children can develop a visceral intuition about cities and large-scale human life that is severely needed to not just improve the real world, but first and foremost to understand and care.
At the same time, it would be the most all-encompassing and detailed model of city life that even research has seen (which is only starting to attempt complete simulations of some aspects of city life).
This all is the motivation I had since the beginning and it only has become clearer in its formulation over time.
3. And I will actually do it!
I find myself in a similar situation as a couple months ago, when I started writing the Roads & Traffic prototype. I did a lot of research on traffic simulation, didn't find something that suited my needs exactly, but had lots of inspiration and a rough model of how I wanted to implement it.
I wanted to show that with the new low-level architecture, I could actually achieve my goal of simulating ~500.000 cars with detailed behaviours. After a lot of optimization work, I had a working proof of concept that confirmed that it is possible.
Now, I want to do the same for the economy-simulation. Maybe the suprising and embarassing realization is that in all these years I didn't even have a good model for how I could achieve my goals of detail and realism in economy, but now I feel that I have a good model.
I did extensive and very thorough research of the best current work in this area, to make really sure I don't miss any existing ideas. Again, I didn't find anything that fits my needs exactly, but I got lots of inspiration along the way.
So again, starting to write actual code today, I will try my best to produce another proof of concept: that I can simulate millions of citizens at the level of detail I want and end up with a stable, reasonable economy.