Evolving cities (industry, specifically)

Started by
23 comments, last by Fear 16 years, 2 months ago
Let's have a discussion. Suppose I am making some kind of RPG like game, MMO or not, doesn't matter. In this RPG, I would like to have full blown cities, industry, commerce, little people going to their little jobs making little things to sell to the rest of the people. Question is, how do you generate all the little details that make the world interesting? For instance, in real life here, I know of a manufacturing plant down the road. It has a machine shop, a chemical lab, a clean room, and hundreds of little things that I, as a gamer, would love to explore in a game world. Now, I don't want to compile a database of interesting places and hand code them all. I want to generate, evolve, or otherwise allow the simulation to create these details. My general idea for simulating something along these lines is to create an economic need for stuff, and seed the simulation with interesting pieces of processing equipment to use to make stuff. Robots, vats of chemicals, sewing machines, whatever I can come up with. I would then make the economic simulation favor process intensive goods; more processing equals higher price. A problem I have with my solution is that it doesn't make anything useful. No power tools, cars, houseboats, etc. I left out a lot of my thoughts on the economic simulation details because I find it boring and consider it already solved. I also left out the actual building creation process for the sake of brevity. Let's stick to the process and goods made for now. Also, please ignore computing and storage limitations (within reason). Pretend we get to put this on Google's cluster, if that helps. Thoughts? -Koobs
Advertisement
Cities in general are a PITA.

Most of the time, you want size (km2), complexity/density (over 50k object, up to millions) and diversity (visual diversity for suspension of disbelief).
And if you want to be able to edit it, you want editability at the city level.

So the only way to go if you don't have a GTA budget, is to go procedural (or to make a simple city). Look at introversion city generators (or at my own work).

The economic approach could work if and only if you can infer/generate new intermediate needs from a basic set of needs. A kind of a genetic evolution of needs : I need to go there, as many people do -> my need evolve into a public transportation need. And so on.

The process of specialisation/generalization/differentation of needs could be quite touchy to get right. and it probably need a balance, a restriction mecanism like the global environment.
If not the population could get into an absurd economic equlibrium : speculation (tulip crisis) or self-destructive exploitation (paques island).



"Question is, how do you generate all the little details that make the world interesting?"

If I've understood what you're asking..


To do that in a way that makes sense for the observer (us, humans), you'd better start by generating some humans who can create the little details.. Cause the little details you're writing about are not primarily put together by the market (supply/demand), or even by nature, but by humans.

I've thought of procedural world generation on and off for many years, but in order for such a generating process to make sense, one would have to put in a whole lot of external input (define object types, object relations, usage of objects, apperances, etc) by hand. There's just no escaping that.
That is, unless ofc you'd like to go hardcore using advanced physics, but even then the theory wouldn't be perfected (string theory might do the trick, but just might). Even if you would succeed to create a world, the probability of creating life would be reaaaally small. And don't get me started on the data storage. :p
When you say it doesn't produce anything good, what do you mean?
I mean it wont produce anything that appears useful. The method I described doesn't take into account the needs of the people who will buy the products, it only simulates a desire for a useless thing. It's like basing an entire economy on the sale of pet rocks, which is why I find it less than ideal.

-Koobs
Would be very hard to make... and I would probably be more guilty than you of wanting to make a game that was way beyond what I could accomplish by 10 times. But it's fun to try nonetheless... and you only discover how hard it is when you actually try to make it... but it sounds cool... what kind of needs would there be though? Food is a basic need I can think of... so you'd have farms in your game? Actually, I'm not totally sure I understand your game. How would the simulation be able to generate these things? You want it to create these 3 dimensional buildings and how all the equipment inside would work and stuff?
I'm not currently writing a game with these ideas, mainly because I have no idea what exactly I want, let alone how to implement it! But I enjoy the theoretical work of game design quite a bit, and I do want to write a game with these features, which is why I am inviting everyone to join in my ponderings.

Starting with the basic needs is a good idea, I think. I wouldn't mind hard coding something like that and then having the simulation expand upon them. Food, shelter and protection are some of the sort of needs I would probably have. In regard to the transportation example earlier, I agree it should be a secondary need that the simulated people would come up with to accomplish another need.

I don't want to simulate all of physics and hope life starts. That's a /little/ to much</understatement>. Also, I do want to have simulated people, from now on referred to as NPCs, doing all of the work and creating the details. They should be the ones making the buildings, machines, things to sell, etc...

As far as graphical representation is concerned(2D or 3D), it shouldn't matter. When I do try to implement something, I will follow my usual program layout; the world simulation will have nothing to do with the graphical rendering, but will have enough information to carry out the simulation, usually in 3D space. But again, low level implementation details like this can be ignored for the sake of the discussion.

As far as procedural generation goes, I like the idea to a point. The point comes when I want to modify the world. I know there are some ways to handle this, like storing the differences between the ideal procedural world and the modified one, but I find these inelegant. Although I think something like bits procedural logic driving the NPCs to do things in the world is an interesting idea that deserves some thought.

-Koobs
Quote:Food, shelter and protection are some of the sort of needs I would probably have.


How would you simulate the need for shelter? Would you give them a "happiness" rating and have their happiness increase from being inside a building?

Quote:
I don't want to simulate all of physics and hope life starts. That's a /little/ to much</understatement>. Also, I do want to have simulated people, from now on referred to as NPCs, doing all of the work and creating the details. They should be the ones making the buildings, machines, things to sell, etc...


I can't understand how they would do that or how you could program something like that into them... you want them to be able to design chemical plants, etc.? You would have to program all the rules for how they would go about doing that for each type of structure/facility/building (like all the different rooms it would need, and all the different equipment that would need to be in it)... am I understanding this correctly? And this might be interesting for industrial things, but you'd also have to make boring things like bike shops or grocery stores I guess. But maybe you're fine with that...

Quote:A problem I have with my solution is that it doesn't make anything useful. No power tools, cars, houseboats, etc.


You'd have to program a psychological system into the NPC's to make them desire these things I guess...?

But it would be cool. You could I guess define some objects that have wide-ranging and simplified uses and applications... and have them put together like lego blocks... or something. Maybe that touches on implementation rather than what you wanted to discuss though, not sure.
I'm not sure how I could build the Needs System. For shelter, the 'happy when indoors' approach would probably work well enough. In real life, we do it to protect ourselves from things like the weather, but simulating that may be unnecessarily complex. Perhaps giving the NPCs an innate knowledge of what needs protection and how to do that in a general sense would work. Something so the NPC can think "I know this doohicky needs protection from the sun, ceilings protect from sun, therefore I need to put a ceiling over this thing."

I don't want to give the NPCs knowledge that is too specific, like "this is how to build a chemical lab", but I don't mind giving them low level knowledge like "you can (and should) build buildings and put stuff in them". Hopefully through the Needs System and the NPCs' innate knowledge and ability (which I will probably make manually), the NPCs will build not only factories and labs, but bike shop and grocery stores as well. The idea is to get them to build a lot of things that would be fun to explore in a game.

The lego block idea is a good one if the blocks are built properly. I don't know how to build them properly. I'm not even sure how specific they can/should be. I would probably need to nail down some basic(very) physical rules for the universe so that useful blocks could be made.

I view unimportant-for-this-discussion implementation details to be things like the coordinate system to use, the memory structures, the thread model, the inter-NPC communication system, or anything else that would be best described by a code snippet. The low level of how the city gets made, like "The NPCs have lego-like things they stick together to build machines", is exactly the sort of thing I would like to discuss.

-Koobs
Okay, so you want the people to have desires, and a world with defined objects, and you want the people to go about fulfilling their desires, and in doing this utilizing the objects to create the city?... For example people want to eat, and you program into them knowledge that seeds can be planted and watered to produce crops that can be eaten, and the means to let them use this kind of knowledge of how the game objects can be used to satisfy their needs?

This topic is closed to new replies.

Advertisement