I did not expect to end up on hackernews that early. While I've been working on this project on and off for 3 years it is still in its infancy. I have so many things I want to rewrite, so many features missing even for the most basic game loop. So many 3D models I have to make.
And so little time! Working on this as a side project with a full time job has been hard at times. I do not recommend making city builders :D
I wish I anticipated the attention so I would have given the README bit more love.
Anyway, I will try to answer any questions in the comments.
Hey there! I'm just here to say... Keep up the great work! I love city building games and am quite excited to see yours once you've had more time to put into it. Don't let it be the death of you though! I'm patient and appreciative for you putting some coolness out into the world. :)
Nice !! Please check out Spectra City if you are not alread aware they are a fully CC0 project built for WebGL (WebXR), although I think for now they started on a platform called Spatial.io & my impression is they are closely tied to the real built environment or proposed so as in a way for the local community to active participate on a new city block restoration project as an example.
I have to say I'm confused by this. After looking through their website I do not really understand what Spectra City is about or how I can get involved.
> Spectra is a cross-platform, open-source community where physical placemakers and virtual worldbuilders come together to create sustainable, human-centered, and technologically progressive urbanization.
How can it be any less obvious what Spectra is. Haha.
It would be cool to have more bike/pedestrian/train/mass transit transportation options available, instead of cars and trucks being the default option. Also tooltips would be really helpful.
I feel like there's almost enough here that you could do steam/itchio.
Public transportation is definitely planned, although it's a lot of work. Cars + trucks + trains are the minimal set of transport methods to allow anything to go anywhere.
I love tooltips! Thank you for the suggestion, I have opened an issue.
>I feel like there's almost enough here that you could do steam/itchio.
I think it's way too early for this. As people say the last 20% takes 80% of the time. There's a lot of systems I've neglected for an actual release. It probably needs a few years more work before any kind of "real" release for players instead of developers.
I think Rust for games has come really far. I will cite https://arewegameyet.rs/ "Almost. We have the blocks, bring your own glue.".
All the blocks are there and the language is really well suited to games.
On top of my head:
The pros:
- The crate ecosystem and the package manager makes it really easy to integrate any useful component such as pathfinding, spatial partitioning, graphics backend, audio system.. Most crates take a lot of effort to be cross-platform so I can develop on linux and not spend too much time debugging windows releases.
- The strong typing and algebraic data types makes expressing the game state very pleasant. I also found I was able to develop a very big game without too many bugs even though I don't write many tests.
- Ahead of time compilation + LLVM guarantees you won't have to optimise for weird things around a virtual machine. Rust gives you more control to optimise hot loops as you can go low-level.
- I find wgpu to be the perfect balance between ergonomics and power compared to Vulkan. OpenGL support through wgpu is also a nice addition for lower end devices.
- The Rust community is very helpful, you can often talk directly to crate maintainers
The cons:
- Compilation times, when compared to JITed languages such as C# can be very painful. It can be alleviated by buying a 3950X but I still often get 10-30s iteration times.
- The static nature of Rust means you often need a dynamism layer above to tweak stuff that can be awkward to manage. I made inline_tweak for this purpose but it's really far from how easy Unity makes it. https://github.com/Uriopass/inline_tweak
- Since Rust feels very ergonomic, you are tempted to write almost all game logic within it, so mod support feels very backwards to implement as you cannot really tweak "everything" like in Unity games. Thankfully "Systems" game like Factorio or Egregoria can be theoretically split into the "simulation" and the "entities" so mod can still have a great impact. Factorio is built in C++ so has the same problematic. Their Lua API surface is quite insane to be able to hook into everything. https://lua-api.factorio.com/latest/
Now, I have to talk about Bevy: https://bevyengine.org/. It did not exist when I started but it is a revolution in the Rust gamedev space. It is a very powerful 100% Rust game engine that makes you write game code in Rust too. It has incredible energy behind it and I feel like if I'd used Bevy from the start I wouldn't have had to develop many core engine systems. Its modular design is also incredibly pleasant as you can just replace any part you don't like with your own.
I thought your comment meant this was somehow based on Rust the game. I was wondering if it had such a flexible modding system to enable things like this!
I spend a lot of time in public transportation looking out the window, thinking about the mechanics of society.
I have always liked simulations so I thought: Why not try to simulate what I see?
Watching the simulation from above of people going to supermarkets, going to work, trains delivering goods and such. Creating your own city and watching patterns emerge would certainly feels great.
A lot like watching little ants going around doing their business. This idea is also explored in one of the books of the Ants trilogy from Bernard Werber (I think?) where a society simulation is used to try out advertising campaigns.
What are your thoughts about AI generated 3D assets that many, now startups, promise to sell to indie developers?
For me, it sounds like city models such as cars and buildings will be one of the easiest models to generate (from what I have seen in papers).
As an indie dev myself I'm counting on that I will be able to buy most 3D content for a fraction of time/cost in a couple of years. And I plan my development around this and ignore art assets for now.
I'm all for AI generated content. I think any automation helps push society forward.
In practice however I didn't see any real good generated 3D asset for now. The problem is probably much harder as there are far more 2D assets than 3D, especially with PBR support.
I wish the dev could work on this full time! What he has accomplished so far is amazing. (Hi Uriopass, if you see this!)
Im working on a game in the same vein: Metropolis 1998, a city builder with real time traffic and interior building views, which you can design yourself if you want. Aesthetically, it's a beautiful throwback to the games I grew up playing as a kid.
I wish I could work on it full-time. However, after reading a lot about indie game developers, and judging from my situation, it seems like keeping it as a side project is a better decision for me from a financial and mental health standpoint.
Keep up the good work on Metropolis 1998! I have followed your work and the dev community you built around it and it is very inspiring.
But yes, I'm really not ready for that kind of pressure and marketing efforts. I feel - and even more so since Cities:Skylines 2 announcement - that there isn't enough I can do alone to turn this into a full-time job.
You should definitely at least get a Steam page up so that we can wishlist it. Today's HN posting would have gotten at least one wishlist (from me :) When a game gets enough wishlists on Steam, the game is promoted to various lists which get shown constantly to people (as soon as you have game released and purchasable, even if Early Access). You are otherwise penalized if you create a store page late and have very few wishlists, since Steam's algorithms prioritize giving the banner spots, etc. based on your # of wishlists.
Out of curiosity, are there any simcity 4 refresh out there?
That game was way ahead of its time. I just want a 2023 version, but just couldn't seem to find it. Every successor game and other games seem to either focus on details/individuals or 3D effects with far less scale.
We have far more capable hardware to run large cities and more growable lots and better traffic pattern. But a better Simcity 4 is never made beyond the 20 years old base game code and addons... Or am I oblivious?
These new games have made leaps and bounds in running a better simulation and getting away from being grid-based.
However I do think that Simcity 4 being grid-based, and the pre-rendered graphics it allows add to how beautiful the game still is, 20 years later.
Cities: Skylines looks good, but I suspect it will age much faster.
The base engine is from 2003, and likely haven't been updated since.
There's nothing wrong with that, since software does last far longer than hardware does. But the limitation shows (i.e. limited to 1080p, limited calculation logic to support hardware spec of the time).
I wonder if there's any scale first city building games that picks up that niche since.
A city builder really designed around zoning and free-form lane plots would be interesting - especially if you only could control the general zoning and not how they would subdivide the land and use it.
You may like Workers & Resources: Soviet Republic. [1] Fair warning: it has a rather brutal learning curve. It's somewhere between Factorio, Simcity and OpenTTD.
To build an apartment building, you need prefab panels. To get panels, you need to build a panel factory, which needs gravel. To get gravel, you need a quarry. And then you need vehicles to haul the gravel to the panel factory. And then the panels to the construction site. And buses to bring workers from another housing block to the construction site. And you need to import or produce fuel, and electricity, to run all of it. (Or you can just spend some currency you've earned from exports to build it or import it instantly. Necessary at the start to get your nucleus of industry going.)
It's almost ready for official 1.0 release later this year, and has excellent mod support for custom buildings/industries.
I adore this 'game'; you can actually engage with it like a simulation in many aspects. I didn't fully get it until I found myself spending hours optimizing forklift paths between factories and warehouses, and thinking about pedestrian thoroughfares as I expanded my industrial center. Unlike most city builders it's not on a grid, so you have a lot of freedom to just be creative!
Construction cost is materials + labour hours. If you put a building in a built-up populated area, stocked with construction vehicles and materials, it'll go up in a matter of days or weeks, simulated time. If you place it way out in the boondocks with one mud road there, it might take years of simulated time. In that regard it feels very "realistic".
Yeah. Cities: Skylines just feels so soulless to me. It's like me looking at a model railway - it might look cute but it's just dead. The game is effectively a traffic simulator, with citizens not really having agency (beyond the Chirper which most people are annoyed by), and next to zero economic management. No mixed zoning or organic growth, you effectively run a completely planned economy. There's not much external trade or a real economy which needs all sorts of skills to function. It feels really eery and creepy to me.
SimCity did a lot of things right, especially the ability to upgrade your facilities rather than having to plop another whole one down like Cities: Skylines demands (apparently this is addressed in the upcoming sequel). And the 'specializations' in SimCity offered much more interesting industrial opportunities to pursue than anything in Cities: Skylines. Also the 'agent' system was used to simulate pressure over distance in the water and sewage systems, which made for interesting challenges in placing your pumps and treatment facilities. I still come back and play it every once in a while :)
I agree -- I still prefer the stark simplicity and pure fun of the original "classic" version of SimCity, as well as the rich multimedia graphics, sound, and music of SimCity 2000.
This 1996 talk by Will Wright to Terry Winograd's user interface class at Stanford takes a deep dive into SimCity 2000's design, what made it so successful, and how it compared to other less successful Maxis games. It includes a retrospective of SimEarth, SimAnt, and SimCity 2000, and a preview of The Sims (called Dollhouse at the time).
I attended the talk and took notes, which I had Will review, and years later (after working with Will at Maxis and EA on The Sims) updated it with more details and retrospective learned by developing The Sims.
Just this year I discovered that the Stanford Library had finally published the video of that talk and many others, so I made a transcript and updated the article with lots more quotes and screen snapshots and analysis.
Egregoria looks really cool and impressive, and I'm glad to see it carry on the tradition, benefit from the inspiration, and learn from the successes and shortcomings of the SimCity and City: Skylines franchises, and other great simulation games like Factorio.
Will Wright on Designing User Interfaces to Simulation Games (1996) (2023 Video Update):
>A summary of Will Wright’s talk to Terry Winograd’s User Interface Class at Stanford, written in 1996 by Don Hopkins, before they worked together on The Sims at Maxis. Now including a video and snapshots of the original talk!
Will Wright - Maxis - Interfacing to Microworlds - 1996-4-26:
>Video of Will Wright's talk about "Interfacing to Microworlds" presented to Terry Winograd's user interface class at Stanford University, April 26, 1996.
>He demonstrates and gives postmortems for SimEarth, SimAnt, and SimCity 2000, then previews an extremely early pre-release prototype version of Dollhouse (which eventually became The Sims), describing how the AI models personalities and behavior, and is distributed throughout extensible plug-in programmable objects in the environment, and he thoughtfully answers many interesting questions from the audience.
>This is the lecture described in "Will Wright on Designing User Interfaces to Simulation Games (1996)": A summary of Will Wright’s talk to Terry Winograd’s User Interface Class at Stanford, written in 1996 by Don Hopkins, before they worked together on The Sims at Maxis.
>The materials are open for research use and may be used freely for non-commercial purposes with an attribution. For commercial permission requests, please contact the Stanford University Archives (universityarchives@stanford.edu).
You perfectly describe my sentiment every time I try playing CS. No matter how gorgeous it looks at some point it just strikes as hollow and disengaging.
The simulation is just so fake, almost everything that goes on is just decorative.
There is a budget, but after the first 30 minutes you'll always be running an enormous surplus without trying.
Citizen commute to work, but if they can't get there, the workplaces will continue to work, with some trivial penalty to efficiency.
There is traffic simulation, but if a jam forms, vehicles will start vanishing to unblock the road.
You can build public transport, but it doesn't matter if it's efficient, because the city's entire population can be standing at bus stops waiting forever with seemingly no ill effect.
Citizens will use parking spots if they're available, but if they aren't, they'll just disappear their car and reappear it later.
Zoned buildings get built and upgraded autonomously, but what gets built doesn't depend on economic factors, just on how many upgrade points are accrued from nearby services and attractions.
There is a large number of special buildings of various types that can be unlocked and built, but they all count as a tourist attraction and don't perform their actual function, they're effectively statues.
Cities Skylines is a bizarre un-game that has all the UX and presentation of a city simulator without any actual simulation.
I think a lot of the issues are symptoms of a greater design issue that I don't think is solvable:
Wanting traffic to visually flow in real-time speeds without having a 24-hour (real-time) day cycle.
If you want 1 day to be 60 minutes, and someone's commute takes 10 minutes, that means their car will be on the road for 33% of the game time, when in reality, a 10 minute commute would be 1.375% of a day's time. The result is the overall, there's FAR more traffic on the roads in C:S than is realistic.
Industrial especially just spawns far too much traffic, far more than is realistic. If you think 1 factory produces 5 semi-trucks worth of goods per day, but they spawn all those trucks in a 1-hour period and have them drive at real-time speeds, you end up producing 24x as many trucks as you should.
But as I said above, I don't think the problem is solvable and still make a fun game. You either have to make an in-game day take 24 hours, or make the cars animate faster.
It sounds like they tried to remove failure modes, when they should instead have figured out a way to forgive failure modes after they occur. That way, players could still fail but it wouldn't result in a death spiral that wrecks the last hour+ of citybuilding.
<3 I feel this way with many other simulators.... They try so hard to have many things but there's zero element of "is this fun" and plain quirkiness. Good old Sid Meier's Pirates has more fun than playing these soulless games:(
The most recent example is KSP2 - they unironically have degraded the physics engine on purpose because the lead designer thought that wobbly rockets were fun. I think that person has never played KSP1, KSP2 is simply another soulless game with small injections of carefully controlled-dosage "fun".
The train simulators that have city building as an afterthought often feel much more like a game than the city builders; probably because you have external forces acting on you and driving your decisions
It’s ironic since that’s the origin of Cities: Skylines. They were building transit simulator games (Cities in Motion series) and turned it into a city builder when they saw the gap after Sim City 2013 crashed and burned.
The sequel, from what it seems like, is focused on zoning and growth via land values, and does feature some kind of trading mechanic, though I guess the real proof is when it comes out.
The question that is hard to balance in sims like this is how do you make something like this a fun game. it's a pretty tricky balance.
Upcoming Citities Skylines 2 seems to have improved a lot on the simulation parts. Removing "pocket cars", giving more agency to agents, more types of zoning, hopefully more challenging economy, trading of resources with external cities, etc. So at least I'm hyped about it!
The simulation is probably not as accurate as modern city-builders, but this is one of the reasons SimCity 4000 Rush Hour is still my favourite game in the genre.
Roads and cars still form a core part of the game, it doesn't support pedestrian-only streets or bikes, but density is so much easier to achieve. That + the grid means cities don't end up looking "suburban" and "car-centric".
It is definitely my ambition to implement public transportation but it is much harder to implement than cars. I live in Paris so I know what a non-car-centric city looks like and all the complexities around it (not to say I don't like it!).
With cars, anyone can go anywhere without thinking much, although it is a bit of an overstatement considering the time I have spent fighting gridlocks.
Truly impressive endeavour! I would definitely love to contribute, thanks HN for showing this up this morning! Rust + architectural models + wgpu is a great combo!
I am still in the mid-early learning phase of Rust, but it's where I'm putting my learning juices in... and at this point I can consider myself a professional architectural 3D modeller (https://www.myminifactory.com/users/TheLazyForger).
Would be happy to contribute (in fact I opened a couple of issues right now), is there a Discord or equivalent? I couldn't seem to find it on the github readme.
> Egregoria is focused on the socio-economical aspect of a city, with a logistics element.
Oo this is cool. What simulated elements are present/planned so far? Is there like a mini economy and things like actor preferences implemented? I checked out the devblog and although aspects like 3D rendering are interesting, I'm more interested in the simulation details and mechanics.
There's not much at the moment really, the idea is that all citizens have their own state and decide what they want to do themselves.
For example, all of them have hunger state, have jobs assigned to them, a house etc.
So a single citizen will always go back where it lives everyday instead of a random house, it will try to go near its home to buy groceries. I've decided that they don't have money as I found it too hard to calibrate, but there is still "real" items like bread being exchanged.
Nice! That level of simulation detail is the sort I've always wanted to see in city sim games, with people modeled as rational agents with internal state.
It would be fun to see the kinds of emergent behavior that arises. Maybe even hook an LLM up and let it drive some narratives.
I like to think too that with sufficient fidelity a simulation of this sort may be useful in real world city planning/economic modeling/geopolitics.
I've always thought about plugging LLMs into the simulation, even pre-generated naratives could be interesting. But I'd have to give it more thought as it seems pretty hard for such big scale interactions (50k citizens?)
>I like to think too that with sufficient fidelity a simulation of this sort may be useful in real world city planning/economic modeling/geopolitics.
This was one of the early vision I had for this project: Simulating different economies to see which ones fared better. However I have kind of abandoned this as the realy world is just far too complex! Making a "normal" but different city builder seems a bit more achievable.
That’s really interesting, what kind of AI implementation have you decided to work with? I am making a similar project but more of an medieval approach. I went with behavior trees since it felt more appropriate and scalable for such a task
I went with a utility approach as I felt it would incur nice emergent behaviour.
Every so often, citizens and companies (I call the abstraction a "Soul") look through everything they can do and pick the on with the highest utility score.
If they're hungry, they'll get food. If it's the time of day where they should work, they'll go to work, except if they're too hungry!
Has anyone used any of these sims to try model what a city may be like with autonomous vehicles.
Or, specifically, for lack of a better term, a city(s) where all transportation is done through a ride sharing system, including autonomous vehicles and mass transit.
I’m guessing it’s a combination traffic and economic sim (to deal with issues like surge pricing).
But maybe it could examine questions like:
* do autonomous vehicles reduce the overall number of vehicles.
* lower necessary street capacity.
* can parking be moved outside the city center (for example overnight parking when demand is lowest and cars are idle/charging).
* how do pedestrian patterns change.
Are there any examples of sim games like this being used by real cities? I could imagine it'd be a useful visualization for where tax revenues are generated/utilized at the very least.
> After the success of SimCity, Maxis received numerous requests from various companies to develop simulations for their industries. After rejecting many requests from other companies, the team eventually agreed to make a prototype of SimRefinery for Chevron:
[SimRefinery was] a simulation of their refinery operation, for orienting people in the company as to how a refinery works. It wasn't so much for the engineers as it was for the accountants and managers who walked through this refinery every day and didn't know what these pipes were carrying. — Will Wright
I remember a software, where you could take real world streets, run traffic simulations on it, and also make changes to the street layout. Basically, fix the crossing that costs time on your commute every day.
I read about it many years ago, sadly forgot its name and a bit of searching didn't make it show up. So leaving this here in hope someone knows what I am talking about and drops a link. I'd like to read up on what happened to the project as well.
Hi! https://a-b-street.github.io/docs/project/history/retrospect... has a summary of where the project went. The original scope of the traffic simulation was too grandiose, and it was hard to influence real decision-making with something so complex and buggy. A/B Street morphed into several simpler tools focused on specific problems (removing through-traffic through an area, estimating uptake of new cycle lanes). I'm focused more on web-based tools for gov use these days, but will get back to simulation someday!
I have brought this up a few times, we need a ux on top of open city data so we can run simulations, and compare that with ai outcomes as also compared to actually municipal policy outcomes
> An Egregor is an autonomous psychic entity made up of, and influencing, the thoughts of a group of people.
It represents emergence at its purest form, where individuals come together to become a collective force.
[ 2176412 ERROR C:\Users\user\.cargo\registry\src\index.crates.io-6f17d22bba15001f\wgpu-0.16.0\src\backend\direct.rs:1174] Shader translation error for stage ShaderStages(NONE | FRAGMENT): FXC D3DCompile error (0x80004005): C:\Users\user\git\Egregoria\called `Result::unwrap()` on an `Err` value(432,18-24): error X3005: 'ddx': identifier represents a variable, not a function
I am unsure if I understand well, so just to clarify:
- Egregoria is written in Rust directly using wgpu as a graphics backend and a custom "engine" which is not really an engine as it is built with only one game in mind
- Cities:Skylines is built in C# using Unity as the game engine
Egregoria used to be 2D but it felt a bit restrictive. A lot of the underlying simulation is also 2D as I didn't port everything when doing the migration.
From the player perspective, 3D is the norm these days. It looks better, it's usually more intuitive and 2D is usually a bunch of tricks to fake 3D anyway.
From a developer perspective, 3D fits my brain better as I can translate real concepts better. To me, it feels easier modelling in blender and apply physically based rendering rather than learning lots of 2D techniques to have a consistent good looking art style.
Aesthetically I can totally see how a 2D visualization could look great.
But then you end up with curved roads and buildings hiding other buildings and things become very confusing.
One interesting change (but it's a big one, at least aesthetically) would be to force a certain angle of view, rather than allow a complete pan-tilt. Something in a "total war" fashion, so to speak.
Or - at least - allowing such camera to be used in the options.
If you’re talking about using LLMs as part of the simulation, where decisions and commitments made during discussions are reflected in the simulation, that sounds terribly expensive if you’re simulating a full city.
I did not expect to end up on hackernews that early. While I've been working on this project on and off for 3 years it is still in its infancy. I have so many things I want to rewrite, so many features missing even for the most basic game loop. So many 3D models I have to make.
And so little time! Working on this as a side project with a full time job has been hard at times. I do not recommend making city builders :D
I wish I anticipated the attention so I would have given the README bit more love.
Anyway, I will try to answer any questions in the comments.