Eh
You know that func_detail exists, right?
Func_nope
#15356 posted by oGkspAz on 2015/09/03 11:37:36
I tried making all the beams, thin pillars, light fittings and small wall details on my map func_detail the other day and the compiler was just having absolutely none of it. (txqbsp or tyr's bsp) The brushes werent showing o the mp at all, it was like I had deleted the lot. It took me hunting for an autosave where I hadn't edited it yet to get it back to normal. Something I did notice was that when it did work on some wall text I added: whichever engine I was using to play (darkplaces or ezquake) with refused to draw it ater a certain distance.
#15357 posted by Rick on 2015/09/03 11:39:30
You know that func_detail exists, right?
Yes.
You know a func_detail isn't the same as a Quake 3 detail brush, right?
#15358 posted by Rick on 2015/09/03 11:53:11
oGkspAz,
In Quake, func_detail only has one real use. It excludes the brush from the vis process. This can greatly speed up vis if you have a lot of small brushes that do not really block the player's view.
My understanding is that they can cause the problems you are seeing when used to seal the map or if they protrude out into the "void".
I could be wrong though, because I generally don't use them. If I had a map that took more than a few hours for a full vis, I might reconsider, but I don't think they make the final result any better.
#15359 posted by JneeraZ on 2015/09/03 12:49:35
"It's too bad they contribute to the 256 model limit. Is that impossible to change? "
This still exists? Even in expanded/enhanced engines?
#15360 posted by Rick on 2015/09/03 13:03:54
I'm sure it's not a hard limit anymore. FitzQuake will print a warning for over 255 models but the map will still run okay. I'm not sure Quakespasm even bothers with the warning. Maybe it's limited in the network code?
#15361 posted by adib on 2015/09/03 15:25:35
Perfect, thanks.
Think I confused two "splits". Func_detail allows you to let brushes out of VIS computation, so they don't split (1) 3D space, regarding Binary Space Partition. But makes perfect sense their brushes still split (2) other brushes' surfaces, or the engine would have to know about them in runtime for proper sorting. In this case, shaded func_walls come to hand, but you better not abuse them.
oGkspAz are you sure you didn't just checked one of those "not in easy", "not in deathmatch" etc by accident?
#15362 posted by Lunaran on 2015/09/03 15:38:53
Q2/Q3 detail brushes don't split polys/space, but I don't think that was possible in Q1 due to a bsp structure limitation I also don't understand and won't try to describe.
I'd love to hear a cogent explanation though.
Also Worth Noting
#15363 posted by Lunaran on 2015/09/03 15:43:49
func_detail isn't like any other func (except func_group). It doesn't carry through as an entity into the game, it purely exists as a compiler directive. It's a fake func. Making the classname worldspawn_detail might have technically been more accurate.
Q2/Q3 had a 'detail' flag in the .map format spec, which won't be modified for Q1 editors and tools because of reasons. There's occasional discussion of using the q2 or q3 .map format (or even the q3 bsp format), but it never leads to any movement except in wacky topheavy ports like Darkplaces which can load Megaman levels and includes quakeC builtins for running SETI@Home.
#15364 posted by necros on 2015/09/03 15:52:35
the new edict limit is like 32768.
in fitzquake, i think you may have to explicitly set that with max_edicts "32768". quakespasm too maybe.
Lun
#15365 posted by ericw on 2015/09/03 20:18:54
I tried hacking qbsp to make func_detail not split world polys. The result was you could shoot through the func_detail things (bullets are collision detected by doing bsp traversal of hull 0). That change must have broken the bsp tree construction somehow.
q3bsp, I think, stores all of the original map brushes in the .bsp file, and uses those for collision detection.
#15366 posted by Lunaran on 2015/09/03 23:10:37
What? No. no way. then decompiling would be only a matter of extracting the right lump and writing it to .map?
Pretty Sure That's Correct..
#15367 posted by ericw on 2015/09/03 23:17:29
q3map2 has an option for decompiling:
https://en.wikibooks.org/wiki/Q3Map2#Decompiling_into_a_.map
I checked out the code to see if it was doing anything interesting, and it's pretty much just "open the 'brushes' bsp lump, write each brush to a .map file"
Wow It's True.
#15368 posted by czg on 2015/09/03 23:38:19
#15369 posted by Rick on 2015/09/03 23:40:55
Here's a picture that shows the difference between a world brush, a func_detail, and a func_wall.
Those are 16x32 octagons placed against a flat wall.
The func_wall is in the middle. Notice how it doesn't cause the wall behind to get chopped up.
http://quaketastic.com/files/screen_shots/WallvsDetail.png
#15370 posted by Rick on 2015/09/03 23:57:49
BTW, that's in Quake.
Most of the time, a detail brush in Quake 3 will work just like a func_wall in Quake.
#15371 posted by metlslime on 2015/09/04 00:19:46
quake 2 also has the brushes. This is how they are able to support collision for arbitrary sized entities, rather than using N number of "hulls", one for each bounding box size.
Holy Shits
#15372 posted by Lunaran on 2015/09/04 02:39:57
guess you learn something new every day
are the brushes linked to the tree at all? how's the space searched efficiently?
So...
when is the best situation to use func_detail? Does it have any impact on the end user or does it only impair compile times?
#15374 posted by adib on 2015/09/04 07:25:14
The impact on end user is a level portalized in a more rational way. Visibility will be based on walls enclosing the room, not the six uber detailed pilars or the chandelier inside it, ones you will carefully turn into func_detail. Someone correct me if I'm wrong.
#15375 posted by JneeraZ on 2015/09/04 12:04:26
adib - No, that's right. You should func_detail anything that will create a ton of cuts and portals for no real benefit.
#15376 posted by Rick on 2015/09/04 12:30:16
As far as I know, the only reason to use func_detail is to speed up vis. If done correctly, the player will have no idea that they were used. Do it wrong and the player will see brushes start disappearing. Func_detail brushes have no effect on how qbsp chops up the brushes.
@Rick
#15377 posted by oGkspAz on 2015/09/04 14:42:38
That sounds like the issue I was having with my text shaped brushes on the one wall.
Func_detail
#15378 posted by Kinn on 2015/09/09 23:10:53
As far as I know, the only reason to use func_detail is to speed up vis
Actually, is there a run-time benefit too? e.g. let's say you have a huge and detailed map - it's better for performance to have fewer visleaves (with more polys in them) than tons and tons of small visleaves, right? I'm guessing func_detail results in less visleaves?
#15379 posted by ericw on 2015/09/10 00:38:05
tyrutils qbsp (and I assume rebb's as well) uses knowledge of which faces are func_detail in its bsp heuristic; it will try to use non-detail faces to divide up volume in preference to detail faces.
That might give a more optimal bsp tree, but aside from that, using func_detail creates just as many visleafs as not using it, so I wouldn't expect any difference at runtime.
|