Archived

This topic is now archived and is closed to further replies.

Wavinator

Designing a huge city with smoke and mirrors

Recommended Posts

Enclosed levels have the luxury of creating transition rooms where the end room looks the same as the room at the beginning of the level. This enables a segmented level to appear as a large environment. What tricks do outdoor world creators have? Here''s what I can think of: Billboard vista with barrier: This is a hackneyed and somewhat frustrating device where players can see part of a skyline but can''t get there. But as long as the view looks good, has some animation, and is appropriately barred (say by water if the player can''t swim) then it works. Cardboard front: Crazy Taxi, Grand Theft Auto 3 and a lot of driving games use this idea, where buildings are simply textured boxes. Mixed with areas that can be entered, this works as long as the buildings that can be entered are clearly called out. Repetition: Let''s face it, cities are repetitive. If you''re fighting, racing or driving through a city, the shape of the passageways between buildings is probably more important than the buildings themselves. However, even buildings that can be entered in a real city often have standard patterns. Combined with elements inside them that can be randomized and alterations to texture colors this might be a workable solution for creating a very large city. Chokepoints: GTA3 seems to use major tunnels and bridges not only as a reward system that allows players to get to new areas, but as a level loading mechanism. I''m not sure, but they seem to combine the billboard vista idea with this so that you can see but not get to areas across the water until you go through one of the chokepoints. Any other tricks you know of? -------------------- Just waiting for the mothership...

Share this post


Link to post
Share on other sites
Need For Speed Hot Pursuit didn''t even use full boxes for the buildings. In a particular level you could ramp up a wall and fly about 40 feet into the air which gave you a view behind the "set" which was ugly. The background was solid blue (the water textured plane didn''t extend to infinity), and you could see that the buildings didn''t even have back or top sides to them (pretty sensible since you normally will never see them...)

Share this post


Link to post
Share on other sites
Level of Detail (LOD) design. Vary the amount of information based on the distance away from the object. So, if the viewer is far away from the object, use carboard cutouts with simple textures. Improve the textures as you get closer and perhaps even add more polygons (switch to a more detailed model). The benefit of this is that for a well designed system, the amount of information processed in a given scene is roughly constant, since as you get closer the field of view decreases, so the detail within the current field of view can be increased.

Cheers,

Timkin

[edited by - Timkin on August 11, 2002 11:14:38 PM]

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Portal Viewing systems and range based systems for culling. Since you have smoke, set the far clipping plane up a little and use fog to cover that you aren''t drawing more than 100 feet in front of you.

Use the same building (or city block) geometry over and over again, just offset the same building throught the city using a wolrd matrix with a transform and use a different texture.

Go nuts. Use a Skybox like eveyone else. Hell, use a sky plane.

Share this post


Link to post
Share on other sites
its not so much of a trick as it is a programming feat

--- dynamic level loading.

Its difficult, but it is possible to load a low detail version of the level (for use in sky lines and such) and then load / unload more detailed versions of regions in another thread as you enter the range of them.

You will probably need to have 4 or 5 levels of detail and to reduce the data in each make the next detailed level use the data of the previous detailed level as a base.

There are a TON of other problems, but thats what programming is all about now isn''t it :-D

Good luck! I''d love to see this working :-P

-SniperBoB-

-SniperBoB-


What if The Matrix was recursive?

Share this post


Link to post
Share on other sites
Giant cities are in the end pointless if they are cardboard facades, repetitive, not rich in detail, etc.

Variety is the key. Sure, houses can in general look the same, but each should have nuances which define them as unique: different peeling paint, different furnishings, different remodeled floorplans, different porches, different roofs, different windows, etc...

Everything is similar, nothing is even close to being really similar. No single office building is like another, unless part of a business park.

Sure, concrete tilt-ups look alike, and one quonset hut looks like another, until you get closer.

Procedural algorithms are the key. The more the better. The more complex the better.

Do you ever get the feeling that the game you''re playing has no depth and is merely a cardboard environment where each succeeding section really is just built on the template of the last? How tiresome and boring is that? It''s not that much fun. I think I''d rather go outside and play Frisbee.

Don''t make another bigger city that is more of the same. Don''t even bother. Either solve the problems for a richly detailed world, or find another type of game to build.

Share this post


Link to post
Share on other sites
Similar (not the same) building geometry, different textures\effects, and different detail geometry. Most buildings are roughly the same shape, they just have different details or are made out of different materials. LOD is also very important, with a decent LOD system you can get away from a lot of the problems of a cardboard front. Only a few close up buildings need to be rendered in full detail, everything far away can still be cardboard or billboards\imposters if the geometry is very far away.

Share this post


Link to post
Share on other sites
Yes, variety is important. A lot of buildings is fine, but you need large and small buildings, some with lots of windows, some just made of concrete, large and small main streets, bridges, tunnels, back allies, parks, rural areas if possible. Some areas with trees, a body of water, etc. (Thinking about Carmageddon here)

On a side note:

I would hate living on Coruscant. The whole planet is a city!

I''ve also heard that some people living in Tokyo feel dehumanized because of the extreme lack of flora in the city.

As for tricks, try to design the city such that you can''t see any farther than beyond a certain point (using fog or curved streets) so that rendering is kept to a minimum without keying the player off to your optimizations.

Share this post


Link to post
Share on other sites
Maybe you listed this but what about Dungeon Siege''s way of handling that? Where it would load the stages as you walked. I only played the demo but it is a pretty large area and There isn''t one loading screen. Maybe the game is just hogging all my ram...

Bleu Shift - www.bleushift.tk

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
The Jak & Daxter Postmortem in the April 2002 Game Developer made some brief mention of useful techniques for outdoor rendering in the "Seamless world, grand vistas, and no load times" section of the article: "The programmers had to create tools to process interconnected levels containing millions of polygons and create the fast game code that could render the highly detailed world. We developed sereral complex level-of-detail (LOD) schemes, with different schemes used for different types of things (creatures versus background), and different schemes used at different distances, such as simplified models to represent faraway backgrounds, and flats used to represent distant geometry. At the heart of our LOD system was our proprietary mesh tessellation/reduction scheme, which we originally developed for Crash Team Racing and radically enhanced for Jak & Daxter."

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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!

Share this post


Link to post
Share on other sites