Designing a huge city with smoke and mirrors

Started by
14 comments, last by Wavinator 21 years, 8 months ago
I''m not quite sure if you are talking about the content creation problem or the actual technical implementation. I''m with bishop_pass concerning the non-repetitiveness. Using the same buildings over and over again will just be confusing.
The following idea consists of lots of what previous posters have said, but it takes it a bit further.
It''s probably not exactly easy, but you could use "chunks" of geometry for the buildings'' architecture. If you have 25 different types of window, with a few different textures each. Apply the same idea to everyhing else: doors, rooms, walls, roofs, etc.
Have a sort of "general building architecture" that creates the foundations and the walls, but according to lots of parameters, that you can either randomize or specify manually, so you don''t spend all your time pulling up walls and placing windows.
You will also want to use detail objects, say, lamps, window sill(sp?) objects like pot plants, down to decals on the walls (gun shot holes, paint peeling, parts of the wall falling off, etc.
Another VERY nice detail would be road numbers and road signs.

The way you''d store a building would thus be:
building style X, texturing type Y, roof Q, and then a list of windows with position and type, etc.
Since we have the geometry ready we can just assemble the building from that data on-the fly.

To make a large city more interesting and immersive, make it less American. The fact that most of American cities'' streets are numbered and aligned in a grid makes it all extremely simple to understand but it gets terribly boring in my opinion. Don''t get me wrong - making it too complicated will be confusing, but arrange "blocks" of grid aligned streets, that, on a larger scale, are for example aligned around a city centre, or landmarks.
Landmarks - another important point, especially for easily finding your way. Put a few rivers in there - a big one, and a few small ones as well. Cities aren''t always flat, in fact, many European cities are far from that.

You will of course have to think up some reason why you can''t leave the city, but this depends heavily on the game and the setting itself.

About the technical implementation:
The architecture system just SHOUTS out for geometry LOD. Also, as you can re-use objects, memory consumption is comparably low. The actual world storage can also be dynamic - let''s face it, you can''t see if there''s a cat lying on the window sill of a building a few hundred metres away. Assign each architecture element and object a maximum level from which it it visible. Arrange everything in quadtrees, or octrees if you like and load/unload object detail levels (the group with the cat, for example) for the entire tree node.

I bet I could come up with more ideas, but I''ll let you guys rip these apart for now.

- hillip@xenoage.de''>JQ
Full Speed Games. Period.
~phil
Advertisement
Actually, I plan to implement a system similar to that (whenever I get around to it.) It''s basically what I was describing earlier. You may want to put the buildings on some kind of terrain also, varied heights would help break some of the repetitiveness.
Have you read about the making of Republic? (www.elixir-studios.co.uk) The game is still in development, but they are doing a huge city with huge amount of detail etc etc. You might want ot read up on the web about the problems that they have had and what they are hoping to achieve.
Before anyone slags the game off, let me namedrop that I worked on it, and it really does have the somewhat crazy level of detail that they claim

http://www.positech.co.uk

Procedural building of non-important buildings, combined with LOD seems to be the way to go. Give each unimportant building a seed, and as you get closer to the building (or enter the building) build the details and contents on the fly.

Of course, what level do you want to go to? Do you want to be able to enter (or break into) a random house, open the refrigerator, pull out a bottle of milk, and have it be variably fresh or spoiled?

quote:Original post by pwd
Do you want to be able to enter (or break into) a random house, open the refrigerator, pull out a bottle of milk, and have it be variably fresh or spoiled?

That would be nice, even though a city that detailed could be a little overwhelming for the player. If you wanted to give every single building a different interior, you''d definitely have to go with a procedural city. You''d also have to have a very good culling\LOD system.

On the topic of repitition, no one (that I know of) has ever used Perlin Noise for city generation. Perhaps an algorithm that creates a building off of a number set, along with the Perlin Noise generator to create that number set, and you could have some interesting non-repetitive cityscapes. With that accomplished, using similar techniques to lay out terrain, rivers, roads, bridges, parks, you get the idea, you could conceptually have cities as interesting as GTA3 spread out in different areas of a huge world. Being that it''s numerically generated, it could be virtually infinite. The player would never stop finding new areas. Of course, that seems a bit excessive... and tough to keep a balance between level of detail and frame rate since you never know what you''re going to get. Hmmm...

- Jay

"I have head-explody!!!" - NNY

Get Tranced!
Quit screwin' around! - Brock Samson

This topic is closed to new replies.

Advertisement