Also, check out the main homepage at https://aeplay.org/citybound for a more player-centric intro
Also, check out the main homepage at https://aeplay.org/citybound for a more player-centric intro
Otherwise, it’s a solid language choice. L
I've splitted a 20k+LOC Rust project into multiple crates and compilation time improved a lot (still slow compared to other languages) but it's now manageable.
Elaborating the hardware (systemverilog) I'm working on (about a year of work from scratch, nothing fancy) takes 8 minutes.
The full build to a bit file that can be loaded into hardware is an NP-hard optimization problem, so as your design approaches the limits of either the desired clock speed or the amount of space in the chip, it can become very slow.
Placing (not routing!) takes around 24 hours since we need to run in a larger environment than just the block level to get realistic timing reports
https://www.reddit.com/r/rust/comments/78bowa/hey_this_is_ky...
https://www.rust-lang.org/static/pdfs/Rust-Chucklefish-White...
That certainly interests me - particularly how the pathologies of an economy like that emerge from individual actions - and I’ve been looking at Elixir to generate the necessary actor simulation engine. Looks to me like you have that here in Rust.
How could I get involved in helping to add a more detailed economy to this sim?
I will caution that Elixir's runtime performance, particularly with simulation type code, is abysmal. Also, last time I was using Elixir, the available profiling infrastructure was really terrible; I had to buy a new workstation with 64GiB of RAM just to be able to fit the profiling artifacts from one iteration of our small model in memory, which was required in order for it to complete in less than infinite time.
https://www.youtube.com/watch?v=LiIoE8ArACs
It was great, if so!
One direction that I've seen a lot of game engines heading in lately is the Entity Component System model for a lot of the same performance reasons (cache locality of data being the big one) that you've landed on the Actor model.
I'd be curious to know if you'd looked into the ECS model at all, and if you have how you view the tradeoffs between that model and the Actor model proposed in the talk. At a gut level, I get the feeling that your model seems much better suited to the distributed nature that you accomplish in your talk, and that ECS might be slightly more effective at allowing composition in an effective way. You've got so much more experience with both, though, that I'd love to hear you take if you've got one.
Your architecture could be very useful in teaching.
What exactly would you like to see in a writeup? And which teaching setting do you have in mind?
Many universities in major urban areas have a school of housing and community development. They study planning, policy, design, economics, and other related disciplines.
Once trained with how to create new models in your system, academics could simulate the impact of ideas they are developing in research.
Disclaimer: Creator & lead developer of SimAirport.
I suppose we just did it "wrong" to begin with, and have since been stuck with the wrong graph / haven't put the time into fixing it yet -- but would be curious to hear high-level of how you're doing it.
Our issues are primarily that we did lanes as graph nodes instead of "node capacity" so our pathfinding prescribes precisely which lane to use; when stuck in traffic we can't intelligently find our way around it without pathfinding again, but then 'quality' ends up being correlated to how often we pathfind with node-occupancy info, which obviously is a poor (and poorly performing) solution.
Would love to hear your approach or if you'd be interested in talking shop at all, email is in profile! :)
I'd love to discuss traffic with you on the Citybound subreddit, since I think there might be other people interested in such implementation details :)
Your statement says that you have actor-based simulation model that's inspired by erlang - is there a reason why you picked rust instead of a BEAM language for developing the backend? My guess would be performance, maybe?
Examples:
- utility services: I keep having problems with e.g. ambulances or trash collectors that are spawned very very far from the area where they're actually needed, even if a hospital or incinerator is just around the corner.
- size of buildings: I don't like the approach of having tall buildings / high-rise in developed high-value zones by default. In my opinion the size of a building should mirror only the density of the population living in that particular area, so it should be possible to have as well tall buildings in low-value zones. As well the amount of people living in tall buildings is for my taste not a lot different from the one of med/low-buildings, taking into consideration the height of the building... => how tall is a building should be a function of the people inhabiting it and not related to the value of the zone.
- deaths/births waves: once my cities got big, I kept getting each time waves of people dying and later a lot of births. There is a plugin that fixes this, but this should really be part of the basic game.
- traffic: this is actually already working veeeery well on multiple levels (e.g. very nice/interesting to observe how queues generate - I can observe that for hours hehe) but I do miss a logic that says e.g. "if this section of street has during a certain timespan ~95% of space occupied by vehicles then assume that there is a queue => mark that section of street temporarily non-existing for non-involved vehicles so that other cars would start looking for alternative paths" or something similar.
All in all, even if Cities Skylines was already a giant leap compared to the classical Simcity-games (excluding the last one which was just horrible), I'd definitely like more "action=>reaction"/"cause=>effect" in a potential future "Cities Skylines 2" or in this case in "CityBound".
Cheers
EDIT: for more details search in this page for the post containing "Unfortunately, traffic management is the only part of the game that really holds up as a simulator" by "amyjess" - I just read it now and I think that I agree as well with all what's mentioned there about CS (but I honestly don't rememember anymore how Simcity4 worked...).
I still think it's the best City Sim game made yet. The author here should really invest some time to learn about Skyline's failings so they can avoid those problems in their own sim.
I'm just waiting for the sequel to the game where they may open up the traffic AI to modders more, or fix some of the stuff broken with the existing engine. That said, it's become kind of the gold standard for city sims so OP should definitely check it out.
The downside is you have to be very careful where you place your emergency services as you can easily get zones which are too far for firefighters to reach.
The short version is that low-density areas are denser than they look, and high-density areas aren't dense enough. For example, if you click on a single-family home and look at the population, there will be over a dozen people living there (TBH, I forgot the exact numbers, but it's way more than a single family's worth of people)! But if you click on a giant skyscraper, there's nothing even close to what would fit in that building if it existed in real life.
This has two unfortunate effects:
* The suburbs need more public transit than you think they'll need. Once you hit 50k people or so, you'll be hurting for transit badly. "But I'm building low-density housing with a street hierarchy, it works fine in real life, so why are my roads clogged in the game?" Yeah but in real life you're not cramming a dozen people into every single-family home.
* On the other hand, you can get away with building dense downtown areas with much less transit than would be required in real life.
And yes, there are mods to realistically balance population. If you run these mods, you'll have something much more realistic: the suburbs don't really need transit, but if you build any high-density at all, you'll need to get a good transit network up and running ASAP.
One could argue some cities have low-density housing next to transit though (like Berlin, or Paris). It does have the disadvantage of making metros too easy though, so commuter rail is almost never done because it is too hard to integrate to a city.
We can (proably should?) debate about how these mechanics should work, but I think that it must be true that any city needs in some percentage both areas (e.g. as well the extreme being built now "on demand" for the World Cup in Qatar - https://en.wikipedia.org/wiki/Lusail ) must need both, or maybe not if they modeled the city based on CS haha.
I think that I could have similar points as well for the "education" in CS - I never (still don't know) if the elementary schools that I place are a foundation for people that will then go later to College and/or University - I still place them because I personally believe in the scala Elementary=>maybe_College=>maybe_University, but who knows... . (ok, this boils down mainly to a lack of transparency/informations for the user, independently if what CS does is good or wrong from the point of view of the user)
That's an interesting way to differentiate them, but it's also something that's very specific to present-day America. And middle-class America, at that.
Kind of odd that Skylines is developed by a Finnish company and published by a Swedish one, given how US-centric that model is.
I've also written elsewhere in this thread about how Skylines doesn't have a concept of class stratification, either, and that's a problem: the only way to create neighborhoods with distinct class implications (e.g. the ghetto) is to use the RICO mod and plop buildings directly.
There's no real concept of medium-density, either: the closest it comes is to zone high-density and put it in a district with the High Rise Ban ordinance. Or, again, use RICO. Oh, and growables are limited to no more than 4x4 tiles... if you want bigger buildings (e.g. a sprawling suburban apartment complex), your only option is RICO.
I totally agree, and maybe there has been some discussions about this in the past (I forgot about those early webcasts) - but for a company to align to the US market (probably the largest & most uniform around) is usually probably the safest bet - I still admit of being a little bit sad :|
> There's no real concept of medium-density, either
Now that you say it, I think that (a realistic - see previous posts) medium-density would be absolutely important to model european cities.
> limited to no more than 4x4 tiles
You're right but personally I don't really care about this for the time being (meaning that the other problems have for me absolute priority compared to this) - maybe they just randomly put a safe limit for their first release to avoid indirect potential complications... - I would have most probably done the same, so I won't dig into this hehe.
> I've also written elsewhere in this thread about how Skylines doesn't have a concept of class stratification
I agree.
Summarizing after all these posts & remarks, I feel sad that the studio so far developed only add-ons that do not improve the core of the simulation but only add more distractions and/or superficial complexity around it :P
(E.g. I did buy "Mass Transit" but it didn't give me the feeling that it improved the game but just gave me a few more alternatives - and actually "mass transit" is in my opinion associated to trains & metro, therefore absolutely not fitting cablecars/blimps/ferry/etc...)
But maybe.... they be working on aggregating key-improvements for their next CS2? Who knows... :)
That said, it's still currently the best city sim by far. Hoping that Citybound will change that at some point :)
The fire department will have an opinion on this.
So many things will be difficult: construction, trash hauling, tree removal, relocation, business deliveries, etc.
I hope to learn to code. I just got my rejection letter from a coding school ("overwhelming demand -- we had to turn down many qualified candidates"). My backup plan is some free online coursework and probably finding a city-building game to mod or tinker with.
When you say open source, does that mean it would be okay for me to futz with it for myself like that?
Thanks.
Having a license that says you can go play with it doesn’t mean it will be straightforward as a newcomer to understand the code you find or to accomplish any particular goal with your fiddling.
I haven’t looked closely at this project, but I would recommend at least considering starting out fiddling with a simpler system, if you want to learn to code.
I don't know that I will even learn Rust. I have had a Python course recommended to me.
I just am trying to figure out what my options are. I've gotten serious push back at times for what I felt were innocent activities. Trying to ask the "dumb" questions in hopes of avoiding that.
The links are helpful. Looking them over.
I’m going to give you some unsolicited advice. Start now. If you’re struggling to find a course, start here:
https://www.railstutorial.org/book
Don’t worry if Rails is the right choice. You might love it or hate it, but regardless, you’ll learn things like writing tests and using version control.
Good luck and have fun.
https://doreenlearnstocode.blogspot.com/2019/04/ask-silly-qu...
I'm currently horrendously short of sleep. I've had insomnia for about 8 days. O_o
I don't expect to try to study in earnest until I start sleeping a bit better. Hopefully soon. (Crosses fingers)
Seriously, best of luck. And remember, learning to write code is really just about momentum. Start, have fun and jfgid (just fucking getting it done).
So by all means start teaching yourself to code by playful experimentation, but start with something much simpler first :)
On the other hand, how do you plan for in-game scale / limit? (Millions of population, etc) and whether you have any idea about multiplayer/server (I'm talking similar with clustertorio)
The actor architecture makes it very easy to scale the simulation across several machines and indeed run a simulation cluster that you connect to from a simple client. In fact it already almost works like that. And the only thing that's missing for multiplayer is some UI-level coordination for collaborative planning (basically preventing editing conflicts). Everything else is already "multiplayer ready".
Cool containers.
All in all I'm sure I'll spend a ton of time playing the game itself and playing with the source.