HL1 VisLeaf and Func_wall question

  • Thread starter Thread starter Release
  • Start date Start date
R

Release

Guest
Hi, hopefully it's OK that I ask this in the HL2 mapping forum.

If I were able to use displacement brushes in HL1, I wouldn't be asking this question, but it's bugging me in the design of a HL1 map.

Let's say my map's leaf layout from the top view is like this, and the map is a canyon, surrounded by irregular-shaped cliff walls. There are 3 leafs, and the upper right would would not be visible to the lower right one (or vice versa).

mapleafsnj7.png


My map isn't actually THIS simple, but yeah. So, those cliff walls (the crappy brown jagged lines), need to be func_walls. Actually, just imagine this is a HL2 map and I want to use func_details for my cliff walls instead of displacement brushes, lol. :)

So, my question is, would it be OK to select all those cliff walls, group them, and tie to func_wall (func_detail if HL2)?? Or would that destroy the point and make that "entity" rendered from anywhere in the map, no matter what visleaf you're in? Or would it automatically cut up my one huge grouped func_wall's visibility, depending on the leaf you are currently in?

Or, do I have to make little groups of the walls and have them as separate func_walls/func_details?

Hope this makes sense. Thanks
 
That's a bad idea. I'd use it in low-FPS areas, instead of making everything func_wall. Alternatively you can model the cliffs. Also don't forget the power of killtarget and env_render.
 
"That's a bad idea. I'd use it in low-FPS areas, instead of making everything func_wall."

Sorry I must've missed something - what are you suggesting when you said this? Use what instead of func_wall ? Smaller grouped, but more numerous func_walls, or something else?

Modelling maybe, but the chunks are pretty big that I want the player to collide with them as walls (not a flat wall)

As for the last thing env_render I'm actually not familiar with that so I'll look into it, but I'd also like to know what your first suggestion was? Thanks :)
 
Well, I generally use func_wall for complex brushes (i.e. 12 sided pipes) touching the ground/wall/etc. (worldbrush). You should use normal brushes.


As for the env_render and killtarget, here's a little example explaining how it should be used in the levels: Let's say you have a room/area with full of brush/model based entities. You can just give them a name and remove them later (after player leaves that part).
 
Ahh I see what you're saying now. I should've mentioned earlier, the reason I decided that I wanted to use something other than world brushes, is because the compile time isn't even reasonable. Like, I left it on overnight and it didn't finish compiling once before, but that was when everything in the map was world brushes. I started grouping chunks (about 10-16 pieces in the same area) to func_walls and it slowly started decreasing the compile time, I guess having too many func_walls is bad for FPS, but I just don't see any other alternative besides making the map much smaller (which I've done already, it's much smaller than originally planned :( )

For the killtarget stuff, cool. Does it actually kill it permanently? Like what if the player goes back to visit a previous room? If it does kill it permanently, I guess it's for instances when the player can't physically backtrack, right (like after falling down a big ledge?)? Or does it just disable their rendering temporarily? The reason I ask is it is actually a multiplayer map.
 
There's trigger_inout in Spirit of Half-Life, but it's not very MP friendly. You can use it with the env_render to make temporary rendered objects. Perhaps you can just use vanilla HL's triggers to get what you want.

Do you use Batch Compiler for compiles?
 
Hrmm, not sure, I just know that I use the updated ZHLT tools, not sure about something called batch compiler though. Initially the very long compile time was caused by hlvis, calculating all the triangle-cut visleafs created by the irregular jagged cliffs :(
 
How complex are your cliffs?

Have you ever played the original ctf_badlands for Team Fortress Classic? (might have been called tfc_badlands, I can't remember). Anyway, that is basically a big canyon like you described and it works fine.

I'm wonrdering if perhaps either your spaces between the cliffs are too large (this will really increase compile time), or if your cliffs are too complex.

You could also try altering your cliff geometry to more closely fit the 'powers of 2' principle that BSP compilers really appreciate (e.g. height/width/depth = 2^n, where 'n' is any number between 1 and 9, perhaps even 10)

How Binary Space Partitioning works

Basically, BSP wsorks in 1s and 0s, so it prefer to calculate things in powers of 2. If something isn't in a power of 2, it will break it down until it can be described as an equation involving 2. The less your BSP geometry uses powers of 2, the more calculations required by the compiler.

---

One other method would be to split the main canyon into 2 by putting a tall central cliff partition down the middle. If this is done in solid brushes (or it has a colid brush core) if will cut down the amount of space that can be 'seen' at any time roughly in half.
 
Thanks for the suggestions.

They are somewhat complex, more than the Hl1 cliffs. When you mentioned the Team Fortress canyon map, I haven't played it but, you said it works fine - what method was used, the one I made in the paint pic and using func_walls for the cliffs, or did they have all the cliffs as solid world brushes? (I don't have Team Fortress or I'd check to see)

When you said you are wondering whether the spaces between the cliffs are too small and that that would increase compile times - the thing is, the compile time was only ridiculously long when I had all those cliffs as world brushes, so I wanted to change the cliffs to func_walls. But my real question was more of a performance question for the best method of making those cliffs without using world brushes

Dividing it by a big cliff is a great idea (with an inner solid brush), but the map is a scene taken from something else and I wanted to duplicate it as close as possible

So basically my performance question I was talking about is - seeing that the map is divided into 3 leafs, and that the upper right leaf (let's say leaf 1) and the bottom right leaf (leaf 3) are invisible to each other, if I grouped all of the cliff walls into a single func_wall, would the cliffs in leaf 3 still be rendered while in leaf 1, and vice versa? Because if they would be, then I would imagine I would have to make smaller grouped "chunks" of cliff walls, and have many func_walls instead of one big one. Or, would it be OK that I would have it all one big grouped func_wall, because the visleafs (1-3) would automatically hide the sections(s) of the func_wall that don't need to be rendered (ie when in leaf 1 or leaf 3).?
 
The TFC map, I'm almost certain, will have used solid brushes because the geometry was fairly basic.

If you use a good texture you can get away with very basic geometry, just look at something like The Lost Coast. I know you can't make the textures that detailed for HL1, but you could maybe get a good pattern that breaks up the lines of the brushwork.
 
Back
Top