Procedural Cities etc

well yeah im still trying to figure out how to build a city fast, because it takes some time to build it.

when you make this approach every building depends on others, the road etc. its not just a noise function and anyways i think i have seen a glimpse in the inovae engine that it is capable of creating 3D objects on the ground.

maybe if you create mountains with a noise function cut it through with a net of streets and normalize the tops would do it in a fast way…

i think the also a good approach would be @NavyFish 's heightbox function, you just need to mod it a bit, maybe if the height net wouldn’t consist of a chesboard like array but a street like array, then fill the boxes with textures…

you could also decouple city generation from the initial territory, and ‘bake’ the generated city on top of the terrain, normalizing/smoothing as the last step rather than the first.

But I think this is a horrible idea and shouldn’t be used.

I asked Keith this recently and, unfortunately, the answer was ‘not unless we hit $800k’. Prior to that point, any modding support will be entirely aimed towards artistic contributions. I haven’t given up hope entirely, however. Many ‘early access’ games see a large spike in funding once the first public build is in the hands of players.

1 Like

You could consider cities as interconnected islands. Each city segment sits on top of a giant concrete (or rock or smart self-constructing sci-fi city infrastructure) slab that ensures it has even elevation. You could probably find the minimum and maximum elevation in an area and use that to see whether or not it’s a good place to put down the city segment. That way, you can run city generation in the flat plane of the slab so you don’t have to worry about differences in elevation, you can run city generation in 2d. The only time elevation differences come into play is when you want to connect different island city segments with each other. Once a few good city spots have been determined you mark them down along with the seed used to generate them and any other necessary info so that the player doesn’t have to run the (presumably expensive) “find good ground for a city segment” function again, merely the (probably slightly cheaper) “generate city segment based on seed” function.

That would be especially easy for planets with non-breathable atmospheres, since you could replace some islands with cities inside domes or just giant opaque domes that don’t require much in terms of rendering or procedural generation.

For added fun, you could have the island city segments have pillars that extend upwards and form supports for a city above the city, like in the Deus Ex prequel. And since the supports will ensure that the city level is flat, you can just run city generation in 2d again for the city above the city.

Or like a certain city in a certain entry of a certain rpg series

This reminds me something but what… :wink:

If I had to mod a certain city in a rpg of a certain serie it would be Esthar, from the opus following yours

I wonder what system you would need to cope with cities on the scale of Nar Shaddar or Coruscant? Could the engine even handle something like that?

The INS engine cannot handle it for the simple reason that the team has yet to try. Could a game engine be built that could generate massive cityscapes? Yes. How much you’d enjoy the results is something that could only be answered after having done the work.

Just sitting here for 20 minutes or so makes me wonder how much could be done. Create any number of noise fields to get building types, sizes, complexities, levels of decay, and myriad other parameters. Use those to feed your building generator and to plunk down piles of buildings.

The structure of a city could come from the pattern of sampling used on those noise fields, which could also be procedural. If you sample on a regular grid, you get city block after city block without end. If you sample using some predefined templates at various pseudorandom orientations and placements (including overlaps), then you can get a circular layout of buildings connected into a grid, next to a haphazard layout, etc. The various networks such as roads, sewer, power and such would be part of the templates. They’d all have to feather out into each other so that those networks connect up between templated zones. Think Voronoi cells here.

Done that way, the buildings wouldn’t adhere to the terrain layout at all. The highest skyscrapers might want to be on top of the highest mountain, which would look ludicrous. That sort of thing could be filtered out, of course, just as trees don’t grow above the tree line, etc. You’d probably also have the problem of spotting patterns from the templates. That same weird intersection is part of every circular patch of buildings. That overpass is always next to the big building. And so on.

Then there’s the problem of making such a scheme perform in real time.

6 Likes

You could also go for the Trantor way and cover it with domes, which would probably be easier to code.

And speaking of Trantor…
The hardest part for the engine would be the giant planetary radiators at the end of the skylifts, as they would have to add support to the I-Novae Engine for megastuctures.
Why giant planetary radiators, may you ask? Cities produce heat. Planet-sized cities produce lots of heat. You don’t want your planet surface to be hot enough for tungsten cloud paterns, do you? What you do want, though, is an awesome red-glowing belt in geostationary orbit linked to the surface with a web of sky-cables. Nothing says “I run the effing Galactic Empire!” like an awesome red-glowing belt in geostationary orbit.

2 Likes

There’s a zombie survival game called Survive, made by subsurface games. The dev writes a lot about city generation on the sites blog, so it might be interesting for you to skim through his posts.

1 Like

He’s tackling the flowing water problem, where the roads follow the terrain. It’s an expensive iterative approach. It may work for his game, but it wouldn’t for Battlescape.

David Tse is a talented programmer. He has a grand dream and he’s doing a good job of pursuing it. Unfortunately, his description of Survivor sounds exactly like Infinity:The Quest for Earth as originally described in terms of scope. Disturbingly, he tweeted this:

Sorry I meant to post some stuff earlier today, but I passed out in my chair.

Not healthy. Josh Parnell comes to mind.

Guys, when you’re building something grand with a small team, build something small and complete, then improve on it in increments. All along the way you’ll have a working game. When you’ve had enough - or life just requires you to do something else, you’ll still have a working game. Of which you can be proud.

David should have started with the zombie-killing bit and built up from there. You can have fun killing zombies on a flat plate with boxes for cover…

5 Likes