Procedural plant takeover of a city?

devingprice 101 Dec 29, 2011 at 18:37

I’ve found tools like CityEngine that can procedurally create a city, and there are plenty of tools to procedurally create plants. Is there any way to make them work together? I’d like to create an apocalyptic city for use in a game, something like I am Legend.

I’d like to procedurally create the buildings of a city, and add in the details like cars and miscellanious street objects into the street. Then I’d like to apply forces to the streets to flip cars and blow things around to add some chaos to the mix, cause a few windows to break and the like. Those I know how to do. But what I’d like is to add the generation of plant life, as if nature was retaking the city. L-systems can simulate real life growth, but I’m not sure how I’d use them to accomplish this. Any ideas?

It’d be even better if the creation was done by the game, like the data for the map/objects was all that had to be stored in order to generate the map. That way the map information could be transfered over a network for multiplayer.

3 Replies

Please log in or register to post a reply.

v71 105 Dec 30, 2011 at 19:12

You should create your planst, and put manually in the procedural city, i don’t know if there is a tool which can model both actually, but maybe the guys behind cityengine are reading this post…
Incidentally i had researched some months ago a procedural city generation, you gave me some ideas about what to add next , like computation of fluid paths along buildings, and vegetation spawning like the city had been abandoned for so long time…

Stainless 151 Dec 31, 2011 at 09:51

You could use the same techniques as they use in CityEngine.

It basically works by using a mix of supplied 2d bitmaps to define parameters, and a library of objects to fit into the map.

You can then build your own rules for plant viability.

So say you have a building with a mud floor, that has a high viability. A concrete floor has low viability. A park has a viability of 1, tarmac a viability of 0.001

Then you can run a simple algo that generates a 2d bitmap of initial plant growth. Different plant types can exist in different viability levels.

Each plant type has a damage value, this is the amount of damage the plant can do to the fabric of the city. This increases the viability of regions next to the plant.

Iterate this a few times till you have the result you want.

Then use the final viability table to do two things.

1) Damage the buildings, bring down walls, smash windows, etc.
2) Add 3d plant meshes

From the viability table you can tell what meshes to add where, I would probably keep another bitmap as well which holds plant age so you can use that to define the size of the meshes. Small tree, large tree, that sort of thing.

alphadog 101 Jan 03, 2012 at 18:46

You’ve seen Life After People, right?

Maybe get in touch with the production studio…