I guses something else to keep in mind which may be tripping you up is this - Unreal levels don't need to be sealed. You can have a simple floor BSP brush that you build on top of with meshes and blocking volumes. Unreal doesn't have a rule about airtight BSP or anything like that. There's no VIS process that needs to run here.
More On Blocking Volumes
I still don't get how the blocking volumes are supposed to end-up "in front" of the meshes acting as their clipping boundaries. If we use the map shown at http://www.3dbuzz.com/vbforum/showthread.php?t=167198
as an example:
The guy added a bunch of brushes to the empty world to make the basic map layout. Then he started adding meshes. Quite obviously the meshes are placed INSIDE the boundaries of the map layout, otherwise he would just end-up with meshes stuck inside solid walls. Now, towards the end of the map development process, you convert the initial additive bsp layout brushes into blocking volumes, okay... but at what point do they magically jump from being walls BEHIND the meshes to being IN FRONT of them acting as their clipping boundaries?
As I said, you can convert the additive brushes to blocking volumes. I'm not 100% sure if this shipped or not but trying right clicking an additive brush. Do you see a "Convert to blocking volume" menu option there somewhere? If so, that's how.
Otherwise you need to:
- right click the brush
- choose "Polygons -> To Brush"
- delete the brush
- right click the volume button on the left side of the editor and choose "BlockingVolume"
Blocking volumes are invisible, odorless and tasteless. They will collide exactly the same way that the BSP did but you can't see them. So if the player is running over a blocking volume floor that has static meshes inside of it that don't have collision, the visual result is that they are running on top of the meshes.
Granted, none of this REQUIRED - this is just how we tend to do it around here. Feel free to leave the floor as BSP or have the player run on the meshes themselves. We just find that colliding the player with a nice smooth skin of blocking volumes is best for gameplay because you don't get snagged in weird spots or corners or edges.
That Doesn't Explain
How the brush jumps from being behind a mesh to being in a blocking volume front of it, let me try to visualise, imagine looking at a room from a side view. At first you build a map like this:
| BSPwall | Mesh | Room
Now how exactly does that turn into this:
| Mesh | BlockingVolume | Room
Nothing jumps anywhere. The blocking volume is invisible so whatever meshes you've placed inside or behind it or in front of it are visible.
OK, for example ... let's say while creating your level you want a pillar to be in the middle of the room so you throw a BSP block there to represent where you want the pillar.
Later on, you decide it's time to mesh the level. At that point, you convert the BSP brush to a blocking volume. You then place the static mesh you want to use inside of that blocking volume and turn it's collision off. Now you have the exact same collision as before, but now there's a static mesh pillar instead of a BSP block.
Meshes don't have any real relation to the volumes. It's just wherever you happen to place them. You can have an entire level made of blocking volumes if you want to. The players will be running around in a weird empty void with collision.
If you look closely, 90% of the meshes are behind the grid texture, the parts that do stick out slightly wont be noticeable that the player clips through them.
Im sure there a few special cases where the SM's do need collision enabled but for the most part the blocking volume method seems very solid.
Thanks for all the comments all. I had started a map with subtractive editing mode but it will be a lot easier remaking it with additive brushes! Some great tips here.
Any quick and dirty tips for lighting we should know about?
"How the brush jumps from being behind a mesh to being in a blocking volume front of it, let me try to visualise, imagine looking at a room from a side view. "
Hang on, I think I see the disconnect. We don't mesh on TOP of the blocking volumes, we mesh INSIDE of them. The BSP and BlockingVolumes occupy the exact same locations.
I'm Pondering The Same As Jago
and haven't seen an answer yet.
Build world from 3d brushes like in quake.
This world has an empty inner space.
Now put meshes in that empty inner space. They are not inside the brushes but in the inner space.
Now, the world brushes clearly can't help in clipping whatever options you click on them since they are behind the meshes. They are further from the player than the meshes.
Ah Willem Responded
so you put the meshes inside the wall brushes.
Well, lighting is an art in itself. Start off with a basic skylight for ambience and maybe some directional lights to represent the sun.
Now add some bounce lights - these are just normal lights that are dim and colored to match the surrounding meshes. They give you a basic radisoity effect. To place them, hold CONTROL and L down while clicking on something in the level. A light will get added that matches the color of what you clicked on. Move it into a good position and edit the properties - I generally lighten up the color slightly and crank the brightness to at least 0.5 and often I just go to 1.0.
Once you've done this your level should be basically lit with natural light. Now go through and put lights on your various sources (lamps, fires, etc). A good idea here is to use 2 lights - add 1 that is pretty bright but with a small radius, and a second one that is dimmer but has a larger radius to give you a fall off effect.
That should get you 90% of the way there.
"so you put the meshes inside the wall brushes."
Right. Forget about inner and outer spaces - Unreal doesn't have that concept anymore. There are no leaks or voids. Meshes can go anywhere you want them to.
Right, I Get It Now
but now that I do, I see that as a rather cumbersome approach. Basically, you need to have the entire map layout as well as scale pretty much narrowed down before you can start adding meshes. It seems much easier and natural to use BSP to narrow down layout of a single room, throw in a few meshes on the "inside" of that BSP layout, proceed to add a few more rooms, add some more meshes, go back, readjust, repeat ad nauseum.
This gives you quick and visual results regarding where your overall scale and map theme are going and at least for me, helps me keep my focus and ideas keep flowing in my head.
I guess it could be possible to combine both approches: first design a map the way I am used to, then when the map is near finished, go through the entire map deleting the "outer edge" BSP brushes, turning off mesh player collision and adding blocking volumes where needed.
What are the perfomance ramifications of these different approaches btw? Does UE3 render BSP that is completely hidden behind a mesh? Is mesh-based collision detection very CPU-expensive compared to blocking volumes?
"Does UE3 render BSP that is completely hidden behind a mesh?"
Yes. The best you can do is turn off the lighting on the BSP surfaces that are hidden so at least you aren't eating lightmap space.
"Is mesh-based collision detection very CPU-expensive compared to blocking volumes?"
It depends on the mesh. A complicated mesh with multiple collision hulls will be slower than a simple blocking volume.
At any rate, the best way to learn is to try. I'm telling you the conclusions that we've arrived at after years of trial and error - but what works best for us might not be best for you. So give multiple methods a shot and build small rooms using those methods. Whichever way you feel most comfortable with will become clear.
And with DM maps, you don't have to worry too much. The engine can brute force a lot of stuff through the video card and CPU before it becomes an actual performance problem.
If you're going to start making large warfare or vctf levels, you'll need to start paying careful attention to what methods you employ.
BWT, if you're having trouble visualizing the blocking volumes turn on the button on the toolbar that looks like a red box with a line through it. That will make any selected blocking volume (as well as the builder brush) draw it's polygons with a translucent material. That lets you see exactly where they intersect the world.
I find it pretty interesting that UE3 uses an empty world (like Quake) where as UE1 and UE2 had that solid stuff. Is there some interesting technical explanation (maybe already written and available online)? I remember toying around with the editor in UT back then and it was so much easier than Quake's Evil Void Leaks (well, as an amateur at least).
Various technical reasons. Also so we could use huge meshes off in the distance as sky boxes. Most skies in UT3 and Gears are huge skydome meshes.
Among the technical reasons were streaming complications, ease of world building, etc.
Different tech, different limitations, you know...
I guess one of the big reasons was that there's no penalty for seeing the void anymore - because there is no "void". I think that was the single significant reason. So the entire world space is open to the level designer to do with as he pleases.
Lighting On Additive BSP Brushes
I decided to have a go at remaking what I've made so far in my UT3 map using the Quake'ish approach of purely adding brushes to empty space. First note: damn, I need a lot more brushes this way. Second note: why does lighting in places where 2 additive brushes meet each other look so horrendously shit?
If you have 1 large brush with a large shadow on it, it looks ok, but if you split the brush in 2, the "seam" where these 2 brushes meet will have absolutely craptastic lighting. Why is this and what can I do about it?
There's nothing you can do about it, sadly. Either make it one smooth surface or replace it with static meshes (lay a trim mesh over itm for example). It sucks and we've bitched about it here but the coders don't have a solution yet.
Heh yeah...realism is not really a strong point of mine and those are definitely good observations. I was on a tight schedule so I didn't have a lot of time to 2nd guess or redo things which is probably why I won't release that map publicly until I can give it proper love.
Thanks For All The Tips
I am now on my way creating a ut3 map :)
I must say once you learn the basics its extremely fun to work with the engine, still having some issues with lighting, for instance, directional lights dont seem to actually light anything, which is a bit odd, and I cant find a solution at the moment, so I've resorted to using large AOE spotlights, not a pretty solution but it works for the time being.
Thanks for all the help!
Directional lights need to be able to reach whatever you want them to light. A room with no windows will receive no light. Also make sure that stuff like your sky dome isn't set to cast shadows.
DaZ go finish your base map please! then u can go make your ut3 map :p