Advice - handling a big city like London
by Andy Hawkins · in General Discussion · 04/05/2008 (9:52 pm) · 16 replies
Intro
So as some of you may know I'm doing B.R.A.V.E which stands for Britain's Response to the Alien inVasion of Earth (imagine the words coming up and the bolded letters remain while the rest of the words fade out to finally form the word BRAVE)
Anyway - so I've started work on modelling London. My sister is totally kicking butt in modelling and last night finished a great low-poly version of Big Ben. Originally I was going to base the battle over the Royal Docklands so Big Ben, the Millenium Wheel etc were all off in the distance and not under scrutiny. But looking at her excellent work I've decided to bring the battle to circle over the center of London.
So to the question!
Looking at thes pictures from Blazing Squadrons (Gamespot) can you guys suggest the way I should go about handling a scene like this? Has anyone done a city before? Strategies, techniques, time saving tips, data management advice would be helpful please






So as some of you may know I'm doing B.R.A.V.E which stands for Britain's Response to the Alien inVasion of Earth (imagine the words coming up and the bolded letters remain while the rest of the words fade out to finally form the word BRAVE)
Anyway - so I've started work on modelling London. My sister is totally kicking butt in modelling and last night finished a great low-poly version of Big Ben. Originally I was going to base the battle over the Royal Docklands so Big Ben, the Millenium Wheel etc were all off in the distance and not under scrutiny. But looking at her excellent work I've decided to bring the battle to circle over the center of London.
So to the question!
Looking at thes pictures from Blazing Squadrons (Gamespot) can you guys suggest the way I should go about handling a scene like this? Has anyone done a city before? Strategies, techniques, time saving tips, data management advice would be helpful please






#2
04/06/2008 (4:01 am)
Thanks Rene - that's given me some ideas. I particularly like the colouring idea. I might set up Lightwave to allow me to do this.
#3
1. far
2. transitional
3. near (or something along those lines)
04/06/2008 (5:14 am)
You could setup something like Ed Maurina did for his book, eccept instead of loading levels, you are loading buildings. Or make 3 lod levels. 1. far
2. transitional
3. near (or something along those lines)
#4
04/06/2008 (5:48 am)
Unless your plan on letting folks skim down and actually get on the ground. You can probably get away with texture and box tricks. LOD might be a bit interesting considering the Scope of the view that a flight sim gives. Basically 99% of those buildings you see are simple textured boxes.. imo. How does one reduce a 6 sided box in LOD? or actually the ones with peaked roofs would be 7 sides. Im not exactly sure LOD would work in this case unless you are going to have a fog of war at say 1500 units and the LOD snaps in at 1550 or something like that. Becuase its my experience that these gaves are built on their length of view in terms of wowness, imo. You can see in those pictures even the fog and the buildings in them at a distance. how far away are those? Any LOD would be really far away. and a really near one, and a edge of map kind of LOD. To get them all on screen is the tricks. I would also guess that they might have some kind of texture lod, in thier game. that has a blank texture that is there and it pops up the right texture as it approaches the LOD.. But looking at those pictures that would seem to be a logical tech to look at.
#5
@Edward - yeah I'm planning on the aliens plucking people out the street - but I'm going to settle on LOD2 for all buildings and streets because otherwise it's going to be too hard to finish all the objects in time. I want a long field of view but are you suggesting I used imposters for distant building? (flat polys that always face the camera at a distance)
04/06/2008 (6:59 am)
@Mike - which part of the book are you referring to?@Edward - yeah I'm planning on the aliens plucking people out the street - but I'm going to settle on LOD2 for all buildings and streets because otherwise it's going to be too hard to finish all the objects in time. I want a long field of view but are you suggesting I used imposters for distant building? (flat polys that always face the camera at a distance)
#6
04/06/2008 (7:38 am)
Well no, becuase your going to having a 3d view, you going to see the billbaord effects from above.. your going to have to really balance your visual range i think between what you want your player to see, versus what you need to be showing at any given time. I realise that your going for the Defender style of game play, but when you introduce a 3d enviroment, the 2d options arnt really feasible( it would use the same amount of relative resrouces to draw a billboard and orient it, then to use a simple box), unless you make the 2d option way outside your LOD (which imo isnt worth it) id just keep a plain box, or nothing out past the visual range. and try to redo your visuals. And yes, i know im helping my competition :), But your concept is pretty cool, and seeing a remake of Defender done properly would be a nice take on it.
#7
04/06/2008 (8:13 am)
I have set an area of operations that extends from the London Bridge to the Tower Of London. I've drawn an map that defines what is LOD3 outside of that and you can't fly out that way - the game will turn you around once you hit the LOD2/LOD3 radius. LOD4 based on ideas I got from what you said, maybe I could do heaps of buildings painted on a flat ring and have loads of rings. If I restrict the height the illusion should work pretty well - and you wont be able to fly out there because the game will keep turning you around.
#8
Edwards advice sounds like the way to go tho. Even at ground level, a box with a good texture would work out just fine and keep your poly count low.
04/06/2008 (8:18 am)
Quote:@Mike - which part of the book are you referring to?I'm talking about his level loading scripts. He loads levels/blocks by basicly writing a text file and having torque read it to place the correct blocks in the correct mission.
Edwards advice sounds like the way to go tho. Even at ground level, a box with a good texture would work out just fine and keep your poly count low.
#9
04/06/2008 (9:05 am)
You also have to take into account that your visual raduis circle doesnt stop at the LOD. So if your visual raduis is the orange circle, you have to take into account have that diameter out again. so at least a bit past the green in terms of visual distance. Thats alot of buildings even for 7-10 brushs/polies each. but I would do a mass building test in torque for your example, and have 4 shapes with 3 LODs each. have 1000 of those shapes out in the varies distances. and see where it gets you. 1000 buildings should be do able we have done 100,000 brushes with shapes for fantasci testing. so with some careful planning and LOD the trick is finding what your real visual range is going to be. do a distance test at range and find out for yourself where your comfortable with it. then just pop out your basic building shapes. you dont want them to be popping in and out of LOD when your doing a high speed manuever in the plane. Either way, my best advice is to do some real engine tests.
#10
Every building that was less than 3 stories was just textured onto the ground, but stuff like bridges, factories, landmarks, and larger buildings in general were modeled.

At a distance it looks awesome, but once you can tell that it's just textured on the ground, it looks kind of strange. Maybe you could make an invisible LOD for the far, and for the transitional, you just make a big rectangular prism, and for near, you make a mildly detailed building.
04/06/2008 (10:26 am)
Also not speaking as a professional, but my favorite flight-sim game Ace Combat 04 only had the larger buildings modeled.Every building that was less than 3 stories was just textured onto the ground, but stuff like bridges, factories, landmarks, and larger buildings in general were modeled.

At a distance it looks awesome, but once you can tell that it's just textured on the ground, it looks kind of strange. Maybe you could make an invisible LOD for the far, and for the transitional, you just make a big rectangular prism, and for near, you make a mildly detailed building.
#11
- LOD models cut off at a distance when the player drops down to the street (they should be below buildings at this point so only a few street blocks need to be rendered)
- Add full screen effect (rushing) when getting lower to give the sensation of speed and use the effect to mask off distant objects
- Can only use the VTOL caps of the Harrier when near the ground. This means that the player can't float and get a good look at the distance which would spoil the illusion.
- Assign large sectors of buildings as instances of individual buildings has a hit on the renderer. So make lots of 2 block x 2 block building chunks and place in world with LOD
- Put a boundary sphere on each chunk and if these chunks are outside of the view frustum - don't draw.
- Use rings of flat polys for distant buildings and limit the height of the jet
04/06/2008 (10:47 pm)
So after a little more investigation and getting advice from you guys here's what I'm going to do.- LOD models cut off at a distance when the player drops down to the street (they should be below buildings at this point so only a few street blocks need to be rendered)
- Add full screen effect (rushing) when getting lower to give the sensation of speed and use the effect to mask off distant objects
- Can only use the VTOL caps of the Harrier when near the ground. This means that the player can't float and get a good look at the distance which would spoil the illusion.
- Assign large sectors of buildings as instances of individual buildings has a hit on the renderer. So make lots of 2 block x 2 block building chunks and place in world with LOD
- Put a boundary sphere on each chunk and if these chunks are outside of the view frustum - don't draw.
- Use rings of flat polys for distant buildings and limit the height of the jet
#12
What replicators do is describe how objects are (most of the time randomly) placed within a region, based on data you provide like density, random "fuzziness", and the like. The replicator object itself is what is networked, and then the client simply replicates everything client side. Saves a lot of bandwidth :)
Of course, in your case, you don't want random placement, you want controlled placement. This is where Rene's idea of using a bitmap to identify placement locations for various building types becomes a quite useful solution. You would have the bitmap as part of your /data directory (delivered with the client, so you don't need to network the bitmap itself), and then your networking becomes very simple and lightweight.
You haven't mentioned an engine selection yet, but I'd suggest that your best selection within the Torque product line is TGEA--batched properly, even thousands of instances of low poly buildings will render incredibly fast as long as you limit yourself to an appropriate number of building types (models).
TGE would have to render each building on it's own, sending each building to the video card individually--not a good solution for this type of problem set.
04/06/2008 (11:09 pm)
Almost guaranteed you'll want to look at a replicator type solution for this--individually modeled, it would take probably 4-8 minutes simply to network the entire city if you made each building a static shape, or something equivalent.What replicators do is describe how objects are (most of the time randomly) placed within a region, based on data you provide like density, random "fuzziness", and the like. The replicator object itself is what is networked, and then the client simply replicates everything client side. Saves a lot of bandwidth :)
Of course, in your case, you don't want random placement, you want controlled placement. This is where Rene's idea of using a bitmap to identify placement locations for various building types becomes a quite useful solution. You would have the bitmap as part of your /data directory (delivered with the client, so you don't need to network the bitmap itself), and then your networking becomes very simple and lightweight.
You haven't mentioned an engine selection yet, but I'd suggest that your best selection within the Torque product line is TGEA--batched properly, even thousands of instances of low poly buildings will render incredibly fast as long as you limit yourself to an appropriate number of building types (models).
TGE would have to render each building on it's own, sending each building to the video card individually--not a good solution for this type of problem set.
#13
Assuming I read the bitmap I have to do this via C++ right?
04/07/2008 (6:32 am)
Yes I will be using TGEA. I saw somewhere that I could do shape replication and mix it with a blocker object. At the time it was to do a forrest with space reserved for a path. Could I do something like this with the bitmap perhaps.Assuming I read the bitmap I have to do this via C++ right?
#14
fxShapeBlocker
So I should use something like this code but read a bitmap as the source blocking region instead?
04/07/2008 (6:35 am)
This is the one I meant - fxShapeBlocker
So I should use something like this code but read a bitmap as the source blocking region instead?
#15
Another question though... Some shapes hit other shapes - is there a way to stop shapes within one replicator from touching each other?

04/08/2008 (3:54 pm)
Melv May saves the day. I used fxShapeReplicator on this scene as suggested by Stephen Zepp. I handles quadtrees, frustum cull and most probably leverages the tech to handle instances correctly in TGEA using the GPU as far as I know. Regardless, these scenes on my crappy ATI 9600 and 1.5GHz Pentium are drawn at lightening speed. I'm not worried at all about rendering a full city, I just have to keep the shapes simple.Another question though... Some shapes hit other shapes - is there a way to stop shapes within one replicator from touching each other?
#16
I think Ben's Forest Pack does something like that.
BTW, this is really looking cool...
04/11/2008 (4:53 pm)
You could probably modify fxShapeReplicator so that it won't spawn things within a certain distance of another spawned object.I think Ben's Forest Pack does something like that.
BTW, this is really looking cool...
Associate Rene Damm
For building the city, manually assembling the whole thing in Torque probably isn't a reasonable approach. In a 3D package, I'd probably go about this with something like coloring a grid and then procedurally letting the package place building meshes based on colors. Something along those lines. However, this would require coming up with clever export/import solution.