 Next QuakeC Question
#7087 posted by gb on 2008/03/02 05:43:51
Teleporter that waits for trigger, then works normally. My info_notnull experiment didn't work out.
I could probably use a func_wall to cover it or something, but that'd be crude... is it possible with info_notnull?
 Targetting
#7088 posted by Preach on 2008/03/02 11:26:00
The problem you're running into with the info_notnull is that you're creating a teleporter with a targetname. trigger_teleport with a targetname always wait to be triggered before they will teleport anything. So there are two fixes depending on whether you need monsters to be able to take the teleporter or not. If not, then the solution is quite simple - add another info_notnull which will create a trigger_multiple on the same location as the trigger_teleport, and which targets the trigger_teleport.
If you need this to be a full teleporter then you need a pair of trigger_relays repeatedly targetting the trigger_teleport(or does this work with a singe one targetting itself?). At a frequency above 5 times a second the trigger_teleport should stay on all the time, 0.1 seconds between triggers would probably be best.
 Preach
#7089 posted by gb on 2008/03/02 18:59:52
more thanks to you :-)
A trigger_relay flipflop. Cool.
 What Is
#7090 posted by RickyT33 on 2008/03/03 12:28:58
a clipnode?
(I will get round to looking at these other two releases ASAP but im too busy ATM :P )
#7091 posted by RickyT33 on 2008/03/03 15:44:02
Im only askin' cause ive got 28023 of them and I know I'm only allowed 32762, and I want to know what a 'clipnode' is so I can make sure I dont have any unnecessary ones.
 Every Time You Use The Clip Tool On A Brush, That's A Clipnode
#7092 posted by czg on 2008/03/03 15:46:05
To avoid clipnodes you should use vertex editing instead.
28000 clipnodes? Wow! I average like 400-500 in my maps.
 Yup
#7093 posted by RickyT33 on 2008/03/03 15:55:01
I use the clip tool all of the time. I used to use the carve tool, i.e make a brush in the shape of the part I wanted to clip off, then carve it into the brush I was wanting to shape. But the clip tool is really great when you realize what it does.
I thought I was gonna hit marksurfaces first. But ive got 275## of those, and more clipnodes.
I have trouble understanding what these things actually are. I know I can reduce marksurfaces by lifting things 1 unit off the ground, or 1 unit away from walls.
And I know that the world model is made up ultimately of triangles:
Is one triangle one marksurface?
Is a clipnode part of the model, part of the mesh?
Im guessing "not" for the latter of the two questions in the above sentance, as czg, you say its more to do with the way you shape your brushes using the clip tool.
Confusing.
 Lol
#7094 posted by czg on 2008/03/03 16:08:08
 Stop Listening To Me You Crazy-ass Cracker
#7095 posted by czg on 2008/03/03 16:08:47
#7096 posted by JneeraZ on 2008/03/03 16:09:27
Awesome.
 Ahh - Well Thanks For The Info...
#7097 posted by RickyT33 on 2008/03/03 18:19:56
?
 Somebody Must Know What A Clipnode Is... ?
#7098 posted by RickyT33 on 2008/03/03 18:24:13
After all of these years........
#7099 posted by JneeraZ on 2008/03/03 18:51:17
In looking around the web, I found this:
struct clipnode
{
// Index into planes lump
unsigned int plane_idx;
// If > 0, then indices into clipnodes; otherwise, contents enum
unsigned short children[2];
};
So, it would seem, a clipnode is a split in the BSP that either results in a list of more splits or a content leaf.
To reduce them I guess you would use less brushes or do whatever you could to reduce cuts.
 To Make Up, An Infographic
#7100 posted by czg on 2008/03/03 18:58:55
This is GROSSLY oversimplified and I probably got it half wrong, but the gist of it and how it works in practice is this:
http://czg.leveldesign.org/stuff/clipnodes.png
Place clip brushes over places the player can't get to. For instance if you have built some fancy brushwork up in a ceiling somewhere with lots of beams and trims and shit, block it away with a clip brush unless you need to player to rocketjump up there for some reason.
 Or Isn't Also One Help
#7101 posted by bambuz on 2008/03/04 00:52:15
to make details that stick out of walls be func_illusionary... (They don't clip)
#7102 posted by necros on 2008/03/04 02:06:55
in my experience, that's how i've reduced clipnodes as well.
interestingly enough, in early versions (and probably still now?) of aguire's glquake, you could load maps with >32768 max clipnodes, but some areas would be non-solid. :P
 Actually
#7103 posted by Orl on 2008/03/04 02:17:45
with newer versions of aguiRe's enhanced glquake, you can play maps up to 65536 clipnodes with no non-solid areas. Anything beyond that though, and the map will start to freak out.
#7104 posted by negke on 2008/03/04 09:09:06
With regular engines, clipnodes can be exceeded by roughly 10k before problems occur (e.g. monsters slipping through floors, being trapped on the outside). At least this was true for my qte2m6 - it may vary depending on the structure of the map.
Func_illusionary and other func entities don't reduce clipnodes, they add to them, especially if they are made of complicated brushwork or multiple brushes with spaces between each other (e.g. spikes in a tunnel).
#7105 posted by metlslime on 2008/03/04 09:11:48
Func_illusionary and other func entities don't reduce clipnodes, they add to them, especially if they are made of complicated brushwork or multiple brushes with spaces between each other (e.g. spikes in a tunnel).
Hmm, but i bet the same clip brush trick works on funcs as well... you could put an entire func_illusionary inside a cube clip brush, and then that model would have very few nodes
...
anyone know if that's true? :)
 Sources Of Information
#7106 posted by aguirRe on 2008/03/04 09:42:25
http://user.tninet.se/~xir870k/tooltips.txt
http://user.tninet.se/~xir870k/readmegl.txt
Hint: Search for "clipnode" ...
Clipnodes are only generated in hulls 1/2 (the clipping hulls), since they specify what entities "clip" (i.e. collide) against.
If you have a leak in either of these hulls or order qbsp not to fill them, the clipnodes will increase a lot.
I don't think illusionaries generate clipnodes as nothing collide against them, but all normal brush entities do.
 Aguirre...
#7107 posted by metlslime on 2008/03/04 09:54:07
but the compilers don't know how the func_illusionary is going to be used; it doesn't know anything about the quakec code. So it should be treated the same as any other brushmodel.
 Well, Thanks For The Information People!!!
#7108 posted by RickyT33 on 2008/03/04 10:21:36
I think I do know what a clipnode is. I've probably got so many because of my rock-work. And archways. Maybe I can block some parts off or something...
I might just tune my map so it hugs the limit. Its not at the limit yet.
 Hm
#7109 posted by ijed on 2008/03/04 13:10:19
I always assumed illusionaries didn't add to clipnodes, so the infamous spiky pit automatically became one (the spikes).
If this is wrong then does it mean that a door creates clipnodes from its starting position, even though it will move? I'm thinking of multi-part doors that could potentially produce alot of nodes. Also func-trains - only their starting position?
#7110 posted by JneeraZ on 2008/03/04 13:18:35
I think brush models are their own BSP trees inside the the master one, aren't they? In that case they would have their own set of clipnodes inside of them, independent of the rest of the level.
 QuakeC Question
#7111 posted by JneeraZ on 2008/03/04 13:44:52
Does anyone know how to get the SVC_FINALE message to accept more than one string at a time? I changed the signature for centerprint and others to accept multiple strings like this:
void(entity client, string s, ...) centerprint = #73;
However, that doesn't seem to work for the WriteString function. I want to customize the text that gets displayed at the end of a game of Qonquer but I don't see how to do it. It only ever displays the first string when I do this sort of thing:
WriteByte (MSG_ALL, SVC_FINALE);
WriteString (MSG_ALL, "[qonquer]\n\nfinal stats:\n", "blargh" );
Or:
WriteByte (MSG_ALL, SVC_FINALE);
WriteString (MSG_ALL, "[qonquer]\n\nfinal stats:\n" );
WriteString (MSG_ALL, "blargh" );
The first example just plain doesn't work and the second example causes Quake to crash with an "illegible message" error or something.
Help?
|