News | Forum | People | FAQ | Links | Search | Register | Log in
Mapping Help
This is the place to ask about mapping problems, techniques, and bug fixing, and pretty much anything else you want to do in the level editor.

For questions about coding, check out the Coding Help thread:
First | Previous | Next | Last
Make the bottom brush that actually seals the map area a normal skybrush. Then make another brush that's about as wide as the skybrush, but place it so it's top surface is just below the top surface of the skybrush.
What I did in Chapter's "He Falls Like Lucifer" was to make the skybrushes 64 thick, then make the "black" textured brush 32 thick, and place it inside the bottom skybrush with a gap of 16 all the way around in all three axes.

Light the top of the black brush with spotlights that are set to have a cone less than 180 degrees ( this is so the light they emit only hits the top of the black brush, and doesn't seep up the sides of the actual architecture ).

Overscale the black texture on the inner brush by a lot, and do the same to all the sky texture too. 
hmm, all methods are i thought of turned out to be useless (light entities next to the monsters, well lit spawn rooms, even sun-/ambientlight). the spotlight trick distrans posted works. apparently the important thing for lighting monsters in void maps is that there has to be a solid brush beneath them (not necessarily the bottom of the cube).
iz's quite awkward, but then again maybe also adds some tension when the player can only see the scags once shoot or reach the structure.

copy/paste galore! i rarely create new brushes, most stuff is pasted. mostly because new brushes - at least in quest - always have the size of the texture�, whereas a pasted brush has already one or more dimensions right.
textures have to be applied as you build the wall/room/whatever. if it looks ok, you can move on and copy it around. building the architecture first and texturing it later is more than impractical. 
ah, i see. nice idea. 
Map Converter Fun 
Trying to compile my old q1 maps using Sleepy's Map Converter and a .bat, and while some maps compile fine, others get the following message, followed by none of the compile progs doing their jobs and a lot of nothing being accomplished:

Parsing file c:\quake\id1\maps\ EConvertError in Modul mapc
onv.exe bei 000077B6.
'' ist kein gⁿltiger Integerwert.

With any new maps I start, it will get up to the 'Parsing file c:\quake\id1\maps\' part, and just stick there. Again, it works fine with other old maps, so I'm thinking everything is set up to work. If anyone else has run into this and has some sort of workaround, I would very much appreciate some help. 
Sounds Like 
it is finding a floating point number in your map in a place where it expects an integer.

Biff, are you using quoole? Biff, is this true? 
I regret to inform you that this post is almost entirely worthless. The only thing I can say is that I remember getting that error two or three times, and each time it was 6-12 months apart so that I never remembered what the problem was when I encountered it. Since it's been about that length of time, and I don't use Sleepy's tool anymore, I don't remember exactly what the cause was. However, I do remember that each time it happened the problem was something trivial with the .map, and I would subsequently dopeslap myself before moving on.

Some things to check: is the map already in Q1 format? Are you giving the player a message that includes quotation marks? Do you have any crazy brushes with no volume, faces with no area, or other technical problems? (MapSpy could help determine the answer to this last problem.) Are you wearing sweatpants? 
1. No CZG, I am not using "quoole". I stay away from the hard stuff anymore.

2. RPG, what are you using instead of Sleepy's converter?

3. WTF is MapSpy (I'll prolly Google for it in a bit)...?

4. No sweatpants, but a pair of pajama bottoms my cousin and his wife gave me for Christmas. The weather here (as you may well know) has been too damned insane for consistent sweatgear wear. 
2. RPG, What Are You Using Instead Of Sleepy's Converter? 
I don't know what RPG is using, but AguirRe's compile tools do the conversion for you, you just got to set the switch in you .bat or whatever 
At least the later versions of AguirRe's tools do. 
Oh, Nice... 
But I'm not too swift on this .bat stuff: Is it possible for me to stick AguiRe's stuff in a seperate dir than the .wads, and still be able to compile, or do I need to have it all in the /id1 folder (where GTK needs the textures)? 
wad and tools in maps folder
textures extracted (.jpg)in id1/textures/q1_biffs tex

batch file eg,
qbsp.exe -q2map -oldaxis -transwater

-q2map being the conversion switcheroo

can you have things in a different dir, dunno, prolly not, but I don't know, I've always only done it the one way, come to think about it, that's prolly why my wife left me, hmmm 
Bat Files 
if you put stuff in a different dir, you just need to specify the relative or full path to it in the bat file. Or, you use "cd" to switch to the qbsp dir. But, you might have to add the full or relative path to the map file in that case. 
GTKR 1.5 can save directly to Q1 .map format, which eliminates the need for a pre-compiler like Sleepy's. That's what I'm using.

MapSpy is a very cool program which was originally written to solve a Q2-specific game error, but has been expanded to help track down generic .map errors, such as brushes with no volume, brushes with infinite volume, faces with no area, etc. No matter how much I tell people to try it, no one seems to use it. I distinctly remember explicitly telling someone it would solve his specific problem, but he still refused to download it and try it for some stupid reason--I think it was because he thought it only worked for Q2 maps, which is simply not the case. When you run the program, just ignore the Q2-specific output and look for any QBSP errors it mentions.

Regarding compiler locations, I have maps, compilers, and maps in id1/maps, and the wads in id1/. From there, I reference the full path of the .wads from the map ("wad" "d:\quake\id1\metal.wad") and just run the .bat compiler from id1\. Here's what the .bat looks like:

set BASEPATH=D:\Quake\workingq

%BASEPATH%\maps\qbsp.exe -oldaxis %BASEPATH%\maps\

%BASEPATH%\maps\vis.exe -level 4 %BASEPATH%\maps\%1.bsp

%BASEPATH%\maps\tyrlite.exe -nocount -extra -nominlimit %BASEPATH%\maps\%1.bsp
Got it sorted out, I think -- the .wads in /id1, along with the compile.bat, and the tools in a separate folder. One more question, tho: I'm using AguiRe's stuff, and dunno where along the line to use his Bspinfo prog...

Thanks RPG and the rest, though -- looks like I'll actually be doing some Quake mapping this weekend =D 
put it this way, use it when you need to use it ;) 
I was wondering how the skybox is used in Quake1 maps. Not the regular one, but the same as in Q2. 
Is your email working? 
Is there an easy way to allow monsters to use this: I do not want to use trigger_monsterjump? 
According To The Qc 
Monsters are effected by trigger_push by default.
They won't actively seek it out in any way, but when they touch it they will be sucked in. 
I'm dropping a spawned ogre onto a trigger_push and he just does his own thing?

If I go onto it, everything is fine... whoosh. But he just runs up and down the length of the trigger and even stops in the middle of it if I no_clip and hover above him.

Any ideas? 
Oh dear :( 
Well, To Be Slightly Helpful 
I'm guessing (wildly) that it might be a conflict of sorts between the movetype of monsters and the monster being on the ground.
Perhaps try throwing the monster into the trigger with a monsterjump?
Also, if the monsters starts inside the trigger, there is a minute chance (or any chance at all?) that the touch isn't registered. I doubt this though.

I remember the good old map grc4beta had a fiend traveling down a windtunnel early on in the map, but I'm not sure if the trigger_push was overlayed by a trigger_monsterjump there or something. 
I Have Seen A Horse Fly... 
but never an ogre.

I have only ever gotten a monster to jump with a trigger_monsterjump. In fact, the only other things I have ever successfully seen respond to a trigger_push (besides the player) are grenades.

Let me know if you get it working :) 
2 Things 
CZG - Whats your email?
I tried the one in czg07 readme . . . I�d post the message here but I�ve goofed before on spoilers.

Website - how do I review old threads? (ie. not on the main page)

Looking at the triggers.qc it seems as though this works by use of 'velocity', which is not how monsters move. Therefore, it does not affect monsters; therefore, there is no easy way to use it for monsters without writing some code. 
OK, I'm getting there. I can now get monsters using the trigger-push, but it now leads to another problem...

How does the 'angle' entered in the editor get converted to the self.angles vector used by the qc code? (I'm making this assumption because 'angle' is not seen in the code) 
Movedir And Trigger Push 
The trigger_push uses the movedir vector for the direction that the velocity is added in. Movedir is set in the function SetMovedir() in subs.qc. SetMovedir() is always called by InitTrigger. The function setmovedir is quite self explanatory once you understand how .angles is set. Essentially the editor sets angles to '0 a 0' where a is the value of angle(note the absence of the s). This only allows you directions in the xy plane, so there's an extra hack added. If the angle is -1, Setmovedir converts this to a vertical vector pointing up. Similarly -2 produces an vector pointing down.

It's not a great way of doing it, since you can't have motion that's diagonally up and across. A good fix that would be backwards compatible would be to have a check before calling SetMovedir to see if movedir is already set. If it is, then normalise it but leave it otherwise unchanged. If it's not, call SetMovedir. That way you can choose to set the angle normally or override it with a custom movedir. 
Mr Woodham 
There are copious enemies in RPGSP1 that use trigger_push. When I tried it again years later, I too had difficulty. The fact that it works in RPGSP1 might be because I simultaneously spawned the monsters into the trigger_push and woke up them up at the same time. I.E.:

"classname" "trigger_relay"
"target" "m1_1"

"classname" "monster_ogre"
"targetname" "m1_1"

"classname" "trigger_teleport"
"targetname" "m1_1"

The monster was in the teleport, and the teleport targetted a destination hovering in the trigger_push.

Best wishes. 
My ADSL line is still down at home... sorry for the delay... you have mail ;) 
Well, rpgsp1 certainly works. (I enjoyed replaying it just now :)

It's interesting that you had problems 'years' later. I wonder if the progs.dat has evolved so much over the years that it has affected this particular area?

The most obvious thing that has changed with my progs.dat is that I no longer spawn monsters via the trigger_teleport method.

I have the (now, somewhat amended) 'style' flag option first put forward by Preach, and I have added an 'anger' flag to ensure transported monsters can be made angry as soon as they arrive if necessary to avoid extra triggers.

As I have now resolved my trigger_push problem by further qc enhancements (mmm... I use that word very reservedly in the light of this issue) I don't have the enthusiasm to revert to an old progs.dat to prove/disprove any of this. I am confident that what I am now doing is working OK, so I will press on with the map regardless.

But as always, it great talking to you guys and great fun trying to overcome these problems. Thanks for joining in.

Now all I've got to do is perfect the random trigger_monsterjump height/speed aspect and we're all cooking on gas... 
The error is pretty easy to understand:

---- GrowRegions ----
model : *160
classname : func_door
*** ERROR 13: Entity with no valid brushes or textures

I used the problem checker in Worldcraft, and it also found some doors without brushes. I deleted them and recompiled, but got the exact same error. I opened the .map in a text editor and searched for all instances for func_door. There were a lot, but none of them were lacking brushes.

My map was compiling with no problems yesterday. I made some small alterations today and I get this shit. I haven't even modified or added any func_doors.

Could this be a WC glitch? The map is over 8000 brushes now - anyone else gone over that in WC 1.6?

There are 160 solid ents in the map, so presumably entity 160 is the problematic door that apparently doesn't exist.

Anyone got any ideas? 
The error is pretty easy to understand:

---- GrowRegions ----
model : *160
classname : func_door
*** ERROR 13: Entity with no valid brushes or textures

I used the problem checker in Worldcraft, and it also found some doors without brushes. I deleted them and recompiled, but got the exact same error. I opened the .map in a text editor and searched for all instances for func_door. There were a lot, but none of them were lacking brushes.

My map was compiling with no problems yesterday. I made some small alterations today and I get this shit. I haven't even modified or added any func_doors.

Could this be a WC glitch? The map is over 8000 brushes now - anyone else gone over that in WC 1.6?

There are 160 solid ents in the map, so presumably entity 160 is the problematic door that apparently doesn't exist.

Anyone got any ideas? 
Update (+ Grr...) 
definitely only pressed submit once.

I tried removing the last entity I added (a func_wall), which didn't help. The door became ent 159. However, saving only visible objects with my funcs visgroup turned on allowed the map to compile, so perhaps there is a brush somewhere that has fucked up, or a rogue func in another visgroup that is causing the problem. 
problem fixed.

It was a fucking clip brush that I had accidentally tied to an entity. Thank god for being able to export only visible and visgroups, eh? 
The Keyword 
was no valid brushes (or in this case their textures) ... 
It should be possible for qbsp to create doors out of clip brushes. However, due to an engine bug they wouldn't actually work :) 
Clip Doors 
do work if they include at least one brush (face?) with a visible texture. i made such a door by accident in sm108. 
yes, but even then, there's an engine bug where the physics bounding box of the door will only include the visible brushes. So to make it work reliably, you can't have any clip brushes sticking out past the bounding box of the combined visible brushes. 
Question (mainly For Aguire) 
So I was mapping away and hit ctrl+s to save my map. However, instead of hitting it once, I hit it twice by accident and WC crashed (presumably whilst saving the map). I was a bit worried, but the map seemed to have saved fine and loaded up ok. The filesize wasn't weird either, so I assumed all was ok.

I continue mapping...

...hours pass...

...then I try to compile my map. It works, but I get a warning about a brush with 0 faces. It tells me the texture used on the brush, so I assume this is 0 faces after plane conversion. The error pops up twice more, once for each hull.

I did notice later whilst mapping that some unimportant brushes had vanished from my map when I reloaded it. Presumably, one of these brushes was half saved or something. Perhaps it's just a dodgy brush I managed to create with the clipper - but this normally crashes qbsp, so perhaps not.

Anyway, the question: How the fuck do I find and eliminate this brush? I could copy all the changes from the new version of my map into an older version, which would probably eliminate the warning, but it seems like lots of hassle for nothing. I won't convert to .map and find it in radiant, because I need the .rmf file for visgroup info as the map is very big and impossible to work with without them.

Can I find the coordinates of this brush with qbsp at all? The only info I got was that it was a brush with no faces and that it was using the texture hstn0. There are a lot of other brushes using that texture, and I can't find it using a text editor because I don't know exactly what I'm looking for and the .map file is huge.

Currently it is not a major problem (I hope), but if you, the A-team, or anyone else can help me, please reply. 
Holy crap, 8000 brushes in 1 Q1 map file? Haven't you run into map size/face/etc limits by now? How long does the beast take to fullvis? Also, screenshots plz. 
I pwn! Of course, I should probably have tried harder to fix it before posting the above message.

For other people having problems with Rogue brushes, esp. those using Worldcraft, here are some tips:

1. Check to see if there is a brush with centre on the origin - in Worldcraft there should be a cross handle if there is. This could be the culprit.

2. In WC it is entirely possible to create invalid brushes if you don't know what you are doing, and often when you do. The worst kind are thin slivers created by cutting along a plane of a brush using the clipper. Try to be careful not to do this, because the slivers will crash bsp and can be hard to track down.

3. If you can't find a problem then try exporting only visible stuff to a map file and compiling. At first hide large chunks of the level. Once the problem dissapears, you know roughly which area the problem is in. Gradually export less and less visible brushes until you get something manageable containing the error - maybe a few hundred brushes at the most. This is easy to look through in the editor, and can also be checked with notepad without problems. 
Tyrann has more in his map :)

I will probably be adding another 3000-4000 brushes. Hopefully it won't fuck up. The only thing I have to watch out for is the lightmap size and model precache problems. I want this to run on fitzquake, so don't want to exceed any limits like that.

The level isn't THAT big. It isn't small by any means, and packs a lot of gameplay into it, but it's no Marcher Fortress. It's not in a large style either, so no massive areas filled with 3478327 monsters and a quad - I wanted to make something a little simpler and small scale. I'm kind of regretting it now, but I think that I can still make it fun without changing what I have much.

If I can be bothered to make the planned follow up maps, then they will be on a larger scale (as with most current big maps).

It takes about 15-20 minutes to fully compile (light extra, not extra 4) I think. I have a pentium-m 2ghz 512mb system. When it is finally released, you will see that it isn't particularly spectacular scale wise, and that is probably why it doesn't take a long time to compile. That and perhaps my brushwork is decent. I dunno.

There are some old shots on my website Maybe you can see from the screens that it has a fairly detailed look? There are lots of areas, and the detail level is fairly consistent. r_speeds don't really top 1000, but they are probably higher than usual. 
Tyrann's Skip Util Causing Lighting Problems 
I've been using this for a while to remove faces in my current map, and up until now I hadn't had any problems with it. However, recently I have started seeing blotchy, horrible lighting on a couple of walls in my map. Here is a shot of what I am talking about:

I am certain skip caused this, because I disabled skip and the error was not present - all the lighting was fine.

Does anyone know why this happens and how it can be fixed. I run skip last of all, so perhaps I should try running light afterwards instead.

If nothing can fix this, it would be nice if there was a -removesurf <texname> switch in Aquire or Tyrann's versions of light ;) ;) ;)

p.s. the dodgy lighting occurs in areas at the boundaries of the level for some reason. 
Well, Tyrann had said it had some bugs (and that he wasn't using it cause of that?), I never ran into any myself... I guess it probably has higher chances of happening on large levels. 
fixed again.

yes, lighting after skip removal works. 
I don't know how skip works, but you could try running vis after skip. If the vis data set is large (>1MB, e.g. when fastvis), skip might have capacity problems. 
Errr .. Skip ??? 
What is skip
There are probably numerous references to skip in this very thread, but I'll explain it again, since I'm in a good mood. In fact, since I'm such a nice guy, I've uploaded it to my site here: (26kb)

The skip removal tool is a small utility made a long time ago by Tyrann. It was never officially released, and I recall him saying he lost the source code to it. As it works fine as it is, I guess he never bothered to write it again and update it.

Anyway, the skip tool removes all surfaces from the visible hull of a BSP. The original intention of this was to remove surfaces that could not be seen by the player, such as those in high up places above where the player can reach, on the unseen sides of doors etc. This is probably still the main use. However, this also allows for a few cool tricks (creating invisible doors for one), that you can find out about by reading the previous posts in this thread. 
I just noticed I made a rather large mistake in my explanation:

Anyway, the skip tool removes all surfaces from the visible hull of a BSP.

Should be:

Anyway, the skip tool removes all surfaces using a texture named "skip" from the visible hull of a BSP
# Of Brushes 
i have found that at about 10000 brushes, you start to run out of clipnodes, no matter how much you clip brushwork, just because the amount of areas that are present take up so many of the clipnodes.

I had exactly the same type of lighting artifacts in the secret map of Contract, towards the end of its construction:

I was using Tyrann's lighting util by then, but to make use of entity compression for the secret map, not skip. I don't think skip was even in the version I was using.

Maybe it's just a knave thing o_o 
Thanks For The Tips, Necros 
I have tons of arches that can be clipped, so if I run out, I will try clipping them. There's also not much rock in the level (there is a bit, but not like something like februus or czg07) so perhaps I'll be ok.

Anyway, as I said, the lighting glitch was fixed by using skip before light. I will try it before vis next time and see what happens.

Wtf is entity compression? 
Entity Compression 
Wtf is entity compression?

It's not really compression, but it reduces the amount of entity text present in the compiled bsp by removing key/value pairs from the light entities which are not needed after the lighting stage. 
Thanks a lot for all these cool informations ! You are really a nice guy ;) 
JPL�s Opinion Seconded 
WC - try the most basic tool included - "check for problems" You�ve probably already done this, but if not; with Q1 it seems to be alot more finnicky and can find illegal entities, though with visgroups yor best bet is removing all before you try deleting a single part of one group - buggy behaviour (WC 1.6a) tends to seemingly randomly hide / delete depending on the order you originally did stuff in . . . 20 versions ago

either way - looking forward to the release 
A Long Shot... 
I'm sure everyone who knows the answer will tell me this map is basically doomed, but I'm trying to figure out a reason for this weird occurence. DuBSP is reporting that my map has leaks. What's unusual about it is that: 1) it only reports the leak while filling, but not while generating hulls. 2) it refuses to generate a pointfile, even when using -oldleak. I'm in the process of isolating parts of the map and compiling them individually but, maddeningly so, it always seems to be a different entity reached while filling.

For anyone feeling curious/helpful, here's the compiler dump.

DUBSP Disunion Level Compiler by Eric 'Riot' Lasota
Based on TreeQBSP v1.62 by Greg Lewis.

Input file:
Output file: manatees.bsp

---- LoadMapFile ----
*** WARNING 06: No info_player_deathmatch entities in level
2439 faces
410 brushes
35 entities
50 unique texnames
627 texinfo
Processing hull 0...
---- Brush_LoadEntity ----
383 brushes
---- CSGFaces ----
2277 brushfaces
3088 csgfaces
1580 mergedfaces
---- SolidBSP ----
2052 split nodes
832 solid leafs
1221 empty leafs
0 water leafs
3329 leaffaces
3096 nodefaces
---- Portalize ----
1221 vis leafs
3309 vis portals
---- FillOutside ----
*** WARNING 10: Reached occupant at (-112 352 88), no filling performed.
---- MakeFaceEdges ----
---- GrowRegions ----
Processing hull 1...
Processing hull 2...
Processing hull 3...
---- WriteBSPFile ----
490 planes 9800
3533 vertexes 42396
2130 nodes 51120
627 texinfo 25080
3226 faces 64520
1701 clipnodes 13608
1294 leafs 36232
3467 marksurfaces 6934
12835 surfedges 51340
7955 edges 31820
50 textures 451444
lightdata 0
visdata 0
entdata 3037

2.359 seconds elapsed
Bytes used: 4108697

thanks for looking. 
Also Forgot To Mention 
That when sealed (i.e. no openings to the grey void but only the mystery leaks) the map DOES create a workable .prt file that can be used by Vis. But if I noclip outside the playable area, all the faces on the outside are drawn. Normally I wouldn't even worry about such a small thing since most people's computers/engines today can handle a poorly constructed map without much difficulty but I want to keep the r_speeds low for speedrunning. 
i had something like this i ne_marb... basically, it was some complex geometry in the terrain area (where the shore is that leads to the cave) that was messing it up. you couldn't atually see any leaks but it was there... basically, i just ended up redoing a fair amount of brushes in that area to a much simpler look as it is now.

so that would be my only suggestion: find areas that have complex geometry (terrain, complex trims, etc) and try removing them and replacing them with simple placeholders. When the problem goes away, you know you've found the culprit(s), and can simplify/fix/remake/whatever

sorry i can't be of more help.

one last thing, i'd suggest trying out aguire's bsp compiler, it might have more luck on complex geometry 
Aguire's Bsp Worked... actually generating a pointfile so I could track down the leak. Thanks to biff, bal, and necros for suggesting it. Still a mystery why there were no leaks detected while processing the clipping hull but at this point I don't particularly care. :) 
Is it possible for you to rebuild the fr3n1m3 map using my qbsp? It's got those annoying tjunction sparklies. Or if you'd send me the zipped .map and I'll rebuild it myself. 
I asked for a link to yours and got txqbsp and treeqbsp. Whatever I used, it worked. But what am I SUPPOSED to be using? I hate those sparklies just as much as you. :) 
my compilers, you don't have to do anything special; they both default to tjunction padding (= no sparklies). It's some of the old compilers (e.g. dubsp) that default to no tjunctions (= sparklies). 
Yes Yes I Know What You Mean 
But I was under the impression that I already WAS using your compilers. Is this the wrong URL or something? 
my initial request above was for the released fr3n1m3, which as far as I can see has the sparklies, i.e. it's either built with an older compiler (e.g. dubsp, which you also asked about before) or using my compilers and adding the -notjunc option (definitely not recommended).

The URL is correct, sorry for the confusion. 
Lol :) 
I'll probably fix it soon then. 
How do make elevator buttons that move with the elevator?

so how is done now?
some trick as in half-life, like a fake button on the lift and triggers at the corresponding spots in its extended positions? but how could it be done (preferably without hacks) that it only works when the lift is in the right position?
maybe with a skip/clip door blocking the trigger that was just used after the lift starts moving, while unblocking the other...
a very basic question... 
I'm guessing some sort of crazy setup with trap_spikeshooter logic gates would do the trick. Still you can't make the button move first then move with the elevator though. 
Well There Is One In Fr3n1m3... 
using a really huge button that moves outside the playable area when pressed. I might do something similar but better looking in the next map just for the heck of it. 
One Way To Do It Without Hacks... use a mod like pox extras, that lets you attach buttons to lifts, moving water that actually works and have all manner of particle effects.

There is more stuff in there too. I don't think I've seen a map using this mod yet though :( 
yes ok. but i'd like to figure out how it could be done in vq (the manual way).
fern, where is it? - i couldn't find it in the map.
sounds like this way it would only work for one-time lifts or lifts that go back into their starting position after some time.
but i am thinking of a toggle lift (door).

dunno about the logic gates thing.
the button movement could be simulated through doors or trains with a button0 texture (and a button1 texture at the same spot on the lift itself) which then moves into the wall, so the button looks like it's been pressed. this method would still rely on the trigger, though, and only work if the lift/button was adjacent to a wall. 
Person With Punctuation Nickname 
it's the scarab button on the final lift, and the trick is basically the same as you described in your last paragraph. 
Quake 3 
i've been trying to get into this a bit and i've found i have absolutely no idea about a lot of the stuff this engine can and can't do...

for example, are there any major engine limits similar to edict limit of quake1? can you make rotating brushes? how does clipping work for bounding boxes?

anyone know the answers to these questions? :P 
I don't think there are any real engine limits, you'd be hard pressed to reach them if they're were I think.
Can't remember about rotating brushes, but if it's possible it should be obvious from the func_s available.
What do you mean about clipping on bounding boxes? For when you fire at models and such? 
for example... does clipping work the same way it works in quake? ie: bsp generates different hulls for different sizes, meaning only certain size bboxes are allowed? or did id do proper collision and virtually any size is possible now?

and if i made a map with 5k rocket launchers, it wouldn't overload model limit or something? 
Dunno about bounding boxes, considering it's a multiplayer game, I'm not so sure what they did in that area (all players have same bbox of course).
You can have 5000 rocket launchers in a map as far as I know, would just be slow depending on your machine of course. =)

What are you working on? 
AFAIK the bsp process does not compute seperate hulls and all bboxes have collision computed dynamically. 
Necros / Kell / Anyone 
can you send me the qouth .fgd?


I tried a few links and quite a few different types of searches but can't seem to lay my hands on it.


and i don't want to say anything yet because i don't want to get anyone's hopes up. :P

AFAIK the bsp process does not compute seperate hulls and all bboxes have collision computed dynamically.
^_^ awesome, that's what i was hoping to hear. 
omg necros is making q3sp.

it's a mod that makes all the players 500 lbs overweight! whenever you take damage, you gain weight, and if you hit 1000 lbs, you explode. 
are there edict limits in D3?
i have a map i'm working on, and it's getting rather large, lately.

does anyone know about problems larger d3 maps can run into? (it's all brushwork, no premodeled areas like the hell levels) 
So when a player explodes, does it print the message "Player ate a wafer-thin mint"? 
it's "waffer theeeen" actually 
...necros resurrects that mod.

Kell, monster_ etc. is still your mail? I was wondering if you'd received mine.

...and, go the Scottish swimmers!!! 
Those Bubbles In Q1 
You know those little bubbles that people put in or underwater in Quake?

How do I put them into my map? I can't seem to find them in my Entity list in Worldcraft.

Better yet if someone could cnp the text to add to my fgd file. 
@PointClass base(Appearflags, Name) = air_bubbles : "Air bubbles" [] 
D3 And Edicts Etc. 
No limits that I know of. How large map are we talking about? 20000 brushes, bigger? 
woah... not that many-- lol! more about 14k~ or so.

problem is it's no where near finished, so i could see it going as big as 20k or more. there's a lot left to do atm.

i was just asking so that i'd know in advance. thanks for that bit of info. :) 
Lump File Issue 
I have to modify a lump file (i.e conback.lmp) to create a custom console background. I used a tool called GFE (Game File Explorer) to export and save the bmp image embedded in the lmp file. My concerns is how to create a lmp file from the modified bmp file ? I guess it exists, at least, one tool that is able to perform this feature, so what is this tool (or these tools) ?
Thanks in advance. 
Texmex Can Export To Lmp 
adquedit can also do this, though it is buggy and has been known to erase your data in certain circumstances. Otherwise it's a nice tool.

I actually wrote some command line windows tools that convert to and from .pcx and .lmp and .spr a while back, maybe I should release them. 
Czg / Metlslime 
czg: TexMex is installed on my PC, but I didn't check yet the feature. So thanks for the tip: I will check it this evening

metlslime: Yes, it would be great !

Thanks for the quick reply ! 
Btw. Where's The Difference 
between mipdip and adquedit and why do they look so much alike? 
Err.. Not Adquedit 
but that one program which is basically the same, only with a different title... 
mipdip and qArt are the same program, but qArt is the name of it after it became a commercial product. It was offered by the same company that offererd qED and qME i think. 
Thanks For Clarifying 
there was a time when i had to use qart, for mipdip wouldn't start anymore (or i was too dumb to fix it). now, both have been obsoleted by textmex anyway. 
Are There Any Way... 
to stop a weapon/item from rotating (minus QC, of course)?

Thanks in advance, Neg!ke :) 
edit the model file and remove the 'rotate' flag on them. easy sleezy! 
with some obscure func_illusionary/info_notnull model technique, whereby the acutal weapon (if it is supposed to be picked up) would be placed in a hole underneath it, with an illusionary + clip, or maybe a skip wall, only deep enough that its bbox stays some units above floor level. the weapon then has to killtarget the fake model when upon pickup.
might not work with a func_wall, for the item would likely drop out of the map. maybe a fast skip door pushing it up and thereby also making the floor solid would work better in this case.
of course this could also be done by having the weapon being pushed into the player from a hidden closet the wall, or let it drop from the ceiling (model-item dropping does not work with darkplaces, though), but these solutions would be even more visible to the player... 
I not sure I understand, Neg!ke. Perhaps if you made me a sample map with some examples...or even a "complete" SP map with a few examples...or how about a 8-map Q1 Episode full of examples, then it would be clearer :) 
Engine Limits 
Ok, I've just been looking through the source and readmes on Aguire's site, and have found a list of Quake engine limits. However, I am not sure which of these are increased, and which aren't. I have a fairly good idea, but could someone be so kind as to correct me:

// Data-restrained limits
#define MAX_BSP_MODELS 256
#define MAX_BSP_PLANES 32767
#define MAX_BSP_NODES 32767
#define MAX_BSP_CLIPNODES 32767
#define MAX_BSP_LEAFS 32767 (8192)
#define MAX_BSP_VERTS 65535
#define MAX_BSP_FACES 65535 (32767)
#define MAX_BSP_MARKSURFACES 65535 (32767)
#define MAX_BSP_TEXINFO 32767

The bracketed parts are the limits of standard engines as far as I can tell. Perhaps some of the other limits have been increased. Aguire, please correct this list if it wrong ;)

Currently I got this output from my last compile:

---- WriteBSPFile ----
11217 planes 224340
36426 vertexes 437112
16427 nodes 394248
3923 texinfo 156920
29246 faces 584920
31759 clipnodes 254072
7357 leafs 205996
35086 marksurfaces 70172
130679 surfedges 522716
66440 edges 265760
87 textures 1258432
lightdata 0
visdata 0
entdata 152870

Tyrann's skip tool is taking out a couple of hundred faces, but that's not enough considering what I am going to be adding.

I still want to make the map run in Fitzquake, winquake and glquake (currently it works in all three, no problem), but I have a couple more important areas to add, so perhaps it is impossible.

I am not too worried about clipnodes, because I haven't really done the clipping yet, so a lot can be saved there.

What the hell is going on with marksurfs though? The map is working fine, despite exceeding the marksurfs limit.

The numbers on the right hand side are the size of the data, right?

Metl: Any chance of a version of Fitzquake with increased surface and clipnode limits? I've don't even care if it doesn't support the new protocol, so long as it loads my map ;) Thankfully, the map still looks decent in bjpquake. 
Lucky, as soon as I go over the marksurfaces limit on my map, it crashes fitzquake. Fortunatly I've been able to lower them quite a bit thanks to aguirre. 
got any marksurf lowering tips? wtf are marksurfs anyway? Just surfaces? What are faces then? same? 
Generic / Jpl 
generic: i forgot illusionaries can't be killed, so the model thing has to be done with the info_notnull/modelindex trick. i would have sent you a sample map already, but i have no idea how to get the modelindex to work. so if anyone was so kind to tell me how to find out the right number, i'd be glad (what's the command in aguirre's engine? how do i find the number in darkplaces if counting the modellist doesn't help?). bleh.

about your trigger_push problem. :)
could it be that the malfunctioning trigger had angle "0"? with "360" it would have worked.
i could have thought of that possibility earlier... 
I also have problems with marksurfaces and have all but given up on my current map because of it.

And they're only showing 33k and it crashes Fitzquake 0.80 - clipnodes are still under 30k.

And I haven't added all the intended trims yet.

And I haven't finished the final battle area.

And I have already split the map in two.

Jeez... 300+ monsters waiting to die! 
I still don't quite understand what they are, and the tips aguirre gave me were really specific to my map, so probably wouldn't help you.
Best bet is probably to try pestering aguirre about it, he's wonderful for map fixing. =) 
Well, I don't know. I just finished the final build of the map concerned by this issue (it's ready for release, I will post it friday evening).. I changed the wind tunnel into a "walking" tunnel... sorry for this...
Anyway, thanks for the tips: I will try to make a test and see if it helps. 
Mike W. 
Well, it's pretty weird effectively. In "Castle of the Dark Ages" map, I had 35k marksurface / 31k clipnodes (if I remember well) and the map didn't crash at all... It sounds to depend also of your PC performances as well... though...

The last possibility you have (if you don't want to change too much your map), is at least to add a note (in txt file) to player stating that only aguirRe's GLQuake will support your map.

Good luck. 
Generic / Mike W. 
generic: ok, i suck. i had the numbers right already, but it didn't work because of the think/nextthink fields preach used.
unfortunately, it didn't work out (or at least i couldn't get it to work properly): either there is a model that can't be removed, or a model that still rotates. check the useless test maps here:
so i have to give up on this :/

mike: stupid idea maybe, but what about creating new textures - walls that already have trims, details etc. - to reduce brushes and therefore possibly marksurfaces (dunno if they are even related) 
So Many Questions 
than: The various Q1 limits are today a pretty complex issue. In general, you have various tools and engines, file and protocol formats and even bugs that all cooperate to make things difficult. Also, the network protocol isn't just for "networking"; it's always in use since the engine is built with a client-server design. Even demos are completely protocol bound, as they are in fact just recorded server network messages.

I'll just try to comment on your qbsp printout. The only limits you're close to or exceeding are the clipnodes/marksurfs, both must be <32k for normal engines. Clipnodes I've commented in my ToolTips, but marksurfs are more difficult. Search this thread for numerous comments. And yes, the rightmost qbsp printout numbers are lump sizes in bytes (not very useful for most people).

neg!ke: The standard engine command for model printout is "mcache". I'm not sure it'll give you what you're after, though. 
You do suck on so many levels :p but I will download your crappy test map anyways (because I tend to download anything you do :) ) and continue to turn in my speedmaps late ;)

Thanks for all the effort anyways but I have already come up with a separate solution. I never really needed the items to "work" -- I just needed them to sit still and look pretty :p 
And To Clarify 
the elusive marksurfs limit, it doesn't depend on computer speed or anything similar. When the limit is exceeded in an engine that hasn't fixed the 32k bug, engine internal memory is trashed.

As with all memory trashing scenarios, it may or may not affect functionality depending on how the memory is used at that time or later. Since IIRC this particular memory is on the Quake heap, it may help to change heapsize. 
As I understand it, marksurfaces are just polygons. So basically every visible brush face in your map is one or more marksurfaces. It becomes more that one marksurface if:

- It is bigger than 240 pixels in x or y texture directions
- It is intersected by another brush/surface
- A t-junction lies on one of it's edges

Two ways you can reduce the number of marksurfaces are to do with textures. You can combine them as suggested by neg!ke (i.e. reducing the number of brush faces in the first place). Or secondly, you can scale up textures in places if appropriate, to reduce the amount of surface subdivision taking place. 
JPL: I use Fitzquake080 as standard, which is great for everything except synconisation of flames and use of music files direct from the HD. I am not sure that aguirRe's engine is used by enough people.

neg!ke: I try not to use trims combined in textures because we get the "painted on trims" rant from Shambler everytime! And I've probably said that too loud, Shhhh, he'll wake up.

Tyrann: I just did a test on the smaller of the two maps -

First, an oft used texture (ground1, which is normally 128 x 128) at 64 x 64:-
11016 planes 220320
31312 vertexes 375744
12616 nodes 302784
2670 texinfo 106800
24475 faces 489500
26354 clipnodes 210832
6924 leafs 193872
30786 marksurfaces 61572
113476 surfedges 453904
57059 edges 228236
133 textures 1915296
lightdata 0
visdata 0
entdata 72453

and then the same texture increased to 256 x 256:-
11016 planes 220320
31312 vertexes 375744
12616 nodes 302784
2670 texinfo 106800
24475 faces 489500
26354 clipnodes 210832
6924 leafs 193872
30786 marksurfaces 61572
113476 surfedges 453904
57059 edges 228236
133 textures 1996896
lightdata 0
visdata 0
entdata 72453

Only the texture lump changed: marksurfaces stay the same.

Still, just looking through the map again has roused my interest. I might chop out one of the side-rooms and at least try to release something playable. 
No, that won't make a difference. What I was trying to say is that you could set the texture scale in the editor higher than 1 (i.e. stretch the textures). 
I Must Be Doing Something Wrong 
I stretched a rock texture to 2 x 2. I am not sure which texture I got rid of (by accident) but it still doesn't help marksurfaces although some of the figures have changed:-

11016 planes 220320
31285 vertexes 375420
12751 nodes 306024
2665 texinfo 106600
24640 faces 492800
26185 clipnodes 209480
7001 leafs 196028
30882 marksurfaces 61764
113902 surfedges 455608
57276 edges 229104
132 textures 1926132
lightdata 0
visdata 0
entdata 72453

Mind you, I think the rocks look better now! 
I don't really see how that could cause a marksurface increase like that, but it may not result in a reduction if the polygons aren't that large to start with. I agree that rocks/grass do tend to look better with a higher scale when there's a lot of it - I'm currently using a 1.5 scale on mine. 
Total Commander PAK Plugin 
If anyone is using this plugin to manage Q1 PAK files, you might be interested in some improvements I've been working on lately.

I'm currently not considering a public release, so if you're interested, just email me. 
Marksurfaces Explanation:

P.S. Yes, this means I finally coded a way to specify a range of posts. Thread paging is a little bit closer. 
Tyrann's Tip... 
About texture scale in relation to marksurfaces is very useful, upping the scale of sky textures, and trigger texture (I have lots of very large trigger_hurt brushes in my map) can lower the marksurface count considerably.

I still fail to understand why these limits still exist, but that's probably just because I'm stupid.

Oh, and metl, I luv you. 
Non Rotating Nailgun 
Had a bash at this, think I've got a good fix, at the least there are some interesting ideas that result from it. It's not possible to make the actual nailgun model stop rotating without modifying the model file, the rotate flag can't even be overridden in QC. So what this map does is creates a bsp model that approximates the nailgun, and has that in the map. You'll want ogro's texture wad if you want to see it in all it's glory.

Ok, so I'll explain what all the entities do. The func_wall in the second room is just there to make the compiler compile the brush entity we need, so that it has modelindex 2. After the map is compiled you could safely remove this entity with adquedit or something. One thing to notice is that it's been very carefully placed near the origin. This is so its easy to place in the map with the next entity.

The next entity is the one that makes it visible but non solid, the point entity info_notnull. This uses the SUB_regen hack to load a model by it's modelindex. The modelindex is set to 2, so it loads the nailgun model we just made. The model and mdl fields are necessary dummy fields, as long as they have some model in then it works. Why didn't we just use a func_illusionary? Because this way, the entity isn't static, so we can killtarget it. The standard trigger_once kills it when we touch it.

At the same time the player touches the trigger_once, they will also touch the brush info_notnull. This uses the good old trigger hack, so we can make a brush trigger with an arbitary touch function(look at the think and nextthink to see how it works). This time we set the touch function to BackpackTouch, and then the rest of the fields are set to match a backpack that only contains a nailgun(items 4, netname nailgun, ammo_nails 30).

The BackpackTouch function can be used as a trigger in more general situations. You could give it a netname of "weapons" and then set the items field to some sum of weaponflags to give all those items at once. Be warned though, if the player already has any of those weapons the message will skip straight to the ammo summary. A good way perhaps of giving the player weapons on startup would be to use this trigger with no ammo, and netname "\n\n\n\n"(enough backslashes to push the "you got" message offscreen).

You can also set any of the other itemflags, but most of them won't do anything. The powerups flags will tint the screen, but won't actually give the player anything. Similarly the armour flags will only make a cosmetic change. The keys, however, do work as you expect, so you can give those out by trigger. Potentially you could try removing items this way as well, but I haven't got it to work...Anyway, have fun with that. 
Holy God Preach 
there are so many holes in quakec, you wouldn't even be able to contain molasses in it! :o

good job on figuring that out, dude! 
P.S. Yes, this means I finally coded a way to specify a range of posts. Thread paging is a little bit closer.

thank you! :D this will make searching through the larger threads a lot easier, as mozilla kept crashing when loading more than 1k posts at a time. (too much quake goodness in the same page? :P )

cheers, dude ^_^ 
How Do I... 
I have been given a monster in .mdl format, 1400 tris and no skin. It has potential to be a good monster Quake style but I don't know if I have the potential to make it one.

I have access to 3DMAX and/or Maya7 for several hours per week. I don't use them and know nothing much about them. Which should I try to learn, and I don't have time to learn both and make an informed decision, to a) reduce the tris, b) animate the monster.

Also, what should I use when it comes to skin the monster.

Mmmm..., am I expecting too much? 
Qmle should get you on your way, but I think you knew that already. 
it's really hard to make a decision between max and maya as they are both excellent modelling programs.

however, if you're just doing this for quake, i'd say max might be your best bet.

i found it was slightly easier to learn than maya. the only real reason to pick maya over max would be if you were going into the industry, maya is more widely used.

but max has excellent tools for modifying meshes to reduce polycount, and it has fully developed bones/animation system.

as an example, all the animation for the quoth monsters was done in max.

but i won't lie to you... it will take you a long time to learn all the tools. there are just so many. but once you do, pretty much anything is possible. 
Max Vs Maya 
Alias was recently aquired by Discreet (the company that makes Max), so perhaps the two will become more and more alike. I doubt either will be phased out, however, as they both provide Discreet with a nice revenue stream at the moment.

I find Max a lot easier to learn, less buggy (we are talking recent versions here) and with a generally better interface. Maya has a lot of nice features that Max doesn't have (last time I checked), but some of the basic modelling features of Max just shit on those of Maya - the interface for using them is generally loads better too.

I've heard that Maya is better for texturing and animation, and whilst the animation side seems really good (not that I have done anything complex, but it is very easy to set up a skelton, weight a skin and get animating). The texturing features of both programs are not too different, but I find Max a little easier, perhaps because I was already used to the rest of the program when I tried actually skinning something with it (I used to use in-house tools at my previous job for level texturing, which were better than both Max and Maya :)

I find Maya requires the user to do a lot of extra selection and deselection that Max does not require, making Max slightly easier to work with and more time-efficient. 
Just Wondering 
AguirRe, do you ever make maps? 
Max Vs Maya 
Madfox: thanks for that link, it was very informative although most of the links on that page were down.

necros/than: OK, I guess Max it is. I've already had a first look at the program with a one hour session last night. Gulp! I have a very tatty copy of 3DSMAX Bible so on my next session I am going to try to make the Three Fingered Gaaboot and we'll see what transpires.

Thanks chaps. 
I haven't actually created any maps of my own, but I've been extensively through most of the paces to build/repair maps.

I believe that without that experience or the source map contributions and suggestions from many mappers, it would've been very difficult to improve on the tools/engines. 
I was just wondering if you had your leakproof, fully vised first map sitting around somewhere. 
Win Lose Or Draw 
I can give you my last HOM maps that were so leakfull they couldn't sit anywhere without wondering around...

and I'm gratefull to get some good advice to make them playable before they got lost in Quake's void.

Like to beta test Drew? 
Er... Metlslime 
I've a memory live a sieve so can you just play along here?

Does Fitzquake change liquids to always be fullbright? I have the texture 'brimstone' and it has no fullbrights. I simply add an * to the front of the name, and although I get my warping liquid effect, I also get fullbright.

But I really do want non-fullbright liquid. Am I missing something? I want all other fullbrights to remain, I just don't want this one liquid to be fullbright.

I've done the usual things with TexMex and the same texture without the '*' is definitely not fullbright. Put the '*' in and it lights up like... well like something pretty damn bright. 
That's quake. Liquids do not get lightmaps, so they are always uniformly bright. Darkplaces is the only engine I'm aware of that breaks this functionality. 
Double bugger, twice!

But thanks for the info anyway. 
Map Compile Problem 

I'm having some problems with Quark! All my maps gives this message when I try to connect to a server running it: "map model file does not match"


If I run the map directly into the client, there's no problem and it works fine!

This happens with any map I compile! Even with the basic map created by Quark (a square with a spawnpoint).

I already tried all kinds of Qbsp, VIS and Light utilities. A friend of mine, who is also trying to make some maps, has the same problems. Plus, he tried other tools too (worldcraft, qoole) and he always get the same erros.

I asked Trinca about it and he said to me he does exactly the same as I do, but unlike my case, there's no error.

I would appreciate any help, thanks! 
About My Last Post 
The "Baker" in the last message is there because I copied this message from a thread at

And here is the link to the image of the error message.

I've Never Seen 
that message before (it's QW specific), but looking at the Fuh source, have you tried disabling cvar sv_mapcheck
the server has a different version than you have, i have had friends getting this when trying to connect to a server with a map and another version of the map is on the client
you have 2 version of the same map 1 in id1/maps 1 in qw/maps then the same happens 
I'd beta for you, but I can't right now. no computer, no quake. 
check that you don't have a map of the same name in both id1/maps and qw/maps or other directories. I always put my maps in id1/maps.

Also, try running in fitzquake / aguirre's quake if all else fails. 
Does anyone know how I can extract Daikatana textures from a BSP into TGAs?

I'd like to try them out in JPL's new map.

DKT Texture Sets 
If anyone need the four DKT texture sets, just send me an email, and I will send you the stuff.
Note that it is 15MB zipped... 
Are those texture sets in (native?) DKT WAL format or are they Q1 WAD files? 
I'm Also 
interested if anyone has the original 24-bit texes, AFAIK JPL has only got the 8-bit WADs.

There is a relased Q3A map with some of the Event texes in 24-bit jpgs and they look fabulous. 
As aguirRe said, it is only 8-bit wad files.... 
To answer your original question, you can e.g. use TexMex to extract the 8-bit bsp texes and save to tga. There won't be any big difference of course as this process is also made in the GL-engines automatically.

However, if you use idgamma normally there'll be a difference if you don't also adjust the tgas in a similar way (which is very difficult, but can produce interesting results). 
I meant DKT BSP files, which TexMex can't seem to open :\

I have the original DKT WAL files but Wally doesn't like their format :\

So far the only solution is to convert them to BMP with Daiwal and use some other batch software to convert them to TGA. I downloaded Advanced Batch Converter but it only does 6 images at a time in demo mode :\

I can send you the WALs if you likey :) 
Definitely Interesting 
How much is the total amount compressed (7-zip, rar or zip in that preferred order)? Can you upload it somewhere and offer a link?

If you want to batch convert pics, I can recommend IrfanView ( ), it's small, free and very good at batch conversion. XnView is another pretty good free pic viewer/converter. 
~50MB zipped w/o removing any redundant files from the 47 folders.

I will try to break them up into bite-sized chunks and email(?) them to you -- probably not until next week though ;)

I will also give IrfanView a go. Cheers for the link. 
50MB Is OK 
but via email might be problematic, even split up (e.g. account limits). Since binary data is encoded, it will also be much bigger as email attachments.

Best thing would be if you could upload it somewhere and offer a link. That way other people could also get it while it's up. But if you can't, we'll try the email variant. 
ARGH! (Aguire) 
Two problems. One compiling, and one running my map.

BSP and VIS seem to run fine. Light crashes at startup after printing the following:

1686 entities read, 1318 are lights, 29578 faces, 3.6G casts
4 switchable light styles

That is a lot of lights, but it's worked fine until now.

When I try to run the map in fitzquake, it crashes. When I try Aguire's engine I get the following error:

Mod_SetParent: excessive tree depth in maps/current.bsp

The BSP stats of the map are now as follows:

11437 planes 228740
36809 vertexes 441708
16595 nodes 398280
3945 texinfo 157800
29578 faces 591560
32985 clipnodes 263880
7389 leafs 206892
35419 marksurfaces 70838
132081 surfedges 528324
67155 edges 268620
87 textures 1258432

VIS gave some nasty sounding numbers, but no warning:

average leafs visible: 149
max leafs visible: 522 near (384 960 -615)
c_chains: 28770619
visdatasize: 156 kb compressed from 1090 kb

I realise that I have exceeded marksurfs and clipnodes. The clipnodes can be reduced easily, but I don't want to start doing that yet unless it is the cause of this problem. I exceeded marksurfs before, with no errors.

Please help!

Note: After previewing my post I noticed that VIS has given me a coordinate for Max leafs visible. Is this the problem? Is the limit 512? 
couldn't you upload to quaddicted?

And if you compress using rar - multiple copies of same texture doesn't take any extra space since it uses compression between files too, unlike zip. (It can also chop up nicely.) 
I put in that error check to prevent bsps with corrupt node trees from generating an engine stack fault (which is probably why Fitz crashes). It indicates that the bsp node tree is too deeply nested.

The amount of nodes and leafs from your printout is not over any limit yet, so either the bsp has become corrupt somehow, your map is too complex or I'll have to increase the tree depth limit (currently 4096 and 8192 seems to generate stack fault).

I'll need the zipped bsp to investigate further. Btw, which qbsp/vis/light versions are you using?

The RVis max leafs printout is not a warning or error; just to help you locate the spot where many leafs are visible from and thus is likely to be slow in-game. 
The tools I am using are mainly Tyrann's, since I never had any problems with them (except Tyrlite) and so I am only using your light. I will try your other utils tonight, after I make some more adjustments to the area that possibly caused the problem.

Why do you think light crashed? Is there a max number of lights (surely it is impossible to cross that line).

If I can't get things working by tomorrow morning, I will send you the zipped bsp. Cheers for offering to help =] 
Light Crash 
Since Light also loads the bsp node tree to do raytracing (check point-to-point visibility), it'll probably crash for the same reason; stack overflow. I haven't put that check into Light yet, my engines have the most robust file loading code.

Yes, please check with my TxQBSP to see if there's any difference. You shouldn't need to run vis/light before loading the bsp into the engine, as they don't touch the bsp node tree. 
Temporary Fix 
I blocked up a window in a lift shaft and it fixed the problem. The same lift shaft has got some serious visibility issues (well, the r_speeds go to around 1300 when you ride it because I can't get it to split horizontally and the rooms at the bottom and middle are both visible at once), so I am not surprised it helped. I am going to be working away on this area tonight, so if it fucks up again tomorrow I'll mention it. Fingers crossed. 
your vis program does not compile the level. I get this error:

************ ERROR ************
LoadPortals: portalleafs 5692 exceed bsp leafs 3281

This was using your modified treeqbsp.

Tyrann's rvis+ seems to be handling it fine using the same bsp'd map I tried with your vis. It also works with Tyrann's qbsp.

Note that I have not seen any visual problems with the map recently, and it seems to work fine in all respects (aside from the recent compile problems).

The map is compiling happily now, hopefully it will finish without fucking up. 
You Know, Than 
You've repeatedly asked for help with more or less odd questions or bug reports regarding my tools or engines.

Each time I've tried to figure out what you're doing and each time I've asked for some material so I can investigate what happens. Each time you've "fixed" it yourself and each time you've refused to send me the material I've asked for.

Maybe you should actually do the right thing now? I need the zipped map+wad to be able to reproduce the problems you describe. 
You Know, Aguire... 
you're right. Sorry.

I've encountered another problem now. Light isn't working. I will send the .map and wad :) 
I think I've found the culprit; the remove_skip utility trashes this bsp, probably because it's so big. This causes subsequent tools/engines to fail. More info in email. 
A Small Idea About My Map 
just a thought
how would it look if i made the weapons and pickup markers a litle higher just above the ground and such the smallest i could make them?
and also make them look abit more alike in general not based on the ground that they are in 
for some reason quake crashes when the player touches a specific info_notnull trigger, while the other notnulls work fine.
what does this error message mean:
sorry for tbhe drunk email and also drunkness evident in this post. I will compile the map sans remove skip, but do you think that some kind of remove skip functionality could be implemented into your tools in the future? It would be reallt great if you could add that. xxx ;) 
The function you are trying to call with the notnull tries to precache a sound, but this is only allowed in the entity spawn functions that are called when the level starts.
Only functions that don't contain any calls to any of the precache functions can be used by the notnulls. 
I'm on a shitty connection and too lazy to search... What r_speeds would you consider ok for a new map? About 800-900 seems to be nice to me (yes, I just read nico's posts about the "new huge maps"). Yes, I finally decided to map and No, it's a small and not outdoor level. :) 
again, i was too hasty posting that without proper searching/thinking.
it was indeed a sounds field i forgot to remove (even though on a different notnull). 
Remove Skip... 
I would also like to see skip support implemented in qbsp. The current utility is fairly rough and doesn't really delete the polygons from the bsp file, only references to them. (I believe it simply reorders the marksurfaces list, and then shortens the marksurface count for each leaf so that the last few surfaces occur after the "last" marksurface.)

It's been a while since I looked at it, but I remember having to change the rendering in fitzquake .80 to fix the problem of skipped polygons being rendered in .75 :) 
The other advantage of course is that true surface removal would actually reduce lightmap usage, while the current method does not. 
if it is implemented better, should it also be renamed caulk, since that's what it's called in the Q3 engine, and skip is something else...?

Metl's explanation is right and yes, the tool is very rough. It would be nice to redo the util properly (and call it caulk this time), but I don't think I'm going to find time to do it anytime soon. 
Probably A Dumb Question: 
it's illegal to use q4 textures in d3? 
Well, Of Course, But 
so are all the Daikatana\Hexen\Q3 textures we use for Quake maps.
It is illegal in the sense that someone, Raven in this case owns the copyright, but don't really expect your nation's equivelant of the FBI to come breaking down your door.

I mean they could, if you take the warning screens on DVD's seriously. Traditionally this has been a matter entirely concerning civil law, but legislation on copyright law in the past few decades has steadily shifted these matters towards the criminal law.

For a new game like Quake 4, someone may take notice; the worst you should expect though is for a lawyer to get his paralegal to right you up a cease and desist order. 
i was almost certain it was like that. :P i was just hoping i wouldn't have to start making textures T_T

thanks :P 
If I Was Going For The Q4 Look 
and I wanted to avoid making some from scratch, I would consider using Sock's Tech series, maybe the Evil Lair Q2-style, and add Normal maps and Luma to those textures using the Gimp. 
it was just a few of the really nice rusty trims from the levels with that fat sitting thing that punches you, and the bloody/gibbagie floor textures where all the zombies are.

the hell textures for d3 are seriously lacking in staple textures, like a nice 64x64 tile texture, any type of light fixtures, and the only really good wall textures are those big and small brick textures. plus the trims are limited to ones that are 32 high.
atm, i'm working on filling in those gaps, but i'm not the greatest at texture making, and not that mine suck outright, but they just don't match the same quality of the original d3 ones. :( 
So I broke the law using Daikatana textures in my 2 latest maps .... Wow, I was not aware of that... But as our maps are not designed for commercial use, but only for fun, I guess they cannot do anything....

OTOH, I would like to extract HL2/Doom3 textures and see if it is possible to convert them for Quake. Is there anybody who already attempted to do that ? And is there any methdology advice I need to know ? 
JPL et al - Generally, using assets from other games is always illegal.

But - from experience it seems that ripping textures from old games for use in Quake (e.g. Hexen2, Dkt, Q3, Rune etc. etc.) is "ok" only because no-one seems to care - technically it's still illegal.

On the other hand, I think it's safe to say that ripping textures from modern games (HL2, D3, Q4) is likely to land you in a world of hurt
My Thoughts On Texture Stealing 
I think the reason nobody seems to care is that nobody has noticed, and if they have, the don't care because the original Quake is not a real competitor to any of these games.

id has complained about texture theft once to my knowledge, and it was when they were used blatantly in an Unreal Tournament (Q3's number one competitor at the time) map.

I don't think you are likely to be bothered by any lawyers if you release (for example) a Quake map with Quake 4 textures scaled down to 128x128, but there's always the chance, and is it worth the trouble to convert them with such an abundance of more suitable textures from older games already available and converted? 
i don't see why id should have a problem with it, since they are even encouraging modifiability. besides, using quake4 textures in a quake1 map should be even less an issue, since both are id games, and the textures stay within one series, too. also, custom maps are distributed in a non-commercial way (and credited), so what's the deal? 
Quake 1 and Quake 4 have different publishers/distributors. id Software may not even have much of a say. Or if they do, they may find out about it too late. And if they try to stop the publisher, that may set a precedent, and thus they may have to allow everyone to use the textures, etc.

Kind of a situation it's better to avoid in the first place, especially if you might use that map in a portfolio while searching for a job. Do you really want to showcase pirated material as a representative work of art? 
wasn't Daikatana somehow given away to the world or something, for whatever use seen fit. Don't remember... 
...and Regardless Of Law Issues ? 
... what would be the good method to extract textures from games like Doom3, HL2, etc.., and then export them into Quake format... avoiding fullbright issues ?

PS: I discovered this afternoon that DKT2 texture set has a lot of fullbright pixels to remove in order to look cool ingame... and so a huge amount of work is already waiting for me at this time... :( ... so Doom3 and HL2 texturs will have to wait unfortunately... 
Which hold the texture files in Doom3 are just .zip files renamed. There is no special protection there, like say splitting the separate
files in to two seperate coded parts that are rebuilt during execution. I have been told that is how the Myst copy protection works. 
If . . . 
Id used a protection scheme like that, imagine, Marcher Fortress would have had to have been made
with textures rebuilt on snapshots. Kind of like taking a camera into the movies to make bootlegs. 
Marcher Fortress would have had to have been made with textures rebuilt on snapshots

Or even *gasp* textures made from scratch!!! 
in all fairness, not everyone is gifted at textures, as i'm learning myself... lol XD

as for extracting textures used in d3/q4... well, that could be more complex than other games, simply because they use more than just diffuse maps with small effects. for the most part, the diffuse maps alone are useless as they look shit without proper lighting with their respective bump maps.

you'd need to find a way to load up the diffuse maps and apply the bump maps to them, and then cast some light on them to get the shadows to show up and then save the result as a new texture file... a lot of work for poor results if you ask me, since those new textures will *still* be limited by the q1 palette, unless you go the external tga route. (external tgas can yield awesome results though... ne_marb looked wicked with the vivid green doom textures :) 
Doom3 Textures... 
I've just extracted the .pak4 files... and there's not only the textures, but also the skyboxes (i.e Hell and Mars outside... ) and there are awesome..
And concerning textures, there are a lot of interesting stuffs.. but it is a serious amount of work: all textures are .tga files, and there are 500 MBytes for all the stuff (i.e skyboxes + textures..) Hey guys ! I feel suddenly alone in front of the task... and so I would need some help ;P
Anyway, I will open all these files, and see what would be cool to keep... cause after a quick fly, not all can be used in a wad file...
And concerning HL2 textures.. I need to extract the textures from the bsp files... and this is another story...
In anyway, thanks for the tips ;P 
Email me if you need help to automate pic conversions. 
Good one, Kell. 
Thanks a lot, I keep it in mind.

And now I still have to check all the tga files, to see what can be used or not. As I saw there are generally one "basis" texture, and 3 or 4 derivated from it (i.e a darker, a "UV photo" like, etc..) I guess these additional tga files are used for 3D/lights rendering ingame (I guess necros explained it better tha me in post #4957), and only basis textures would be usefull in Quake. But the task is not so simple: there is 500MB of textures, and each one is around 20kB. If I consider only around 1 on 3 will be used (according to what I said above), it's around 8330 textures to create... OMG ! So I will have to split all the stuff into separate wads... wow...
Anyway, after the "preliminary" selection, I will come back to you ;P 
I think D3 (and Q4 I guess) textures really look too plain and boring without their normal maps and proper ingame lighting, I can't imagine them looking like much in a game like Quake... 
The diffuse map (what you call a "basis" texture) alone is extremely flat and plain looking compared to what you see in quake4, and isn't really suitable as a standalone texture.

Ideally you'd use the normal map and diffusemap together to render out a texture with the sort of baked-in highlights and shadows that are used for quake textures. This could be done as a batch process if such a utility existed either alone, or as part of photoshop or maya or something. 
Bal / Metlslime 
Well, I will make some tries before starting a full automatic process of conversion. If the textures will not look good, I will simply stop the "process".... I can easily live without Doom3 textures in Quake ! :P

However, I think it could be possible to convert at least some of them (i.e rocks, stones, etc.. that are used in Hell/Cavern level..) ... and also reduce the initial size to something more suitable for Quake... I will see this in time..

Anyway, thanks for the infos.. ;) 
Sprites And Models 
I am looking at some spites in Quake.

I realise that sprites are 2D and that walking 'around' them shows the same 2D image, as opposed to a model which can show different sides.

But what are the merits of using sprites instead of models? Would it just be coding and modelling versus drawing? Are there performance considerations? 
Think about the globe - it's spherical so it would take lots of polys - it was also quick to throw it in? Prolly doom leftovers partly tho. Explosions and particles are sprites btw. 
Sprites V Models 
sprites are ( unless you're making lots of really big sprites ) easier on the rendering. They're also easier to make, and not subject to the vagaries of lighting that Q1 models are.

Even Q3 uses sprites for various different visual features. Features that could be done with models and skins but simply don't need to be, cause they work fine as sprites. 
aren't lit, so they are fullbright everywhere. this can be good, but could also be bad. (explosions = yay, trees/shrubs = aww :( )

also, there are a few different ways to have sprites too, you can have them non-aligned (look the same from any angle), vertically aligned (look the same from horizontal angles, but looking down or up at it will show it's 2dness and a few other alignement options which i'm not quite sure what they do. 
New Sprite Tool 
While we're on the topic, FrikaC has released a new tool for editing sprites, so you don't have to use the potentially dangerous AdQuedit. Get the beta from

Already given the program a bit of a try, finishing off a mod I tried to make a few months back without success. It probably earns the distinction of being the smallest mod in existence, at only 17k. And they called it Noir Quake ; - )
It's just a bit of fun since people mentioned it in a discussion thread. But it might have some merit for interesting future maps, altering the palette in such a way that the existing monster skins aren't broken(changed maybe, but still look alright). Perhaps the Schindler's list effect of black and white with just one colour could work well... 
Texture Legalness V2 
what about modifying D3's textures for a map in d3? ie: change the diffuse map, but keep the other maps the same, for example.

are you allowed to modify game ressources if they are for the same game? 
There Is A Legal Concept 
called 'fair use', i.e. taping a broadcast for later viewing, loop samples of music, etc, and remixing elements in a game for the purpose of modding would certainly be an example of that.
You are on pretty safe grounds there, even though, EULA's typically have non modification clauses attached. If they were taken verbatim, there would not be any mods at all. 
Preach, that quake noir thingy is brilliant. I've so wanted to play quake in B&W for soooo long. Skyboxes don't get modified, so one has to call a bogus sky and revert to default but who cares.

For a awesome piece of gothic horror movie action, run noir and load gmsp3... f**king brilliant! 
Coda To The Noir 
Hadn't thought about skyboxes, but it's a good point! Many new engine features will break this mod, including fancy particles, .lit files and tga textures. Don't try it in darkplaces! On the other end of the spectrum winquake should work perfectly, and gl if you set gl_flashblend to 0.

Gmsp3 is, I agree, very cool in noir, been a while since I've played it too. Another nice one is Adamantine Cruelty. One thing that became apparent while playing with the mod is how hard it is to distinguish red/yellow/green armour and the gold/silver keys. Sounds obvious now, I know...If someone wanted to do this for a serious map rather than a bit of fun, it might be worth doing something about making them look distinct.

One final trick though, since the only files that are changed are colormap.lmp and palette.lmp, you can almost always just add this mod on top of an existing mod, just by throwing the gfx folder into the mod's folder. So it's not just limited to vanilla quake maps. 
Noir Quake 
When I tried it, it looked more like nearly-black-and-white-but-with-some-yellow-green Quake instead of Noir Quake. :/ 
I Do Try, Honest. 
It's not that I don't try, it's just that I'm useless at it.

Anyone know of a large flame sprite for use in Quake1? You know, large bonfire size one. 
What About The Quake3 Flames? 
I don't have Quake3 :-( 
lots of nice, and smooth flames in duke3d. 
What About... 
the flames in marcher? or was it bastion? those were big and looked good. 
sprites, nevermind. 
Good stuff, thanks necros. 
Flames 2 
there are a few other varieties, btw. i think at least 1 more, but it is thinner/smaller.

also: the size of the flame in d3dflame.spr has been modified so each from has a ^2 size, so it works with glquake without looking bad from resampling. if you find other flames, i'd advise resizing them like that too.
and make sure you have it so that it is aligned at the bottom of the frame, and not the top. one of the frames is 64x64 instead of 64x128, so if they are aligned from the top, the flame will jump around. 
Noir Quake: Take Two 
What's the inverse function of func_pwn? Does it return the input value of the original post?

Original post should have been: Nearly-black-and-white- but-with-some-yellow-and-green Quake. 
Yeah, Odd Colours 
I know where RPG is coming from, and I'll say it's partially intentional, but on close inspection it could do with some fixing as well. The idea was to make the palette by changing the hue of each colour while fixing the saturation and luminocity of each colour. But just doing that uniformly might end up merging colours together frequently, so I added a bit of noise to the hue, so it varied. That was the plan anyway, and I stick by it that much.

However, some of the variations were a bit extreme, there were a few rows that preserved their original colour too much, so I've now changed that. Another problem was that some of the darker entries were altered with...less care than the brighter ones. It's not very obvious in the palette editor, but if you have the brightness high enough in quake then you can notice these pixels. These have been fixed too, so there's a version with these changes at
I've also had a go at doing one where the palette is all one hue, and it doesn't look as bad as I expected. However, if you look carefully there are still visible colour differences, because the palette is stored as RGB not HSL. Anyway, you can also try that out and see if you prefer it: 
So I Was Mapping Along In D3, Singing A Lively Tune... 
i go to place a monster (the first entity i've placed since i started the map) and as soon as i deselect it, it disappears...

i go to check in game, and the guy is indeed still there, but he doesn't appear in the map editor in any of the views, 3d preview or 3d realtime preview...

func_s appear still, and toggling the 'show entities' will make the func_s disappear, but doesn't seem to make the other entities like monsters, items and mapobjects appear at all...

i went to check in other maps i've done with entities in them, and in those maps too, monsters, items and mapobjects don't appear at all...

to make matters even wierder, in OTHER maps BESIDES the current one i'm working on, if i toggle 'show entities', func_s and lights disappear, but monsters, items and mapobjects appear! and toggling 'show entities' again, will reverse the effect!! BUT, in the current map, toggling 'show entities' does nothing except make func_s and lights disappear and reappear... o.0

anyone working on d3 maps ever encounter this? did i just hit some button or something--? because this is just wierd... and a little annoying. :P 
Just A Guess.... 
does he reappear if you turn off realtime lighting preview? 
Using D3Editor? Toggle CTRL+M (hide / unhide models) 
If That Doesn't Fix It, Rename Editor.cfg 
Which will kill your settings, but you should see models again. Until the next time they disappear.

Don't ask me what's going on there, I have no idea. 
it was ctrl+m ^_^ thanks, friction. :) 
That seems to be about the same as before. Turning the brightness all the way up made it more like shades of gray, but of course that made everything really bright and not very noir like. 
Oh, Sepia 
Yeah, the sepia colour is intentional, to make it look like old film rather than strict black and white. Proper black and white would be easy to achieve, and wouldn't have the problems of slight dithering/off colour pixels. You'd just have to desaturate all the entries in the palette. 
Removing Fullbright Pixels From Textures - Easy Solution 
With some luck I have found an easy solution today. I can't remember to ever see it in this thread so I want to share. The "Remove Brites" functionality in TexMex is buggy and it doesn't work even if you uncheck the "Use Full Brites" option in the preferences/workspace tab. But you still can remove fullbright pixels in TexMex easily. Here is what I did. I unchecked the "Use Full Brites" option, opened the wad file with fullbright pixels, opened a new wad, copied all textures to the new wad. That's all. Fullbright pixels are gone :). I hope I could help anyone. I had many many problems with this issue and couldn't find any easy solution for a long time. 
does have a lot of issues, but it's pretty easy to work with for the things it actually can do.

I just recently managed to figure out why TexMex often seem to have problems loading the conchars texture in gfx.wad. Ugh, what a mess ... this also explained why several modern engines (e.g. DP) have problems playing the OUM pak. 
As all the textures in a set are not polluted by "fullbrites", I guess correcting fullbrite pixels in a texture can be done as describe below:

- Load the wad file in TexMex
- Select the polluted texture
- Use remove fullbrites command (fullbrights appear then as red-purple pixels)
- Export it to a bmp file
- Remove it from the wad
- Open the exported texture with an image editor, and change the fullbright pixels in whatever color you want (normal pixels is prefered !)
- Import the corrected texture in the wad
- Save the stuff and validate the changes by a test in-game

I've done this many times, and even if it seems very long, it works fine.. and you really manage what happened...

Nevertheless, thanks a lot for your tips, it might help for massive fullbrites removing ;) 
Try it out my way. It takes 5s to remove all fullbrights. You can also copy affected textures only to new wad but it will take more time since you have to look up the old wad for them. The whole export and edit part is skipped. 
I beleive you man, don't worry...
I started a map (1 month ago, in paralell with other tasks..) using DKT2 texture sets, and most of them are white, so here I will need massive conversion... So I guess I will try first your method... :) 
Max Verts 
I've searched Mapping Help (via the Google idea) but can't find the answer:

what are the max verts allowed on a static (no animation) model?

I've probably asked this before but as I keep reminding myself, time dulls the... the... er... um... hazelnuts, Bob. 
Vert Count 
1000 to be compatible with every engine. Strangely enough it was originally 2000 in dosquake/winquake, but glquake only support 1000 - maybe back in the early days of 3d cards 2000 a model was considered just too taxing. It's possible that the released source codes reverted back to 2000, but if you want to be compatible with everything that doesn't help. 
In Released GLQuake 
it's 1024 to be exact. But I think pretty many engines have raised that limit to at least 2000 (same as WinQuake); Fitz, DP, my engines, Joe, Tomaz ...

Shouldn't be a big problem. 
Too Many Verts 
Ah, so 3656 verts might be the problem then! Ooops. 
Ankh Re: Fullbrights 
Very helpful ;) 
Well Maybe It Was Asked Before 
Anyone knows if it is possible to find some custom medieval/gothic/horror textures for doom3? 
Look For Lukin's "Ruiner" 
A q4 map which uses versions of Undulation's Gnosis texture set, with normal and spec maps added. Other than that, there's nothing other than bits and peices out there that I know of. 
Speeding Up The Mapping Process 
I have recently started building a new map. It is always a pleasure for me to work on a map that is at its beginning. The compile time takes few second only and everything is simple and fast. I would like to know how you deal with your map as it grows bigger:

1. Do you split it in parts and work on them separately? I'm always afraid of exceeding the engine limits when doing so. The problem will get visible only after joining all parts together and will be very hard to correct then.

2. How often do you run fullvis on your maps while building them? I do it from time to time to check if I don't get into problems with performance and r_speeds. Is there any other way to check against those problems? I have a slow computer and vis (even fastvis) always takes some serious part of the whole time I spend on a map.

3. What about lightning? Do you prefer doing the lights on the way as you proceed with the map? Or is it wiser to implement lightning after the whole brushwork is done and save the time for running light.exe when doing brushwork?

4. What about using prefabs and copy/paste. I guess this shouldn't be overused.

5. What else can be done? There must be many things I didn't think of right now. Certainly a good computer, big monitor and the right editor help a lot. (I'm still stuck with Hammer since Radiant doesn't work on my laptop). 
Hl2 Editor 
what is the version of hammer that supports hl2?

any link? 
You Can Only Get It Via Steam AFAIK 
Install the HL2 SDK via Steam and it should appear in a magic folder in a magic kingdom. 
My main trick is to create giant black brushes that enclose the parts of the map i'm not working on. This doesn't save on QBSP time (all brushes still get processed) but it does save on light and vis time (fewer lightmaps, fewer visportals.) 
Enclosing map parts with big solid cubes saves a lot of qbsp time actually. Thanks to Tyrann's logic all brushes inside the cubes are quickly removed already in the CSGFaces stage. 
cool, good to know. 
i compiler when i go to bed or when i go to bath room, eat, go to beatch e.t.c. 
I'm with Trinca there. Just use bsp only when the map gets too big, and vis/light/both when you have a break from your computer.

If you don't have one of those ultra noisy graphics cards that will keep you up all night*, you can even do it when you go to bed, and wake up to a freshly baked level every morning.

*they usually aren't noisy if you aren't playing an intensive game. 
you can even do it when you go to bed, and wake up 2 weeks later to a freshly baked level every morning.

Ankh's Post #4995 
Err... I tried your method on DKT2 texture set... and unfortunately it didn't work... Either I missed something on your explanations, or TexMex v3.4 is not suitable for your method..
Any idea ? I need help desperately.. :( 
2 Weeks? 
What pc are you compiling with? I know it runs doom 3, so it can't be that bad. How come it takes so long?

My 10k brush map takes 40 minutes to do everything full.

Mind you, it's not a big open level, and I did make a void speedmap that took ages once. 
including vis? dear lord, that's awesome :o

man, my vising takes forever, even with my current machine (mind you, the cpu isn't anything to scream about these days, just an amd 2500+) so likely that's slowing down compile times a lot.

the nice thing is that i usually don't need to vis the maps for me to test them. :P i just use aguire's engine and chug along at a decent 40fps with 13k+ wpoly :P but that doesn't help when it comes to working out vis and blocking.

also, it makes prepping a map for final release a right pain, esp. when you notice some minor structural defect the minute you load up the freshly fullvised map >_< 
My 10k brush map

will it be custom engine only 
Re: Ankh's Post #4995 
JPL I have sent you an email. 
it's on the brink at the moment. I still have more to add before I start optimising, but it's looking likely to be custom engine only. The ones I know will support it are currently limited to Aguire and Tyrann's engines. I want it to run on Fitzquake (currently it exceeds some limits, but still runs ok) because I prefer fitz lighting, and it supports widescreen, but it's going to be a tight squeeze. 
I've just seen it. I will reply this evening (I'm at office right now: so job means no Quake :( ... ) 
a new version of my most frequent quake error:

SZ_GetSpace: overflow without allowoverflow set

I already had the similar error with that map but I continued to place monsters (using agirre's engine) waiting for corpse removal to be employed. But this error is different, the previous one was about buffer size. 
See My ToolTips 
This is typically caused by protocol overflow (same as packet overflows but on a different level). You had a similar issue in Menkalinan when reloading a saved game on Hard. Too much stuff in the map ... 
Will corpse removal code help to solve it? 
I Think It Has To Do With 
how much stuff is in the map initially, at loading time... so no, it probably won't.

isn't it like too many func_s and triggers and such? or is that a different error? 
Corpse Removal 
only helps in the end of the map, so it depends on when you get that error. Like necros says, it usually appears at map loading time or reloading a saved game.

At that time, the server tries to tell the client too much at one time and various buffers overflow, usually the signon buffer.

Clever progs like delayed spawning might help if it's mainly monsters that contribute to the overflow. You also often have moving stuff and I'd assume that that will also make things worse.

It's the dynamic status at startup that usually kills the protocol. If you use my engine and check the console at startup, you might see a warning if the signon buffer exceeds normal size. Make sure to always use developer 1
Worldcraft 1.5b (Forge) 
Is there any complete tuitoral out there, on how to start a map from scratch?

let me know via email:
or here.... but, email is prob most likely.

If I have time I will be doing a complete tutorial for QExpo, but there should be tons of guides.

Try searching for the worldcraft site on planetquake (I heard it recently went down though) as there were some guides there. I think Worldcraft's very own help files include some basic mapping guides though. It should at least tell you how to build two box rooms, connect them and compile the map. Aside from that, you could always try asking for help with specific problems here or on #terrafusion on Quakenet. 
Wc 1.6 
That's the one you need. 
Worldcraft Tutorials 
That's an awesome idea :) There aren't many new tutorials these days. 
Speak to me...! 
scarecrow's idea for QExpo is to reinvigorate the scene, so we need to make it easy for new people to get involved.

I can't say for sure if I will get anything done, but I will try. 
Sorry man, I forget to check that account! Reply sent. 
one thing I would personally like to see...
Would be an extension of CZG's tutorial - explaining a simple way to make more complex clean curves (aka more than 2 sides).
Of course that's a pretty small corner of a pretty big picture, huh? 
Texture Editing Question 
How would one go about applying some realistic blood smears/splatters on some quake1 textures? In either paintshop9 or photoshop? Or are there some blood images with alpha channels I can use for my own purposes somewhere? 
I know there are some brush collections findable online with various blood spatters etc, with a bit of tweaking it could look ok.
Otherwise... you could steal all the blood images from doom3 (they have alpha channels) and use those... =) 
Quake Brush Models? Health Boxes, Etc. 
Does anyone know either how to make Quake brush models (ammo boxes, health boxes) or an editor that is capable of making them?

I've Googled numerous different ways, to no avail.

Ammo boxes and such in Quake are in a special bsp format b_bh100.bsp, unlike other models like monsters, weapons, etc.

I'd like to make a couple, but cannot find the information. 
It's Easier Than You Think.... 
i'm pretty sure you just make a one-brush box with a specific corner on the origin (bottom south west corner I think) and a couple of lights to make sure all of the faces have some light on them. Then qbsp and light it, and you should be good. 
that's exactly what you do. you can make more complex models than square boxes too. you could even just use regular .mdl files, afaik.

any one know why id chose to make ammo boxes bsp files instead of mdls? 
No Way! 
Thanks Metlslime, Necros!

I was banging my head over this! 
any one know why id chose to make ammo boxes bsp files instead of mdls?

They're easier to 'skin', 'cause it's just ordinary textures slapped on each side; skinning a cube-shaped .mdl would result in only 2 faces being textured properly.

Why not use a .mdl of something not-cube-shaped?
Because of the lighting I suspect. 
Modelling Terrain 
I can use the tri/quad-souping method for creating terrain, but for large scale things this is a true chore. Can anyone point me to some good tutorials on creating terrain for q3 engine (ET) with 3d studio max or a similar tool? 
Ah Yes 
that makes complete sense. and yeah, bsp models aren't lit beyond their original lighting. 

I'm thinking of the Quake3 tutorial for Blender, but You'll find a lot of useful info there. 
Try Nemesis' terrain generator. It is a fucking good tool (I used it for CDA as example).
Check it out at 
Terrain In Quake 3 Engine 
I've been wondering about this:

In many terrain maps I am seeing in Q3-engine games (read: ET), there are some parts of the terrain that logic tells me has been carved up to insert a building or a tunnel or whatever. I am wondering how this is done?

My understanding is that if you use heightmap-based terrain and start carving it up, you are bound to get BSP issues whilst iirc carving up terrain which is done as a mesh is flat out impossible.

What am I missing here? 
you just remove the terrain brushes that are in the way of what you want to build, so you got a rectangular hole in your terrain, and then proceed to plug the gap with whatever you want to build in the normal fashion. Same principle applies to terrain meshery; make the mesh with holes in. 
Dm3 Question 
DM3. Do people prefer to play with translucent water or non-translucent water? 
translucent water for sure ! 
although i don't personally play, i'd think that non-translucent water for fairness would be in order. 
Hardcore Players? Bambuz? 
Do any of the hardcore players know? I'd prefer to have trans water for single player, but maybe I can save that for the Quoth version. Do competetive players still run Quake on p2s and shit like that? do r_speeds matter? The framerate is always maxed out on my machine - even with novis on, and that's at 1920*1600 in fitz with all the second passes and stuff for enhanced lighting (overbrights and fullbrites).

Maybe the competition mods have a server command to force wateralpha to a certain value? Anyone know? 
More Questions (for Players As Much As Mappers) 
Do any of the hardcore players here know? I'd prefer to have trans water for single player, but maybe I can save that for the Quoth version. Do competetive players still run Quake on p2s and shit like that? do r_speeds matter? The framerate is always maxed out on my machine - even with novis on, and that's at 1920*1600 in fitz with all the second passes and stuff for enhanced lighting (overbrights and fullbrites).

Maybe the competition mods have a server command to force wateralpha to a certain value? Anyone know? 
I fucking refreshed that shit after nothing seemed to happen before, and there was no post. Now there are three! God damn it! 
It would be useful if it worked in software fuhquake, you could try it (also pay attention to mipmaps if the textures are custom). Jago spent some time making enraged playable in sw with no greyflash. (And then the stupid qw people just ignored the map anyway! Sigh.)
Some percentage (I'd say 2%?) of people still play with 320x200 sw, more so at the top skills.

Transparent water has traditionally been off. I don't really know or remember all the settings on the server and in the maps and in the client that enable what combinations to be used, but there's a faint chance the way you do the map doesn't matter since it can be circumvented in the server sw. But I don't know, probably not, all that visibility and all.

I remember back in the day you could cheat in team fortress by watervising the map (in sw that was just taking the surface tex off completely) and you saw the people underwater. :) And then the mapcheck was introduced to circumvent that.

sw use:
If you can by some way view the obsolete url of IBC extended info
you could see what percentage of people used sw and which gl (in 2004).
(google cache of the non-extended info here: 
Yeah Well... 
It's just a dm3 remake for SP mainly, but I want to keep the classic DM layout more or less intact in case people do get sick of Romero's texturing.

Mind you, my rebuild isn't faithful in terms of tricks you can do or exact dimensions, so I doubt anyone who has bothered to play DM3 for 10 years will be interested. I'm still going to release a regular Quake version and a Quoth enhanced version (using quoth base enemies, trans water and that has a dm layout more optimised for ffa) anyway.

There are a couple of shots here: 
Than / Bambuz 
Than: I don't think I know of any QW players that play with transparent water turned on. It doesn't matter really. If you play QW and use it, the effect will be limited to you only seeing the underwater brushes, but no players/items/etc which are under water because the servers are set up to even out the playing field, to eliminate any possible gameplay advantage a user of transparent water could gain.

Bambuz: yeah well, I worked quite a bit to reduce the greyflash effect in software and did nearly eliminate it. Once I realised I couldn't complete "fix" it without removing A LOT of details I would rather not remove, I discovered the wonders of r_maxedges "10000" and r_maxsurfs "10000" and put a note regarding these variable into the readme. Problem solved.

Than: Also yeah, you can honestly forget about getting the QW population to actually play your map, as frustrating and sad as that may sound. 
Than Jago 
But if the map on the server is watervised, it doesn't know to not send the info from water, no?
All the visible leafs and so on?
Have to test this sometime.

Than: shots look good and inspiring. One thing for dm is there shouldn't be too many protrudings to get caught on (but no need to resort to q3 flatness!). And clipping doesn't help that much, it's uncomfortable when the visual info conflicts with the tactile or sth. Of course some is ok.

Btw, it's very different to dm3 if you can't jump from ring to quad etc at that central megahealth area. :) Dm3 probably overall considered the best 4on4 map.
If you really wanna stretch it, you could watch a demo from, they play dm3 among other maps in the NQR finals. There's even commentary mp3 so you can understand what's going on. It's awesome gaming and very tight competition, teams battling for ra control and going for the quad or the pent. Some extreme moves some extreme fuckups. :) 
yeah, that area is one that has changed quite a lot...

The layout is more or less the same, but because I changed the heights a little, and added a protruding lift shaft, it is now impossible to jump across. There are entrances at either side to compensate (and for SP flow), but it completely changes the risk factor of coming from the RA,SNG side to the decent side. The quad is now located in between the sides anyway. It's quite different I guess.

Anyway, it's not intended to replace the original map, it is a fairly faithful reproduction of the layout for DM second, and a decent (hopefully) SP map foremost. For this reason, I won't be changing large details like the pillars on the basefront in the shots at all.

It would be nice if the pro players gave it a try anyway (and then bitch about it being not as good or not the same as the original ;)

The sng area is very different architecturally (but using the same layout).

Would you be interested in testing (sp mainly), Bam? It'll probably be ready in a week or so depending on my load at work (crunch time!) 
Yeah Than 
Don't worry too much, the players are unpleasant anyway. :/

There were some modifications of maps, like e2m2tdm which added one lift, changing the connectivity a lot (it's a cross-shaped map, and this lift connected two "ends"), and people still thought it wasn't necessarily that much worse than the originals, they were played in a league administered by link.

So yeah you can change architechture.

I'm sorry but I can't try out quake stuff much nowadays, I've moved temporarily (until july) and don't want to install quake to the computer at the new place. If it's easy for you, you can send it and I might check it out if I have time when I visit my regular home. :)
meizah at gmail. 
Looking For A Fast Way To Kill Quake Monsters 
I need a fast way to kill big amount of quake monsters but I can't use the killtarget -> targetname method. The killed monsters won't be visible by the player. The monsters just need to be removed from the map at a certain time and place. I'm close to packet overflow also.
Any ideas? 
trigger_hurt, func_door crusher, collective telefrag?
killtarget removes them from the map, but doesn't change the monster count. 
thanks! I was counting on you :)

trigger_hurt will do 
So, I don't add or remove any brushes. I add 20 or so lights, and about 10 monsters. The marksurfaces reduce from 31688 to 31250.

So, shall I just add another 100 monsters and 100 lights and expect the marksurfaces to drop below 31000? Cause then I can add some more brushes and improve the trim. But honestly, what's it all about? 
... really... nobody knows.... 
I just added a trigger_monsterjump and it reduced the marksurfaces by another 3!

New Question/old Problem 
Why does
translate to

worldcraft issue? fgd issue? engine or something? 
isn't it that WC thing where ammo boxes and health boxes aren't correctly set up in the editor? they are set up to be centered on the origin, when in reality, they are oriented from one corner of the bbox or something...

i think it was czg who had a fix for that on his site 
I thought it might be that, but I'm using my pbrsp1.fgd, which I beleive (not 100% certain, it was a while ago) I based on czg's 'fixed' fgd. I don't think czg has it on his page. czg? 
Mine is based off of czg's. And czg's is available at

Still dunno wtf with the items. 
No Your FGD Is Correct 
I've usually found that if you place an ammo box right next to a wall or another ammo box, it will complain that it's in a solid, fuck off and die.
Though I've seen them close together in other maps I dunno how it is done. I usually end up placing the ammo 2 units away from anything. 
I think that could happen if you have an invalid angle key on the ammo/health boxes. I've seen before that having such a key can make those boxes appear partly inside solids or even disappear. Deleting that key fixes the problem. 
There is no 'angle' key. I even tried putting one in and they still do the same. Oh well, if czg couldn't hack it to work right, then I don't expect I will. 
Then it's probably what czg said; sometimes items don't like to be too close to solids or other stuff (lost bonus item). 
I recall having a similar issue. I use Radiant. While I've never had an issue with placing items next to each other, if they are next to a wall they will sometimes disappear as mentioned by czg et al. I always place items at least 8 units from the nearest vertical surface. 
Then i guess its just a fact of life, then. I just thought that there was some way to get around it. Away from the walls, they go! 
Item Rotation In Quake... 
In Quake 2 you can rotate items just by setting the angle key, but in Quake, this doesn't work - everything just appears axially aligned. However, I know that it is possible to rotate item boxes because I've seen it done in several maps before - notably one of Neg!kes speedmaps that ends in an underwater tunnel with lots of boxes rotated at funny angles.

How is it done? From memory I thought it was done by giving the item an angles key with pitch yaw roll values.

Please tell me!

By the way, is the fact monsters won't shoot through transparent water a reason any of you sp mappers would consider not vising for transparent water? It's really lame when you can just hide 1 ft underwater and pick off all the monsters without them firing a single shot.

As for the item problem ray is experiencing - it sucks indeed. If you desparately want the boxes next to each other, perhaps you could try placing them staggered above each other so that they are not touching until Quake drops them to the floor. I've no idea if this works though ;) 
On Items 
yes, items can be rotated either with "angle x" or "angles x y z". the latter was used in said speedmap. though rotation does not prevent them from dropping out if they are too close to a wall, and one has to experiment a bit with their location. it's their bounding boxes that matter here again (same with walkmonster in wall issues).
items can touch other items without problems, they can even be spawned within each other (same origins). they cannot touch monsters, however, and if you place them above the monster, they will drop on its head and stay floating in mid-air when the monster moves away.

than: that sucks a little, yeah. but then again it's not that much of a problem, i guess. opaque water should mainly be considered in terms of vis blocking or visual aspects. 
Yes, I would consider not using transparent water in that case. However, that would of course depend on the balance between how enhanced the visuals are and how much combat can take place in that spot. 
Can't Colormap A Non Src_indexed Texture 
"TexMgr_ReloadImage: can't colormap a non src_indexed texture: lightmap02"

I get this notification (twice) in fitzquake when loading my map. The map loads and plays without problems. What is the meaning of this warning?

I also launched the map in Bengt's glquake and in joequake-gl and I don't get such error. 
the error message is newly introduced in fitzquake 0.80. Would you mind uploading your bsp, or emailing to me, so that I can examine it?

I'm pretty sure it's a bug in fitzquake and not a bug in your map. 
I can't send you the bsp right now for some reasons. Maybe in few weeks.
Thanks for the info. 
running across the same problems ATM with item boxes; like in my last map I'm rotating them all randomly to give that more natural feel instead of a load of regimented nail packs sat in rows - it's bad enough that demons and hellknights helpfully leave bundles of shotgun shells lying around anway just in case a slipgater blunders into the place.

The only way I've found is to playtest and make a long list (ie. handwritten) of what's missing / intersecting with other stuff.

For now it's just 16WC units from anything else and testing in a dummy map before cop/paste into the final version when they have to be close together or near a wall. 
In my case, since the map in question will have its own progs, I put some code in PlaceItem() in items.qc that, if the item has a certain xadjust or yadjust flag, it will set the x or y origin plus or minus 16 units. Just needs to be called after droptofloor() obviously. Doesn't appear to be a workaround for standard progs though. :( 
Am I Dreaming... 
Or did I once have a texture set with a dinosaur fossil in it? Has anyone seen one?

Have you tried looking in Rogue? It seems like there are some archaeological textures in there. 
Yep and nope :(

I was thinking it was in the Heretic or Hexen tex's, but no luck there either.

Has anyone seen a lost dinosaur fossil texture anywhere? 
Yeah, It Was Like A Vertebrae 
in clay mud, but I don't remember where. 
At Least... 
Head knows what I am talking about :)

I just wish I could remember which flippin' WAD it was from! 
Flipper Fossil? 

Can you send it to me?

I found a small bug in your engine. I usually load my map in your engine by using shortcut with +map command. I get no warnings. So I missed the moment when I got over one limit. I noticed it only when I changed the skill and loaded map with map command in console. I got a warning:

SV_CreateBaseLine: excessive signon buffer size (9202, normal max = 7998)

What is it? And can you fix that warning messages bug in your new version? 
If you changed skill (typically to a higher skill) and reloaded the map, the amount of monsters/items usually increases. That's why you now get that warning; doing the same procedure in a normal engine would probably throw you out with a SZ_GetSpace ... error.

If you don't specify any skill at startup, the default is 1 (Normal).

Or am I missing something here? 
Nonsolid Wall 
kind of re-inspired by the forcefield discussion:
is it possible to create a nonsolid wall (like func_illusionary) that is not treated like a static entity, so it can be removed with killtarget (info_notnull hack or something)? 
Nonsolid Wall 
Yeah, this is possible. The basic method can be found in post 36 in here:
The example there looks like it would create a player model, but actually what matters is the modelindex n.

So if you set n to be the modelindex of an existing brush entity, you'll get a copy of that brush entity as a non solid removable info_notnull at the desired point. If you want to use an original brush model, one that isn't already in the map, you'll have to add it in as a func_wall somewhere, then remove the func_wall from the entity list after you've compiled the map. Probably easier to just leave the model in the map hidden unless you're pushed for entities. 
Oh Yes, How Could I Miss That 
Duh, Too Fast 
would that also work for moving entities - like a nonsolid door, for instance? 
Non Solid Doors 
Yeah, you could do that, but you'd only want to do it for simple, non linked doors. Well, I say that, but linked doors would really only be a matter of filling in more fields manually.

Basically to do it, just look at the func_door code in doors.qc, and imagine that running on your info_notnull. Then manually set all the fields to the values they would get. So for instance set

touch door_touch
use door_use

Although touch is actually a bad example as you don't need it here. Add any sounds you want, assuming they're precached elsewhere. Don't set think or nextthink, as you need them to set up the model. Also, don't set SOLID_BSP or MOVETYPE_PUSH, the former for the obvious reason, and the latter since it assumes SOLID_BSP. MOVETYPE_NOCLIP should work fine although I've not tested this.

Since you can't use think, you won't get a call to LinkDoors, as I alluded to above. But you can use the same trick about imagining running the LinkDoors function on some entities that should be linked and then manually setting what you would get. This involves manually creating a chain of entities in the enemy field, but refering to each component in the door by it's entity number. Ouch. So don't do that unless you really have to, and even then, probably easier to start with real doors, run the map, dump the in game entity info into a text file, then convert the entities to info_notnull, feed this info in and recompile.

Skipping the LinkDoors function means you also don't get the automatically generated trigger that surrounds it to open it. The easy fix here is just make it so your "door" is triggered by a trigger_once or trigger_multiple so it doesn't matter. You'll also need to set the enemy and owner fields to be the door itself in the simple unlinked case - remember that these fields expect an entity number, not a targetname.

Looking at this bit of code has also given me another exciting idea, but I'm gonna work on it and post it in the new tricks thread. This assumes it pans out... 
You are not correct, I didn't change the skill.
When I load the map by a shortcut with -game arcane +map new4 parameters, I get no errors/warnings. But when I type restart in console then (no skill changing, the same skill 1), I get all warnings I should get. I tihink it's a bug. 
Restart Issue 
not related to pulsar's question.

maybe this has been explained already: why is it that when manually restarting certain entities act differently than after a clean map load? e.g. items that spawn within the player (so he picks them up immediately) fall out of the level, or funcs that are removed upon startup (for suspended items) don't work anymore and the items fall to the floor... 
It can still happen if you're right on the limit (like you were with Menkalinan). Have you tried doing the same procedure in e.g. Fitz (restart a number of times)? Do you get any error then or is everything OK?

If you want me to look into it, I need the zipped bsp and other files necessary to reproduce the issue. 
do I make items glow or have effects fields? I've completely forgotten how to do this. Something like key=effects value=integer, but I'd like to see a run down of all the possible effects.

Anyone know if I can apply a glowing effect to the spikey ball used in end.bsp to create a moving light?

Gah, all these useful QC hacks are somewhere in this thread, but we need a definite list of all the hacks without all the comments and how-tos aswell. Maybe someone knowledgeable could whip something up for Qexpo? (I am a bit busy and have already planned a lot of stuff I might not be able to finish on time). 
For Than 
do i get worldcraft working with equake??? been trying for several days.. entered all the paths but it says it cant load such and such.. can anyone help? thnx in advance!!! 
cant load such and such

*reads your mind*

Ah yes I see it now, you got ERROR 46:

"You want help learning how to map but you're extremely ignorant of important details so you should just give up now" 
That Was A Bit On The Mean Side 
Never say die, Leo Triple X-y guy. 
Hexen2 Madness 
im trying to compile this hexen2 level of mine, but i get a message saying i neeed gfx.wad! gah. what do i have to do?

what i did was to have worldcraft (1.6) compile the map into the data1/maps folder. im guessing thats where they go right? and whats with the gfx.wad thing? im using the original hexen texture.

agh, im so confused it makes me go pee-pee :-( 
Little Help 
here is a little help file that can help you on your way...

maybe not the instant help you need, but for working with the program it can be a good catch! 
Hexen2 Madness - The Vengeance 
i realised the maps folder goes on the portal one (hehe), but i cant still compile the map with the hexen2 tools. what the hell. can anyone help me on this? i really wanna see the crap i did ages ago. :-(

i dont know what im doing wrong. everything is how its suppose to be.. damn this. im gonna go cry. 
So, I've already split the map in two, (it was three, then one)removed huge swathes of brushwork to get under the marksurfaces limit and chopped out loads of monsters, and now I've hit a SZ_GetSpace error!

How do I find out how far over the limit I am and which items should I look to remove. I have a few switchable lights I could drop, I have loads of torches (three types) but want to keep them, I only have 86 monsters in this part of the map and half of those spawn-in as opposed to teleporting, I have the usual number of triggers (trigger_once, monster_push etc) and buttons (only 8).

Ho hum... 
About Map Compiling 
I just had a thought. With those looong compile times of big maps (like Tyrann: the long vis times required (~48 hours I'm guessing, still waiting...), how about something like SETI or the rc-72 project where lots of computers divide the cpu work. Would it possible to extend the compilers to do that? 
Distributed Compiling 
I wish! I don't think it would be all that easy though. There was something called 'netvis' around a long time ago (I never had it, but read about it), which could apparently be used over a LAN to speed up vis. If anyone knows any more about this, I'd be interested in looking into it.

I'm currently vis'ing my map on the fastest machine I have access to (dual 2.8GHz P4 Xeon, running Linux) and it's already taken more than 48 hours. If anyone has a faster machine they can offer, let me know! 
There was a version for quake, but it can't be downloaded now:

There were/are distributed tools for Half-Life compiling. Sounds like I was right about needing LAN speeds:

Oh well, that's enough time spent on that for now. 
Multi Processor VIS Tool 
I already discussed that point with aguirRe during "Castle of the Dark Ages" fullvis runtime (around 51 days ... remember...). I asked him about multi processors vis executable existence, and maybe re-coding vis sources to target multi processors platform... He told me that first releases of vis.exe (correct me if I misunderstood please) were able to support multi processors... but on Unix environment only.. It was used by Id initially..
And as most of PC have only 1 processor.... it was not really a "priority"... well.. It is well known that it would divide runtime by two at most (or more if you have more than 2 processors installed on your PC)...
However, I never saw multi-processor PC platform... except at office (..under Linux... exactly like Tyrann's PC, but with P4 3.2GHz, 4Go RAM, 180 Go HD, etc..etc.. )...
Maybe these high performances machines will become cheaper in the next coming years... and then a multi-processors vis tool could help... though.. 
Time To Give Up? 
So, the map won't load in Fitzquake but does load in a couple of other engines. So, I am using aguirRe's 1.31 and although the map loads and I can play, I get some weird effects like certain monsters not taking their shots i.e. I cant kill them but they can kill me!

Also, some monsters don't wake up until I walk right up to them AND blast them with both barrels.

One question for aguiRre direct: you say the GetSpace error can be caused by too many static entites, max 128. Does this mean 128 different entites or a grand total of 128? And what is a 'static' entity: non-moving models (torches), triggers, doors?

My Qbsp output says that I have 1296 entities (1013 of which are lights) and I have 111 BspModels. The monster count is 118. There are 10 monster types.

Looking at the figures, is there any benefit to getting rid of torches and braziers, and replacing them with lights?

I'm gonna play with some worms :-( 
Right now I can't remember in which case the engine aborted with a GetSpace error when having too many static ents, but I recall having that problem.

In any case, the static ents are just the ones that are made static from QC by calling the makestatic function. I don't think there's any check for if they're the same type; it's the # makestatic calls that counts. Calling makestatic also frees up that edict.

In my engines, you can check the current status by using the staticents command. It's hard to say from your description whether replacing torches with simple lights would help.

If you send me the zipped stuff (or better just a link if it's big) to reproduce the error, I can probably help you more. 
I already discussed that point with aguirRe during "Castle of the Dark Ages" fullvis runtime (around 51 days ... remember...).

Argh! You're scaring me :-P

I asked him about multi processors vis executable existence, and maybe re-coding vis sources to target multi processors platform...

Yes, I know how to do this now (at least on Linux, but I think I can do the same for Windows). I'll put it into my next version of rvis and I'm sure aguirRe will pick it up soon after that. It won't be 'til after this map is done though. 

It seems to be a question of 'sharing'. I have 200 static entities, which is 72 too many. Max_edicts are 1024 in Fitzquake and your engine reports that I have 700 in my map.

So, remove 'makestatic' from my five models in QC and they become 'edicts', which will then total 900 with 124 to spare. Or does something else fall into the melting pot?

I'll try it later today anyway. 
I'm Afraid That 
turning the statics back into dynamics might add to the SZ_GetSpace problem (and/or packet overflows) as they then have to be updated to the client.

Btw, Fitz can handle up to 8192 edicts via the max_edicts cvar. Although I wouldn't recommend pushing it that far ... 
OK, back on-track. I had mis-interpreted what the engine was telling me. When I looked at the .qc files, the 'makestatic' entries had already been turned off. Therefore the GetSpace error was not in fact to do with the staticents but probably with the edicts.

Turning some of the different types of torches back to 'makestatic' allows the game to run in FitzQ.

I now have 121 staticents and 235 edicts. So, I guess that means no more torches and the like but bung a few more monsters in.

I will now carry on, shaken but not stirred. 
I'll look forward to aguirRe's and your next vis version for sure ! 
QC Setsize 
Is it more or less mandatory in QC to call setsize together with setmodel? I've noticed that if setsize isn't called on some mdls, then in some cases, the mdl isn't rendered properly by the engine; it sometimes disappears. This behaviour seems generally engine independant.

Specifically, there's a monster_rider in Malice that consists of one leg part and one upper body part. The body's size isn't set properly and in some of the maps, the body is sometimes invisible when it moves around. 
don't know about rendering problems, but every time a model is set with setmodel, the bounds of the bbox are changed to the max and min of the largest frame in the model, so if you don't reset them, then collision will get screwed up. 
Same problem with SZ_GetSpace errors.

I added to the monster count and was at 119 with everything working OK. But I added one more (now 120) and crashed out of FQ with GetSpace: > 8010.

Using your GLQuake 1.31 I can see in the loading log 'SV_CREATEBASELINE: excessive signon buffer size'. And it tells me that it is 8010 and the maximum allowed is 7998.

I have 121 statice ents, 427 edicts and 120 monsters, which is at least 30 short of my target.

My question is a simple, "How can I reduce the signon buffer size?" But I suspect the answer is not going to be staightforward :-(

This is not a revolutionary map by any means (except that as an FMB map it's all my own work!!) and I have already slashed it to the bone, but I would like to finish it to at least a half-way decent standard.

As always, any help or pointers you can give will be much appreciated. 
A Slight Development.. 
I made the last two monsters (119 & 120) into spawned monsters (spawned-in not transported), and it now runs in Fitzquake.

Can I somehow read the SV_CREATEBASELINE value to see what effect the spawning had?

Is this the way to go i.e. make plenty of the monsters spawn in after the engine has loaded and is running? 
The Signon Buffer 
is used by the server to build a list that represents the initial dynamic state of the map and this buffer is then meant to be sent to the client.

If the map contains too much dynamic stuff (e.g. monsters), then this buffer can't hold the entire list and the server aborts. The original buffer size was 8000 bytes, but due to a bug it can only handle 7998. I've increased that to 64k along with many other similar buffers.

As you've already noticed, delay spawned monsters usually help to cut down on the list size. This method is used extensively in e.g. Marcher or the recent JPL maps that utilize my variant of the old Zer trigger_spawn monster code. By spawning in monsters as the player is going physically through the map, the total dynamic load on the server is greatly reduced. Delayed spawning helps in the beginning and middle of a map and corpse removal helps in the middle and end.

There's currently no way in my engines to see the buffer requirements if it's lower than the old limit. Beware that some combinations of dynamic stuff (e.g. moving brushes) may cause overflow also during play or when reloading a saved game, even if seems OK at startup. My typical example is Menkalinan on Hard skill; try loading it with Fitz repeatedly and you'll see that sometimes it works, sometimes it doesn't. 
Thanks for that, I feel a lot better now.

I have had spawning monsters since the start of the build (Preach's "style" "1" code that I have adapted somewhat) but only used it for ambushes and return routes. I will now extend it.

I also have selective corpse removal (I didn't like the look of monsters sinking through overhead walkways) and numerous 'killtarget', more for tidying up than anything else, so I will review the further use of these.

On the one hand I am fedup with continually finding limitations within Quake (yes, I know it's ten years old!) but on the other hand, it's great fun learning new things about it :-)

Thanks again. 
You might try to contact the author of NetVis:

seanc ::at:: 
I Wonder 
if anyone has been tempted to add Quake support to Q3map2 now that the code for it is GPLed. I build my maps testing for leaks with that compiler before compiling to Quake format, and the compile times are usually quicker. 
Vis For Other Quakes 
Quick question for a Quake 2 or Quake 3 mapper: when you vis a map in those games, I assume it tells you the number of portals. Are the portal counts similar to those for Quake? If possible, could you post the console output from a vis job for a large map?

I'm just trying to get some perspective on some of the different tradeoffs used in the Q2/Q3 vis tools.

FWIW, there are some nice optimisations in there, and I've already managed to speed things up about 20% so far. That's only testing with medium size maps though (obviously I'm not going to run 10 different benchmarks on JPL's map ;). 
Thanks for the tip. I might try contacting him once the QExpo stuff is out of the way. 
I'll Mail You A Vis Output 
tonight for a large Q3 map, if no one else gets around to it, and I don't get distracted by some shiny object.

I don't really want to post it because it would just be a big bolus of crap in the middle of the forum. :) 
That'd Be Good 
Thanks pjw. 
You Have Mail 
I sent the vis log for pjw3dm5, along with compiler/switch info; let me know if you need anything else. 
I noticed the vis time on that gigantic Q3 map took...six seconds. Is there a simple non-coder explanation for why vis takes so damn long on earlier engines?

700 portalclusters
1682 numportals
2736 numfaces
3364 active portals
416 hint portals
Total visible clusters: 54658
Average clusters visible: 78 
I guess detail brushes help a shitload, now that I think about it.

I'll shut up now. 
Got It. Thanks. 
Yes, I think it's the detail brushes mainly. numportals is the important one to watch - I'm dealing with about 40,000 numportals for my stupid map...

Another interesting fact: the "-fast" vis process on this map is so innefficient that the resulting visdata adds about 12MB to the bsp file size! 
Weird Problem With Light Crashing... 
Ok, my level is nearly finished, but now I seem to have hit upon a curious problem which crashes LIGHT if I add anymore brushes.

At the moment I can light the map only if it is less than a certain amount of brushes. If I add new brushes, I have to delete other brushes, so at the moment I am just disabling the clip brush visgroup when I export to map. This works, but soon I will run out of clip brushes to do this with, and actually rather like the map to have clip brushes.

Aguires light crashes straight away, but when I tried using tyrlight, I got an error, whgich was something like "bad face normal at x,x,x". Of course, this was on a compiled bsp, so finding the culprit was difficult, and I think it might be different every time.

BSP and VIS run fine without any warnings, and I have tried using other compilers, not using remove skip etc. all to no avail. If anyone has any idea what the problem is, I will be your best buddy for life!

Please help! Sorry I haven't clarified this more, I don't hve much net access time left. 
If you send me the zipped bsp, I'll look into it. 
shortly it will be done.

I love you, AguiRe! xxx 
Beta Testing 
I need a couple of people to help test my dm3 sp remake before QExpo. I have already sent the first beta off to some people, but would like a fresh set of eyes to look when the second is ready. Any takers? 
I'm in as well.. 

I will send you an email with the map when it's ready in the next week or so. 
meizah at gmail
Incomplete versions are fine too.
The geometry and gameplay and connectivity interests me the mosts, since i'm not that good on commenting looks. (cause i suck at mapping) 
Ok. Thanks Guys. 
That's all the testers I need. Like I said before, I will email as soon as the second beta is ready. 
Be A .pal 
I lost my Paint Shop Pro .pal file, and when I try to create a new index by using WinQuake screenshots, I don't get the full 256 varieties of Quake flavors. If someone could send an accurate index to the address I have listed, I would not only be your best .pal (har!har!har!) but pay for the ticket for the mapper of your choice to
come to your town and give you a complementary handjob. 
.pal ?? What it is supposed to be ? 
If you have the palette.lmp file, just use the old palcnv12 utility: 
Thanks AquiRe, 
I'll arrange for Stevie Case
to fly in this weekend ;) 
Palette Tips 
The best way (for photoshop users) as I discovered at the weekend is to load a quake skin and then go to image > mode > colour palette and then save the colour palette (either act or pal are available).

To convert to the Quake palette, I find that texmex does the best job (and has the option to remove fullbrites), and photoshop is terrible at converting to 8 bit colour.

Anyway, it's likely that there is a similar option in PSP, so grab a Quake skin from the net..., or this palette file :) (from 
By The Way... 
does anyone have a collection of Ken Scott's old Quake skins? They were by far the best available, and were quite plentiful. However, his site is no longer online, and I couldn't find any of his old work online. 
Dunno About Ken Scott 
but Megazoid collected a shitload of player skins: 
Hey Than, 
I've got a pack of Scott skins. I'll zip them up and send them to you right a way. 
Size Pal 
Thanks, Madfox 
but what I really need now is the textures to Diakatana episode 2. If someone could point the way to a download, that would be swell. 
The original .wal, or a Q1 .wad? 
Good Question 
I probably should dabble with the Quake1 wad before coming to a final decision. If DKT2 suits the brush work, I'll likely need the originals to
fine tune them a bit. 
To Give An Idea, 
I originaly textured the map in IKBlue for a very
Karanen style map; but as there is much outdoors as indoors in the map, the variety is not there in IkBlue to sustain the theme through. 
Sorry For The Endless Post 
but I had forgotten about Spirit's wad collection. I was under the impression the wad site died with Scampie losing his site last year. Thanks, though. 
Aop2m1 - Author? 
Does anyone know who made the "aop" maps, I've found single player and DM maps starting with "aop" but cannot locate a readme in any of the zips I've found, not even the Underworld site.

Anyone happen to know the name of the author for aop2m1 or the other aop maps? 
Nevermind ... figured it out. 
Ray (not Of The Notorious Variety) 
back in the early days I played a couple of levels by an author named Ray. Both levels were of a good standard, and very closely matched the id levels. One was an idbase level, and the other was a metal map. Each had "Ray" written in fullbrite red in a secret location. Does anyone else remember these maps and know where I can download them? 
could you upload those skins to a freehost so we can all get them ? Thanks. 
I Got A Copy Of DKT From

I actually spent the evening modifying a different set of textures that needed a bit of darkening to fit the Quake scheme (not IKWhite) for the map. 
Preach, Or 
anyone with Grade A sexy knowledge of QuakeC, is there anyway to get a killtarget to eliminate a func_illusionary using some sort entity field wizardry in unmodified Quake? 
than were dm or sp maps? i think i already seen that also...

i can look at home but if u say dm or sp spair me a lot of troubles... they are so many :\ 
they were SP/DM hybrid maps like the standard id maps. I think they were mainly intended for sp, and whilst not particularly challenging or interesting, they were solid and I would like to see them again. 
i will try to find when i get home tonight! i�m at work :( and at work just can map and see webpages... :| 
works with the info_notnull/modelindex trick. see preach's posts a few pages before. 
Special Characters In Quake.exe 
how can i find out which special characters are usable in quake - like the umlaut in zerstorer, which is done by "�" (� in html)?
the name makers i tried only had standard letters.
i'm specifically looking for something to display "�"... if it'S possible at all, that is. 
Custom Characters is a list of the characters you can get in quake. I don't see � on the list, so what you might want to do is replace one of the existing characters on there with a custom graphic for �. You'll need one of the special quake utilities to edit conchars, either adquedit or fimg
I don't know if this is how zerstorer did it, but it's possible. 
those are the standard characters i was talking about. but apparently there must be more. i'm sure in zer it wasn't done by replacing any characters with custom ones. so i just figured if there is � there might be others as well. 
mean the blanks in conchars.pcx in gfx.wad openable with adquedit? 
Those are the only characters quake has, the font is defined by the conchars image. I've gone and checked, and adding replacing characters is indeed how the zerstorer guys did it. If you open up gfx.wad and look at conchars, they added two o-umlauts as the last two characters of the image. I would guess that these are a good choice for a replacement. You probably don't need to replace both, best to go for the second last one. 
there are lots of empty characters here and there. 
ok, thanks. i didn't get it because conchars isn't displayed in texmex for some reason. worked with another program.
i'm likely not going to fiddle around with it, though. 
Some Of The 
empty chars are used in combination with other chars by the engine to e.g. simulate a blinking cursor. Stock conchars and std engines have issues with this that e.g. the OUM conchars has "fixed" (i.e. compensated for it).

But then changed engines (e.g. DP) get problems due to overcompensation. Argh ... 
TexMex and conchars editing is a really sorry mess. 
but the problem with OUM is that they switched which char was blank and which had a cursor.

I ended up giving up on all that and I now put hard-coded cursor images into fitzquake. It sucks that mods can't customize them, but at least they are consistent to the user. 
For All Of You Making QEXPO Maps... 
If anyone has a monstrous map that they need to compile, send it to me. I am setting up an ex-server that has 4 processors, and if my assumptions are correct, this will greatly speed up the compiling process compared to almost any other modern system.

Unless, of course, by some horrible circumstance, our compilers do not run on linux and do not support multiprocessor setups... 
I can send you my multi-threaded vis for Linux. Works great. 
please do. email is in profile! 
...does not appear to be there? 
woops. sent you an email tho' 

i think is that u are looking... 
the link didn't work. You need to put http:// in front of it for it to work.

i saw author Ray and are both dm and sp i didn�t saw maps :) 
Two Things 
Jago reported an issue with FrikQCC in late 2004 that it couldn't compile the Hipnotic QC without screwing up the Scourge/Centroid monster animations.

I just found out that this is actually caused by the hipscrge.qc file having multiple (and invalid) frame definitions. Delete the 2nd set and Frik will build properly.

Is it common knowledge that setting the engine cvar gl_nocolors 1 will significantly improve the look of players in mods with multiple player skins?
I've often wondered why some models (e.g. the mini-sub in Malice) looked different (and much worse) when looking at the player from e.g. chase_cam. It's actually the DM coloured shirts/pants logic that's being applied to skins that definitely never were intended for it. 
Aguire, that's cool! I encountered that same bug recently, when I was building the codebase for pbrsp2. Weird thing is that whe I compiled using proqcc, my old go-to in qc compilers, it doesn't b0rk their animations at all. Which is what I used for the code for pbrsp1, and never saw any issue with the centroids because I never tried frikqcc with it. Maybe I can switch to it now, then. 
i use fteqcc :) start loving it when Spike made a lot of modificacion in the compiler :) 
I Like FrikQCC 
and Frik the man, but it is suprising that his compiler doesn't catch it as a type of recursion error. I ran into this error when working with the scourge.qc file a few weeks ago, A simple glance at the text revealed someone had a made a simple cut and paste boo boo a long time ago. 
Question On HL2 Mapping 
As HL2 Source engine continues to be updated and new expansion packs are being released, how does this affect the work of a HL2 mapper?

If gfx features X and Y are introduced in HL2 Episode 1 or 2, can a mapper use those features in a standard HL2 map or will the map require the expansion pack which introduced the feature into the engine? What about new entities, sounds, textures and models? 
To even have access to the content you'd need to buy the packs. If you're asking whether or not it's "legal" if someone say rips all the content from the packs and puts online for mappers to use in standalone HL2, I would say probably not. However I doubt anyone would notice if you used some textures here or there, but again I doubt anyone would take the risk of hosting the content. 
I am following the article of Preach about animating models on Q10Ex,
and I really enjoy it.

So strange I can't get my Gmax working.
I logged in but the programm isn't available.
They stopped supporting in it nov.2005.
Then I found it on FilePlanet, and installed it.
But it needs an Registering User ID to get it working.
I register myself to TurboSquid and I'm Welcome.

But I can't find my Registering User Id code in the email ? 
I Need Some QC Help Here 
blah actually I don't, but I did have a problem and had written a huge post about it, but then I managed to fix it.

The problem was with self.nextthink = time + whatever;. I thought this was perfectly fine, but apparently I was wrong. Changing it to self.nextthink = self.ltime + whatever; fixed it, but why? Nextthink is set in relation to time a lot of places in the original qc. Why wouldn't it work in my case?

What was happening for me was that the nextthink would be set to time + whatever + whatever time was the first time I referenced it; 
Does this have anything to do with that map that we're all forcing you to release? 
Yes. Yes It Does. 
Ltime And Movetype_push 
CZG, is the entity in question something with movetype_push, like a BSP object? These objects always use ltime for their nextthink instead of think. Thanks to the 3rd post in
I've found out why. ltime stops increasing for an entity while it's blocked, which makes a lot of sense. Otherwise if you blocked a door until it would otherwise arrive at it's destination, it would call the end journey function, which teleports it into place(to remove the slight floating point inaccuracies you'd otherwise get). This would probably get the player stuck. 
Yep, There's My Answer. Thanks. 
CZG's Curve Tutorial Is 404 
Here's A Temporary Replacement 
I made a while back, it's got some pics. 
Anybody Know Where I Can Find . . . 
a md3 exporter d/load link for max6? 
Question For Tool Coders 
what's the feasibility of making a tool that takes a quake .bsp as input and outputs the world geometry as a single mesh that can be imported into, say, 3DSMax? After all, the visible hull is just a bunch of triangles, right?

Not concerned with textures or anything, just geometry.

The reason I ask is I'm considering doing a remix of a Q1SP map for Doom3, and I thought having something like that would be kinda handy as a guide. 
Kinn: according to the quake map sources may be very close to release, apparently Romero is just getting confirmation from id that they're ok to release. 
whoa - that would kinda help things i guess :} 
doesn't DUBSP.EXE output a <mapname>.max when it compiles a .MAP file ? I am assuming that is a 3dsmax .MAX format file but I've never tried opening one. So all you need to do is use BSP>MAP converter and then compile with DUBSP.EXE

This is all theoretical of course :) 
I've seen a tool that can export q3bsps to VRML, so if you can go to q1bsp->q3bsp somehow you may pull it off without having to write a line of code.

A breif google didn't turn up any easy way to do that, though. 
Most of those command line editors have some severe limitations to them.

I would recommend using Id's Quake 3 Arena tool BSPC to decompile the bsp into a map file (it works on all Quake formats) and then use a utility like 3d Exploration to convert the map into an obj or 3ds file. There is a non trial period version of 3d exploration floating out there, but I haven't seen it since in several months.

Baring that, you can convert the .map file into an .ase file using q3map2. 
Is it possible to compile Q3 or any of its tools with Visual Studio 6.0? If so, could someone please point me to a resource that lists out the steps necessary to accomplish this?

I am such a Visual Basic/non-C++ person (n_n)

Thanks in advance (^_^) 
Hey Generic, 
You need a simple command line tool called prjconverter (I'm sending a copy to your email address in a second). Drop the VC7 project file into it and it'll pop out VC6 dsp and dsw files. From there it compiles like a breeze. 
I'd start with the engine code as a base, since it turns the bsp into a giant list of polygons that share edges and vertices. From that point it's just a matter of spitting out what's in memory into a standard 3d mesh format. UVs could be retained, as could references to textures/materials.

Not saying this is a trivial job, but it seems mainly like a question of learning the file format you need to output. 
Generic , 
I sent the program as a zipped attachment, but got back a postmaster response that the zip has kooties are something. I checked it with several commercial and free antivirus programs and nothing turns up. I suspect the filtering processes being deployed are growing more bullshit oriented by the day.

So this should be just as useful: 
Errr. .. 
thanks for the replies guys. I guess it seems there's already ways of getting a .map extracted from a .bsp and then turning the .map into a mesh - although I can imagine this would result in a rather messy mesh, retaining all the brush polys that would normally get culled during the bsp stage.

metlslime's idea sounds promising - use a modified engine to spit out just a nice clean mesh of the visible hull that I could get into .ase format to import into DOOMEdit, which I could then show/hide to act as a visual guide to the layout and scale whilst I create the new brushwork. 
It Strikes Me 
use a modified engine to spit out just a nice clean mesh of the visible hull that I could get into .ase format

as overkill for what you are trying to accomplish. 
Texture Alignment 
I have one entity brush on which the textures are misaligned by 16 units when in-game compared to the editor view. No other entites are affected in this way (or have ever been).

Anyone any clues? 
could it be the -oldaxis thing? 
is it on a surface angled 45 degrees? 
Well Yeah... 
if all he's trying to do is convert the map to a more recent id engine game, using a mesh in any stage of the process is silly.

Just do bsp2map and open the map in doomedit. Or, wait for Romero to release the maps, and open THAT map in doomedit. 

I'll have a look-see... 
Texture Misalignment 
Neg!ke: tried the -oldaxis but it didn't make any difference but did mess up some 45 degree textures.

Metlslime: no, this is not a 45 degree surface 
Are you using Worldcraft/Hammer?

Is the texture rotated?

Also, boxers or briefs? 
maybe there is a duplicate brush (with misaligned texture) which isn't clearly visible in the editor but gets visible in the engine? 
Texture Misalignment 
generic: I use BspEditor (latest) and the texture is not rotated or off-set in any way. Oh, and commando!

Ankh: when I read your suggestion I thought you had got it as this brush does come from another map and I could have double-pasted. But no, not to be.

It appears to be off-set 13 units. Perhaps I'll just have it unlit and nobody will notice! 
the whole commando thing ;)

Mike, if you offset it 13-units in the editor, does it fix it in the game?

Have you copied the brush elsewhere in the map to see if it still draws funky?

Does it matter what texture it is?

Yes, I off-set in the editor and it looks OK in-game. The minnor problem is that the entity brush is set amongst ordinary brushes with the same texture so it looks stupid in the editor.

Ho hum, I'll carry on.

(OK, if not commando perhaps directoire?) 
I Don't Know About Directoire But... 
I can sympathize with your texture trouble. In my yet-to-be-released mini-marcher speedmap, I had some rotated textures looking rather sweet in the editor, but they looked very poop-ish in game. It turns out I was rotating them by fractional degress which Quake, apparently, does not do :| 
That Happens 
rather sweet in the editor, but they looked very poop-ish in game. often with my set up as well. Easy enough, once you get use to, it to watch for in a full map, but really inconvenient for a speed map.

Uh, boxers -- the boys gotta beathe, but commando causes too much straffing with heavier fabrics. 
I'd be worried about more than my underwear fit if my genitals had the ability to bunnyhop. O_o 
it's a Latin thing, and the Ladies love it! 
I just remebered that in the Bsp.ini file (I use BspEditor) there is a setting to resolve the 45degree problem.

In version .94, I noticed that it is switched off by default: texture_alignment=0. So you need to change it to texture_alignment=1 and that avoids the problem.

Obviously, only relevant if you use BspEditor. 
I've Been Considering 
using the latest bspeditor for texturing because of those discrepencies. In GTKRadiant the texturing tool, the surface inspector, is geared towards q3map2 capabilaties, and when I see everything looking hunkydory in the editor and then screwed up in game, it is a bit of kneebiter. 
You Can Turn That Off 
In 1.4, edit this line in local.pref

<epair name="Q3Map2Tex">true</epair>

In 1.5, I think it's an option in preferences. 
Gah Fucking Ellipse BS 
<epair name="Q3Map2Tex"> true </epair>

With no spaces. 
Thanks Blackdog 
I've tried that and I've been making a test map. The way it works reminds me of good old QeRadiant, but that is what I need! 
Edict Count 
aguirRe's excellent engine shows the edict count of a map when a map is loaded.

What gets counted as an edict, for the purposes of maintaining compatibility with glquake/winquake?

My guess:

1. Monsters
2. Platforms/doors/triggers
3. But not lights except dynamic lights (torches)

Am I close? 
the edict list consists of all entities in the map that haven't already been removed or made static. e.g. lights are removed on map spawn, except those associated with models, e.g. torches - but torches are made into static ents and hence don't contribute to the edict count either. Switchable lights however need to be interacted with, so are not removed and hence stay as edicts.

Any entity that is spawned during gameplay, e.g. a nail or rocket, is just as much an edict as one that spawns on map load, e.g. a monster. This is why maps that are already close to the edict limit on map load can be taken over the limit with lots of gibs or missiles flying around.

when an entity is removed, an edict slot is freed from the list and can be filled again by a newly spawned entity at a later date. 
You Can Also 
enable scr_showedicts 1 to see the current active/max edict count in the map. It's the max count that must be <=600 to have the map playable in the original GL/WinQuake. 
In my upcoming engines, I've added an alternate edict re-use policy to delay edict re-usage as much as possible to help catch some difficult QC errors. Together with the check for accessing free edicts, it's a lot easier to track edict morphing issues. 
Night Journey, MOTRD 
I can't get those off the evilllll fileplanet. I need alternet direct download location. Does anyone have one?

Removing Gun For Screenshots 
Quick Question: How do you remove the player's gun to take map screenshots in Quake? 
R_drawviewmodel 0 
Func FP Account Details 
The old QMap pass doesn't work, so try these if you want files:

login: Func_MsgBoard
pass: Shambler 
Aligning Textures 
What is the best way to go with aligning textures on angled/skewed brushes?

I remember this topic was discussed on func a month or two ago but I can't find it. 
rotation is your friend. Usually you will be rotating 45 (1:1), 27 (2:1) or 63 (1:2) degrees. Textures will normally still be skewed if the brush is angled on more than one axis (e.g. a curved trim that is sloped upwards) so the best thing to do is to use a fairly plain texture that doesn't have too much detail that would make it look obviously skewed. 
I Didn't Notice 
until recently that Worldcraft (versions 3.3 and above) have a nice set of buttons on the texture properties dialog:

Textures can be fit across one face or multiple faces, or aligned to the left, right, top, bottom, and center of faces with a single button click. 
Which One Of These Isn't Like The Other? 
I don't know why, but for some reason the texture alignments I make in Radiant for this angled stairtrim <href=>here</a> don't look the same ingame. I've heard from SPoG that it could be a compiler error, but I'm not sure what to do if it is, and if it is. Gah. 
I obviously fucktangled the link to my illustration, so here: 
...I get that sort of thing when I forget and try to use an angle that is not an integer. 
Could Be... 
if the editor lets you set floating point rotation values. The map format (or maybe the tools) only allow integer rotation values. 
Yes, But... 
which one? Is it the tools or the map format that restricts texture degrees to integers? I am sure I don't know :{ 
Yeah, And 
What could I do in this case? 
when i have an angle like that that isn't on a integer rotation, I sometimes break the span into two smaller chunks, and bend the texture slightly at the middle, so that it follows the shape more closely. Or adjust the geometry to have a different slope (sometimes the geometry can't really change, though.) 
I think I've got an idea on how to avoid the whole angled brush thing altogether, but it means redoing the composition of the room. Gah. But thanks you guys =D 
Kell's Skyboxes Are 404!

When I go to download one of Kell's skyboxes, I get 404 on all of them. Just a heads up. 
Non-integer Rotation 
I use a later version of worldcraft, and I also use Bengt's compile tools. Needless to say, WC decides on some insane texture coordinates when you use the "intelligent" fitting functions. But, they compile just fine. Try those compilers out. 
Think I'm already using aguirre's stuff. Bah, I've changed to room up anyways -- just hoping now I've got enough room for a decent coop session. 
When I go to download one of Kell's skyboxes, I get 404 on all of them. Just a heads up.


Due to the inordinate amount of work to compose 49 separate downloads, these skyboxes are currently only available in a single download as The Kothic Skybox Compilation.

Works for me. Thanks for the reply. 
Teleporting Monsters Code Updated 
Not sure where to put this, but it doesn't deserve it's own thread, so I guess mapping help is probably the place. A while back I posted the code for adding a teleporting monsters flag. If you set it then the monster would start invisible and teleport in when you triggered it. There were two things about the code I posted which I didn't like.

One was that I'd been lazy and not used a spawnflag. This was mostly because I didn't want to check which spawnflags were already used for monsters, so I just used a different field for the flag. This works fine, but in retrospect I think spawnflags are the way to go. The other was that you had to alter each monsters' spawn function to impliment the code, which is tedious and messy.

So I've got around to writing up a new tutorial on how to do things properly, and it's now up on inside3d.

This new function should work on all monsters, even custom ones, as long as they use walkmonster_start. This makes it nice and easy to plug in to any existing mod, which should be helpful. The tutorial uses spawnflag 8 for teleporting, which to the best of my knowledge is safe for monsters. Anyone know of an exception? 
+Health & Trigger_Hurt 
So I drop in a trigger_hurt in front of a health console thing (ala Half-Life) and it successfully gives the player +health (by using a negative numeral damage). But, 2 problems:

- the player reels back in pain (this could be explained, I mean - shots do hurt)
- you can continually eek health past 200!

So how do you stop either of these bits, but mostly - how do you stop it from continually giving you health beyond the set value (say -50 - which would add +50 health to your current health). 
Make the brush an info_notnull with the following fields

think InitTrigger
nextthink 0.5
touch health_touch
healamount 50
noise items/r_item1.wav

If you want regular, non mega-health style healing, ie. capped at 100, that's all you need to do. If you want mega-health style, capped at 250, with tickdown for health over 100, then add

healtype 2

This will only trigger once, but there are ways to reactivate it. If you add

use SUB_regen
targetname blah

then every time you trigger blah it'll restore it for another heal. I'm not sure if any combination of those will do quite what you want, but play about and I'm sure you can get a reasonable healing machine. 
Thanks! That works wonderfully except for 1 minor message/error:

Sv_startsound: items/r_item1.wav not precached 
put a health pack somewhere in your map and it will precache the sound.

This should be the case with any sound you want to use, so if you want to use a fiend grunt sound you need a fiend in the map.

Maybe Preach has a special hack for precaching sounds though :) 
Afraid not, there's no way to precache an arbitary sound or model in the original qc. Which is a bit of a pain as you could do all sorts of interesting things like mapmodels if there was, but all the precaches are explicitly specified. So yeah, that sound is the rotten health pack sound, change it to whichever sound you find suitable. 
Camera Work 
Does anybody know how to improve the terribly jerky ending sequence of Dissolution of Eternity?

I've only been able to improve it by reducing camera tracking updates by angle comparisons and a timer. 
The Problem(unhelpful Post Alert) 
As I understand it, the problem is that quake angle updates on entities are only sent out as a single byte, which gives you poor precision, lower precision than a single degree in fact. You might want to speak to the SDA guys, as angle turns seem much smoother in their setpiece demos(like the credits sequence for the easy 100% run they released at Qexpo). So if there's any way around it I guess they know it. 
I've Heard Of 
such protocol limitations too and I'm sure it's correct.

However, I don't think that's the problem here as this is not a demo; the camera entity updates the view in discrete steps (following nextthink 0.1) and it doesn't seem to help to make the steps smaller either.

My hope was that there'd be a way to make the camera pan the scene like a player turns. Otherwise maybe the easiest fix is to just update slower, thus making the camera work steadier.

Btw, what is the formula for calculating where an entity will be shortly according to its current origin and speed/direction? 
Smooth Turning 
I'm pretty sure the problem isn't present so much in demos, and only appears real-time cutscenes such as this, becuase a fixed path for a camera has to be sent out from the server(which has the progs.dat) to the client, and so uses the network protocol. Demos record a client's perspective so maybe they can get higher precision that way. I know that one of the selling points for proquake was that it had "double" precision on aiming, ie two bytes, which makes a noticable difference for aiming rockets etc. I'd expect the same would be true on camera things, so the system would be limited more by update rate(the nextthink).

If you get round the protocol limitations then the way to ensure a smooth update is to use PlayerPreThink or PlayerPostThink as they get called each frame. Have a flag set when the player is watching from a camera that needs to update angles, and call the angle setting function from one of these functions whenever the flag is set. I still don't think it'll help more than a little without the protocol changes though...

The latter is easier to solve, for constant speed you want

entity.origin + (entity.velocity * delta)

where delta is the amount of time into the future you want to predict. If you only have a scalar speed and direction vector, go for

entity.origin + (normalise(ent_dir) * ent_speed * delta)

Use makevectors to get ent_dir if the direction is given as an angle. The first one will probably suffice in most circumstances though. 
Thanks For The 
suggestions. I actually tried the first variant with velocity, but for this "actor", the velocity was 0 all the time. Several other properties were also 0, I don't know why.

The only thing that seemed to work was to manually save the origin into oldorigin and also previous camera angle and time into global vars. Then use this to calculate direction (yaw) and check for substantial angle (>45) or time (>2) difference and only update view then.

If you want to check out the original code, it's in ending.qc in the (any idgames2 mirror). I can also upload my variant if you want to check it out.

I've also checked several engines for different behaviour and they all seem to work the same way, except Tomaz (which crashes on the r2m8 map) and DP (where the actor can't find its way into the timepod and therefore is forever lost in dragon's lair ... ;) 
Demos Use A Single Byte For Angles Too 
The differences between the demo format and the network protocol are very mild, and mostly to do with the packaging, not the content (AIUI).

I made the smooth turn in the qd100qlite2 credits just by writing a python script to write a remaic cam file that contained loads (100 per second or something) of move commands and feeding that to remaic -- no magic here (the recam e1m7 was done in the same way too).

Something that's very definitely the case is that the rules are different during normal play and during the intermission -- this is why the credits are centerprinted and not part of a finale text. Applying the above tricks to an demo that had a finale looked very strange -- jerking all over. If someone can explain how to get rid of _that_, I'd be very interested :-) 
Demos Use A Single Byte For Angles Too 
The differences between the demo format and the network protocol are very mild, and mostly to do with the packaging, not the content (AIUI).

I made the smooth turn in the qd100qlite2 credits just by writing a python script to write a remaic cam file that contained loads (100 per second or something) of move commands and feeding that to remaic -- no magic here (the recam e1m7 was done in the same way too).

Something that's very definitely the case is that the rules are different during normal play and during the intermission -- this is why the credits are centerprinted and not part of a finale text. Applying the above tricks to an demo that had a finale looked very strange -- jerking all over. If someone can explain how to get rid of _that_, I'd be very interested :-) 
I'm guessing the problem is the actor is like a monster, so it's using walkmove/MOVETYPE_STEP to move instead of velocity. This makes it a lot harder to predict, as basically it can move different amounts each animation frame. Also, in standard engines the entity will literally jump position each time a new frame is called. In engines with motion interpolation, the model itself is interpolated smoothly between points, but I believe that the origin still moves in discrete steps.

Anyhow, I'll take a look at the doe ending.qc and see what can be done, and if you would upload your version I'll examine that too.

mwh, your comments are encouraging, although I had worried that the demo format had the same restrictions. I guess as long as the camera isn't trying to do a fixed position pan, and you keep the movement smooth with velocity code or updates tied to PlayerPreThink you can get something as smooth. Can't help you with the finale problem though, very odd stuff. We need an engine coder in here... 
I've uploaded my variant (progs + ending.qc) here: . Thanks for looking at it. 
CZG Curve Tutorial 
does anyone have a hard copy? Please mail it to me if you do! 
Well, Not Really 
but I have a placeholder at
in the mean time. 
Boss Monsters 
I am looking for a decent, or at least different, Boss Monster for my non-base style QSP1 level.

I will need qc source, not just a model. Any suggestions? 
There is one I'm partial too that I have not seen used in a released map yet, the zombie master from Custents. 
Where's My Manners -- 
in case you don't have the link -- 
Skill Selector Buttons? 
Is it possible to create skill selector buttons like on coagstart in the Coagula contest without QuakeC?

I haven't had any luck having a button target a trigger_setskill that uses a targetname. 
Nevermind, apparently so! 
? But I Can't Get It Work? 
I'm trying to set up buttons to select a skill level (Easy, Normal, Hard, etc.) and a similar setup in cogstart.bsp functions without the progs.dat, so it seems like it should be possible to do without QuakeC, but it doesn't seem to work for me.

I setup a func_button, set the target name to "skilleasy" and a message of "Skill set to easy". I setup a trigger_setskill, set the skill level (message = {0,1,2,3}) and set the targetname to "skilleasy."

I push the button and it doesn't change the skill level (still is skill "1", the default).

I've checked everything 3 times, I've even dumped the .bsp source and compared to cogstart.bsp.

Is there a secret to this or something obvious I am missing? 
I decompiled cogstart and took a look at it in a map editor. That was hilarious!

Those buttons are merely psychological, they don't actually do anything meaningful (they don't select the skill), the trigger is the proximity. 
Thats what I was thinking. 
Thanks, it looks good and there's quite a lot more in there besides the monsters.

Anyone any other suggestions? 
Repost, W00t! 
Hi there :)

I have been playing around with the DarkPlaces engine, and I must say that I quite like it. I began working on a mini mod called SlaughterHouse, which all it really did was change the weapons and how they dealt damage (homing rockets, exploding nailgun bullets, sped up shotgun).

After completing that, I thought I'd start on something more adverturous: A Counter-Strike clone (or something similar). Now, I can add in new weapons, change the gameplay and thigns like that. But, I have no real clue when it comes to modelling for Quake/DP. I can model fairly well in 3ds Max 5/7/8 (and then export to 3ds to be imported into Blender, which supposedly I can use to make Q1 models), but I do not know how a model is supposed to be done for Quake/DP. Are there any resources that I should check out?

Also, this mod adds in a heap of new items and weapons. Rather than changing existing ones, I created some from scratch. I can map fairly well for Half-Life using WorldCraft, but I have never tried mapping for a Quake MOD. I can map okay for Vanilla Quake, using the Qoole editor, but I cannot work out how to get it to work with mods which add in new items/weapons. Can I do that in Qoole, or will I need to change editors? If so, what to?

Thanks heaps :)

Do yourself a HUGE favour and download a copy of worldcraft 1.6 or valve hammer and use that for Quake 1 mapping, Qoole is the ugliest and worst editor on the planet :D

To add in a custom item/monster/gun whatever to worldcraft, just add any point entity you want to the map, then open the properties for it and you can just type in anything you want into the "classname" field, replacing the entity you created initially. Easy as pie! Then you can use the "smartedit" function to add in any custom key/value pairs you have coded for it.

Good luck 
I'm gonna shamelessly pimp my own work here, if you want a guide to modelling for Q1 then this is a start:

This suggests a different route to making a Q1 model, using gmax and quark. At the time of writing, I didn't know that gmax had been discontinued. You can still download it, and with a bit of trouble get it registered, but the process is involved enough that it should go into the guide. Really I want to tidy the whole thing up with things like that, but it's a task for another day.

Anyhow, there's some useful information there, but if you're using 3ds max, you might as well stick with that. If you can export to md3 in gmax you certainly can with the full version of max, and then do the conversion in quark like in there. The plugin you want can be found at

As for the editor stuff, I'm sure everyone will say change from qoole. I started with qoole too, trust them when they say it'll cause you problems. 
If you're already using Worldcraft 3 for Half-Life, you might as well use Worldcraft 1.6 for Quake.

Does anyone have a download link for him? 
Wc 1.6 
You can also use Worldcraft 3 (or Hammer) for quake editing. All you need to do is to get a fgd file for quake (for example from czg
You can edit that fgd file to add any new entities I guess. 
Why I Used Qoole.... 
I started using Qoole, as I have my entire editing kit (Quake included) running directly off a 128mb thumb drive :P

Worldcraft 1.6 looks perfect, so I am gonna go get that :)

Thanks for the modelling tutorial, its really helpful :) 
Killable Model - ? 
I want to place a killable model in a map, basicly you hit it until it fires a trigger. Unfortunately I have to do this without any coding - I'm running under Qouth. My first idea was to either export the model as geometry and import it to the map with a trigger + health value, (seem to remember an exporter capable of this) or else replace (rename) an existing model with the one I want (one I'm not using) and do the same. But these seem cumbersome methods to achieve the effect. I'm not using the fish enemy, which is an almost ideal candidate for model replacement, except as far as I remember fish die when not in water ;P

So basicly I'd like to know if there's a way to get a model to show up in a map - it doesn't need to do anything at all, not animations or anything (since I can reexport to remove animations if need be).

This is a preexperimentation question, so thanks for any feedback. 
Alloc_hunc Again 
I'm mapping with a quark65 a Quake1 map.
It has 194 ent, 151 lights, 1128 polyhedrons.
Use the latest compilers Txbsp1.12 Vis2.30 Light1.42
No warnings. Plays fine in Fitzquake.

I add some polyhedrons and it compiles fine again, but as soon as it starts Fitzquake I receive a Alloc_hunc failure.

I thought this only happened when one uses more than 620 ent?
What happened? 
I Ment 
Alloc Block : full 
Alloc Block : Full 
This is caused by lightmaps. Ways to solve this:

1. Reduce total surface area of your level. Each square meter of wall/floor/ceiling/etc. needs lightmap space, so reducing surface area will reduce lightmap needs. (For example, if your map leaks and you have it inside a giant box, closing the leak with make a huge difference becuase the giant box can be deleted.)

2. Scale up textures on large surfaces. Lightmap usage is based on texture scale, so if the texture is scaled up on a surface, the polygons will use a smaller amount of lightmap. For example, if you have large rock walls, scaling up can help.

3. Usemore of the textures that don't need lightmaps. For example, sky doesn't need lightmaps, so if you have a room with a ceiling, changing the ceiling to be open sky will reduce the amount of lightmaps needed. 
i think, because of the relatively small size of the map, it could be you have an infinite brush... 
Thanx For Your Reply 
I tried selveral things, adding less brushes,
scaled textures.
I read Aguires tooltips for the thing, and it says it are too many lightmaps.
There is no leak, or warnings so I can't change a thing.
I had this thing earlier, and then it helped with the new Tyrlight.

Now it seems a thing of # many vertexes?
fil02078 goes well, fil02080 don't. 
Found It! 
Scaling up textures indeed made it go again.
Thanks, thought I had to stop mapping. 
:) i got many pronlems becouse of textures rotacion... give me leaks :\ then i have to make then other way!!! 
The problem isn't the tex scale; you have huge textured planes outside the map that eat lightmaps to no end. Change your geometry so they can be filled (removed) by qbsp. 
Texture, and particularly brush rotation have to be handled carefully in QuArk. Each time you make a brush rotation, you have to check the coordinates of each corners and verify they are still on-grid: it can be done right clicking, and use the 'force to grid' command. 
Woah, I didn't know that command. Maybe I can do some serious mapping with QuArK now! :) 
thks JPL ;) 
Spirit_ go make a base map :p 
I Forgot To Say..... 
That it is also possible to fix coordinates values manually by right-clicking on a brush corner, then uses 'coordinates'.. A window will open showing the current coordinates, and it can be modified manually...

It is also possibe to apply both methods (i.e post#5306 and above method) on the brush itself: it will apply to the "center" of the brush, but I cannot garanty it will help on the corners coordiantes as the geometry is preserved there..

According to my "small experience" as QuArK user, it is safer to apply this to each corner.. ;)

Oh, and don't forget to adjust texture position after that :P 
I have scaled all poly textures outside the map 4 4.

Now there isn't any problem to play it in Fitzquake. 
seriously, do you have the map in a box? Do the walls right and you don't need that box. 
I Did The Walls Right 
but I box wrong. 
May Be Of Interest 
Quake3bits has about three hours of video material linked from youtube to Quake3bits. Lessons concentrate on creating terrain in the Blender 3d modeling ap for use in Id based games. 
Mangle Key 
It's late, I'm tired; someone explain the 'mangle' key for me one more time.

0 -90 0 points straight down I know.

If I am looking at the XY view i.e. Top Down, what is the mangle for a light to shine towards 6 o'clock dead-level?

I seem to remember a 'right-hand' rule to explain it? 
Yaw Pitch Roll 
or yaw pitch roll... i think. 
For Lights? 
It's yaw pitch zero. The third number is just a place holder in TyrLite. 
The third number is still really roll as metl said, but obviously rolling a light has no effect whatsoever on it. 
I have no if you're technically right and if Tyrann included computations for rolling the light, but let me copy and paste from the TyrLite readme because I want to wave my dick and show everyone that I'm always right.

"mangle" "# # 0". The first # is the yaw angle, 0 to 360 degrees around the Z-axis. The second # is the pitch angle, 90 to -90 degrees up to down. The 0 is just a required placeholder.

BTW I wonder if it's possible to roll a light if you're on an acid trip? 
Thanks, that's what I was after.

And I now know that zero degrees yaw is at 3 o'clock, and zero degrees pitch is level. 
Barrel Model 
I have this barrel in .blend from a friend, i want someone to convert this to .mdl, thanks. 
Exporters Are Built Into Blender 
take the blend file, save it to either a 3ds, lwo or dxf format, from there import that file into Qme.

Both blender and Qme can be found linked here: 
Oh, And 
if you need custom game code, a progs.dat file that handles model inclusion so you can test the barrel in game this is as small an example as you are likely to find. 
Make That Last Link 
Well i didnt make it my friend did, and thats all he said he'll do. 
Hmm, Blender Interface 
can be tricky for someone not familar with it, so you can send me the file and I'll convert it.

My address is in here: 
Better Conversion 
You'd be better off using one of the blender md2/md3 exporter plugins, and then use quark to convert md2(or md3) to mdl. That way you preserve the UV mapping. Alternatively exporting to 3ds and then importing that into gmax gives another suitable conversion path.

Some day I'll get around to writing a mdl exporter for blender... 
It Should Work 
for a single frame md2 conversion, but the MD2 exporter is highly unrecommended by most Blender/Quake users. Multiframe animation exports produce some jawdropping distortions in the vertices. 
I would likely consider this simply a problem in the integer/floating point translation of md2 and if you carefully built the models on the grid you should get good results, but this isn't the case here. It is possible to take the very same model that you converted to md2 that results in a distorted model and process it frame by frame into 3ds files and rebuild it frame by frame in Quark and save it to md2 in Quark and the results will be undistorted. So most likely, the problem lies in the md2 importer. 
Should Read 
save it to md2 in Quark

save it to md3 in Npherno and then import it into Quark ;) 
If the 3ds files are accurate, you can just export each animation frame as one of those, and use the MD2 for just a single base pose. Convert the MD2 to MDL format, then import the rest of the frames into QMe as 3ds flies. As long as you've got a model with the same topology as your blender model in mdl format, you can import extra frames in 3ds format to QMe without a problem. The only caveat is that the triangle order mustn't be changed, or you'll get a mess. 
I was trying your model tutorial, and used a newboss tyoe. To my surprise this was the first time I saw the creature in Quake.

But there must be an error in the qc file.

*** newboss.qc:18:Unknown value "newboss_stand2"

I'm desparatly dequoted to qc! 
Madfox And Newboss 
The error means that you're calling the function newboss_stand2 before it's been declared. Because the function newboss_stand2 is further down the QC file than newboss_stand1, the compiler doesn't know that newboss_stand2 is a function. So it gets confused and stops compiling.

The way to fix this is normally to make what is called a prototype. This means putting the following line above the function newboss_stand1

void() newboss_stand2;

This looks a bit like the start of the definition of the newboss_stand2 function, but it doesn't have the function code itself. It warns the compiler we are planning to have a function called newboss_stand2 without defining it yet.

Having said all that, if you try this fix, you'll find that another error strikes, it will tell you that there is already a function called newboss_stand1. This is because you've included two versions in the qc file. Both of these functions do the same thing, but one of them is newboss_stand1 in the shorthand format:

void() newboss_stand1 = [ $stand1, newboss_stand2 ] {ai_stand();};

So delete the first one and leave the quoted one only. Then compile away and it should work.

You may now notice that all the stuff I wrote in the second paragraph seems to be contradicted, as the functions newboss_stand2, newboss_stand3 etc are all calling the following function without prototyping it. This is in fact the last benefit of the shorthand way of writing frame functions, it automatically prototypes the function self.think is set to. This is obviously useful as it allows you to write all the frames in the order they should play without having to prototype everything by hand. I omitted to mention this in the tutorial as I felt explaining prototypes would be too much digression. 
for your answer. I tried with my poor understanding in qc to do as you said.
And indeed the newboss_stand2 gave me a new error.
Also deleting the first one brought me back to another error.

So I compared it with knight.qc and then I had this newboss.qc

The only thing it changed it has no errors, but shows newboss at it's first frame. In some way it won't loop to the next frame. 
This one seems to work, although it is quiet a miracle to me, why I first have to shoot to make it animate.
For the rest it works fine!

That rocks 
a bulking reddwarf in a remote attack move that only starts shooting if I start...

sportive , but I can't kill it without making it flipping in it's start position. 
The reason why your monster freezes until you shoot it takes us on a long tour of the quake AI library. The source of the problem is that the monster spots you right away and so wakes up. However, since it has no attack or run animation yet, it stalls. If you turn on notarget before the monster sees you, you'll find that it animates just fine until disturbed.

So why does it behave differently once you shoot it? Well, it's all about how you change animations. One way of changing a monster's animation is to directly call a frame function like:
This changes the current frame, and sets a new .think, so the previous animation is interrupted.

If self.th_missile is SUB_Null, then .think is unchanged, so the monster will continue with whatever animation it was doing before, like idleing.

The other way to change an animation is to just change the monster's .think field, like
self.think = self.th_run;
This means the current animation frame is held until the monster thinks again, but then it switches to the new animation. The problem is that if self.th_run is SUB_Null, it's already overwritten the next animation, so the monster freezes.

So as you may have guessed, waking up a monster changes its animation in the second way, the function to blame is HuntTarget in ai.qc. The reason monsters keep going is that their frame functions are always supposed to keep setting another think time and function. If you ever break the chain the monster gets stuck. .th_pain is called whenever damage is taken, which gives a way to kickstart the monster again. By this time the monster is already aware of the player, and so HuntTarget is not called again.

Of course, once the monster is finished it will have a th_run function, and so the problem will fix itself. 
Stand Up Frag 
To my surprise the newboss started animating fine, when I turned it around to give myself the chance for notarget.
And stopped when it spotted me.I suppose this should be the moment to make it
shoot a missile, and as there is no code it freezes.

After all my efforts I end up backwards, I had a freezing monster I could shoot alive, now I've got one that freezes in my sight.
I have made a somewhat different qc than in your tutorial, as I couldn't get the error log away.

But now I get a monster what dies as a stand up.I can't find a cause for this. It looks as the animation makes it attack, hurt and finally die with a strange eight frames to make it stand1 again.

I apreciate your patience to explain so clearfully the qc-code. Two days before I couldn't even believe such a thing could spawn into Quake.
I posted the newboss.qc again, maybe you can find the error? 
Can you post or e-mail me the newboss.mdl file, so I can take a better look? I've tried compiling with a substitute model, but to try and find what's wrong with the animations I'd need to see the actual thing.

Also, don't worry that the qc file has changed from the one in the tutorial. That was actually my hope for the set of tutorials, that there'd be enough information that people could fill in the rest of their monster by comparing with the original quake monster files. The file as presented in the tutorial is certainly incomplete, and only really useful for previewing the animation. 
after working on for houres, I came up to this point, an animating newboss, without defend, freezing in its last stand frame. 
Frame Macros 
The first problem I see is that the order of the frame macros in the qc file doesn't match up with the order in the model. You need to have the frames in the same order in both. This is because quake doesn't read the names of the frames at all, it only reads the numbers. The frame names are purely to make the code readable, and the compiler just assumes that, eg. the 16th frame you list in the qc file is also the 16th frame in the model.

So rewrite the frame macro definition to:
$frame stand1 stand2 stand3 stand4 stand5 stand6 stand7 stand8
$frame attack1 attack2 attack3 attack4 attack5 attack6 attack7 attack8
$frame die1 die2 die3 die4 die5 die6 die7 die8 die9 die10 die11 die12
$frame hurt1 hurt2 hurt3 hurt4

and the death/pain animation should be fixed.

If you want to stop it freezing and instead react when it sees you, try setting
self.th_run = newboss_attack1;
in the spawn function. Also, if you don't want that stand animation to loop like it does, change the last stand frame function to

void() newboss_stand8 = [ $stand8, newboss_stand8 ] {ai_stand();};

Notice that this is newboss_stand8, and the nextthink is also newboss_stand8 - it calls itself. That way it freezes, but not in the same way, it's still thinking every frame, just not changing. I don't think this change would work well for an actual monster as it is, but it's something to experiment with. 
I'm really knocked out by the fact for overseeing such a small logical factor.
For houres I stared the qc file, and the only thing I could find was another newboss.mdl in my progsfile with a base texture skin0 frame.

But this is great! Like with the rat it puzzled me so long what could make these monsters go. Again, thanks for your explanation.
Think I'll make me some extra frames for the stand animation.

I used a MOVETYPE_NONE to see if the monster should stand, but it seems to shamble away. 
At the moment, it's the ai_charge(10) lines which are moving the monster, as that instructs the monster to move 10 quake units towards its enemy. ai_charge(0) would stop it moving there. You don't need to make it MOVETYPE_NONE, but if you do it shouldn't move at all. I don't think it will drop to the ground when spawned if you do that though, so be careful. 
As it is a boss type in a lava suit it don't need to move. What I need now is a way to defend itself. Like giving it a missile to shoot.

I searched on Inside3d to look for some code to make it shoot. And although I found a lot of other fun stuff, the ai code soon made me aiai. 
I Think 
probably the easiest way would be to just use the ai_run routine but with 0 distance, because ai_run does all the useful things like checking attacks and whatever. cheap hack, but it works. :) 
I agree with necros on that one.

As for making the missile attack, I'd look at the code for the enforcer, as it has a fairly basic attack. The important functions are

Laser_Touch : This is what the missile should do when it touches something. The entity it touches is called "other", so you can see the function deals 15 damage to other.

LaunchLaser: This spawns the laser, sets it up visually, sends it in the right direction and speed, and sets its touch to Laser_Touch.

enforcer_fire: This works out where to fire the laser from and which direction to fire it in, then calls LaunchLaser.

enf_atk1 - enf_atk14: These are the frame functions that animate the model. Notice how functions 7 and 11 call enforcer_fire, for the double shot the enforcer fires.

You should also note that the enforcer's th_missile is set to enf_atk1. If a monster has a call to the function ai_run, it will evaluate whether it has a shot at the player, and if it does will call it's th_missile. If it doesn't have one then this does nothing, but if it does then it'll change animation and start firing. Try mimicking this at first to get a working projectile, then adjust it to make a more suitable boss attack(more damage, harder to dodge). Don't forget that you can use the same frame in several frame functions, so newboss_attack1 can have the frame $attack1. 
That explains a lot.
Sad I don't get the other side of the qc surroundings, as I could imagine for what these resulting scripting is relaying on.

I tried pasting the enforcer's qc into the newboss, but as I expected, it results in a
***enforcer.qc:42: Laser Touch redeclared
***enforcer.qc:105:LaunchLaser redeclared

I also made The Mage from 3Dinside, and although the qc scripts was totally different, it worked straightaway I wanted.

For me its pure magic how these different qc scripts obtain these effects!
I reckognize the functions of these declarings Laser_touch, but as soon as I use a void() opening a script I get redrawn by wrong punctuation.
While The Mage relays on 75% of the Vormit, it is still an Unique_New Model. 
Rename The Function 
in the newboss.qc, Laser_Touch to something like
boss_Touch wherever Laser_Touch appears in that file. You could just place the Newboss.qc after the enforcer.qc in the progs.src and remove the declarations in Newboss.qc, but since you are going to be changing the attributes of the function you might as well start with a new one. 
Vis Crash, Or Just My Imagination? 
Has anyone ever has vis crash while it was working? I ask this because, I have been full vising this one map for... 3 weeks now and it is still working on the same portal, for 3 weeks! I dont know if it crashed, or if its still working. And, would loading a map that has vis working on it disrupt vis, or make it crash or something? This is just getting ridiculous. I am using aguiRes latest utilites. 
If the map is complex enough, it is definitely plausable to be stuck on a single portal that long. 
Make sure vis is still running at full speed, check with Task Manager. Some OSs may pause the running application if you use the keyboard or mouse on the open console window.

It *is* unusual to be stuck in one portal for three weeks though, the longest time I've had was a few days. But so far it has always come through (at least on level 4).

How many leafs/portals do you have and how far has vis come? 
From what I see in the task manager, vis appears to be running. It's taking up 50% of my CPU, and every once in awhile its mem usage goes up by a few K. Sorry, I do not know how many leafs/portals I have in my map, how may I go about checking? But I will tell you, vis is at 61.61% done so far. And, is vis saving its progress while its working on this portal, or only in between portals? 
Why only 50%, normally it should be almost 100, do you have a dual CPU?
#leafs/portals is printed at the first lines of the console/log file and you can also see it in the .prt file (just a text file).

Unfortunately, vis is not saving while working on a portal, only in between them. You can see the last save time on the file date/time stamp of the .vis file.

Also, there's a rough progress bar for slow portals, has it moved lately? 
I do have a dual CPU, which is a good because I can do other things while vis is running. According to the log, I have 4500 portalleafs and 15354 numportals.

And that rough progress bar you mentioned, it started at "--". It has not moved since. 
Then there doesn't seem to be anything obviously wrong, you just have an extremely unfortunate map from a vis perspective.

Either you'll have to sweat it out, or abort and try to find out what's causing this problem. You might want to try to add -v (verbose) and run again, vis will restart that portal.

My latest vis version will print out the coordinates for each portal *before* it starts processing it and you can then use this to find the portal.

The coordinates are taken from one of the vertices of the portal and should hopefully help you locate it. Just note that a portal can be very small or big, so it might be difficult to pinpoint it. 
Why only 50%, normally it should be almost 100, do you have a dual CPU?

I heard somewhere that CPUs with "hyperthreading" technology can't give more than 50% of the CPU time to any one process. At least I think that's what I heard; it's been a while. 
My latest vis doesn't print the coordinates for the current portal in verbose mode; it prints the portal number. You can then use that to find the corresponding coordinates from the prt file (see also readme).

All the vertices of the portal are visible on the prt file line for that portal.

You can even do this check while vis continues to run. Just copy the bsp/prt/vis files to another directory and start a new vis session from there with the -v option and abort when you see the portal number. 
I think that's just an indication issue; I read an article that also noticed this and they checked processing times and they were OK. Otherwise the hyperthreading tech is more stupid than it has any right to be ... 
Invisible Faces 
like this:
how to get rid of them again? already tried changing the brushes, splitting them up, but to no avail. any universial remedy? 
From The Shot 
it looks like either a brush problem (if it's like this before vis) or a portal problem. The cause is similar; bad brush junctions.

Zoom in close to see if they're on grid and also check neighbour brushes, sometimes a brush can "poke a hole" in another brush.

If you still can't find the culprit, try deleting neighbour brushes until the issue goes away. One or more of the deleted brushes are then the likely cause.

See also my ToolTips, Portal Problems.

If all else fails, send me the zipped map+wad and I'll take a look at it. 
After another session of my Q1map I see the light.exe produce a strange effect of dark and black shadows on my textures.
I didn't move one light, and before they were all smoothly lightened. 
If You're Using 
my Light together with QuArK and its ETP map format, you could try adding the -etp option. 
That helped a lot, I keep learning tnese compile optoins. Think I squashed the map by loading it in an older Quark version.

I have made a VoreBabe and a Vore-egg.
I've been changing the shalrat.qc so it throws vore-eggs. I also made a working VoreBabe model.

But I can't figure out how to make these two in a shalrat.qc The VoreBabe I made startgo with the Spellmaster.qc
So I pasted the Ogre_Grenade_Explode into the void() ShalMissileTouch;
and it worked, the Shalrat started to throw eggs. But I wanted the VoreBabes get out of them, and that is just to high for my qc.

When I give the eggs a lifetime of 4 seconds, for let's say 2 Vorebabes, the Shalrat throws much too often. If I ever get so far spawning them out of the egg.
Looks like a Shalrarebit... 
Custom Animated Sprite 
Realising Quake 1 supports animated (.SPR) sprites, and knowing you can place a light entity that appears as a sprite... I need to make a few steam sprites to put by broken pipes.

Making the sprite itself should be easy (and I see FrikaC has some tool that supports SPR, but I haven't tried it yet to see if it's capable of making a .SPR)...

But my main concern is, how can I make it an entity to place in the map? If anyone has anything ready-made that I can easily modify art-wise (I'm no coder, so I won't touch QC), that'd be great! 
Yeah, I Do 
I'm basically going to rip this code from mapgen,
If you need a placeholder sprite and sound to use with this code, that's where to look. Drop all of this into the bottom of misc.qc.

//PREACH start func_steam code
void() steamp2 = [1 , steamp3]{};

void() steamp3 = [2 , SUB_Remove]{self.nextthink = time + 0.7;};

void() func_steam_think =
local entity steamp;
local vector r;
steamp = spawn();
setmodel (steamp, "progs/steam.spr");
setorigin (steamp, self.origin);
r = '0 6 0' * (random() - 0.5);
makevectors(self.mangle + r);
steamp.movetype = MOVETYPE_NOCLIP;
steamp.velocity = v_forward * self.speed;
steamp.nextthink = time + 0.1;
steamp.think = steamp2;
steamp.avelocity = '20 20 0';
self.nextthink = time + self.wait;

void() func_steam
precache_sound ("ambience/steam.wav");
precache_model( "progs/steam.spr");

self.use = func_steam_think;
self.think = func_steam_think;
self.nextthink = time + 1;//no need to start straight off
self.speed = 90;
self.wait = 0.15;
ambientsound (self.origin, "ambience/steam.wav", 0.8, ATTN_STATIC);

//PREACH end func_steam code

Then create a point entity func_steam. The fields to set are

sets the direction the steam fires
targetname: if set, must be triggered
wait: sets frequency of steampuffs, the default setting of 0.15 works well
speed: changes how fast the particles move. The default makes for a nice continuous stream of particles and a medium length.

Lines you might want to change:
void() steamp3 = [2 , SUB_Remove]{self.nextthink = time + 0.7;};
Change the 0.7 to change the lifetime of the sprite and so the length of the steam spray.
r = '0 6 0' * (random() - 0.5);
Controls how random the spray is, change the 6 to alter it.

The original mapgen code had a chunk of .alpha stuff which made the steam fade out, but I've omitted that as it's not the kind of thing mappers usually go for. If you want it, just ask and I'll write that back in. 
[deleted Spam] 
[deleted spam] 
[deleted Spam] 
[deleted spam] 
[deleted Spam] 
[deleted spam] 
[deleted Spam] 
[deleted spam] 
[deleted Spam] 
[deleted spam] 
thanks, i could get rid of it. there were no brush misalignments involved though. 
Silly Question 
how do you write in white?
my cheap htm knowings won't help. 
Check The Faq 
< q > blah < /q > 
Check out the FAQ link at the top of the page, there are descriptions how to add available forum text attributes. Use post Preview to make sure you've applied correctly. 
Ahh, That Is What You Meant, Foxy 
I thought is what just some delicious word play on your part. I use < i > bleh < / i > 
that's wahat I meant headthump, i still use a directionary to get ahead my tongue thumbed. 
Mapping Advise 
I'm interested in doing a Quake 1 map. Any advise on which editor to use?

there are a lot editor i think will depend of with one u will like more :\ i use Quark but most of people here hate it, and use worldcraft... i personaly hate it :) some prefer GTKradiant... neg|ke use qoole oh wel i think u should make a round in all to see with one is the easy to start! 
I'm used to GtkRadiant 1.4.0 and D3Edit and Q4Edit. I take it I should go with GtkRadiant 1.5.0 for Quake then?

Not sure about which editor has the best support regarding sourceports and stuff. 
neg|ke uses quest by the way... (which, as per speeds, plays in the same league as deathmatchmaker ;D)

getting familiar with gtkradiant can't be wrong, i guess, since it works similar to most other editors and also supports a variety of newer games. 
QTKRadiant 1.5 will have a different feel than the other versions, but it's the choice that I would recommend. 
How To Set It Up For Quake? 
Do any of you know how to set GtkRadiant 1.5.0 up for Quake. I can't seem to be able to use the assets that came with the game. Things like textures and stuff. Some Googling did not give me an answer either so I'm hoping some of you guys could.

Hit 'P' and bring up the Preference menu -- look over to the left, and see Global then gam in the list. Click on game for that section, and do the pulldown tab to select Quake from the list of games. Voila.

Mine you, you'll still need a .bat or something to compile your maps, and be sure to stick your .wads in the /id1 directory. 
Hit 'P' and bring up the Preference menu -- look over to the left, and see Global then game in the list. Click on game for that section, and do the pulldown tab to select Quake from the list of games. Voila.

Mine you, you'll still need a .bat or something to compile your maps, and be sure to stick your .wads in the /id1 directory. 
Hit 'P' and bring up the Preference menu -- look over to the left, and see Global then game in the list. Click on game for that section, and do the pulldown tab to select Quake from the list of games. Voila.

Mind you, you'll still need a .bat or something to compile your maps, and be sure to stick your .wads in the /id1 directory. 
For the love of Carmack, somebody fix this. 
To Aguire 
could you please include BSP feature that would move func_groups back to world on compile? 
I've been working on a new monster. Made a new vorebabe.mdl and started scripting.
I used the spellmaster.qc but after a while I wondered why I couldn't make my own vorebabe.qc, as I needed it for a spawn function in the shallrath.qc

Now I am so far I can make it a walkmonster_start, but the attack functions won't work. I've been working for days now but it just won't fit.
I don't know what I done wrong, outcome is a progs.dat that don't attacks. 
OK, I've added a new option -group to TxQBSP 1.13 beta available here: . It enables func_group parsing, i.e. moving the brushes back to world.

Please try it out and let me know if it works as I'm not using Radiant. 
wad support in the latest nightly build is broken. so hopefully they fix it again.

I've got all my textures exported into id1/textures/ as jpegs 
I've got all my textures exported into id1/textures/ as jpegs

How do you load them though? Are you using the latest ( october 1st ) build? 
I tried several 1.5.0 builds and none of them seem to be able to show/load Quake textures.

I tried Tigger his method, what Bazzu suggested, but the editor crashes. Still working that out though. I would prefer not to use Tigger his method because it seems a bit uh...what's the word...unneccesary if you can simply have a editor doing all that for you. Instead of downloading and setting up lots of stuff.

Ofcourse I appreciate the suggestion and if it's the way to go, I'll use it. It's just that I prefer a editor specifically designed to work with Quake. 
The monster isn't attacking because none of the ai functions you call in your frame functions actually check for an attack. The normal quake monsters regularly call ai_run, which is the main ai thinking hub. ai_run should be the default action which you only stop using if you don't want the monster to get distracted during its animation - like if it's in pain or attacking or dead.

ai_run calls the function CheckAnyAttack, which determines if a missile attack can hit. If you find CheckAnyAttack in ai.qc, you can see there are lots of if statements that check if the monster is, for example, a shambler, and do the special shambler checkattack if it is. After those there is a generic checking function CheckAttack, which should suffice for your monster.

CheckAttack checks if you're in melee range, and if you are and you have a th_melee it calls that. If not, it checks for a missile attack based on the range to the target. The probability of attack is higher at certain ranges. If so and you have a th_missile, it calls that.

So the flow goes
ai_run -> CheckAnyAttack -> CheckAttack ->.th_missile

To fix the monster, simply add the following lines

void () vorebabe_run1 = [1, vorebabe_run2] {ai_run(1);};
void () vorebabe_run2 = [2, vorebabe_run3] {ai_run(4);};
void () vorebabe_run3 = [3, vorebabe_run4] {ai_run(3);};
void () vorebabe_run4 = [4, vorebabe_run5] {ai_run(5);};
void () vorebabe_run5 = [5, vorebabe_run6] {ai_run(6);};
void () vorebabe_run6 = [6, vorebabe_run7] {ai_run(4);};
void () vorebabe_run7 = [7, vorebabe_run8] {ai_run(4);};
void () vorebabe_run8 = [8, vorebabe_run9] {ai_run(3);};
void () vorebabe_run9 = [9, vorebabe_run10] {ai_run(5);};
void () vorebabe_run10 = [10, vorebabe_run1] {ai_run(6);};

You'll notice the similarity to the vorebaby_walk lines, but that we call ai_run not ai_walk, which is only designed for walking to path_corners. We are reusuing frames 1 through 10, which is allowed : - )

The final part of the fix is to change the line
self.th_run = vorebabe_walk1; to
self.th_run = vorebabe_run1;. Once he wakes up, his behaviour will change to vorebaby_run1, which will check for and call missile attacks.

One final thing I noticed is that the frame numbers you are calling in the code don't quite agree with the model. The frame numbers for the walk sequence in the model are 0,1,2...9, not 1,2,3...10 - the first frame in the model is frame number 0. I've not fixed this in the run code I posted, as frame 10 happens to look much like frame 0, so the animation loops. Perhaps it would be best to use the frame macros $walk1, $walk2 etc in the code rather than the numbers directly, as it's easier to number them correctly like that.

You'll need to fix the frame macro definitions first, take out the dollar signs in the names in the header(but NOT the main code where you add them back in). The first one should read
$frame walk1 walk2 walk3 walk4 walk5 walk6 walk7 walk8 walk9 walk10 with only the $frame retaining the dollar sign, and do the same for the rest of the header. But when you use it in the frame function you put the dollar sign back in, eg:

void () vorebabe_run1 = [$walk1, vorebabe_run2] {ai_run(1);};

Hope that's clear. 
How do you load them though? Are you using the latest ( october 1st ) build?

I load them by opening another map that uses them (sad but true.)

And yes, i am using the october 1st build... 
Thanks A Lot! 
preach, although I have read most of the qc files now, I still can't see the logic relations between them, but I'm learning.

I saw the nummers of frames once start with 0 and then with 1. I couldn't get the death frame right, it always jumped back to the stand frame. So I added a death frame and then it didn't occure.

I experimented with pasting parts of the monster attacks into it, but kept errors (of course). Now I can tune it better in. 
Host Error 
After I made the changes I can't start Quake.

CALL0 : 1455 (?)
ai.qc : ai_run
vorebabe.qc : vorebabe_run1

I think I have made no definition for the ai_run, but I don't know how. 
And I Run... 
The problem is now too much running. When a monster calls ai_run but doesn't have a target, as happens when this monster spawns, it decides to try and walk if it has a movetarget, or stand otherwise. The problem is that at the moment you've given it the same standing animation as the run animation, so it calls ai_run again, trapping it in a loop.

The fix is to put back the walk frames AS WELL. Don't replace the run animations, but add these functions too:

void () vorebabe_stand1 = [$walk1, vorebabe_stand1] {ai_stand();};

void () vorebabe_walk1 = [$walk1, vorebabe_walk2] {ai_walk(1);};
void () vorebabe_walk2 = [$walk2, vorebabe_walk3] {ai_walk(4);};
void () vorebabe_walk3 = [$walk3, vorebabe_walk4] {ai_walk(3);};
void () vorebabe_walk4 = [$walk4, vorebabe_walk5] {ai_walk(5);};
void () vorebabe_walk5 = [$walk5, vorebabe_walk6] {ai_walk(6);};
void () vorebabe_walk6 = [$walk6, vorebabe_walk7] {ai_walk(4);};
void () vorebabe_walk7 = [$walk7, vorebabe_walk8] {ai_walk(4);};
void () vorebabe_walk8 = [$walk8, vorebabe_walk9] {ai_walk(3);};
void () vorebabe_walk9 = [$walk9, vorebabe_walk10] {ai_walk(5);};
void () vorebabe_walk10 = [$walk10, vorebabe_walk1] {ai_walk(6);};

Then set the lines in monster_vorebabe to look like:

self.th_stand = vorebabe_stand1;
self.th_walk = vorebabe_walk1;
self.th_run = vorebabe_run1;

Then compile and it'll work.

One more thing, you have the glowing effect on for a few frames, which works fine, except it's possible for the monster to die or go into pain inbetween the light going on and the attack turning it off. This means the light doesn't turn off again, which probably isn't what you want. Add self.effects = 0; to the top of vorebabe_die and to the bottom of vorebabe_pain - so only turn the effect off if the vorebabe actually goes into pain, but do it before you think about gibbing it. 
Pointless Feature Idea 
a "light" field on funcs that lights their faces according to its value? 
here is the july version Shaderman linked on Map-Center, it has q1 wad support: 
you can load jpg/tga textures by loading a folder
textures -> directory list then "load" 
Thanks a lot, it works fine (so far :))
makes mapping in radiant much easier 
Wauw Preach, that's what I searched!
Although you're magic scriptions aren't really clear to me, they seem to plot their aim.

I've seen so many errors now in proqcc I finally can't believe it works. Now I can add two monsters, and change their behaviour.

I have been looking to the shallrath.qc
I wanted making it throw eggs on the player, that explode these vorebabes.
So I first changed the missiles into grenades, and changed the grenade.mdl into an egg.mdl
When these eggs explode, it would spawn two or three vorebabes.

The first thing went right, the shallrath throws eggs, but the attack amount is much too high. I'm looking for the attack time, but have'nt found it yet.

Another thing is to respawn the vorebabes.
I thought to use the multigrenade code, as it has something in common. They first stick at the wall and then explode. But it is more the subroutine of making something respawn after a grenade explosion I meant.

But I think it needs a lot of coding, when a shalrath respawns two vorebabes, it needs another attack, otherwise there'll be soon to much monsters in play.

Hey.., thanks a lot again. 
here is the july version Shaderman linked on Map-Center, it has q1 wad support:

Thanks, I'll check it out.

you can load jpg/tga textures by loading a folder
textures -> directory list then "load"

Ah, but q1 map files don't have directory paths in the map file, so you have to put the textures in id1/textures/ rather than id1/textures/blah/ and id1//textures/ doesn't show up in the directory list. 
Water Flow Creation 
I have a small question: I would like to create a flow, in order to force the player to go in a certain direction while crawling.... I tested trigger_push, but unfortunately having a wind sound in the water is not realistic...
So, is there any method to perform a water flow without any sound ? 
Invisible, Silent Func_trains 
Water Current 
we'll try to add something like that to Quoth pak1 
The extras pack has a nice waterflow.
You should cheque it out. 
thanks again! wads loading in radiant! OMG! 
Metlslime / MadFox 
Thanks a lot for your help... 
Resetting A Counter... 
I can't seem to wrap my brain around it, but can you set up a scenario where you have to keep more than one button pressed, in order to keep a door open, using a counter? I.e. failure to do so in a timely manner causes you to have to go back and forth until all the buttons are pressed.

I assume having the correct number of buttons reported to player via the counter could be problematic:

Only 1 more to go... >> Only 2 more to go... >> Only 1 more to go... 
You Could Do It With Logic Gates That Close After A Certain Time 
But not with printing anything worthwhile to the player. 
What Czg Said 
See this post here about logic gates if you're not familiar already. 
You Could Do It With Logic Gates That Close After A Certain Time 
But not with printing anything worthwhile to the player.

Func is being a stupid whore and not responding to my requests so this probably gets doubleposted. 
You Could Do It With Logic Gates That Close After A Certain Time 
What the hell it's already posted why are you such a dick today, func? 
GTK Question. 
Is there a key/mouse combo to get the texture on a patch to align with one on an adjoining brush? I've got a inverted bevel in a corner made of two brushes, and want it to be flush. 
Delayed Light Styles 
Is there any way to delay a light style?

Say I have a row of lights: A, B, C and D. All of them flicker on/off, but in sequence, going down a hall - and not all at the same time. So you have like this... moving light pulse or something going down a corridor. NOT a traveling light (like the rocket's emitted light). 
The Only Way 
would be to do it via triggers, relays and switchable lights.

because of the way lights work in quake, any light with the same style is updated in the exact same way, so all lights of that style will always be identical.

alternatively, you could modify the progs and create new light styles to do your effect. 
what necros said.
i did that in sm118. basically, two relays for each light, all fired at the same time. one for switching the light on after a delay and one for switching it back of after some more delay. all started by an untouchable trigger_multiple that is continuously fired itself after each cycle, so the whole thing starts from new. initially fired by the spawning player of course.
maybe one of these steps could be spared with more clever scripting, but you'll get the idea.. 
styled lights can't be toggled. Or vice versa. I'm pretty sure. 
i was typing up an explanation about lights but the for some reason, i pressed something and it went back to the forum index and erased my post.

metl is right though. 
Does This Mean What Phait Wants? 

Switcheable lights that
turn on and off gradually

Affects all switcheable lights in all maps.

Customization : in light entities, set
"speed" to the speed of the turning on/off
(default 1). Set speed to -1 to recover
the default behaviour.
Armin Rigo
Does This Mean What Phait Wants? 

Switcheable lights that
turn on and off gradually

Affects all switcheable lights in all maps.

Customization : in light entities, set
"speed" to the speed of the turning on/off
(default 1). Set speed to -1 to recover
the default behaviour.
Armin Rigo
aguires` qbsp removes texture paths if u use q2 map mode 
Sure, but at that point what's the purpose of having Q1 support in an editor? I can use sleepy's mapconv.exe and make the map in qeradiant too. 
Killable Water 
Can it be done?

I want to drain an area... 
pox_extras mod... it has moving water volumes. 
exploding barrels! I have just altered my own progs with it! I couldn't delete the bot code,as it started giving errors.

Another noob question: if I want to spawn a new monster in the explosion of a Vormit,where in the qc should I look? 
Killable Water 
Or just make the room the water is in, a func_train... this won't always work well depending what kind/size room. 
Void - Black Lit Entities 
Phait - q2 has func_water which assumes it will move pretty much like a func_door, it was later updated by the lazarus mod to include lots of nice features (mud, sine wave bobbing etc.).

but as far as I know nothing exists for water to be killable because of the way quake calculates the world in the vis/bsp process. I'd recommend not allowing the player to touch it and then changing it to a func_wall - it'll be solid and i cant remember if it would animate or be frozen (the texture) but you'd be able to kill it.

also - i remember some discussion on this, but what are the workarounds for enemies + items appearing black when not above a solid brush - ie. floating in the void, typically scrags and other fliers, although i've had problems with func_trains and others. 
For Lighting In The Void 
The bottom layer should be a brush with any normal texture (scaled up 40 times or something), then a brush with your black sky. You might have to make the sky brush a func_illusionary.
Place a huge light at the bottom to light it all. Hint: make it a spotlight pointing down with a 180 degree cone. This way you avoid spilling light upwards to the rest of the level.

As for trains, they are lit wherever they are built and then moved into the correct position upon map load. If you need to, you can build it in a small room outside the level that is floodlit. 
what are the workarounds for enemies + items appearing black when not above a solid brush - ie. floating in the void

Short version: place a brush inside the bottom skybrush. Light its top surface.

Long version: 
i'd considered a solution like this but wasn't sure how light knew that there was a brush 'outside' the world (inside the bottom skybrush). I'm using sunlight so maybe I won't need to place spotlights on the floor, though as my skybrushes are already with texture size 9999x9999 it wouldn't be too much of a hardship to copy paste. i've also got the lower walls being skybrushes as well, solid geometry doesn't touch the lowest skybrush, so lighting wouldn't be a problem - all brushes are flush to the base, to help VIS, though it does spoil the illusion slightly when the player falls into the void.

Out Of Range 
I have this Mage/Newboss in a cave, but it shoots missiles from a lower startpoint, than it can hit me. How do I alter its missile, so it shoots from that height straight to me?

First I lowered the mdl file with Quark and set it in the map to a heigher field. But it felt back.
In the qc for Launch_ lava I changed its origin, but then it shoots beside me.

setsize (newmis, '0 0 0', '0 0 0');
newmis.origin = self.origin + '0 0 12';

newmis.origin = self.origin + '0 0 256';
won't do, because then it still launches from the bottom over my head. 
In Range 
well, after puzzling awhile I found when I change in the Launch_lava:

vec = normalize (vec);
vec = normalize (vec - '0 0 164');

it launches straight to me from the right height, only the launch moment has the same muzzle flash on 0 0 12 point.

I am using the extras_p4 pak, and I seem to get fine results, goodies like exploding barrels, func_watertrain, func_breakable.

When I play the extras game, it seems as if the monster_fish won't attack me (?!). Even when I'm in front of them. Is this a bug? 
Crucified Zombies In Qoole 
How is it done? 
Crucified Zombies 
"spawnflags" "1" 
fishes fell out of water_train, so my fault they won't attatck. No bug in extras_p4. 
AllocBlock Full 
The map has no leaks and is not boxed. However, I do have some extremely large single brushes (2048 x 1024 x 16) that are not sky-brushes.

Is there any benefit to making these either smaller brushes but taking up the same space, or by making them up with smaller brushes with different textures.

I ask because I remember some previous discussions about 'lightmaps' causing this error and I think that is to do with textures.

(I can't search back through Mapping Help as the Previous link stops working after about 5 or 6 clicks - I just get The Page Cannot Be Displayed type error) 
See my ToolTips, engine section. Increasing tex scale usually helps. I don't know if splitting brushes will help much as qbsp already does that, but it could be worth a try. Different texes shouldn't make any difference.

You can use the command lightmaps in my GL-engines to see the current requirements. 
OK, thanks.

Using your engine I can see that the lightmaps are 64 i.e. at max, in the map version prior to getting the error. The only difference was that in the next version I had added some extra 'normal' size brushes (a corridor) but I do not know whether I added any new textures or not.

I re-scaled one of the largest brushes to x5 and sure enough lightmaps became 63. For the sake of good order, I then changed another to x8 and lightmaps dropped to 60. I also tried all textures the same and it rose to 65 lightmaps, so that didn't help. Finally, I split one of the largest brushes into 16 and the lightmaps stayed at 64.

I think that probably 'proves' the thoery so will look towards rescaling to reduce the lightmaps.

If it is not too difficult, can you describe what a lightmap is and why changing the texture scale should reduce them. Also, does re-scaling downwards have a detrimental effect?

Is there an argument for manipulating the textures in (say) Photoshop so that you can scale-up in the editor to get the texture looking normal in the engine, thereby avoiding the lightmap problem? Or am I trying to be too clever for my own good here:-) 
Engine Lightmaps 
I also don't know exactly what they are, but think of them as the surfaces of each visible brush face containing information about the current lightlevel in a number of discrete surface points, arranged in a grid and with a density related to the current texture scale (smaller scale means more points). The lightlevel can be not set (i.e. fullbright) or as calculated from the light tool.

Either way, all these surfaces must then be allocated in the engine no matter if they're fullbright or not and they're all in one big memory buffer that in normal engines has a certain fixed size. The allocation strategy is made in a way that may cause inefficient usage of this big buffer and in any case you can't have more than 64.

An engine can then just increase the buffer size (will require quite a bit of memory) or allocate it dynamically, like in my engines or DP. My limit is still set to 1k lightmaps since I still use a small fixed size array, but I could easily increase that if required.

I've never seen any real map require more than about 800 lightmaps, though (a huge leaking map). You could probably easily produce a synthetic test case of course that could exceed even my 1k limit. 
My map suffered the same problem, before I scaled texture.

For my good understanding;

so textures that are out of vieuw,ie backsides,
two brushes against eachother, their textures size does count in the total 64 lightmaps? 
If You Can See 
see the textured faces in-game (noclipping or not), the faces count. That is one of the reasons why any volume that the player can't reach (or is used for other purposes) should be filled or opened for the void.

It's also the reason why unnecessary sky should always be shrunk to minimize the outside textured faces. They can be a huge contributor to the total lightmap count. 
Just A Thought 
but would it possible to run some kind of precompiler or .bat that automatically stretched every sky / clip / trigger texture 9999*9999 ?

it'd be a lazy man's tool (since ultraedit can do the job as well) but would be good if implemented directly into the compiler, though it would remove alot of the necessary thought from texturing, so maybe not such a good idea. 
Back Up A Bit... 
Sky faces don't get lightmaps, so they aren't part of this calculation. Same with clip.

Trigger, on the other hand, does get lightmapped. So if you have any large triggers, you would benefit from scaling the textures up. Same with Skip. 
Sound Files 
I have a looped .wav file that I want to use unlooped. How can I convert it to be unlooped? 
If you use Goldwave, it's fairly easy. Open the wav file up, and go to Tool -> Cue Points. Select the cue points present in the file and delete them. Then save it again and it will no longer loop. 
Well that was painless, thanks Preach. 
Czg, I Think This One Is Up Your Alley... 
...I'm using Hip's rotate entites and for any single object or a group moving in one direction together, everything is fine - smooth as a whistle. But if I have two seperate objects moving at the same time e.g. double doors opening away from each other, I get 'judder' on one of them.

Is this a known problem and can I do anything about it (apart from making it a single door)?

As always, your help will be appreciated. 
Thought I'd Just Pitch In 
as this method is simpler (if you don't have anything other than soundrec.exe).

open up soundrecorder and make a new wave file. do edit->insert file->your looped file

now resave as a new (or overwrite). voila, no more loopage. :P 
Blood In QSP1 
Do I remember a mod from some time ago that put blood splatters on the walls?

(necros: thanks, I'll try to remember that) 
i think SoA had that?

careful though. sprites don't get lit, so blood splatters in dark rooms will look dumb. 
There's A Mole In The Camp 
How did you know my rooms were dark ;-)

Thanks, I'll look up SoA. 
.map Conversion Help Needed 
Ok, I have a quake map, in the half-life .map format (I made it with Hammer you see), and I would like to somehow get it into DOOMEdit.

I don't care about any of the entities obviously, but it would be nice to have the geometry of brushmodel entities preserved in some way.

Any ideas how I would go about this? 
Just a hipshot here, but could you perhaps run the hammer .map file through mapconv.exe and output it as a standard .map file that you can import into doomedit??

* I am very drunk 
Isn't the brush data stored the same in all WC/Hammer/Doomedit maps? If you didn't care about the texture data then it might be possible to reset all the textures to one texture with one scale/rotation/shift setting, and then find/replace that with Doom3's texture data. 
I Don't Think So 
AFAIK brush formats differ between hl1, q1, q2, d3, etc 
The Only Thing That Differs... some of the numbers at the end, which represent brush flags, surface flags, light values, etc. And I think HL has a different texture alignment format. But the brush geometry itself is the same across all of them, I think. 
is some of the numbers at the end, which represent brush flags, surface flags, light values, etc.

Yeah, that's certainly the difference between Q1 and Q2/3 .map format. That's as explained in the older mapconv tool readme.
I'm not sure what the particular flags/info in the HL format .map are, but ages ago I successfully opened some Q1 .maps in WorldCraft 2/3 without any conversion. The texture info was indeed lost, but the brush info required no translating. 
.map Formats 
cheers for the replies - here's some info which might be useful. I tested in gtk, creating a "map" consisting of one 128x128 brush centered on the origin. This is the Q1 .map

// entity 0
"classname" "worldspawn"
// brush 0
( 64 64 64 ) ( 64 -64 64 ) ( -64 64 64 ) NULL 0 0 0 1 1
( 64 64 64 ) ( -64 64 64 ) ( 64 64 -64 ) NULL 0 0 0 1 1
( 64 64 64 ) ( 64 64 -64 ) ( 64 -64 64 ) NULL 0 0 0 1 1
( -64 -64 -64 ) ( 64 -64 -64 ) ( -64 64 -64 ) NULL 0 0 0 1 1
( -64 -64 -64 ) ( -64 -64 64 ) ( 64 -64 -64 ) NULL 0 0 0 1 1
( -64 -64 -64 ) ( -64 64 -64 ) ( -64 -64 64 ) NULL 0 0 0 1 1

Note that the half-life version would be very similar to the Q1 version, but GTK wasn't playing nice with me in HL mode for some reason, so I couldn't test. The only difference between HL and Q1 afaik are some extra texture alignment properties. The way it stores brush geometry is the same. The HL .map format is detailed here:

and this is the same "map" again, remade in D3 mode:

Version 2
// entity 0
"classname" "worldspawn"
// brush 0
( 0 0 1 -64 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "_emptyname" 0 0 0
( 0 1 0 -64 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "_emptyname" 0 0 0
( 1 0 0 -64 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "_emptyname" 0 0 0
( 0 0 -1 -64 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "_emptyname" 0 0 0
( 0 -1 0 -64 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "_emptyname" 0 0 0
( -1 0 0 -64 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "_emptyname" 0 0 0

As you can see, even the syntax for the brush coordinates are stored differently. Here's as much as I could find regarding the D3 map format (I didn't look very hard, mind):

Getting from HL -> Q1 is something i've done before. SPoG once made a quick build of GTK for me that opened a HL .map and saved a Q1 .map. I've lost this unique build ever since I had to reformat my laptop; SPoG, I don't suppose there's a chance you've still got it saved somewhere?

Daz: I thought mapconv.exe only worked for swapping between Q1 and Q2/3, or is there another version around?

I hear that getting from Q3->D3 is possible too, something about DOOMEdit will import a Q3 map that's been saved in "brush primitives mode". If true, then HL -> Q1 -> Q3 -> D3 might be achievable with existing tools, but I'm currently still stuck on the first stage... 
can do several (if not all) of those formats natively and usually you can also choose between several output formats for a specific game. I can e.g. get it to output a Valve 220 (Hammer) format map from a Q1 source directly.

I've also used it for converting from Hammer format maps to BSP editor format. The only obvious problem then is the lost extra tex info. There might of course be accuracy losses as well if it's a big and complex map. 
Keys That Target Things 
I have a gold key that targets other events e.g. spawn a monster. I collect the gold key and sure enough, the monster spawns in.

In another map, I have exactly the same set-up but the monster doesn't spawn in. In the editor I can see that the key is linked to the monster, and target and targetnames are correct.

Why would it work in one map and not in the other? 
Wait, so the key is targetting the monster itself? Does that mean you're using a modified progs like spawn64, where you set a flag on a monster to spawn it? It's possible that custom code would behave oddly. Otherwise I can't see any reason why a key would fail to target something if you replace it with, say, a button with the same target. 
Forget It... 
... more haste, less speed.

I hadn't vis'd the map. The monster was there, I just couldn't see it. Ho hum! 
Wasn't ignoring you, our messages overlapped.

And yes, I'm using your 'style 1' idea and it all works just fine. It's just that Qbsp takes 3.5 minutes and Vis takes another 3, so I don't use it (or Light) when I'm only doing quick checks.

As I say, everything is all right. I might even post some screenies sometime. 
Oh, In That Case 
You might want to check out the tutorial I posted on inside3d a few months back.

It's a kinda updated version, makes it so it uses spawnflags(which does make more sense really) and cuts down on the amount of code you need to change to integrate it(you no longer need to modify each monster to teleport it). Practically though it doesn't add anything the old code didn't do, so there's no "need" to migrate the map if it works as it is. It is a much nicer base to work from if you need custom monsters though, so I thought I'd advertise it here for people to use in future. 
i like your method a lot more preach. much cleaner. 
necros if u have msn add me

i need last .mdls :) 
Yes, I agree with necros; a much neater solution.

However, I had already changed all the monsters to the 'style' method sometime ago and as everything is working OK, I'll stick with it now. 
cheers for the quark info, although i may have a solution in the pipeline anyway now 
Just a silly thing really: I'm using your engine to test my map as Fitz balks with the SZ_GetSpace error (I know what I have to do), and I notice that if a monster's bounding box overlaps an edge (perhaps he's standing on a crate) your 1.31 engine gives a 'walkmonster stuck in wall' type warning. He's still available for slaughter in-game so it is no problem but I don't see this kind of warning in FQ.

It only seems to happen in Fitz if the monster is actually inside or partly inside a brush.

Umm, just an observation. 
Rotating Entities 
OK, I'll throw it open - can anyone help with my query in post #5452 above? 
Thought You Had The Hipnotic.qc Already 
STEP 1. Make a brush or group of brushes to rotate.

STEP 2. Place an info_rotate entity at the centre of rotation. Give it a targetname

STEP 3. Convert the brush(es) from step#1 into a rotate_object, give it a targetname, and set it's target to the info_rotate from step#2

STEP 4. Create a func_rotate_entity - placement doesn't matter, but it's a good idea to put it near the object it's related to (directly above the info_rotate seems like the best spot). Set it's target to the rotate_object from step #3 and fill in the rest of the data. NOTE: the 'rotate rate' must be in this format '0 0 0' each number controls the rate of rotaion in each axis (x y z) - the higher the number, the faster the rotation. Positive numbers are clockwise and negative numbers are counter-clockwise. You can also target this entity from a button to start/stop the rotaion, but you'll also have to set it's 'TOGGLE' (and possibly 'START_ON') spawnflag(s).

STEP 5. Build!

You should now have a continuous rotating object, doors are similar to set up. Rotating platforms are similar but need path_rotate entities to follow They are a pain to setup and are not covered here.

I found it in the extras_r4 I'm working with. 
It is for the Paroxysm Mod, so I don't know if it is the same for the hipnotics.qc 
it's the same. Hiprot.qc is in the compile list for Paroxysm's Extras.

This brings up an idea Kell and I tossed around once. Anyone have ideas on making the rotation code easier to use? I suggested that because the Half-Life rotation code is easier to use for a mapper there has to be a better way to do it, and Kell reminded me that the hull structure is different in Half-Life and that could possibly account for the difference.

It is one of those things I'll need to get around to at some point in time for my own modding needs, but I would be interested if someone like, for instance QuakeCSuperFly Preach, has already done so or given some thought to it. 
Half-life Rotation 
half-life rotation and quake2 rotation are easier becuase they support "origin" brushes, which define the rotation point. Without that, we need the "info_rotate" entity.

however, I have a theory that it would be possible to have origin brushes supported in quake simply by adding support to qbsp.

And then you could write your quakec rotation code to take that qbsp change into account (should be much easier -- rotating brushes in quake are totally hacked and becuase all bmodels have their true origin at the center of the world.) 
Preach, i just used your monster spawning code from i3d. Very straightforward. Thanks! 
I Tried Some Doors...

can't time them to shut, though they turn at the same time. 
Rotation Judder 
This is a video of the problem I have:-

(It's 6meg so if you are on dial-up it's probably not worth it, and my apologies for the 12 secs delay before you can download)

In-game the judder is much worse, at least twice as bad - the video capture program affects the fps so this extract may not come across as anything to worry about.

Both doors are set up the same with the exception of the direction parameters. 
You have your rotation bits slightly mixed up.

I think this is what you want: from the player's point of view whan you walk on the button the two doors open inwards and stop until the second button is walked on (actually, either button toggles the doors).

"classname" "rotate_object"
"target" "t10"
"targetname" "right_door"
//"0000" "0"
( 16 0 -272 ) ( 16 88 -272 ) ( 16 88 -400 ) DR05_2 384 -128 0 0.25 0.25
( 0 0 -400 ) ( 0 88 -400 ) ( 0 88 -272 ) DR05_2 0 -128 0 1.0 1.0
( 0 88 -400 ) ( 16 88 -400 ) ( 16 88 -272 ) DR05_2 -64 -128 0 1.0 1.0
( 0 0 -272 ) ( 16 0 -272 ) ( 16 0 -400 ) DR05_2 -64 -128 0 1.0 1.0
( 0 0 -400 ) ( 16 0 -400 ) ( 16 88 -400 ) DR05_2 -64 0 0 1.0 1.0
( 0 88 -272 ) ( 16 88 -272 ) ( 16 0 -272 ) DR05_2 -64 0 0 1.0 1.0
"classname" "info_rotate"
"targetname" "t10"
"origin" "0 88 -272"
"classname" "func_rotate_door"
"target" "right_door"
"rotate" "0 1 0"
"targetname" "door_mover"
"origin" "0 88 -272"
"angles" "0 -90 0"
"wait" "2"
"classname" "func_button"
"target" "door_mover"
"angle" "-2"
//"0000" "0"
( -120 72 -396 ) ( -120 -72 -396 ) ( -120 -72 -400 ) FLOOR01_5 0 -456 0 1.0 1.0
( -64 72 -400 ) ( -64 -72 -400 ) ( -64 -72 -396 ) FLOOR01_5 0 -456 0 1.0 1.0
( -64 -72 -400 ) ( -120 -72 -400 ) ( -120 -72 -396 ) FLOOR01_5 -8 -456 0 1.0 1.0
( -64 72 -396 ) ( -120 72 -396 ) ( -120 72 -400 ) FLOOR01_5 -8 -456 0 1.0 1.0
( -64 72 -400 ) ( -120 72 -400 ) ( -120 -72 -400 ) FLOOR01_5 -8 0 0 1.0 1.0
( -64 -72 -396 ) ( -120 -72 -396 ) ( -120 72 -396 ) FLOOR01_5 -8 0 0 1.0 1.0
"wait" "2"
"angle" "-2"
"target" "door_mover"
"classname" "func_button"
//"0000" "0"
( 112 -72 -396 ) ( 56 -72 -396 ) ( 56 72 -396 ) FLOOR01_5 -8 0 0 1.0 1.0
( 112 72 -400 ) ( 56 72 -400 ) ( 56 -72 -400 ) FLOOR01_5 -8 0 0 1.0 1.0
( 112 72 -396 ) ( 56 72 -396 ) ( 56 72 -400 ) FLOOR01_5 -8 -456 0 1.0 1.0
( 112 -72 -400 ) ( 56 -72 -400 ) ( 56 -72 -396 ) FLOOR01_5 -8 -456 0 1.0 1.0
( 112 72 -400 ) ( 112 -72 -400 ) ( 112 -72 -396 ) FLOOR01_5 0 -456 0 1.0 1.0
( 56 72 -396 ) ( 56 -72 -396 ) ( 56 -72 -400 ) FLOOR01_5 0 -456 0 1.0 1.0
"angles" "0 90 0"
"origin" "0 -88 -272"
"targetname" "door_mover"
"rotate" "0 1 0"
"target" "left_door"
"classname" "func_rotate_door"
"origin" "0 -88 -272"
"targetname" "t10"
"classname" "info_rotate"
"targetname" "left_door"
"target" "t10"
"classname" "rotate_object"
//"0000" "0"
( 16 -88 -272 ) ( 0 -88 -272 ) ( 0 0 -272 ) DR05_2 -64 0 0 1.0 1.0
( 16 0 -400 ) ( 0 0 -400 ) ( 0 -88 -400 ) DR05_2 -64 0 0 1.0 1.0
( 16 0 -272 ) ( 0 0 -272 ) ( 0 0 -400 ) DR05_2 -64 -128 0 1.0 1.0
( 16 -88 -400 ) ( 0 -88 -400 ) ( 0 -88 -272 ) DR05_2 -64 -128 0 1.0 1.0
( 16 0 -400 ) ( 16 -88 -400 ) ( 16 -88 -272 ) DR05_2 0 -128 0 1.0 1.0
( 0 0 -272 ) ( 0 -88 -272 ) ( 0 -88 -400 ) DR05_2 384 -128 0 0.25 0.25

If you move your existing doors, buttons and entities out of the way and then save the map, you can then copy and paste the above straight into your map file, it should work.

The func_rotate_door is not the door but the entity that causes the door to move. The door itself, the bit that you see move in the game, is called rotate_object.

I've copied this from the map file I just created based on your sample, so it is not in any sort of order but once you see it in the editor it will probably make sense.

Let me know if this is OK but if not, I can always e-mail the map to you. 
By 'inwards' I mean that the doors open away from the player. 
half-life rotation and quake2 rotation are easier becuase they support "origin" brushes, which define the rotation point. Without that, we need the "info_rotate" entity.

however, I have a theory that it would be possible to have origin brushes supported in quake simply by adding support to qbsp.

And then you could write your quakec rotation code to take that qbsp change into account (should be much easier -- rotating brushes in quake are totally hacked and becuase all bmodels have their true origin at the center of the world.)

What?! that'd be... well, awesome. i would absolutely love to know how this is done. :o 
thanks for your replacement of the map.
it works better now.

I saw your question, and as I'm also working with a hipnotic.qc I wondered why you couldn't get your doors open similair. So I compiled this map as explain.

But in your avi I understand the problem. Seems as if one of the func_rotate_door and info_rotate won't correspondent.
As if they are not on the same axe, but I think that was also the reason of your question.

Odd, Can't think of something else.
Maybe the Paroxysm mod tutorial can help, although I couldn't make it work. 
OK, I can see what's wrong.

The info_rotate entities should be unique to each door. So, the "targetname" "t10" needs to be changed to "targetname" "left_info" on the info_rotate for the lefthand door, and to "targetname" "right_info" on the info_rotate for the righthand door. Then make the left and right rotate_objects target their respective info_rotates.

No judder, super smooth.

If this is a little confusing, I can send you a working example. 
Dunno If Anyone Can Help 
but this has been pissing me off all day...

acceleration = ((v*v) - v) / ((2 * delta_d) - delta_t);

v is final velocity

this should give me an acceleration that would accelerate an object to v in delta_t time, simultaneously making it such that it attains those two criteria after moving delta_d distance... right?? 
just regarding the function, it is not consistent in term of units

In extenso:

acceleration should be in m/(s^2)
delta_t is a time in s
delta_d is a distance in m
v is a speed in m/s

So I heavily guess there is an error in the math: where did you pick up this function ? 
Just Applying Logic Alone... 
... to calculate acceleration surely you need to know the change in velocity, not just the final velocity. Therefore, I would expect to see a v1 and v2 in there somewhere.

But what do I know? 
You are rigth ;) 
Constant Acceleration 
Woo, some maths to break wrath's scrollwheel with.

I'm guessing you want a constant acceleration that will take an object starting at rest to a position delta_x at time delta_t with velocity v, where all three of these are constants you wish to specify. Sadly, that isn't going to be possible, one of the three will be beyond your control.

Let x(t) be the position at time t.

x''(t) = a (constant acceleration)

x'(t) = a * t + v(0)(integrate up)

Starting from rest, we get that v(0) = 0
x'(t) = a * t

So now we can calculate the required a to reach speed v at time delta_t

v = x'(delta_t) = a * delta_t
a = v / delta_t

But now we have specified the entire system, as we only had the parameter a to vary. So integrating a second time we find
x = 0.5 * a * t^2 + x(0)
so substituting
delta_x = x - x(0) = 0.5 * (v / delta_t) * delta_t^2
= 0.5 * v * delta_t

Which is what you'd expect if you consider the 'average speed'.

So, what can you do? Well, we need to vary the acceleration over time in some manner, and the easiest way to do that would be a linear acceleration over time.

x''(t) = a + b * t

x'(t) = a * t + 0.5 * b * t^2 + v(0)
(integrate up)

Starting from rest, we get that v(0) = 0
Substitute v, delta_tand rearrange:
v / delta_t = a + b * delta_t (1)

Go back to the expression for x'(t) and integrate again:
x(t) = 1/2 * a * t^2 + 1/6 * b * t^3 + x(0)
Substitute for delta_x, delta_t and rearrange:

delta_x / delta_t^2 = 1/2 * a + 1/6 * b * delta_t (2)

Now, we have simlutaneous equations for a and b in terms of our three constants, so we eliminate a
0.5 * (1) - (2) gives:
b = 3 * [v / 2 * (delta_t^2) - delta_x / (delta_t^3)]
and then from 1
a = 3 * delta_x / (delta_t^2) - v / 2 * delta_t

Plug those values into the original acceleration formula

x''(t) = a + b * t

That should do it. It's by no means the only solution to the problem, the choice of a linear acceleration was arbitrary. The sum of any two independent functions of t would work, but that's probably more complicated than necessary. 
Nice demonstration... Err BTW, are you a math teacher ?? 
hehe, we just covered this in multivariable calculus :) 
Multivariable Calculus 
.. I saw that many years ago in University.. it was in... hmm.. 1992 .. wow... already 14 years... OMG, I'm old !!! 
Not A Teacher... 
I'm just a maths student who does tutoring occasionally. I always jump at the chance to put it into practice on here though... 
i knew not doing calculus would come and bite me in the ass one day...

*sigh* i didn't understand half of what you put up there, but i'll be attempting to plug in your equation you put in...

just to check, is it: x''(t) = a + b * t or x''(t) = (a + b) * t
I Must Be Doing Something Wrong... 
x = delta_x (constant)
t = delta_t (constant)
k = current time (from 0 to oo)
v = max speed (final velocity)

i have:
acceleration = ((3 * x/(t*t)) - (v/2 * t)) + ((3 * (v/2 * (t*t)) - (x / (t*t*t)))) * k

then i set velocity via:
velocity = normalizedvector * acceleration * k

is this the wrong way to do it? is there a way to go directly to velocity without having to do acceleration before hand? am i just too stupid to comprehend this (lol)? :P
i think imma be taking calculus next year... 9_9 
Non Constant Acceleration 
It is x''(t) = a + (b * t)
The formula for acceleration you have there is almost correct, but the second 3 is in the bit of the brackets, and a few other things are bracketed ambiguously. Both of these things are probably my fault, so here's the corrected, unambiguous notation:

acceleration = ((3 * x/(t*t)) - (v/(2 * t))) + (3 *( (v/(2* t*t)) - (x / (t*t*t)))) * k

So that's all correct now, and will give you the exact acceleration you need. But...

It's not the way to do what you want. The rule
velocity = acceleration * time
is only true when acceleration is constant. The proper way to treat it is that velocity is the integral of the acceleration with respect to time. If you've not done calculus that won't mean anything to you, but don't worry about that for now. The integral of
a + (b * t)
(a * t) + (1/2 * b * t^2)(here treating t as time, not the delta_t constant).
This expression gives you the velocity you want without having to think about the acceleration. So plugging the values of a and b into this gives(switching back to your notation x,t,k,v)
((3 * x/(t*t)) - (v/(2 * t))) * k + (3 *( (v/(2* t*t)) - (x / (t*t*t)))) * k * k

Then multiply the normalised vector by this quantity and you're ready to go.

A final warning on accuracy. I'm guessing you're doing this in a quake mod, and that you're going to be changing the velocity of the entity every frame/think cycle. If you are doing that, it's not going to be 100% accurate. These calculations are a kind of mathematical ideal where you imagine the velocity changes perfectly smoothly. If it only changes every 0.1 seconds, it's going to cover less ground that it would have in this model. Quake doesn't support anything else natively though, but if you need higher accuracy than this, just ask. It's a more interesting problem, at least. 
yeah, i suspected there would be inaccuracies, since, yes, i'm only setting velocity every 0.1 seconds. i'm probably going to just make a check each time and if the discrepancy is over a certain threshold to just reset the origin to the correct position.
once i can get this going to see how big the 'jumps' will be and how often the position will need to be corrected, i'll be able to judge if furthur accuracy is needed.

i'm still having problems with the velocity though.

when i watch the speed, it seems to dip slightly over the max speed, then lowers back to max speed (in this example, 64), so it'll go to about 66.8 or so, then go back to 64.
also, it still doesn't travel the proper distance in the alloted time, in this case, it's a little less than 32 units short.

if you want some numbers, here's what i'm testing with atm:
t = 2
x = 128
v = 64
k = 0 to 2 (in this case in 0.1 increments)

at the end of 2 seconds, it's only moved 96.3 units (so 31.7 units short of the mark).
this seems to be quite a large discrepancy, more so than i would have thought would be the result of setting velocity every 0.1 seconds. i tested with setting to 0.01 seconds (with host_maxfps 100) and the result is identical. 
Sorry To Interupt The Highbrow Stuff.... 
Does anyone know of a cut-scene module for Quake1SP apart from the Custents one? 
Low Accuracy 
Yeah, that's probably because I'm a muppet and can't do simultaneous equations. So the expressions given for a and b are wrong by a few constants. If you solve them correctly, you get
b = 12*( (v / (2*t*t)) - (x / (t*t*t)) )
a = ( (6*x) / (t*t) ) - ( (3*v)/t )

Plugged into the expression for velocity, that gives you:

velocity = (( (6*x) / (t*t) ) - ( (3*v)/t ) * k) + 0.5*12*( (v / (2*t*t)) - (x / (t*t*t)) )*(k*k)

Obviously 0.5*12 can be simplified, but it's clearer where the terms come from like this. I'd expect maybe a few units out, but certainly not 30, if it keeps doing that I'll take another look. 
using the new eqtn, it now starts with a speed of 192, decelerates to 0, then goes to -192 in the 2 second span. o.0

sorry to do this to ya, man... o.o 
One Further Correction 
There's a 3 where it should be a 2 in the expression for a, I'll get there in the end...

b = 12*( (v / (2*t*t)) - (x / (t*t*t)) )
a = ( (6*x) / (t*t) ) - ( (2*v)/t )

velocity = (( (6*x) / (t*t) ) - ( (2*v)/t ) * k) + 0.5*12*( (v / (2*t*t)) - (x / (t*t*t)) )*(k*k)

I'm not entirely convinced that's going fix the behaviour you described though. I can't see how the velocity can start at anything but 0, since both of the velocity terms are multiplied by at least one factor of k...anyway, try that and see, it might get the velocity to -128 at least. 
Oh, Wait 
No, I see the other problem, there's a bracket in the wrong place in the velocity equation. The entire a term should be multiplied by k, not just the latter half

velocity = (( (6*x) / (t*t) ) - ( (2*v)/t ) )* k + 0.5*12*( (v / (2*t*t)) - (x / (t*t*t)) )*(k*k)
it's definatly getting there. time, velocity and position are all pretty much in sync (off by about 0.3 units) but there is still the problem that the velocity passes the max velocity for a bit before coming back down to the max velocity.

max = 5
it's like: 1, 2, 3, 4, 5, 6, 6.5, 6, 5, done
instead of: 1, 2, 3, 4, 4.5, 5, done

in any case, thanks tons for helping me out here with this. i couldn't have figured this math out on my own. :) 
Time To Max 
Does it reach the maximum of 5 at the correct time before it goes over? At the moment, the equations don't have any consideration for a "maximum speed" as such, they are set up just to reach the right speed at time = t. What they do after that I hadn't thought about - I assumed they'd just get faster and faster until they reached the maximum quake speed(2000 units normally). If you want to clamp the speed at v, then you should just check if k > t, and if it is forget the calculations and set velocity equal to v.

There's probably a better design for the original acceleration model so that it goes to zero as the velocity tends to v. Then again, it would probably involve an exponential function, which isn't good for quake - numerical approximations in quake c are expensive operations. I might have a think about that tomorrow... 
Hijack Velocity... 
In another attempt to change the subject, what's up with Worldcraft confusing textures?

I have "karch1" and "karch1l" (Hi, Kell) in a map but only "karch1l" ever gets used. The map looks fine in the editor but, when I try checking the Face Properties on a "karch1" brush, I always get "karch1l" :| Anyone out there figure their way around this one? 
After some simple renaming, "karch1l" to "karch1_l," all seems to be made right...Does that count as modifying a texture? If so, I should probably get permission (o_0) 
No, That's The Thing 
it goes over the max speed before the correct time, then it reduces speed so that it's at the right speed at the correct time. if i were too simply cap the speed at a maximum, it wouldn't move far enough, because it wouldn't get that 'boost' in distance from going over the limit. 
I have "karch1" and "karch1l" (Hi, Kell)

Hi generic

Does that count as modifying a texture? If so, I should probably get permission

Heh, you have my permission to modify the texture. You also have my permission to slap Worldcraft's texture browser :P 
Over The Limit 
The final velocity shouldn't be thought of as the "maximum velocity", there's no reason that these equations should lead to strictly increasing speed. From what you describe, it sounds like if you evaluate the values of a and b, you'll get a positive and b negative. I should stress that this is only because of the particular values of v, x and t you have chosen. Set v = 200, t = 6 and x = 600 and you'll see not only a constantly increasing speed, but in fact you'll find the acceleration is constant(b = 0). When I get back, I'll post a solution where the final velocity is a maximum. 
Maximum Velocity 
Ok, did this in the gap between lectures today.

To make sure the velocity is a maximum at time delta_t, we want there to be no acceleration at delta_t. This is another constraint to the problem, so we're going to add a third term to the acceleration. I'll do using t for the time variable and delta_t as the interval required because it's more natural:

x'' = a + b*t + c*t^2
We can already solve for a in terms of b and c, as we know x'' = 0 at t = delta_t
0 = a + b*delta_t + c*delta_t^2
x'' = b*(t - delta_t) + c*(t^2 - delta_t^2)

x' = (1/2 * b * t^2) - (delta_t * b * t) + (1/3 * c * t^3) - (delta_t * c * t)
x = (1/6)*b*t^3 - (1/2)*delta_t*b*t^2 + (1/12)*c*t^4 - (1/2)*delta_t^2*c*t^2

Then you plug in delta_t, delta_x and v to these two equations, and if you still trust my ability to solve these after last night, you get:
b = ((30 * v) / (delta_t^2)) - ((48 * delta_x) / (delta_t^3)
c = 24 * ( ((3 * delta_x) / (delta_t^4)) - ((2 * v) / (delta_t^3)) )

You can then plug these into the equation for x', but I'll summarise both of these things in terms of the variables v,t,x and k:

velocity = ((1/2) * b * k^2) - (t * b * k) + ((1/3) * c * k^3) - (t^2 * c * k)
b = ((30 * v) / (t^2)) - ((48 * x) / (t^3)
c = 24 * ( ((3 * x) / (t^4)) - ((2 * v) / (t^3)) )

For safety's sake I've not substituted the values of b and c into the velocity expression, you're free to do that of your own accord.

Ok, so that's the actual content, the rest of this is just rambling. One nice feature of this is that the acceleration is now a continuous function in the sense that it reaches 0 at time delta_t, which is when you stop applying the velocity equation and fix the velocity constant. If you didn't do this, then it would start slowing down again, in fact going down to negative velocity with no limit. We set the acceleration to 0 so the point delta_t would be a maximum, and it is in fact the maximum positive velocity, but not negative :- ).

My only other comment would be a possible improvement to the scheme if you needed improved accuracy. The idea is this: use the expression for distance rather than velocity(!)
What you do is calculate the point that the projectile *should* be at in 0.1 seconds time(the moment you next think). Since you have the equation in full, this is quite possible. Then, since you know you're going to be travelling at a constant velocity until that point, work out the distance between your current location and that target spot, and use the normal equation for working out constant speed:
speed = distance / time

This velocity should very closely match the calculated one, but because it takes into account the position you actually reached, it'll be better at matching the positions given by x. Will it be perfect?

Well, no, it won't, even if you ignore floating point precision. The problem is that when you tell quake to think in 0.1 seconds, it actually thinks at the start of the next frame which is rendered not less than 0.1 seconds later. This could be different from 0.1 by 1/fps - and in fact this affects everything in the quake world, monster animations, player attack rates. So there's still that extra 1/fps * velocity that you'll overshoot by. The important thing about this iterative method is the next think will take into account the overshoot you performed, so you should only ever have one frame's worth of inaccuracy.

You could even attempt to correct for this factor by assuming that the framerate at the time of the nextthink will probably be similar to the current framerate(in QC the global float frametime denotes the time taken to render the last frame). Of course, there is such thing as taking it too far...

The last, is it only four paragraphs? - aren't actually suggestions you need to impliment, the velocity method you've been using before should be fine if you just use this new formula with it. It's more just me putting some ideas out there on how inaccuracy in quake thanks to the framerate can be handled better. And if you do decide you want the extra precision, do let us know how it goes, most of these thoughts are theoretical...
My brain don't 'alf 'urt! 
I am making a counter strike mod for quake. And i want to make a new func_ brush for the escape zone for VIPs how would i go about doing this? 
Taking A Break From Uber Math 
(i need time to digest that...)

in response to 5515:
you could probably just use the trigger_multiple code and change it so that it can be triggered only by monsters (or in this case vips).

however, the question is so general in nature, it's really hard to help beyond that. also, why would you make a counter strike mod for quake? it doesn't seem to make sense, since the original counter strike was for Half life, which itself was an updated version of the quake engine, you're basically taking a step back. just play the HL version. that's just my gripe, anyway. :P

now, on to the math... o.o 
maybe the radiosity used for lighting in the original Half Life makes his eyes bleed and he is looking for something more sedate for his optical nerves.

But, still, Counterstrike ? Just kidding. It could present some interesting AI challenges but the game isn't my cup of tea. 
You may find it useful to read through the QuakeC tutorials on

He covers how to build several different multiplayer oriented game modes in QuakeC. You'll probably get a good grasp on how to approach doing a CounterStrike mod. 
Well its not really counter strike. I am taking quake engine and making and Terrorist vs Counter-Terrorist game. So i have to make my own textures, i have to change the engine a little, need to edit the weapons, i have the models already. So if anyone wants to help me out email me 
hopefully you're not getting tired of doing math... hehehe, there is still a problem with it :P

first: there were some brackets missing. i added them in as best as i could figure out, and i have:

b = (((30 * v) / (t*t)) - ((48 * x) / (t*t*t)));
c = (24 * ( ((3 * x) / (t*t*t*t)) - ((2 * v) / (t*t*t)) ));
velocity = vector * ( ((1/2) * b * k*k) - (t * b * k) + ((1/3) * c * k*k*k) - (t*t * c * k) );

(got quake to sub it for me, yay!)

i think you're really close now. the movement is look good, but it goes to much to fast a speed, as well as goes in the wrong direction. i'm guess it's just a couple of bad constants and possibly a flipped sign? i hope anyway...
i'm actually surprised quake can handle all that math... i was bracing myself for some kind of error: zomg, let me shoot grenades already!

i'll make sure there's a big phat thank you in the read me. :P 
One Constant 
I think I've spotted a constant that's wrong, change c to
c = (12 * ( ((3 * x) / (t*t*t*t)) - ((2 * v) / (t*t*t)) ));
Having looked at the graph of this function, I still get the feeling it's not working correctly, I'll have another think. 
Kell... the Chapters pack, upon returning to the start map once a level was completed the entrance to that level was blocked. Is this a hack? If not, is the code required incorporated into Quoth? If not, might you or necros slip it I'm beginning to toy with an Id base start map. 
it is part of the quoth progs. see the quoth tutorial: mapindex info on how it works. 
necros or kell!!!

monster spawn right away :| and only should when trigger are active!!! any idear? 
because you don't have the right spawnflags set. i see the vore's spawnflags are set to 7, but the trigger_spawn flag is 64.

spawnflag 7 means bit 1,2 and 4 are set, but bits 2 and 4 aren't anything at all. i see the ambush flag is set, so the true spawnflag value should be 65 (64 + 1). 
got it ;) thks!!! 
Cheers, Kell :) (from before) 
...thanx necros 
A lack of understanding on my part...

When sound files are pre-cashed how does the size of the file i.e. 450k or 4.5M or 45M, affect the engine.

The reason for the question is that I have some music that I want to add to a map, and I then thought I would add several pieces of music, which totals about 45M. What bad things might I be doing to the engine that will/may affect the playability of the map.

Any pointers regarding the use of sound files will be appreciated. 
It is a good question as I'd like to add some custom sounds to a future project.
to summarize I'd like to know what are the limitations of engineds regarding sounds pre-caching ? 
Engine Sounds 
I'm not sure about the memory load, but I'd guess that the sounds go into the Quake heap, so you might need to increase heapsize. 45M just for sounds is a bit much ...

As for amount of precached sounds, it's 256 in normal engines, 1024 in mine and possibly even higher in DP. You can use the soundlist command to check current load.

The amount of sounds are protocol limited as with models, so it's not just to raise the limit. 
Another Question About Sounds 
Thanks aguirRe for these informations !

OYOH, I'm looking for a good (free) wave editor that would allow me to edit / modify / save sounds... I also would like to make .wav "loopable" (i.e data chunk addition). Which tool would you recommend me ? And where to download as well ? ;P 
Here Is One 
Thanks, I have it... but where can I make a .wav file "loopable" ? I still didn't find the option... 
Return Of The Maths 
Yup, another lengthy set of calculations from Preach. Feel free to skip to the good bits marked in white : - )

Ok, so I looked long and hard at the algebra, and eventually managed to bash out something that works - in a limited way:

x' = (a * k^3) + (b * k^2) + (c * k)

a = ((12 * x)-(8*v*t))/(t^4)
b = ((15 * v * t)-(24 * x))/(t * t * t)
c =(-3 * a * t * t)-(2 * b * t)

Same idea as last time, just with the maths correct. So I tested it out with t = 2, x = 10 and v = 10 and the graph looks just fine. Then I decided to test it with 2, 128 and 64. It doesn't work. So I'm about to go back to the drawing board when...

If you look at the values of v=64, t=2 and x=128 there, you notice that they are the of values x and t if the object had a constant(or "average") velocity of v. So if the object starts at rest, it must spend some time at low speeds. Consequently, any solution which starts at at rest and ends at x must spend some time at a speed above v to keep the average speed at v. So the only solution which never exceeds v is the one with constant velocity.

(exercise for the keen mathmo - prove from the definition of a continuous function and the Riemann integral that a continuous function of the form we require cannot exist!)

So, that doesn't seem too good, but the question does arise - what combinations of speeds, distances and time will allow for a solution? And of these, how many does our current solution allow for?

Well, the first thing we want is for the rate of change of the acceleration to be negative at time t. If it is positive, we've already had negative acceleration and it's going back into positive at this point.

So we look at
6 * a * t + 2 * b
If this quantity is positive then we are not going to get a solution that stays below the final velocity. In terms of the original parameters this gives
4*x - 3*v*t < 0, or v > 4/3*(x/t)

So that's a good condition, x/t is the average speed and if we're starting from 0 we'd better allow the maximum speed to be 4/3 of that. Well, it makes sense that it's some fraction of the average speed, it's much harder to see why it should be 4/3.

So that's one restriction. The other problem is that if you take the final velocity to be too large, the solution will go negative at the start in order to accomodate this - taking a run up if you will. So what's the condition for this to not occur? Well, the acceleration is a quadratic in time, so it takes the value 0 at 1 or 2 points(we've defined it in such a way that k = t is one such solution, some quadratics of course have none). So the problem arises when the other solution is positive, but less than the one we want of k = t.

Ok, so we want to factorise the expression for the acceleration:

x'' = 3*(a * k^2) + 2*(b * k) + c = 0

This could be tricky except we know one root, t:

3*(a * k^2) + 2*(b * k) + c = (k - t)(3ak + r)
= 3*(a * k^2) + (-3*a*t + r) * k - r*t

for some constant r. Hence

r - 3*a*t = b
We want -r/3a(the true root of this equation) to be negative. Plug the expressions for a and b in and you get the condition:
(6*v*t*t - 12*x*t)/3*(12*x - 8*v*t) > 0

Be careful! If you multiply through by the denominator you might think you get v > 2*(x/t). However, if the denominator is negative you must reverse the sign of the inequality when you multiply though. So we require either
12*x - 8*v*t > 0 AND
v > 2*(x/t)
12*x - 8*v*t < 0 AND
v < 2*(x/t)

Phew, ok, those are the rules for this solution to not have negative acceleration for its duration. It'll still work for any given boundary conditions, but it'll do wierd things like speeding up above the final speed(often not so bad) or going backwards first(probably worse). In a bit I'll post some more about alternative models that are less restrictive, and ask the question "when is there no solution at all?". 
Cool Edit 
can make your wav's loopable. It's free.

for small wav's 3Dinside has a small tuttorial. 
Yes it is a fre trial version... I'll test ir.. Thanks :) 
Sound Issue... Still Continuing... 
OK, I opened a .wav and I tried to converted it into a loop .wav file... Nevertheless, when I try it in Quake (using the Quoth ambient_generalpurpose item) there's a message stating "sound <path/sound.wav> not looped" o_O ..
So, from where comes the issue ? Is the .wav format having an effect on the engine (sampling time is 22kHz, mono mode, loop enabled)? 
Jesus O.o 
this whole thing was so i could make accelerating and decelerating doors like in Doom3. you would specify movetime, acceltime and deceltime.

movetime being the total movement time and acceltime and deceltime taking up chunks of time from movetime (so movetime=8, acceltime=2, deceltime=4 means 2 seconds accelerating, 2 seconds moving at constant velocity and 4 seconds decelrating)

surely the math can't be so complex?? i mean, i'm sure the iD guys are smart, but that seems overly complex! is there some way to fake it without this massive amount of operations? it just seems to me like it's more trouble than it's worth :( i mean, appreciate what you're tyring to do, but i don't want to tie up all your time on this stuff :x

i'll have to look into getting some D3 source code stuff, maybe the secret can be gleaned from there... :S 
no point having 22khz, since quake only supports 11khz, it'll downsample it itself and you're just wasting memory.

i noticed that quake uses different markers for looping sounds. usually music programs use 'sustain' loop markers for looping, but quake seems to use region markers. 
Nah, That's Easy 
Because the thing there is, you are allowed to control the constant velocity to be anything that you like. Picture(in fact, draw a copy, it'll help the explanation) a trapeseum for the graph of velocity against time, with constant slope upwards for the accelerating portion, constant slope downwards for the decelerating portion, and a horizontal line joining the two. You now need a simple result from calculus to tell you that the distance travelled is the area beneath the velocity curve and the line
v = 0.

So, we calculate the area of this trapeseum. Divide it into two right-angled triangles and a square. The triangles have base acceltime and deceltime, so the area enclosed is 1/2*(acceltime + deceltime)*v, where v is a constant speed that we will calculate later.

The square has base movetime - (acceltime + deceltime) so the area is [movetime - (acceltime + deceltime)]*v. Sum all these areas and we get:
[movetime - ((acceltime + deceltime)/2)]*v = delta_x
So, solve this for v by dividing through.
v = delta_x / [movetime - ((acceltime + deceltime)/2)]

It's not worth doing this calculation every time the door moves, do it once when the door spawns and store it in the door's .speed field.

This gives us the constant velocity for the middle section of the motion, but we still need a simple formula for the velocity at each end. It's what you'd expect:
x'(t) = v * t / acceltime for the accelerating phase and
x'(t) = v * (movetime - t) / deceltime for the decelerating phase.

And that's it, very short and sweet.

So how does it relate to the other problem? Well, imagine that we didn't have the freedom to choose the velocity for the constant speed, but we can join the origin and the first part of the horizontal line by any curve that we like(or any strictly increasing curve if you prefer). Ignore the decelerating phase at this point.

We have to choose the shape of this curve so that the area underneath it plus the area below the constant velocity section adds up to the right distance. We can see that we're limited already as the curve isn't allowed to go above the horizontal line for v, and it can't have negative area. So we've got v*acceltime area to play with, and in theory we can come up with a curve for any area between 0 and v*acceltime, ie distances between 0 and v*acceltime have theoretical solutions.

Now, I think that in theory the area under a function of the form
((a*(acceltime-t))^p + (b*x')^p)^(1/p) = v will take any area from 0 to v*acceltime, for the correct value of p between 0 and infinity. For instance with p = 2 and the correct scaling you'd have the equation of an ellipse through the origin and (acceltime,v), and p = 1 is the straight line solution we've already seen. I'd hazard a = v/acceltime and b = 1 as the right scaling but don't hold me to it.

Anyway, that's all academic really as you'd have to solve for p, which isn't easy under the best of circumstances. QC just isn't going to cut it at all. But it's nice to see it can be done in theory
: - ) 
It seems that you need to be able to divide the total time that the door operates into segments. In the secret door code functions you already have an example of this available (first second cues sound, second second the door is pulled backwards . . . etc).

The first part of the problem would be to add a factor that allows you to
predetermine the length of time it takes to arrive at the destination.
If it takes 1 second to reach 64 units then plug in an equation that divides the total number of unit segments that need to be moved and then divides that result by the movetime.

So a door that moves 128 units whose move time is 8 is traveling at a constant of .25 seconds. Once you have a constant, you can plug in variables that will give you the acceleration and deceleration you are looking to add.

The movement code in the secret door function is in this bit of code.

SUB_CalcMove(self.dest1, self.speed, fd_secret_move1);

you'll need to get it to use movetime as a countdown (The loop controling the function would look something like this) a = 0, if a > movetime then stop!, a = a + 1) so you can force it to plug in a change for the self.speed for each segment of the movetime countdown. 
yeah, none of that was the problem. it was just solving the change in acceleration such that it would arrive on time. 
keeping things simple, you would gauge deceltime with acceltime so we can easily balance this factor out of the equation and all we have to deal with is the time of constant velocity.


Then you will need to find the difference between the constant .25 with the 2 seconds
of constant velocity divided by the number decel seconds, and add to the dec modifier which you use to decriment the speed in the last four seconds.

so if the basic aceltime unit is self.speed = self.speed + .2 than 4/2, .2/2, the the first variable for the decrement in deceltime will be a convenient self.speed = self.speed - .1.

Now for the second variabl in the decrement equation.

Constant velocity reached self.speed + .4, times this by the number of seconds of constant velocity and you get .8, then divide by number of seconds of decelaeration (4) = .2.

So we add this to the first total and adjust the deceleration speed to self.speed = self.speed - .3 and that will get us there in 8 seconds. 
Sounds In Quake 
no point having 22khz, since quake only supports 11khz, it'll downsample it itself and you're just wasting memory.

OK, not a big deal to downsample the file... with any sound editor...

i noticed that quake uses different markers for looping sounds. usually music programs use 'sustain' loop markers for looping, but quake seems to use region markers.

So, how to manage it properly when saving the .wav file ? I saw aloop enable option in Cool Edit, but it is avalaible without any "extra" options about the way it is marked in the file... ?
OTOH, is there a good tutorial for sound creatio for Quake (like there are some texture creation tutorials)? 
in cool edit, just flag the loop field in the wave properties and the sound loops in quake. 
I did it, but it doesn't loop in Quake... note I even save the .wav file after that :P

furthermore, I tested the sound with play_sound_triggered item, and the sound has been played properly, so the .wav file is not the cause.... maybe the loop info..

So where's the issue ? Any idea ? 
in an older version of cooledit it worked like that (at least iirc).
then you'll have to set
(loop) markers at start/end. 
Thanks, I'll take a look. 
YEEeeessss !!! 
Neg!ke, even if the loop properties was set correctly, it was missing the loop marker. I added it and it is working fine now...
I'm now able to add new sounds to my map... Thanks a lot ! You rock ! 
can anyone explain me why doesn�t the fucking door dont work after i pass? :\

thks in advance! 
I'm getting a 'not a valid file' error from Winzip. 
standard triggers can only have one single function: target or killtarget or message.
put the message in a trigger_relay with the same targetname as the door and it works. 
QuakeC Query 
I want to have a func_button (for a deliberate player action) and a trigger_once (for a non-deliberate/unintentional action) pointing to the same target.

Can I tell from within the target's function, which of the two activated the target? This would enable me to give a different response e.g. if activated by a button, do this, else do that (to the targeted entity) 
Not Easily... 
As far as I can see, there isn't a nice self contained way to do it - meaning a way to write it that doesn't involve changing the code for the buttons and the trigger_once in some way. There is a global entity variable called "activator" that stores who is performing the triggering when something uses its targets. Unfortunately this stores the player entity that pressed the button, not the button entity itself. This inspires us to create such a global to store the entity that is doing the actual using, which I will refer to as the "mechanism"(although effector might be a better term).

Ok, first open up defs.qc and add to the bottom:

entity mechanism;

We will use this global to store the entity that is enacting the trigger, for example the button or trigger.

Next up is subs.qc, find the function
Right at the top of it add a temporary entity called "mech" to the existing list, followed immediately by this code:

if(self.classname == "DelayedUse")
mech = self.owner;
mech = self;

Next add

t.owner = self;

right after the line =;

This relates to the DelayedUse line above, so that if the trigger has a delay, we still count the mechanism as the real trigger, not this temporary entity.

Now go down to the big loop at the bottom and add

mechanism = mech;

right above the line
t = find (t, targetname,;
in the loop marked //fire targets(not the killtarget loop). We keep resetting this each time we run the loop, as each time we trigger something it might call SUB_UseTargets itself, which may change mechanism.

Now it's very simple to test which one of your entities set off the thing. In your new entity's use function, perform a check like

if(mechanism.classname == "func_button")
do stuff
do other stuff

I think this is a fairly robust system, but I've not tested it so just say if there are problems. 
Thanks, this looks good.

I will test it later this evening and report back. 
Illusionary + Efrags 
i have a lot func_illusionaries consisting of several brushes which are seperated from each other. this gives 'too many efrags' warnings. changing them to func_walls solves the problem, but i'd rather have them be nonsolid. creating a seperate func_illusionary for every single brush is out of question because (i think) there are more than 128.
so what's the principle underlying this, how far can the brushes be apart from each other, what's the difference between static and dynamic entites concerning this distance? 
Said in English with a very French accent and much overuse of the hands...


I don't fully understand efrags, but from what I do understand, any large entity is divided into multiple efrags based on how many nodes of the BSP it occupies. This is why a large func_* with many seperate small parts is problematic.

I also don't know if/why it's different for func_wall vs. func_illusionary. But the one obvious difference is func_illusionary is a static object, and func_wall is an edict. So maybe that is partly why. 
why in gl i dont have any HOM�s and in software i got a lot of then? is there any way to solve this? 
Light Attenuation 
how can i attenuate a spotlight (light with a target) in quake - pretty sure ive read something on this somewhere but can't remember where. if i remember rightly its just a single key with float value . . .

neg!ke - why not just split the big 128 brush illusionary into 2x64 brush versions? if that doesn't work split into 4x32 and so on until you get rid of the error. don't know if that'll work because i haven't come across the problem before. 
The thing you're describing is called "greyflash" -- solution: increase r_maxsurfs and r_maxedges in the console. 
aguire's light has support for custom light attentuation on spotlights. the text on his site outlines how it works 
metl: yes, static entities are definately treated differently in this respect. the first few illusionaries worked fine, the warnings only started to appear after a certain amount, i think.

ijed: i meant there are probably more than 128 (limit for static ents) brushes to be illusionary'd scattered throughout the map. most of the objects consist of around 5 brushes. apparently, that's too much already if they aren't close enough together.

my main concern was they could block the monsters but then again it wouldn't be that much of a problem either.. i might do some more tests. 
Hacks And Stuff 
You could always use the non-static illusionary hack to make some of them info_nonulls with models, I think I've posted it somewhere in the teaching progs new tricks thread. Or if you're using a custom progs, making an info_illusionary clone that isn't a static entity is very easy. 
just read back through aguire�s readme�s and found the relevant stuff on lighting - amazing how much control is possible, and that i forgot to check there first.

reckon preach has the dodge for the static entity limit problem . . . sounds like the only way to solve it without is by testing, as you say. 
the question just posed itself:

can I make two Quake2 teleporters point at each other, like their Quake1 counterparts? Can I do a teleporter setup like in DM6 in Quake2?

Quake2 has no trigger_teleport, but instead uses misc_teleporter, which like monsters is associated with a specific model (the idiotic disc-and-particle-thing.) Can I make it use a different model (perhaps a nice slipgate?)

Anyone knows the answers by heart or do I have to build a test map?

another question: does anyone have linux binaries of qbsp3/qvis3/qrad3 and is willing to share them? Shit just doesn't compile here. No idea why.

Without them, even a test map is hypothetical :-( 
was a great mod that does exactly want you want - trigger_teleport, but it forces you to use the mod, which means for DM it probably isnt what you want. you can change the model (the base) for anything you like (big rectangle with slipgate texture) although it�ll be solid, if memory serves, and the texture won�t animate, it�ll also keep the glittery yellow particle effect. its probably best just to delete the model from inside the md2 inside the pack and place it next to world geometry as you would for q1 (except it�ll be 32x32x64 for the teleport box) but since this�d mean modifying the pack anyway you might be better off with lazarus, which�ll save you from fucking about - it also has alot of other extremely nifty stuff in there, since its made for mappers and not players; it doesn�t modify weapons or anything, just gives you alot more options, like misc_actor and (very clever)monster AI. 
I know... I actually use the lazarus library for normal playing (better monster AI among other things.) but as you say, DM maps should work with stock quake.

I guess I can live with the particle fountain thingy. Guess what; I found out that you can use an info_notnull for the teleport destination :-) now that's far more flexible than those red discs! (by the way, you can aim two misc_teleporters at each other, but you keep bouncing back and forth.)

I got something to halfway work and now I can at least make .bsp files (no vis or rad sadly.)

Quake1's teleporter setup is much more elegant though. You can have invisible/huge/tiny/... teleporters in Q1. Not so in Q2. Probably no teleport traps, too (no trigger_teleport).

There is something like if you bury a misc_teleporter 6 or 8 units into the floor, then the disc and particles no longer appear in game, but you can still teleport like normal. Try that.

Also, as you tiggered out, target the teleporters at something just in front of the other teleporter (isn't there a misc_teleport_destination?) instead of at the other teleporter itself. 
.map .pk3 
I need help with loading Wolfenstein ET maps, for some reson i can't see the maps in Wolfenstein ET/etmain through GtkRadiant-ET-1.3
O.o i can see them if i just navigat from
My Computer\Program Files\games\Wolfenstein ET\etmain. (sorry not very discriptive lol)

please post or i would perfer you added me:

Thank you for your support 
yep, there is a misc_teleporter_dest (or something) but it's another giant red disc. If I'd use that, it would a) look funny and b) the particle fountain and the disc need some minimum distance which messes up double-teleporting. luckily, the info_notnull works very well (just like an info_teleport_destination), I'm now using it throughout. I'll also be able to properly port DM6 now, something I look forward to. :-)

the burying in the ground is something I'll try but I'd rather avoid anything that might introduce unstableness. I found out that you can turn the particles off with a cvar, so only the disc remains.

however, the trick you mentioned might allow me to build slipgates... I'll try. Thank you. 
.map .pk3 
A quote to my last msg i can only load up the Goldrush maps such as goldrush, Super Goldrush final and thats it, i tryed ziping some of the other maps and changing the file type and then loading up the map and it comes up with an error like this Warning:Line 2 is incomplete

Thank you for your support 
==Z== Ze0 
.. could you elaborate exactly on what you try to do as it is a little bit confusing. I'm not sure to understand what is your problem... 
something is unaligned in your map file compared to the standard format (well, whatever the parser is expecting in the editor). Sometimes when I use a Q3 to Q1 map conversion tool, I notice that it will add an extra quote to an entity listing ""worldspawn" instead of "worldspawn".

The easiest way to fix this particular problem is to put the map through a text editor using the find/replace option.

If you are not familar with what to expect when examining map files (I assume that goldrush is Quake related though it may just be Neal Young, great cover by Natalie Merchant related, har har), examine a freely available map file where everything is perfect, like Antidelevian, for instance, in a text editor and compare with your file to see if there are any descrepencies. 
Goldrush Is One Of The Official Wolf:ET Maps 
Note that .map is not the same as .bsp, and et doesn't actually come with any .map files (that I know of). You can't edit .bsp files with radiant.

If you want to edit a .map file contained in a pk3, pull it out of the pk3 and into etmain/maps/. Radiant should see it fine from there. 
.map .pk3 
ok how do i pull it out of a .pk3 file format, could i zip the map file and chang the .pk3 to .map? 
==Z== Ze0 
No, I don't think you can do that. You can extract map from a .pk3 with WinZip, but in order to create a pak file, I uess you need a special tool... not sure... 
More Help With Sound? 
I have a sound file that plays at a constant volume. In-game I want to adjust the volume level of that sound file according to player action but I do not want to use another sound file.

If I adjust the volume and play the sound again then the sound file will simply play from the begining at the new volume level, and although this is easy to achieve, it is not the effect I am looking for.

Is it possible to affect the volume using qc whilst the sound is playing? 
To Clarify... 
I am only trying to affect the volume of the one selected sound file that is playing, not the overall sound level of the game. 
why cant i make a func_door with clip texture? grrrrrrrrrrrrr 
.map .pk3 
ok thank you for all your help, ill mess around with the file type for a bit, Good luck and God Bless.

if have any success ill let you know 
Mike And Trinca 
Mike: I can't think of any good way to do that with QC, I don't even think something hacky like moving the source entity away from the player to diminish the sound would work. You might want to try asking on inside3d though, they can work wonders over there.

Trinca: I think it's just a compiler restriction. You can achieve nearly the same effect by using the "skip" texture and running the skippy tool on your BSP. Skippy has been discussed here a few times and you can grab it from if you don't already have a copy. The main difference you'll see it that the skip brush will be solid to point sized entities like nails/missiles. 
thks i will try but i think it gave me some errors the last time i use it... fuck me up the hole .bsp :\ so might not work! 
Skip Tool 
Skip tool would effectively to be refined in order to avoid to generate an HOMs-full map in certain cases.. 
I think skip is much safer on func_ entities than it is on the actual map, seeing at they don't have the same vis calculations performed on them, and won't ever have to be the surface that's between the player and the void(assuming the map is sealed). 
it is impossible :S

although, if the sound was really short, like say 0.1 seconds or something, then you could probably achieve the effect just because it probably wouldn't be noticed that the sound is starting back at the beginning all the time if you adjusted volume every 0.1 seconds.

in fact, you could maybe do that unless the sound was like say 30 seconds long. if it's 2 seconds, then change volume every 2 seconds, if it's 0.7 do it ever 0.7 etc... 
Oh dear, I thought this may be the case. It's deja vu recurring again once more! 
Aguire can u change Txqbsp.exe to accepted the the clip textures in entities? i want to put clip texture in a func_door :\ 
Forget :\ 
or is a engine problem? 
Have you considered func_movewall, which is used to emulate collision on rotating objects?

I am not sure what you are trying to do with clip tex on doors so if this suggestion is out of line, just ignore it. 
you can have clip brushes in a func_door volume as long as they're encompassed by visible brushes, e.g. a clip brush with a border made of textured brushes. it only doesn't work if the door consists solely of clip brushes or the clips exceed the actual door volume. 
Clip Brush Ents 
I don't know about engine issues, but the compiler doesn't accept an entity that has brushes specified, but where in a certain hull (here: hull 0), all the brushes are removed.

The same applies for the world; you can't have a world entirely made out of clip brushes.

To just get the compiler to build, try adding an extra brush (e.g. hidden inside the wall) with a normal texture to the entity.

It still might not work in the engine according to neg!ke's post. I think metl did some tests on this before. 
Ok, Since My Speedmap Will Be Released Somewhen Later 
I have a question about elevators.
I need the following:
Quakeguy encounters the elevator in its lower position. Quakeguy drive upwards with the elevator. Elevator remains in its upper position. Quakeguy walks around and kills monsters. Quakeguy returns to the elevator. Quakeguy drives downwards with the elevator.

I spent quite some time during my speedmap session with it and gave up (neg!ke, don't show anyone what I did instead, *shame*). I assume I could do it with some triggers, but don't know how. 
Platform Blues 
I think you could do it by making the "platform" a func_door with the toggle flag set. You have a button you can use once at the bottom of the lift, and another one at the top that you can't get at to press. When you kill the monster, you remove whatever was blocking off the button, and press that to make the lift descend. 
why cant i make a func_door with clip texture? grrrrrrrrrrrrr

I don't know about the compilers, but there is an engine bug which makes the clip brushes on a func_door sometimes nonsolid. The bounding box of the func_door is generated from hull0 brushes, so if clip brushes are outside that bounding box, you can often pass right through them.

A func_door that is entirely clip would have a zero-sized bounding box, so you might never collide against it. 
might be able to use a null modelindex hack or something to make a normal brush invisible. Not sure. 
thks metlslime i will add a small box in func_doors and try ;) 
does it mather how high the numportals go?
just asking as vis sais i have over 7700 of em on my recent map 
Better Than A Modelindex Hack 
I discovered the important part of this hack a month or so ago, when people wanted glass windows for the base pack. I didn't post it then because there's a drawback to the function you need to use that I felt was too problematic. However, after metl's post there I thought of a neat fix to this problem, so here we go. Note that it still doesn't fix trinca's problem as it'll only work on func_walls(well, entities that don't have think/use functions, so you can have those invisible ammo crates you always wanted too...)

Ok, make a func_wall, and add the following keys:

think info_teleport_destination
nextthink 0.2

That's a pretty cunning function there, for no good reason the info_teleport_destination spawn function has a line setting self.model to "". Still, this bit of leftover code has given us a great hack with only a single drawback. If you compile and try it now, you'll find that you func_wall is invisible, but 20-odd units higher than you left it. And if you try to stand on top of it you'll get stuck - what happened?

Well, in order to stop people getting stuck in the ground when they teleport, the info_teleport_destination is moved 22 units up when it is spawned, by directly changing the origin of the entity. Doing this on a point entity that is just being spawned is safe, but doing it on a brush entity that was spawned 0.2 seconds ago breaks quake's internal physics state.

So this is why I didn't post it before, but there's a solution - use another function that will reset the origin using the setorigin function. In fact I suspect if you just undid the displacement of the func_wall then physics would be fixed, but I don't know of a hackable function to do that, and in any case we might as well do the proper method :-). Ok, add these two keys:

targetname wall
use SUB_CalcMoveDone

That's pretty much it, SUB_CalcMoveDone sets the entity's origin to self.finaldest - but all brush based entities start at '0 0 0' regardless of their bounding box, so we don't have to set finaldest to anything. In fact, you might find some other creative use of this function on other entities, it's basically like a free teleport to self.finaldest. As an added bonus, the entity will then execute the function stored in self.think1.

One final thing, we've put this function in self.use, which doesn't get called automatically like self.think does, so we need another entity to call the think. Knock up a quick info_notnull with fields

think DelayThink
nextthink 0.4
target wall

As long as it thinks after the wall becomes invisible then it'll work, but you want to do it all fairly fast so the player can't encounter the wierd physics anomaly. Now, I'm gonna go play with this new function for a bit, see what else it can do... 
i am constantly amazed at the amount of hackery you can accomplish without touching a single line of code. 
As We Said At Office... 
It is not a bug, it is a feature ... 
Heh, cheers. I just should not have touched how id built it I think. Works like a charm, thanks. :) 
Hell Knights And Lava 
What is it that allows HellKnights to wade across knee deep lava but Ogres do not? 
bounding box and stuff... 
but monsters with large bboxes are more limited in movement. they require bigger surfaces for their movement checks. i don't exactly understand how the movement checks work, but that it has something to do with the size of the horizontal area of the bbox and the gap and heights. :S
i'm sure an engine coder could fill you in on the movetogoal code. 
Stupid Suggestion? 
If you make it so that the brush of lava is sticking up, and the ground is level across the boundary to the lava(so you have a random floating box of lava on a flat surface) will the ogre wade through it then? How about if you make some steps down into the lava as it is? The hellknight uses a different bounding box to the ogre(player size vs shambler size). So it might just be that hull 2 monsters get clipped again lava differently in the navigation algorithm.

On the other hand, I think it's more likely that the ogre is just too large to navigate the drop down into the lava in the first place(presumably if it's knee deep it's in a channel with a knee deep drop). For instance, in e3m2 you can get ogres to wade through the various pits of shallow lava there, and at the end of 3m6 the vores will walk through - they are also hull 2.

I've noticed there's a problem with models that have a hitbox larger than their physical hull for clipping and MOVETYPE_STEP. I think what happens is when the monster tries to move down the steps the hull moves over the edge of the step and so drops down. But then the engine tries to trace the bounding box to it's new position, and as it's larger than the bounding box it detects a collision on that, so the monster gets moved back up. The end result is a monster that hovers around the edge of a step without descending for a while - eventually it drops down when it moves far enough beyond the step in one go, so that the bounding box clears it too.

I don't know for sure that's what's happening in the engine, but I was having this problem with a monster until I shrunk the hitbox back to the hull size in the x-y plane, and then it stopped happening straight after that. Then again, I recall the ogre having a a fitting hitbox, so this probably isn't the exact problem you're encountering. 
Neg!ke, Necros, Preach 
I had placed the lava as a 'barrier' to monsters and as I had only tested it with Ogres, it seemed to work OK.

Then I decided that this area needed some more monsters and drafted-in a couple of HellKnights. It was a bit of a surprise when they suddenly jumped into the lava and waded across.

I suspect that you are all correct and that it is to do with the bbox: it is a narrow channel 96 units wide and the lava is 24 units deep, with a slight slope dropping four units.

Even without the lava, the ogres will not cross the gap but the HKs just stride straight across.

Oh well, as JPL said earlier, not a bug but a feature. I'll leave it in, maybe it will catch someone (who doesn't read this board). 
Or You Can Use Monsterclip 
The new tricks thread has how to create an invisible entity that blocks monsters but not players, in fact it seems to use the same tricks that have been causing problems for trinca. You create a brush with clip texture, and hide a regular textured brush in the wall below. Then make the pair of brushes into a func_wall. Because the clip part of the brush is outside the bounding box of the regular brush, it doesn't clip the player(or monsters moving by flight/ leaping).

However, as MOVETYPE_WALK is a rule unto itself, it actually takes notice of the clip brushes there and won't move monsters across. I have a theory that if you made a thin brush and had a monster that walks far enough to completely pass through the brush in one frame, it could skip the monsterclip. But I've not tested it, it's just intuition.

Now, this all started because the ogres were blocked by the lava but the hellknights weren't. What if you wanted to use monsterclip, but still have the hellknights able to pass through it? Or what if you wanted to reverse the situation and have only the hellknights blocked and not the ogres? Or make a visible func_wall that blocks the player but none of the monsters? It turns out all of these things and more are possible, and I'm gonna post how in the new tricks thread... 
afaik there is no limit to numportals anymore (at least in aguirRe's tools). 7700 is nothing to be worried about; the other limits are definately more important. 
could you tell me all the other limits as i've forgot them, been awhile since my last map, the new map feels smaller in away but is even more detailed then the last so i suppose i'll hit some limit sooner or later. 
Easy, Norm, Hard 
I am having trouble keeping tabs on all of my monsters in the editor. I was thinking of puting all monsters of each skill level into a separate Group so that I can work on each skill level independently by turning these Groups on and off as required. This would mean that if a monster was to appear in all three skill levels, I would have it three times in the map instead of once.

Clearly this would mean that for the sake of me having an easy time of it in the editor, I would 'bloat' the .map file and the .bsp file.

How bad would that be for a map that has (say) 100 on Easy, 150 on Norm and 200 on Hard: that's 450 monsters in the file instead of maybe 200 when using conventional methods i.e. using spawnflags?

Is there any effect on the engine or is it all down to file size? 
Bit Of Loading Time 
The skill setting flags are done engine side rather than QC side, so the entities aren't ever loaded into memory if they have the right spawnflag set. The only thing I'd think would result is a bit of a longer loading time as it checks all these monsters when the map loads - and that's going to be pretty fast. It will also bloat the bsp file, but not by a lot, the entire entity section of e1m2 is 40kb in size, and the bsp is 1.3mb. 
Thanks. In that case I'm taking the easy option. 
i don't know all limits by heard, but the ones you should watch out for primarely are marksurfaces and clipnodes (both 32k), as well as the entity limits (e.g. 128 static ents, 256 bmodels and so on) 
what couses this???

Sz_getspace: 8002 is > full buffer size

if map is in id1 drectory no problem... but in Quoth give me this error... any idear why? 
Too many entities. Reduce their number. Try to combine some b_models into one where possible. 
Btw Question 
why do I always get the message backup past 0 in one place in my map? AguirRe's engine, -developer 1 option.

And I get monster in wall message when monsters spawn high over ground (to avoid accident telefragging them).

Can anyone explain? AguirRe? 
i think the droptofloor doesn't drop monsters if they are too high above a floor, this means that when the monster is checked to see if it can walk or not (ie: stuck in the floor or not on the ground) it will return false, and thus give the error message.

this used to happen in quoth for spawning monsters from func_hordespawn, because i chose to not make spawning monsters droptofloor (in case you used flying monsters) but the error check would come back that they couldn't move (because quake physics hadn't started on them yet and made them fall to the floor). 
Backup past 0: I don't know, it happens occasionally without any obvious problems.

Monster in wall: I also don't know, if the monster behaves as desired, ignore the warning.

I think both things can be QC issues as well. 
Monster In Wall 
The monster in wall check is just like necros said, it's a QC side thing, in the function walkmonster_start_go. The way the QC tests for a monster stuck in a wall is to call walkmove(0,0), the function for walking monsters on the ground. This function returns a float value of 1 if the movement was successful and 0 if it wasn't. If the movement fails then the error message "walkmonster in wall at: " is printed.

The problem is that walkmove can fail(return 0) for three reasons. One is that the monster is stuck in a wall, which is the behaviour the code assumes. The second is if the monster can't physically move that far, like when there is a wall in the way. This cannot happen in this case though, as we are walking the monster 0 units. So you only end up in a wall if you started in one.

The third reason it can fail is if the monster isn't on the ground, as walkmove is only for monsters that are walking on a surface(surprisingly enough). So if the monster is spawned in the air it's going to fail this check. Usually the preceding line of code in walkmonster_start_go drops the monster to the floor first, but if your monster is too high to drop(more than 256 units above a surface) then it won't work.

Since you mentioned avoiding telefragging as the reason the monster is so high, there is another possibility why droptofloor isn't happening. I'm guessing that you're using some kind of spawnflag teleporting, rather than the ID setup of info_telport_destination and teleporters outside the level. Some code(mine included) modify walkmonster_start_go to ignore the droptofloor call - precisely for the reason you're giving, so that the monster teleports in from where they are placed, which is allowed to be in the sky. Of course, then the code should really skip the "monster in wall" check too, as it'll always fail even when the monsters are not stuck. I guess I should contact inside3d about correcting my teleport flag code then... 
for some reason remove_skip doesn't work on my map. it always stops after saying "bsp is version 29" without removing any faces. could this be related to fact that i'm very close to hitting the marksurfaces limit and have exceeded clipnodes by 10k? compiler is treeqbsp-bjp by the way. 
After Exceeding Maxsurfs Etc. 
skippy tends to trash the bsp and cause all many of problems. 
Oh Well 
i changed the object in question to a health trigger. thx 
Old Chestnut I Know, But... 
...I have just added 20+ monsters without making any changes to brushwork. Marksurfaces have risen from 31065 to 31665.

If marksurfaces are created as a result of the way the brushes are split in the qbsp stage, does it mean that monsters can cause a different split? And if so, is there a benefit to keeping monsters off of the ground in the mapping stage.

I ask because I have at least another 80 monsters to go and am in danger of exceeding the marksurface limit, and I want my map to be playable in FitzQuake.

(I am probably getting too tired/old to adhere to the critical technical disciplines of Quake mapping these days) 
If So, Easy Fix 
Compile the map one with all the monster entities in it and let it exceed marksurfaces. Use adquedit or similar to export the entity list to a .ent file. Compile the map again in it's current state(ie. with enough point entities stripped out to compile with marksurfaces under the limit). Then just import the ent file into that copy of the bsp. Equivalently you could do an -onlyents compile to add the monsters back in, and this might be a little easier to set up with batch files. 
monsters have no effect on the bsp tree :)

As for what caused your increase in marksurfaces, I have no idea. Are you sure you didn't do anything?

Also, I've heard rumors which I find very hard to believe that things like vis results are actually different based on the speed of your CPU and stuff... I really have a hard time accepting that the compiles are non-deterministic. But, I don't know everything, so :P 
once I noticed the same thing as Mike did. I exceeded the marksurfaces limit when placing monsters (no brush changes). Wise people told me that monsters don't affect marksurfaces, so I believed them.

Anyway, some maps with exceeded marksufaces limit can still be playable in fitzquake (and all the other engines I think). When I got the crash problem the first time I started making small changes to the map and tried it in the engine each time. After n attempts map started to load without problems. Though I still have no idea what was the case of the problem and solution.

It's kinda Quake mysticism. 
Another Question To Coder About Engine Messages 
I always get a message when I test my map on skill 2 (-developer 1 option, aguire's engine):


WTF is this? And why it appears only when I play on hard skill? I suppose that's because of a big ammount of monsters (>200), but I don't get it on skill 1 where monsters are only about 20-30 less. This message dissappears only closer to the end of the map after I kill about 150-170 monsters. 
th_stand is the standing animation for all monsters, and walkmonster_start_go is the function that gets called everytime a new monster is made to set up common stuff between all walking monsters...

but i've never seen error code like that in the qc, so it must be an engine thing... 
I doesn't cause any problems (at least I didn't notice them so far). It is just annoying message at the top of the screen. I just wanted to get some ideas of how can I get rid of it. 
Are you using a custom mod for this map, perhaps with a custom monster that only appears on hard skill? Those messages sound like the kind of thing I'd add to a monster when diagnosing a bug and trying to pin down where it occurs. 
It happens in my map that you've seen (beta1). But I think all custom monsters appear in all skills. So no new custom monsters on skill 2 that weren't on skill 1 
Didn't we discuss (and solve) this issue five months ago? It's a bug in the Arcane progs that I later sent you an update for. 
Ahh Whoops 
thought you were talking about stock id progs :)

yep, that'd certainly explain it. 
indeed, I forgot about it.

The thing is that I found another bug in progs and asked Preach to fix it, but I forgot that I was using your fixed version.

So I have two versions of arcane progs atm: the first - your version without crashing bug but with version with ammo bug and the second - Preach's version without ammo bug but with crashing bug.

I think you should contact with each other and make an ultimate version. 
Light Styles 
Are lights with "style" toggleable? And if not, has some clever person devised a 'hack' to make them so.

I am sure I remember this cropping up quite recently but I can't seem to find anything. 
Possible With Qc 
but no way to do with in stock progs, afaik.

toggleable lights have a unique style for every different toggle light (set by the light.exe), which is set to a single light level and only goes from on to off in the progs. 
QC Code 
How I suggested to do this last time it came up can be found on the following page:

But yeah, you need a custom progs to do it. 
Necros, Preach 
I Pose A Question For The Quake Geniuses 
Hub-style level transitions.

cool, you're still reading.

For a real useful implementation you'd (I'd) want:
o persistent entity states upon returning to a map
o a set of global flags for triggering things across maps
o the final exit trigger to display the intermission with stats for all levels totaled (or even broken down)

What would be necessary for such a thing? There's a lot to do in QC, of course. But QC doesn't have control over saves IIRC - so you would be required to mess around with the engine, no? And if you're messing with the engine, why not just up the limits to allow the whole map in one huge BSP instead?

(the answer to that being, of course, compile time on the map, and ease of messing with savegame code vs. difficulty of raising all internal limits).

So assuming one is not above including an .exe with his maps, what's involved?

I would think the following but go ahead and argue with me cuz I'm dumb:
o Bunch of stuff stuck into the player struct for preserving cross-level trigger flags, and filenames of temp saves used to track recently visited bsp's
o Bunch of additions to endlevel trigger to handle preserving vs. dropping cross-level information, and stashing away level state in a savegame file
o Bunch of additions to player spawning functions to handle preservation of keys and stuff, and correct location within the map based on previous exit trigger 
Good Question 
i'm interested in this issue too.
some old rpg/adventure-style mod (don't remember the title) had some sort of hub code even back in 1997 or so. but i think it didn't have a 'final intermission' summarizing the stats of all maps... 
some old rpg/adventure-style mod (don't remember the title) had some sort of hub code even back in 1997 or so.

The Demon King 
Don't Know About Engine Stuffs, 
but there's is a limited amount of what you are saying in quoth. basically, you can make it save the monster count from previous levels and tally up a total count after a bunch of maps and to also retain certain keys between maps, instead of resetting it. also, there's the mapindex to close off maps after you played them in the start map.

basically, it's just passing numbers from map to map via the parm# floats. monster counts are straight floats, keys and mapblocking are handled with bitflags.

thing is, there are only 15 parm variables, i think. if you were making a new .exe, you could just up the amount of variables passed from map to map, so you could carry along whatever you could possibly need, and just store map settings in variables on the player.

but if you're modifying the exe, you could probably get rid of all this hackery, and make a proper hub engine i suppose... 
Hexen2 which is directly based off Quake has a hub system.

IIRC there's nothing stopping you from looking at the code. I know that there is an open-source Linux port. 
Here It Is 
Hammer of Thyrion

Hexen2 port for Unix, Mac and Windows

why not email the devs there? they're pretty active. 
I seem to remember there being an experimental codebase for having a hub using the old (now I beleive not even managed) MHQuake engine. It involved using the FRIK_FILE qc extension (requires engine support also) to automagically save all state changes between individual bsp loads.

oh, and since it's relevant: 
What A Plonker! 
Without going in to too much detail (it's too embarrassing) I have 'lost' my heavily modified progs.dat.

I have managed to replicate most of it as I kept sources and had notes for my own ideas but I am stuck on one thing: I had monsters who were spawned-in being angry regardless of whether they could see the player. I have an 'angry' flag on the monster (spawnflag = 8) but cannot figure out what actually made him angry when he landed.

I've played with FindTarget and FoundTarget but am getting nowhere. I cannot remember where I got this idea from but as I have added the angry flag to every monster, I must have had something working originally.

Is there any chance that someone knows what I am talking about? 
add this into walkmonster_start_go (and the other ones) at the end. add an if check for the angry flag.

self.enemy = activator;
obviously, this means it will only work with a monster that has been triggered to spawn, since a monster that is spawned normally won't have an activator. 
Append 2: 
this also assumes you are running the walkmonster_start function after spawning the monster... if you use the hipnotic method of creating a monster (spawn the monster, but set it invisible without running walkmonster_start, then copying the monster and making the copy run walkmonster_start) it won't work either.

difficult to say without knowing how your spawning works. 
I'm using PreachSpawn_v1.0, ("style" "1") so you got the right idea.

'self.enemy = activator;', doh!

As always, thanks for your help. 
Mark Surfaces Again 
Still having problems with fluctuating marksurfaces.

Please see attached file showing editor view, in-game normal and in-game showtris2.

Can anyone explain, or better still tell me how to avoid, the mashing of my brushes? 
a screenshot showing r_drawflat would be better, since showtris outlines the triangles drawn by the video card, but drawflat shows the polygons created by QBSP more clearly.

As for what's making those cuts, I don't know. Sometimes there's an obvious bit of brushwork nearby that can explain it. QBSP is still a mystery to me. 
Take 2 
Just for completeness:

the ceiling is one brush with nothing else attached above i.e. it touches the void. The 'curve' that we see does not reflect any brushwork on the other side of the visible brushwork. The right-hand wall also touches the void.

With marksurfaces bobbling around 32K and a desire to ensure the map works with FQ, I find myself having to remove trim. I have already cut the map in half and it would defeat the object to split it any more. 
can you force qbsp to split the brush the way you want by first shaping the brushes in the proper pattern, then doing a texture shift of 1 unit difference on each brush so that qbsp doesn't combine them? 
Just For Fun 
I removed the 3 brushes that gave me a curved corner, and this was the result:

---- WriteBSPFile ----
Before After
10568 10559 planes
32563 32164 vertexes
13300 13015 nodes
3107 3106 texinfo
25959 25429 faces
24486 25105 clipnodes
7356 7261 leafs
32165 31634 marksurfaces
119337 117378 surfedges
60330 59343 edges
145 145 textures

Increased clipnodes and decreased marksurfaces.

If anyone has not yet fallen asleep, what have we learned here?

No, I don't know either. Oh well; plug on, plug on. 
The thing is that these are pretty much single brushes: the wall behind the ammo is one, the ceiling is one the two faces are one etc.

Is there an optimum size that qbsp likes to find? (although I would hate to map to specific sized brushes, so perhaps I don't want to know that)

I'm just going drop some more monsters in and then call it a day. 
TreeQBSP Users 
Thanks to ORL, I've found a bug in Tree when having >32k clipnodes that corrupts the clipnode information.

Hopefully I've fixed the bug now, but I recommend switching to TxQBSP permanently as it doesn't have this bug. 
but there is no way to have opaque water and solid sky with txqbsp... 
TxQBSP even for QuArK users? I remember TreeQBSP was recommended for us (if I am not wrong). 
TxQBSP run fine even with QuArK... It is just an external program to call from QuArK, and has nothing to do with the editor. Maybe only the saved map format could have an effect (i.e V220, etc..) and I'm not sure about that point.

FYI, I'm currently using QuArK 6.5.0-alpha2 with aguirRe's TxQBSP, aguirRe's VIS, and a aguirRe's modified TyrLight ... and all the stuff works fine ... 
i got same as JPL but QuArK 6.5.0-alpha8 new version of quark :\ suck :((( dont compile my base map :( give lots of errors :( leaks everywehere and say stuff like maxsufarces limit bla bla bla :) errrr i will keep this version a lottttttttttt 
There was something wrong with the new version, they released a bugfixed build.

JPL: It was something with the map format QuArK writes, maybe with the .12345 floating point stuff or something. Dunno. 
thks Spirit_ i think i will stick to this version a litle wile :) is perfect for me!!!

;) i dont have problems at all, despist other poeple say Quark owns!


ban worldcraft :p 
can have opaque liquids, just add -nowatervis. I don't know what you mean by solid sky, both compilers use CONTENTS_SKY for sky.

Tx was originally the *only* compiler for QuArK so it'd better work with it ... ;) 
Door Sounds 
I haven't full vis'd my map yet and get plenty of packet overflows, which I'm not too concerned about.

But would this also account for occasional door opening sounds playing continuously: not every door and not every time? 
packet overflows often result in dropped sounds 
Thanks, I'll carry on not being too concerned then. 
Rocks Rock 
just a short question: does anyone know a good tutorial on making good looking rocks? (i don't mean terrain via triangle method, which i already use) i mean rocks like in kona's maps for example. thanx 
More Qc 
How might I emulate ai_forward(x); without using the walkmove function?

I want to move a monster in its forward direction x units where the direction has to be found AND he may be stuck in a wall (which is where the walkmove function (correctly) exits with FALSE).

I guess I can change self.origin but am stumped on how to calculate the new origin taking an unknown direction into account.

Any offers? 
if you set the movetype to MOVETYPE_NOCLIP, does it still abort? with that movetype, the monster wouldn't collide with anything, so walkmove would possibly not abort? 
Collision Of Your New Monster 
You've said that the monster may be stuck in a wall at the start of the move, but how should it end the move? Is it ok for the monster to, for instance, be stuck inside another wall? Or inside other entities, possibly including the player? If you're doing some kind of ghostlike creature, that doesn't care about intersecting anything, then the crude way to emulate walkmove would be

setorigin(self, self.origin + v_forward * x);

but that's going to do no collision checking, and also move your monster in discrete steps. Of course, in basic quake walkmove moves a monster in discrete steps, but in engines with motion interpolation this usually gets smoothed out. So a better way might be:

self.velocity = 0.1 * x * v_forward;

assuming that the monster is going to think in 0.1 seconds time. You must make sure that the following think function either resets the velocity or gives it a new one.

Both of these functions are going to plow the monster straight forwards, so make sure they face the right way first(possibly with ai_face();)
For the velocity one you'll also need to give the monster a movetype that accepts velocity(eg MOVETYPE_NOCLIP). Finally, these functions don't think about the vertical, and the monster won't follow a floor(how could it if it's in a wall...). So there's still a lot to think about. 
Yes, I did try changing the movetype but the walkmove function ignores that. I can't fault that as once the game is underway you wouldn't expect to find a monster in a wall. 
what exactly is needed? when you say it needs to find a direction, you mean it needs to be using AI to track towards the player? 
if you just want it to move forward in whatever direction it's facing, preach's method will work absolutely fine, btw. 
I can ensure that the monster will move into clear space and that he will be on the floor even if he is partly in a wall, and I only want him to move in his forward direction. I can also ensure that he will not collide with either the player or another monster while he is moving.

I will move him only one or two units per animation frame and I have time to ensure that his animation will be complete before any interaction is required.

I'll play with the setorigin version and let you know how I get on.

Thanks both of you. 
Hey Efdat, 
your inquiry kind of got lost up there. I assume you mean the effect Kona commonly uses that blends rock material with building surfaces. This is done the same way that landscapes are handled in Radiant (without the terragen plug-in), except using a vertical surface instead of a horizontal and the end is tapered where you join the surfaces.

I recall a tutorial being linked on on how to accomplish this technique, but the site that I was looking (leaf-node) for is no longer available.

The way it is accomplished in Radiant (doesn't work in 1.5, you have to use
earlier versions) though is to make a square or rectangle and duplicate it.
Point your cursor on the side you want to manipulate on the duplicate block, press the left mouse button and cntrl key together and pull in the direction you want it to go. From there it is a matter of aligning several blocks together in a pleasing manner. 
thanks, i'm gonna try to port those instructions to QuESt (the good old :) i'm afraid that that's the way i'm already doing it (vertical triangles) and i simply have a lack of creative imagination for rock forms. i often have problems with working from a simple brush to natural forms. i thought there might be some kind of standard method that could help me there... 
Don't expect too much from yourself. You don't have to use too many triangles to make it look good. Use pretty large triangles. Make some wedge-shaped faces and some pentangle-shaped... some rock pillars... make some slanted floors and ceilings... just no 90 degree angles. If there are places where the seams look bad, cover it up with a pillar or something. Let the textures and lighting do the work; don't make your rock too detailed and don't light it up like a Yule tree. Break up walls horizontally or vertically into several brushes. Another idea is to build a framework of pillars and iron beams, and put the rock between those. It will look as if the pillars are set into the rock. Small, shallow pools of water are helpful to cover up less-than-imaginative rock formations, too.

I'm making rocks atm for my dm4 remake (I settled on mine theme) and I have those problems a lot.

Mine levels in Q2/Ground zero are really pretty inspiring. I often wonder how little you can get away with. 
Movlight How ? 
I downloaded the by Marc Fontaine. A modification of a func_train to use for a moving light source in Quake, but
I didn`t get it working. (I use QuArK)
Can somebody help me ? 
D3 Map Compile Times 
what are average times for a map of say, 1k brushes, 500, 4k?

i have this tiny map which is taking forever to compile. i think it's about 500 brushes, possibly less.

i thought the whole point of d3 was that compiling takes a lot less time...

windows reports d3 is using cpu cycles for something, and it's certainly eating up ram... does it just crash without telling you and stay frozen, pretending to compile? :P

btw, no monsters in it, so it's not making any aas files either. 
i post to fast >_< just figured out what the deal is... apparently, i'm not doing skyportals right. :P 
I'm sure someone can help but you need to give more information e.g. have you set up a light_move entity with path_corners, are you using the revised progs.dat or have you incorporated the qc files into your own progs.dat, is anything happening and if so, what?

Also, what is your expectation for this - it doesn't light up the room as it moves around, it is simply a moving light source: basically a glowing blob that moves. 
thanks for your answer. I`m a absolute beginner and had the idea of a moving light that lit up the walls while moving, but after some googling for that, I found out that it is very hard or probably not possible at all. This (found in the ID-Database) has an example map, but that has only a moving sprite, not a real light. Today I thought maybe the misc_fireball is something to use for this, but I`m not a programmer. I think this qc-stuff is to heavy for me.

What is the revised progs.dat ? 
OK, the moving sprite is all that happens. I don't know of any way of lighting walls and ceilings in the way a hand-torch would light a dark scene, which I suspect that is what you are looking for.

The revised progs.dat that I referred to was supplied in the and needs to be used in place of the standard progs.dat. It contains the necessary compiled .qc files for movelight to work in-game.

The standard way of using these modifications is to set up a separate folder inside your Quake folder e.g. c:\Games\quake\movelight, and extract the files from the zip file into that. Then start Quake with the command -game movelight +map light. 
hi ladies!

i�m trying to make a .qkr file for Quoth,this way Quark can load the entaties, but when i open the addon in Quark dont reconmize the size that monsters ocupied :\ any help?

just made for two monster�s to test!!! i like Quoth mode a lot and i want to map more for it! so this might be nice when is finish :) and maby someone will find it nice also :| 
Yes, that was exactly the way I tested this "light-map", but as I say, it was only a moving sprite, not a light.

But this lava-blobs are looking like a moving light ( or is it just a fake ?), and if it is really a moving light, it must be possible to change this extension (qc.file) to something new, where you can choose the direction, speed, distance, etc... (in the editor)
Than you have a mov_light extension. Of course you have to compile a custon progs.dat to get it working.

Or did I talk nonsense, I don`t know ? 
Stop me if I'm wrong, but what you're saying is that you'd like an entity which emits light in the same way as a lavaball or a missile does - a small ball of dynamic bright light. The only difference is that you would like to be able to move this light like a func_train. If this is what you want, then this can be done fairly easily. 
Sounds great. Thats exatly what I&#180;m looking for ! 
Something Wrong .... 
should mean > exactly what I&#180;m looking for! 
Wrong Again ? 
looks like the apostrophe did not work.
so once again
Thats what I am looking for !!! 
The movelight is an s_null.spr with an EF_BRIGHTLIGHT effects.

void() light_move =
if (!self.speed)
self.speed = 128;
if (!
objerror ("light_move without a target");

self.noise = ("misc/null.wav");
precache_sound ("misc/null.wav");
self.noise1 = ("misc/null.wav");
precache_sound ("misc/null.wav");

self.cnt = 1;
self.effects = EF_BRIGHTLIGHT;
self.solid = SOLID_NOT;
self.movetype = MOVETYPE_PUSH;
self.use = train_use;
self.classname = "movelight";
self.avelocity = '50 50 50';

precache_model ("progs/s_null.spr");
setmodel (self, "progs/s_null.spr");
setsize (self, '0 0 0', '0 0 0');
setorigin (self, self.origin);

self.nextthink = self.ltime + 0.1;
self.think = func_train_find;

It is therefore a dynamic light in as much as it moves by use of path_corners but it doesn't dynamically light the set as it moves e.g. the flashlight in HalfLife. I think this is what jiri_b is after. 
could you just make a regular func_train, give it the ef_brightlight .effect and use a skip texture on a 1x1x1 cube? wouldn't need any qc for that 
Necros' Solution 
Sounds about right, I'm trying to see if there's a way to make one that's also non solid. I think there is but it may be one of those hacks that's more trouble than it's worth. I'll see...

Otherwise that mod is the way to go, notice how in that code the entity is given a sprite s_null.spr. This is because an entity with no model does not get sent over the network, so clients won't see the light updating position. 
Good news for QuArK/Quoth users ! 
Good luck. I started that once but gave up early because it was so much work. Haven't got the files anymore, sorry. 
I'm playing with the Vermis in a small test map and notice that he doesn't follow me (shooting) once I drop below a certain point: he just keeps firing at where I was. I'm no_clipping around the map just to get an idea of what he does.

Is there a specific number of units involved e.g. x units below his centre of origin?

Also, is the spread of the missiles adjustable as if you are too far away you can just sit there and they always seem to miss. Perhaps it is a case that he only fits a certain kind of environment spacewise? 
Perhaps it is a case that he only fits a certain kind of environment spacewise.

exactly right. he, like all monsters, shoot in a cone around his fov. but unlike other monsters, his vertical size is massive, so you'll notice how he won't be able to shoot you when down around his 'waist'.

and yes, his projectile spread is constant. after a certain range, the spores stop being a threat.

designing an area for the vermis really is a matter of plopping him in first, and building the area around him.

if your map has the vermis exposed all the way down to the bottom of the model, you'll need to keep the player away from it because he won't be able to attack you or grab you. on the other hand, if you keep him at grab height, then you can let him get as close to the vermis as you want. 
necros check your email 
Moving Light Again 
I tried the easy solution by necros, without qc, but could not get anything working. First tried it with a func_train, but without success. Than thought maybe better start simple and tried to built a fixed light and failed again.
Not shure if I set up everything right in quark.
Here is a screen of the setting.
Whats wrong? help 
I once had a complete varation of all the possible moving light types, I'm searching...

please give me a link to the and I'll explain. 
Found Them 
here you go...

if you need help, ask me. 
:) Thanks 
You're Welcome 
I didn't use the altered progs.dat and it still worked.

only effects 1 and 8 were really interesting.
I saw in the readme you can change the muzzle_bright in other options.
Qspecks can tell you which number to use. 
Sky Lighting 
I have a sky emitting light throughout a level, but in one specific area, I'd rather it didn't, anyone know of a trick to achieve this? (And no removing the sky light and using lots of point entities instead is not an option). 
I think it is possible by adding a polygon within the sky brush, at least if the sky brush is thick enough to insert something inside it. I'm not sure but I think it is the way Quake shadow logo is produced in some Quake Level... 
Right, I remembered there was some trick like that, will try it out, thanks! =)

Anyone know any vis that supports dual cpu and dual core machines? 
I already asked aguiRe on that point some months ago.. aguirRe told me the very first vis.exe Id "release" was unix oriented and was supporting dual CPU usage. Unfortunately, he didn't think that any nowadays vis.exe is supporting dual CPU any more.
Maybe it will come back soon, as many brand new PCs have now dual CPU/core, that could support such a feature...
I think aguirRe would have better infos than me on that point ;P 
the quake logo shadow thing only works because the skylight is simulated using a point light entity above the shadow casting brush.

I think Bal is using the light emitting sky texture thing.

Is there a way to fudge a sky texture's name so that it behaves like a sky but the light compiler doesn't register it as one?

Hmm. what if you compiled the level with a dummy texture for your fake sky so that the light compiler didn't treat it as sky, then replaced the dummy texture afterwards in the bsp using TexMex? I have no idea if that would work correctly but it's probably worth a shot. 
Yeah good point, probably wouldn't work with the brush technique... Will try switching the textures after it's lit, thanks for the idea. 
Sky Texture 
I expect that the texture switch will work with just one problem - the surface won't be marked as CONTENT_SKY. This means that rockets that hit the surface will explode rather than being removed, and other similar effects. I'd imagine that the texture will still render correctly though. You can see the same thing happens in DM3 as it was compiled with an out of date version of the bsp tools. 
I still haven't tried any of this as I'm still at work...
But considering my sky is just pitch black in that area, any trick to simulating a false sky? some pitch black liquid maybe? 
try the dummy light trick with a negative light instead, and darken the regular sky texture for that section of the sky. 
Non Sky Content 
Is it really a problem that the sky isn't truely a skybrush though? All the ID maps have this behaviour and don't seem to suffer for it, so I'd still say use Kinn's suggestion unless it causes a problem. It was just meant to be a quick warning in case it is important. Black water brushes would do a pretty good job of simulating sky if it does matter, the thicker you can make it the more likely it will be that the sound isn't audible. 
Nah Wont Work, 
only one sky will show 
I Mean 
only one sky will show

My suggestion. I didn't see Preach's answer that fallowed until now. 
Nehahra Engine / Transparent Objects 
Did I need special build-tools to compile a map for nehahra?
At the moment I use txqbsp, rvis and tyrlite for fitzquake compiling
and it worked fine.
But for the neh-engine, Iam not satisfied, because the test-map is to dark and the brush that should be transparent, is not transparent at all.
Did I need other built-tools and other additional command-line settings
for this engine? 
Nehahra Engine / Transparent Objects 
Did I need special build-tools to compile a map for nehahra?
At the moment I use txqbsp, rvis and tyrlite for fitzquake compiling
and it worked fine.
But for the neh-engine, Iam not satisfied, because the test-map is to dark and the brush that should be transparent, is not transparent at all.
Did I need other built-tools and other additional command-line settings
for this engine? 
No you don't need any specific tools for Nehahra maps, just place the right entities in your map (according to the devkit documentation), and it should all work fine once in Nehahra.
Map too dark is probably just cause the engine is configured differently. 
Thanks for your help. You are right
the engine was wrong configured. 
Preach / Anyone 
I wanted to take a look at the teaching old progs thread but can�t view all threads.

What�s the specific key setup to create an explosive info_notnull?

It may be easier to just post the link direct to the thread.

Here You Go: 
Now For Destruction 
I Prefer Affliction 
Or Deriliction? 
Transparent Textures 
is it somehow possible to have partial transparent textures in q1 like in half-life? 
not in stock quake. it can be done in tomaz quake with tga textures and alpha channels, but i don't know about any other ports. 
ok - than I built my map without tansparent textures,
because I prefer fitzquake.
necros - thanks for your answer anyway 
Weird Ingame Issue With XP 
I have a strange behaviour with my office PC labtop. I installed FitzQuake and the rendering is quite weird. When the game is launched, there are some weird HOMs-like and flickering effects everywhere... I have to type Ctrl+escape to return to XP, and then click onto the reduced FitzQuake window to return to a "normal" behaviour. So I decided to try also aguirRe's GL Quake, and the game never started (black screen... and Ctrl+Alt+Del to stop it at the end...)
I guess it comes from some missing options I have to set, but which option(s)?: that is the question... Anybody already faced this issue ? Any idea(s) that could help ? 
A Sound Question 
Can someone clarify this for me:-

There are 8 channels for sound. If I am playing a sound on CHAN_VOICE, can that sound be stopped mid-stream other than using another sound (or null.wav) on CHAN_VOICE. Put another way, if I end up calling more than 8 sounds to play at the same time, will the last sound called 'overwrite' an earlier one.

I am not clear on the use of the sound channels and cannot find much in the way of explanation. I have some Quake C Definitions that show:-

CHAN_AUTO = 0; // Create a new sound
CHAN_WEAPON = 1; // Replace entitie's weapon noise
CHAN_VOICE = 2; // Replace entitie's voice
CHAN_ITEM = 3; // Replace entitie's item noise
CHAN_BODY = 4; // Replace entitie's body noise

For example, should I use CHAN_AUTO or CHAN_VOICE for music. What does it mean by 'create' and 'replace'?

Any pointers? 
FQ failed to load a map and gave a SZ_GETSPACE: OVERFLOW error but didn't crash.

Does this imply that I'm only just over the limit? I had just added 4 ammo packs and 3 health packs, all of which are transported-in after the map starts (player lands on trigger as the map opens). 
I don't know about CHAN_AUTO, but the other channels will kill any previous sound playing on the same channel.

This is useful if, for example, the guy is in the middle of talking and you want him to yelp in pain. It makes no sense to hear them both at the same time.

Regarding the engine stuff, I have no clue. I forgot what SZ_GETSPACE: OVERFLOW means. I think it has something to do with allocating space for strings, and maybe this includes the entire entities string from the bsp, which might have just gone over the limit by adding the boxes? I'd ask Aguirre for sure. 
Sound Channels 
each entity can have up to 8 channels (?) through which sound can play.

if a sound is told to play on a channel where a sound is already being played, it gets overrode with the new sound.

CHAN_AUTO (0) picks any free channel automatically. 
I notice that CHAN_AUTO is not used very often (8 times in ID';s original) but CHAN_VOICE is used by every monster, the player, door, client and ai.

Does that suggest that CHAN_AUTO is less likely to be overridden and is a better option than CHAN_VOICE.

But could it also mean that if we have (say) 8 weapon firing monsters coming at the player, who is firing his nail gun constantly whilst standing next to two wall torches, near an ambient wind noise, when he activates a trigger that calls a CHAN_AUTO that that sound won't play because there are no spare channels?

I have a global sound that stops mid-stream for no apparent reason other than at the time, there is quite a bit going on. I'm looking for a way to maintain that sound regardless of any other sound that may be called.

For example, if I have a base level and the player has activated an alarm that spawns a steady stream of defenders, I want the alarm to continue regardless of everything else, until the player finds the silence button, which then stops the spawning. If I allow the alarm to go silent too early, the player won't understand what is happening - suitable messages will have told the player what the alarm means.

(That kind of gives the game away, so this message will self-destruct in 15 seconds) 
this message will self-destruct in 15 seconds

But only if the sound does not get overridden. :P 
.MAP Format And Brush Grouping 
I'm writing a program that will generate a .MAP file. I'm like to group some brushes. I noticed that in Worldcraft 1.6a, the .MAP file does not have any grouping info but the .RMF appears to. Is it possible to have grouping info in a Quake 1.x .MAP file? If not, does anyone know the breakdown of the .RMF format?

That should be "I'd like to group some brushes." 
I guess some compilers support func_group, but there's no real way of grouping anything in the .MAP format.
.RMF is a binary format that as far as I know noone has bothered figured out how works. Checking it out in a hex editor it looks like just serialized stuff, I'm sure it could be figured out one had the dedication. 
Looping Siren 
It might be best if you made the siren sound a non looping file, and then made the entity repeatedly play the sound at the same interval as the loop did. That way even if the sound was occasionally overridden by other noises, it should keep returning. 
Good idea. 
If you only want the Group information in the .map file (and visible in the editor as a different colour outline of the brushes) then BspEditor has that facility.

Example brush from the .map file:
//"0007" "0"
( -128 -512 -48 ) ( -256 -512 -64 ) ( -256 -512 0 ) ROCK18 0 0 90 1.0 1.0
( -256 -512 0 ) ( -256 -384 -48 ) ( -128 -512 -48 ) ROCK18 0 0 90 1.0 1.0
( -128 -256 -64 ) ( -256 -384 -64 ) ( -128 -384 -64 ) ROCK18 0 0 90 1.0 1.0
( -256 -512 0 ) ( -256 -384 -64 ) ( -256 -384 -48 ) ROCK18 0 0 90 1.0 1.0
( -128 -512 -48 ) ( -256 -384 -48 ) ( -256 -384 -64 ) ROCK18 0 0 90 1.0 1.0

The "0007" is the Group number and the Group's Index is part of the header information, which gives the Group's name as used in the editor.

In this particular example, the Group's number is 7, which I called Island in the editor and coloured it green. I have 25 Groups in this map (not all of which are different coulours) and I switch off any Group that I'm not working on in the display although the editor saves all Groups at every save regardless of the display.

If that helps? 
Mike Woodham 
Hi Mike:

Thanks for your help. Just two questions.
So "0007" is the group number. Is "0" the group index? That is, if I have 25 groups, will the group indicies be 0 to 24? Can the group number be any number?

Where can I get the BspEditor you use? I don't want to get the wrong one.

In my example "0007" is the Group number but I do not know what the "0" is. The index I referred to is a list of the Groups used. Here are the first 9 lines of the file that I used in the example earlier:-

//BSPGROUPINFO"None" "255 255 255" "0"
//BSPGROUPINFO"monsters_easy_only" "192 192 192" "0"
//BSPGROUPINFO"monsters_norm_only" "192 192 192" "0"
//BSPGROUPINFO"monsters_hard_only" "192 192 192" "0"
//BSPGROUPINFO"first_area" "255 128 128" "1"
//BSPGROUPINFO"cave1" "0 255 128" "0"
//BSPGROUPINFO"clip" "255 0 255" "0"
//BSPGROUPINFO"island" "128 255 128" "1"

The first line shows that I have 26 Groups. They are numbered 0 to 25. The first Group is by default called "None" although it can be renamed but it will always be numbered as zero.

The set of three numbers "255 255 255" refer to the outline colour in the editor, in this case it is the default white. I then created the other Groups that you see. I don't know what the last "0" is.

You will find BspEditor here

If you use the contact button there, the guy who has updated the editor will respond and will be able to give you much more technical answers than I can - I am just a user. 
each entity has it's own sound channels, and the game has a maximum number of channels for sounds.

one entity with a sound playing on channel 1 won't override another entity with a sound playing on channel 1.

but having one entity start sounds on the same channel is useful, for example on doors. that's how they stop the looping sound when a door stops moving, by playing the stop sound on the same channel.

i don't know how many channels the game itself has, but it's not a lot. there may be priority on channels, but i'm not sure. it could just go by which sound was started first. but yeah, if you have any long sound, make sure it's not looped and manually play it again via qc to make sure it never gets cut off.

i believe ambient sounds, started at map load time never cut out, but that's just because i've never noticed that happen. 
I made a mine lamp and wanted to add it as a b_model. But its a *.mdl file.

Is there a program that can make a bsp of it? 
Make sure to add -condebug +developer 1 to engine cmd line and inspect qconsole.log after you've run the engine. What does it say?

What gfx card and OpenGL version is it? Does WinQuake run on it? Does any other OpenGL app run on it? 
I have +developer 1 cvar for sure, but I'm not sure about -condebug. I'm not also sure about gfx card, and openGL version, I have to check it.
I also don't know if another OpenGL application is running at the same time...
Nevertheless, WinQuake is working fine.. while very slow with my current project... (i.e very choppy)
I'll verify all these things by monday, and give you feedback then. 
Lightmap Editing 
I'm just wondering if there is any lightmap editor available for q1 format maps. Is it possible to extract the lightmap to images and reimport them into the bsp at all? All I really need is a tool that can increase the brightness whilst still keeping contrast, so a light scale operation would probably also work, but I don't think there are any utils that will do that for me. Does anyone know of anything that can help me? All my maps are too dark on other people's computers because I have such a bright screen... 
I don't see anything strange compared to what happened with my home PC in the console. Maybe the 2nd line message that says wipx_init: unable to open control socket but I'm not sure...
I guess it is a WinXP issue... Nevertheless, what should I focus on that could help me to solve this issue ? 
Gamma correction was designed to compensate for different monitor brightnesses. Have you tried that? 
Since you claim that my engine won't start properly, the log should show where it crashes (if it does crash, that is).

I asked for a couple of things before, where are the answers? I can't say anything without a lot more information. 
I guess so, but it doesn't work on all glquake engines, and some people bitch a lot if a map is too dark on their screens. 
OK, sorry for this, but as I'm at office, it is a little bit tricky for me to "play" cause I'm in an open space.. and everybody could see me... :(

Nevertheless, here are the characteristics of the labtop:
CPU: Genuine Intel CPU T2500@2.oGHz
VCard: Intel 945GM Express Chipset Family
OpenGL Version: Not known but DirectX8 is installed (BTW our IT engineer seemed surprised I mentioned OpenGL for WinXP... where could I pick this information ?)

BTW, I just made a small test with glquake131, and the game get stucked at the beginning (no possibility to move at all...), and I had to reset and restart the computer...

Oh and here is the qconsole.log

Console initialized.
Winsock TCP/IP Initialized
WIPX_Init: Unable to open control socket
Exe: 00:10:49 May 26 2005
32.0 megabyte heap
Video mode 1280x720x16 60Hz initialized
FOUND: ARB_multitexture
FOUND: ARB_texture_env_combine
FOUND: WGL_EXT_swap_control
FOUND: EXT_texture_filter_anisotropic
Sound Initialization
Set primary sound buffer format: yes
Using secondary sound buffer
2 channel(s)
16 bits/sample
11025 bytes/sec
DirectSound initialized
Sound sampling rate: 11025
CDAudio_Init: No CD in player.
CD Audio Initialized

joystick not found -- no valid joysticks (a5)

========= Quake Initialized =========

execing quake.rc
execing default.cfg
execing config.cfg
execing autoexec.cfg
Unknown command "gl_texquality"
Unknown command "r_interpolate_model_weapon"
SpawnServer: start
Clearing memory
Programs occupy 405K.
meshing progs/player.mdl...
408 tri 628 vert 1367 cmd
meshing progs/eyes.mdl...
16 tri 24 vert 53 cmd
meshing progs/h_player.mdl...
40 tri 64 vert 141 cmd
meshing progs/gib1.mdl...
28 tri 46 vert 102 cmd
meshing progs/gib2.mdl...
82 tri 138 vert 305 cmd
meshing progs/gib3.mdl...
20 tri 32 vert 71 cmd
meshing progs/v_axe.mdl...
184 tri 288 vert 629 cmd
meshing progs/v_shot.mdl...
128 tri 190 vert 412 cmd
meshing progs/v_nail.mdl...
188 tri 312 vert 687 cmd
meshing progs/v_rock.mdl...
54 tri 86 vert 189 cmd
meshing progs/v_shot2.mdl...
152 tri 250 vert 550 cmd
meshing progs/v_nail2.mdl...
190 tri 302 vert 661 cmd
meshing progs/v_rock2.mdl...
124 tri 204 vert 449 cmd
meshing progs/bolt.mdl...
26 tri 52 vert 118 cmd
meshing progs/bolt2.mdl...
26 tri 40 vert 88 cmd
meshing progs/bolt3.mdl...
26 tri 40 vert 88 cmd
meshing progs/lavaball.mdl...
20 tri 32 vert 71 cmd
meshing progs/missile.mdl...
58 tri 100 vert 222 cmd
meshing progs/grenade.mdl...
14 tri 24 vert 54 cmd
meshing progs/spike.mdl...
4 tri 8 vert 19 cmd
meshing progs/s_spike.mdl...
4 tri 8 vert 19 cmd
meshing progs/backpack.mdl...
110 tri 160 vert 346 cmd
meshing progs/zom_gib.mdl...
20 tri 32 vert 71 cmd
meshing progs/v_light.mdl...
172 tri 282 vert 620 cmd
meshing progs/flame2.mdl...
86 tri 140 vert 308 cmd
meshing progs/flame.mdl...
122 tri 198 vert 435 cmd
meshing progs/zombie.mdl...
347 tri 559 vert 1225 cmd
meshing progs/h_zombie.mdl...
49 tri 73 vert 159 cmd
40 entities inhibited
trigger_teleport, target 't11' has no target
Server spawned.
CL_EstablishConnection: connected to local
3 demo(s) in loop
Client LOCAL connected

VERSION 1.09 SERVER (4223 CRC)Serverinfo packet received.


CDAudio: drive not ready
CL_SignonReply: 1
CL_SignonReply: 2
CL_SignonReply: 3
26.3 megabyte data cache
CL_SignonReply: 4
Sending clc_disconnect
VID_Gamma_Restore: failed on SetDeviceGammaRamp

Hope it is enough :) 
Comments to the info; I've heard Intel onboard chips (and/or drivers) are terrible for gaming, so that might be the reason. OpenGL info should be obtainable from the desktop RMB configuration (advanced). Maybe newer (or older) drivers are available from Intel?

If you had listed the qconsole.log contents from the run of my GLQuake instead of Fitz, you'd also known the GL-version ;) Didn't you get any log from my run?

You could try adding option -nomtex to see if that makes any difference. Try also -window to see if window operation is possible and use desktop resolution.

Have you tried another OpenGL app (i.e. not Quake) to see if that works? If you don't know any other, there should be screensavers in XP that use OpenGL. You could of course also try other Q1 engines; Joe, DP ...

You could also try asking Baker at QuakeOne forums, he seems to know a lot about Quake startup problems. 
if they want to use an engine that doesn't support gamma, there is still a way to do it.

In the control panel, the display settings for most cards should provide a way to set hardware gamma. This is exactly the same gamma setting that fitzquake/darkplaces modify when playing, by the way.

There is also a program called "setgamma" which you can add to a batch file if you want a one-click shortcut to launch the game with the correct gamma. For example:

setgamma 0.6
setgamma 1

You can get setgamma from the fitzquake website here (direct link): 
Ok, But Suppose I Still Want To Increase The Light Level In Map 
Is there an easy way to do it other than by tweaking all the lights individually?

Just read the txt files for tyrlight and Bengt's light tools and found -range and -dist command line options in the tyrlite text file. Hopefully that will work ok. Fingers crossed.

If any of you tools guys are listening, a brightness/contrast adjust option would probably be pretty damn cool too (that affects the lightmap after generation and I suppose would be able to be run on any bsp), if it is straightforward enough to implement. 
Some Compilers... 
have a -scale option ... but maybe this is really only for quake2 compilers... 
Since tweaking light levels in already existing bsps is the main reason why I've developed my Light tool, there are a lot of possibilities to very easily set new parameters from the cmd line.

Check out the readme carefully, experiment a bit and you'll see how easy and fast it is.

And the tool that does the brightness/contrast level adjustments is ... Light (any light tool) ;) 
Ignoring What's Already Been Said... 
Doesn't setting a minlight increase all brightness in the map? It might look bad, but it can't be much worse than adjusting the gamma. 
only sets a higher minimum value. All lightmap areas that are above that value won't change. 
I made a second try this morning, using -window and/or -nomtex, but it didn't help at all... :/ After the game was launched, and stucked, I had a WinXP message stating that ialtmngr5 process was not responding... (I'm not sure about the name of the process). but it seems that it comes from the Video Card (I asked to my IT engineer that looked my suspiciously...)...

I made the same tests with FitzQuake, and fortunately it is working perfectly in window mode ! No more flickering/HOM like effects

Thanks a lot for the information: you rock ! 
Let's hope it continues to work, there are probably driver issues (the engine should never be able to bring down the OS). Also note that you might be running in 16bpp colour mode (the earlier Fitz log indicated that). 
Only if you use TyrLite minlight (default), if you use additive minlight (ArghLite style, option -addmin) instead, you'll get a *much* better minlight effect. It's actually one of the really essential features of my Light tool. 
oh, cool. 
Thanks for the info. I just scanned through the text file and found the following options for anyone that is interested:

-addmin = makes the minimum light additive.
-range # = scales all lights by #
-globrange = scales sun lights by -range (afaik)
-light/-maxlight # = minimum and maximum light levels. Can also be set in the worldspawn.

I'm posting this because a lot of the useful stuff is contained in the changelog info, which is a little bit time consuming to sort through.

I'll have a play with it and see if I can improve things. 
Light Options 
-globrange should be avoided (and is default off unless requesting other tool compatibility). -maxlight is also not very useful, use -lightcap instead to limit strong lights (but is less effective if you use "wait" keys).

The main global tweak options are -light, -addmin, -range and -dist, combined with -sunlight options.

More detailed descriptions are at the end of the readme, after the changelog. 
Light Options 2 
... and if you feel adventurous, try the global -anglesense # option. It can seriously change the lighting in a map ... 
BspEditor Updated 
seemed to make a massive difference to the lighting. Even range 1.05 make the level a lot brighter. What are the values I should be using? I tested 0.5 and nothing really happened.

The bit at the end of the readme doesn't contain any information on distance scaling (search for -dist) and -range is only mentioned in the changelog, so that's why I mentioned certain commands before.

Anyway, thanks for the help. I will have a play with the -dist command tonight and see how it affects the lighting. 
and -dist are from the original id Light tool, I assumed most mappers would know about them thoroughly ... ;)

Anyway, the default for -range is 0.5, therefore 1.05 is more than double intensity. Default -dist is 1.0, lower values means lower attenuation and therefore brighter.

To get a more even lighting, you typically lower range and dist, for more contrast (more digital on/off lighting) you typically increase range and dist.

To understand more about how various options affect the total lighting in a bsp, use the BspInfo tool: bspinfo -lightstat3 mymap >bspinfo.txt.

You'll then get a histogram over the total light distribution, it's basically like a DNA fingerprint for the map. 
now I understand why it looked the same at 0.5 ;)

I will try 0.75.

Thanks for the information about the histogram thing too. Sounds interesting. 
I'm not sure if it's worth your time, but I don't think the original tool parameters were every really explained in a manual or text file, so it would probably be useful to add a section to your text files explaining all the original compiler features that still exist in your tools. 
Stop, Stop... 
...this sketch is getting silly.

They are clearly item_rockets in the map view of the editor, and they are clearly item_rockets in the .map file after I've saved it.

So why are they poxy spikes in the game? I need rockets. If I didn't need rockets, I wouldn't have put rockets in the map. But I need rockets.

Why... who, is changing my item_rockets to item_spikes. Come on, own up. I am no longer amused.

Will some clever clogs kindly tell me WTF is going on? 
I have a brief explanation for each option (with default values) if you run Light without parameters. 
Does this happen after loading a saved game? If so, you might've run into the mixed models progs bug. It typically happens when you have random precaching order of models. 
No, it's straight from a fresh compile.

It's got to be something in the spawn qc (can't blame anyone else if that turns out to be the case!) but I'll check it tomorrow. 
Computer Security 
OK, I checked the CCTV and now know what happened.

My house was broken into and someone started-up my computer, changed one line of code in items.qc, saved the file, shut-down my computer and left the house. I've asked the police to arrest Cut N Paste and bring him to justice.

How does one write maniacal laughter? 
Like This 
Harharharrr!!! Hahahahahagahkhahaha!!! 
i thought it was 'muahahaha'? 
No, That Is Diabolical 
and Spirit's version is Pirate-Rapist,

for maniacal, you need something twitchy and indiciative of a loss ofcontrol.

Like a, 'he. he he. heh?!? HA-HA-HA-HA-HA-HA AAAAHHHHHH'

Far from perfect, but a little Joker and a little Stewie mixed in and it should be right. 
I Had My NewBoss 
qc-code one night in the SinglePlayer area, and it ate all my progs.dat 
Worldcraft 3.3 Questions. 
I like WC 3.3, but there are two small problems that are making me fucking pissed off.
1: the monitor I'm temporarily on is fucked up and dark - is there a way to increase texture brightness?

2: I like that the brushes are different colours. that's nice. but I hate that when you clip a brush it turns black. So much in fact that I group any brush I clip to avoid the sitution. I don't mind losing all the colours if I don't have to deal with the blackness.
Can this be changed?

Map To Mdl 
I've downloaded 3D Exploration today with the intention of converting some brush work into an .mdl. There is a 30 day free trial for the software.

When I tried this earlier today it worked fine: open .map in 3DE, export to .dfx, import into Qme and save as .mdl. Easy.

But now 3DE crashes as soon as I try to open any .map file. I don't know why and the error log is not very helpful.

I don't want to have to try to recreate this brushwork directly in Qme, so does anyone know of any other way to convert brushwork to .mdl using freeware? 
Hey Mike 
you can convert the map file to Quake2/3 format with Sleepwalkr's map converter and then create a bsp with Q3map2 and run Q3map2 a second time with the -convert option and it will create an .ase model. From that you can load it in a model program like Blender (will need a script you can get from Q3Bits site) and then convert to .dxf or
Those processes are so convoluted it cracks me up. :) Sorry, I've had to do some incredibly obtuse file conversions before, but nothing that involved. Where's the step where you convert it to XHTML so you can view it in IE? :) 
I Was Saving That For The Hardcore Lesson 
done using a QBasic script after your put the model through an assembly language decompiler.

Mike, another converter utility that may be helpful, BitUrn. 
Thanks for the info. But... er, um... perhaps I won't go down that route after all. 
To Clarify 
the blocks I am referring to in part 2 are in the 2d view, obviously.
Question 1 will be sorted out soon, because I'll be moving back to my original comp, but question 2 is important. It's the biggest problem I have with WC 3.3. 
Does That Mean 
the drew is finally back for good? oh, my dreams have come true! (at least the g-rated ones :P) 
Yeah, Well 
We'll have to see if I can get my shit together here. It's all fucked up right now. But I'll make my triumphant, dominating, swaggering speedmapping return soon. And Neg!ke, you'll get the ladyboy photos soon, too. 
Also, that is the last ladyboy joke I'll ever make. It's dead now. And I don't like to joke about dead girls, even if they had a dick.
Moving on, can anyone help me with these WC problems? If you do I'll give you a SM sometime soon. 
Arghargh Milkshape Argh! 
So I want to animate a model. I added a "skeleton" of joints. Then I selected the specific joints, hold shift, selected the appropiate vertices and clicked assign. I did that for all body parts. But when I now select a joint and move it, the vertices are not following (as I think they should?).

Any idea? 
Killing The Player 
Aside from multiple info_notnull explosions is there an efficient way to kill the player after a time limit has passed. Basicly they need to escape (change level) before a time limit has passed. I�m working under Qouth and the info_command allows me to use the console command kill. This doesn�t work because it still applies after the player completes the level - restarting it. As well as this the player doesn�t die, the level just restarts instantly. If all else fails I can just set up lots of explosions, but I get the feeling there is a hack of some kind that will let me do this neatly.

...that covers the volume the player may be in at the end of the countdown. Make it hurt big time though, and of course make sure there are no pents available.

CZG made a level called "Sky Palace" which demonstrates the concept admirably. But it doesn't seem to be on his site any longer

But I think it's available at quaddicted: 
Neg!ke's HL Textured Speedmap. 
Neg!ke made a speedmap with HL textures where you had to minutes to reach the toilet before you exploded. You should ask him how he did that - perhaps you can trigger a trigger_hurt that surrounds the whole level when the countdown expires - I've never bothered to try, but I would imagine that is how it works. 
like than said.
standard trigger hack with a large brush covering the entire map. when activated it only kills the player while the monsters stay alive (in most cases). 
You can't delay the activation of a trigger_hurt in standard quake progs, so use a teleporter with the player only flag set, and teleport the player into a hurty place. 
Oh Wait Yeah 
you can probably do it with one of those info_notnull hacks

"use" "trigger_hurt"
"targetname" "killAll"
"solid" "0"
//brush info

But the teleport way might be preferable anyway since then you don't risk getting massive packet overflows as all the monsters are gibbed simultaneously. 
Triggering Triggers 
Perfect - maybe now I�ll try revising my .fgd. 
Multiple Monsters Triggering 
Hi there. I was just wondering if any of you more experienced guys can help me with a simple(?) problem.. I just can't figure out how to make an event being triggered after a number of monsters have been killed. I.e. you must kill three badguys in order for a door to open. I am using worldcraft 3.3, mapping for q1. 
You must use trigger_counter entity.
So, all 3 monsters must target the trigger_counter.
The trigger_counter count field must be set to 3
The trigger_counter must target your door in order to open it at the end... 
Hey Nos... 
Use a trigger_counter with the count set to "3", then give it a targetname "whatever", then give each of the offending beasties a traget field that targets "whatever", aim the trigger_counter at the event. 
Hehe, Snap! 
Almost :) 
Thanks Guys 
Very kind of you to help.. thank you 
Pregame Introductary Text 
Another question from me: How do you display those little "stories" before or after a game.. you know, the text that "plays" on screen. Is it possible to create such an event with a map editor perhaps? 
At top of you map, there the worldspawn, in which you have the message field. Put your message there, and it will appear at the beginning of the map ingame. Just be aware that you must not use /n" and " to avoid engine crash (it's not happening all the times but this sometimes the reason for...) 
When I open the "map properties" - window, I see that it says "worldspawn", but the only text I can add there (under "text on entering the world") only displays on the console when the map starts. I do not see any other spot to enter text..?! 
... try it... 
I Did 
Yes.. I see the text I entered ingame, but that's not quite what I meant. I am trying to find out how to copy what happenes after you have defeated Chton in the first q1 episode. After completing that episode the word "congratulations" appear in the headline, before text is displayed, telling the story of the game so far... 
You Have To Compile A New Progs.dat For That 
It's in client.qc, line 160.
If you don't know how to compile a new progs.dat or you don't want to include one with your map, there is no way to change it. 
Can I learn how to compile a progs.dat? If so.. where do I get started? 
modifying progs is a fairly advanced task - from a mapping perspective anyway, and it sounds like you're learning - I wouldn't advise going for coding just yet.

Having said that it's fairly simple to find the specific message and rewrite it as you please; though it does mean you'll have to release a pack instead of just the .bsp and compile the thing in the first place. 
Ok, I think I'll just stick to mapping for the time being. 
This thread is active, I must say. Have everybody figured everything out by now, or what..? Well, I sure have not. For instance, is it a problem to have two brushes occupying the same space - like, say I want to make a column appear to support a wedged ceiling.. so I simply create a brush from the floor to the ceiling, only that brush "collides" with part of the wedge. Should I carve the ceiling with my column, or just leave it the way it is...? 
Just Leave It 
QBSP will sort it out just fine.

Be careful with having two faces overlapping though. 
Brush Junctions 
No or big overlaps = OK
Small overlaps = very bad

Usually, neat brushwork pays off in the end. 
And, Under All Circumstances... 
...avoid "carving". Your tool of choice will make far worse decisions about breaking up brushes than you, with a bit of planning, will. 
Small Overlaps Are Bad? 
Why? What's "small"? 2 units? 32? 
Thank You - You Guys Are The Best 
Ingame Monsters / Entites Pitched In Black 
I have a weird issue in my current project: ingame, I have 2 monsters ( i.e Scraggs) and an entity (i.e a Quoth crucified corpse) that are completly pitched in black... To see their color, I have to shoot them very closely (i.e with DBS)... otherwize they look like shadows, full black, without any colors, even if in a lightned area... Is there any explanation for that ? 
Models Only Get Lit From The Brightness Directly Below Them 
So if either of these are hanging above somewhere dark, (as one often does with scrags and corpses) they won't be lit even if you place a big bright light right next to them. 
It's Pretty Strange In Fact... 
... because Scraggs are teleported into a wide-open area with a sunlight value of 150.. so I was expecting them to be lit... The more weird is that I have already 2 other teleported Scraggs in an other area that don't have any problem ... Any idea so ? 
Oh Also 
There is a limit in the engine as to how far below the model the brightness trace is run, I think it's around 1000 units or so, but metlslime turned it up in fitzquake. Don't know how big your level is, so if that's not the problem I really don't know. 
OK, your informations gave me 2 different ways to follow in order to solve my problem and have a correct diagnosis. Thanks a lot: it was really helpful ! 
You might try lighting the box the Scrags are teleporting from to see if there is any difference.

Also, with crucified monsters, if they are placed slightly inside of other brushes, I have noticed they aren't always lit properly. Try nudging it around a couple of units to see if the lighting changes. 
Crucified Stuff 
You've probably already done this, but, if your corpse is crucified (ie. in the map ;) then make sure the spike is a func_wall or illusionary to stop it appearing black like you describe. It only turns up black if it's origin is inside a piece of solid brushwork - then light assumes it is outside the level and doesn't consider it. 
ijed: you are rigth, the origin of the crucified corpse was located in the wall: I moved it by 0.1 outside the wall and the isuue was solved....

czg / generic: In fact the Scraggs were correctly lit. The issue came from the fact they start to fly from a zone without brushes... except skybox.. so no solid wall below them... It is easily visible when the monsters fly from a solid area to a skybox area... and then faded from lit to black...

Thanks a lot for all the help provided ! You rock guys ! 
QC Gurus? 
Which is the best, and why (formatting apart)?
I'm looking at 'if', 'if/else' or 'if/return'

void() do_job_A =
if (something == 1)

if (something == 2)

or b)
void() do_job_B =
if (something == 1)

else if (something == 2)

or c)
void() do_job_C =
if (something == 1)

if (something == 2)

There may be 8 or 9 choices for the variable called 'something'. 
It Depends 
on if do_this1 and change_this1 somehow depend on each other. Otherwise the main principle is "always do as little as possible", which usually translates into else ifs (or even better, early returns) with the most frequent alternatives in the beginning.

If the condition "something" is complex, then split it up in nested or else ifs, with the most frequent and fastest conditions first. QC doesn't "early out" like e.g. C does. Function calls (especially calls to visible() or similar) should typically come last.

You can also take a look here:
Putting it in a lavapit and making it optional was a tight job. Now I'm at the point it iniates lavaballs from its bottem and fires them from its head. I rather would see it iniating from its head.

As I'm standing on a ledge, and when I turn back far enough, I still can see the newboss
and fire at it, but it doesn't seem to see me.
One can only kill it by firing on its bottem.

Because I borrowed it from the spellmaster, which is much smaller, the qc doesn't fit well on this much bigger monster.

What should I change to the newboss.qc? 
This is very phallic if you run the die sequence backwards? 
I Know 
This mdl I made myself, because the one in the deathmatch maker had a rather plump way of falling down.
Made no sense for such a big object.

I find it strange if I see it in Qml or Quark it has a right bounce box, but if I shoot it at the top it won't get hurt.(?) 
Hitbox, Bounding Box And The Rest 
The box you see in quark/qml is the box that bounds the size of the model. It's used by the engine to determine when the model is drawn, but nothing else. The hitbox is determined by the QC, specifically this line:

setsize (self,'-32 -32 -24','32 32 64');

Adjusting these values will give you a larger or smaller hitbox as you require. The first vector gives the coordinate of the lower left part of the box relative to it's origin. The second vector is the upper right coordinate, so it defines a cuboid hitbox.

Making it see from a different point of view may be a little more complicated to fix, I'll try and post about that later. 
preach, I wondered about that quiete a time.
To make it launch from that height was already a fix, it tended to start shooting in angles up and below the player. 
Knowing how poorly the q1 engine and compiler generally handles slanted stuff, how insane would this be:

I want to design a map that's made of concentric sections surrounding a circular core. Every area of the map would have a gentle (or, near the center, not so gentle) curve to it. All lines would either be radial or circumferential. Essentially the entire map would be designed for polar coordinates, but imposed on a square grid.

Insane? Mad? Masochism? 
You mean like this?

Yes, the compiler handles stuff like this fine. 
Sweet Jesus Gibbie 
like I said, you're out of your mind. :) does that even come close to the 8 grid? 
handles stuff off the grid afaik. For SM32 I had to rebuild Gibbie's bit because it was on a floating point grid >:(

Radiant handles stuff down to 0.25 I think, and last time I used it you could build

I think the plan to make that in Quake is masochism. I built about half of my wolfenstein map at 45 degrees when there wasn't much need for it. It wasn't particularly difficult, just time consuming and annoying to build. Having said that, gibbie's map looks like it is generally at more challenging angles.

Gibbie: How about an editor xz view? I want to see how the ceilings were built. 
Shady xz:
Girl8 xz:

In gtkradiant 1.5 you have to turn off "Snap planes to grid" or everything goes wrong. The smallest grid for both maps is 0.125. That is also the smallest grid you can set in gtkradiant. However if your brushes are not on the smallest grid (eg because of clipper usage) i think it will still save them properly.

Anyways, most of the time i don't mess on such small grids. I mostly just use prefabs from a curvey thing of concentric brushes i once made, kinda like:
This also has pre-aligned textures :) 
A map called "girl" filled with phalluses? And people thought I was perverted. 
What's Perverted... 
about filling a girl with phalluses? 
about filling a girl with phalluses?

I really hate during a DP when they rub your weiner up against another guy's junk while they are giving oral, but other than that, nothing! 
I think that I am glad that I don't understand American too well! 
the plural 
yeah, but generally it only takes one to fill 'er up. 
Silent Push 
is there a way (hack) to have a trigger_push that does not play the wind sound? 
Silent Push 
As far as I can tell, the windfly.wav is only used by the trigger_push. Therefore if you are doing a mod you could get away with supplying ambience/windfly.wav in your mod directory where you have a copy of null.wav (from the sound/misc folder in pak0) and renamed windfly.wav. That's a hack.

If you play with Qc it's straightforward to create a flag for noise or no noise.

But Preach will probably come up with some wizard way of doing it :) 
'Fraid Not 
The function that causes the push of the trigger also specifically plays ambience/windfly.wav - unlike doors which play whatever wav file is in self.noise1 for instance. So there's no possibility that the sound could be changed to null.wav by entity field editing. The only possible line of attack would be to make sure that the player's .fly_sound is set to a time far in the future, but I doubt there is any function in the QC that will perform this. 
i already expected it to be impossible. thanks for clarifying. 
Are there extent AI mods that would give monsters (I'm thinking an enemy human-type thing) the ability and logic to duck-and-cover and work as teams and stuff like that? 
Can I 
make spikeshooters fire diagonally in Q1?

If so, how? 
Diagonally In Which Direction? 
Do you mean 45 degrees down, for example? Then no, AFAIK. Otherwise, yes. 
I want two shooters mounted on the ceiling firing in an "X" pattern. Both downward and 45 degrees inward.

Nothing can be easy :-(

anyway, straight downward will do. I figured out how to do that at least. 
Diagonal Spikeshooters And AI 
Diagonal shooters are easy to do. Info_notnull with these fields

use spikeshooter_use
targetname blah
wait -1
spawnflags as for desired spikeshooter
movedir vec

Where vec is a vector in the direction you want the spikes to fire. The velocity the spikes are fired at is 500*vec, so to match standard quake behaviour this should be a vector of unit length. Of course, the advantage of this method is you can actually control how fast the spike fires by varying vec - I hadn't thought of that before.

This sets up a triggered spikeshooter, if you want a constantly firing one the setup is a little different:

think shooter_think
wait n
nextthink 3
spawnflags as for desired spikeshooter
movedir vec

Be warned you need something else in the level to precache the required entities, like a regular shooter of the required type.

inertia: AI_Cafe is a good place to start looking, there's certainly an example of making enforcers duck there

Working in teams is a bit more vague though, as the quake AI atttacks are basically relentless and crude. There's only so much teamwork you can put into constantly spamming grenades until you die. If you had something more specific in mind, like say navigating more sensibly in packs rather than the current all rush straight at the player and collide, then maybe... 
I want to have really intelligent packs of enemies, so that the whole "assault a base" thing could be done in a more tactical style. 
I hope I understood that. Thank you Preach!

TROUBLE: Building E1M2

I need help. I am trying to build, straight from Romero's zip file.

QBSP gives me a warning about texture +1SLIPBOT not found. Of course, there is no such texture in wizard.wad! Is the map file faulty? I went the extra mile and downloaded wizard.wad from quaddicted. Problem remains. I changed that face to wiz1_4 or something, warning is gone, but:

QBSP then doesn't write a .prt file for no apparent reason. Sorry, I have no idea of the details involved, just trying to build the map. The wad is in a dir named gfx in the same folder as QBSP, the map wants gfx/wizard.wad. That should be OK.

Following that, vis says "no prt file found" and exits :-(

I have built an original and a modified without problems with the same setup. Got a .prt file without problems.

Qbsp does NOT give any error messages, just no .prt file.

Aguire ? 
...I've spike shooters firing at all sorts of angles in qte2m2? I'll check tonight, but I pretty sure all I did was add an "angles" field to the shooters then plug in pitch and yaw. 
so you're thinking like, sneak into the storage shed, unscrew a light bulb so that someone from across the couryard notices it and comes over to investigate, kill him, but then hide the body so that nobody notices it and sounds the alarm, then throw a pine cone over behind the trucks so that they guards hear it and go investigate, leaving the front gate unguared when approaching from the west, then sneak up and garrote the other guard, then take his keycard and use it to recode the security locks... 
All is fine. I have a prt file.

I fixed two leaks in e1m2. One was two parts of a slanted roof not lining up, the other involved some seriously twisted brushes (like, really deformed.)

qbsp had silently (grrr) produced point files, which contained leaks that quest didn't see. 
yeah except the player would have a sneaking suit.

and a box.

or a few boxes. 
...adding the "angles" field with value "pitch, yaw, roll" to the shooter was how I got them to fire at angles. 
That sounds way easier. thanks distrans :-) 
I'm still missing the fishcount correction for my progs.dat of the proxsys mod.
Where can I find a good fish.qc ? Or was it qstats?

Also still searching for the angle error of the newboss. 
it's a one-line fix. Just look at the swimmonster_start and swimmonster_start_go and related fish functions; you should notice that there's two copies of the line that increments the monster count, and you just delete one of those copies.

(this is from memory so the details may be wrong, but I know that if you look at the source, it becomes ovbvious.) 
but I'm a madcap when it's concerning qc.
even changing a line and correct it makes the compiler peak to errors.
I'm using fricdos, others won't even compile.

and I see two times swimmonsters_start but I can't delay them. If I delete the first one the fishcount still is double. 
Maybe A Stupid Question 
Hopefully an obvious one.
I was sitting around with some free time today so I decided to try and make a little speedmap. However I've encountered a frustrating problem along the way...

I have three doors, all with different names. They all go down. They are all within a close proximity to eachother. I have a trigger_counter that causes one set of doors to go down. When this happens the other two doors that do not yet have triggers also go down. Any ideas as to why?
I tried copying and pasting, then changing the name of one door. No doors moved at all, even when triggered... Can someone help with this?
if the doors' bounding boxes overlap or touch, they might be automatically linked by the func_door logic. To prevent this, you can use the spawnflag "DONT_LINK" or whatever it's called on each door. 
does the same logic affect func_trains? 
i don't think so. 
How do I open a Keydoor at the moment I'm in front of it? So not when I find the key somewhere else and return to an open keydoor. 
set a spawnflag on the door (8 or 16 I think, one is for silver and the other is for gold) 
In Hammer/Worldcraft there is a "Gold key required" tick box in the properties field of a door entity. This way you can change the proper spawnflag. If your editor doesn't have such simple "feature" you should really change it :) 
I am using Quark65, and when I set a door to a key it changes the spawnflag to 8 or 16. If I return to the keydoor it is already opened. 
maybe you have added some wrong spawnflags to the key? 
You don't need to set a 'target' on the Gold Key or a 'targetname' on the door as you would for a button operated door.

I don't know if this helps? 
For further details about flags, etc... please take a look at Quake Map Specs link below

Enjoy ! 
You would find also precious information about Quake C here

Enjoy ! 
It was rather simple. I always used a targetname to a keydoor.
Then they open straight away.
Without target/targetnames they open at the trashold. Me donkey.

Thanks for your reply.
Another strange thing. Can changing texture (so not polys) influid the lightmap texture?
I mean just correcting a few margins, not scaling.
My map crashed on allocblok=full after I tried to retexture it.
The original map compiled fine. 
Switching textures should not affect lightmap size, but rotating a texture on a polygon might increase lightmap size just like scaling does. 
what metl said, but I'd guess that since you typically change the texture in the editor, it's very likely that minor brush variations occur, leading to a slightly different lightmaps requirement.

Since you're using QuArK with its float coordinates, this is probably even more likely. As you're also flush to the lightmap limit to begin with, even small changes might put you over the edge. 
re: post 5874, I came across a wierd effect where multiple sets of triggers and relays and counters were non triggering trains or were triggering more than they should have been - wierd.

The idea was archways (func_trains with -1 wait on each path_corner) over a floating plaform in the void - if you destroyed the pillars (func_walls killtargeted by trigger_once with health) holding them up then they would collapse, taking part of the platform (another func_train) with them, but only one at a time.

It worked, sort of, except for the problem with archways only falling after the others were all destroyed, or else destroyed in a different order. This was annoying but solvable - the main reason I scrapped it because the Vermis� spore attack wasn�t doing any damage to the trigger once�s, only the players attacks.

I�ve changed it around now and it works better in the new style, without destructable scenery. It was a bit cheap when you fell into the void because of a missed shot.

Cheers anyway. 
Thanks Everyone. Especially Metl. 
Animated Textures 
I changed some textures of the hipnotic pak.
Some computer compenents I retextured to animated.
It are 7 frames. If I look at them in game they work fine.

On my other computer I load the bsp and see one frame meshed out as a white/black block.

How can the same bsp act different on two computers? 
Style Question 
I'm in the process of doing the Episode 1.1 thing, i.e. upgrading episode 1 with pak1 monsters and traps.

Would you guys consider it out of style to include some (read: a little) Quoth content? For example the Bob, voreling, drole, and the weapons/powerups?

Right now I'm installing Quoth again just to check some things out. I think if the Base project is successful, it will pretty much establish Quoth as a standard, so I might as well use it.

Especially if we see this Quoth 2 thing that I keep hearing about. 
And... (this Forum Needs An Edit Function) 
What would you like to see changed/corrected in episode 1? Apart from the missing light texture in Ziggurat Vertigo :-)

now's your chance. 
Quoth is designed to go hand and hand with Quake content. The original Quoth I kind of view as an extension of the Underworld theme. So, yeah, sure, make a Quothique episode one. KellCro already have done the SlipGate Complex in the Quoth pack. A few points.

1) I'm not crazy about Bob.

2) I don't see Quoth2 coming out. I could be wrong, and Kellcro are doing a suprise behind the scenes, but I doubt it. More likely both are burned out on Quoth, Quake,and all the good stuff in life.

3) If you see Quoth2 coming at you, run like hell. It will suck you in to
its vortex and never let you go.

3) Does the Sentry in the Quoth 2 beta remind you of someone who comes around only once a year? 
EkderWorld Theme I Mean 
yeah, he does :-)

I know what you mean about Bob. I spent the last few hours playing chapters and the quoth (test) maps again. Bob (like several quoth enemies) has too many hit points compared to standard monsters, and he can be a bit annoying (just like that flying polyp thing.) Also the explosion etc. is a bit overdone.

The model and skin however I think are very cool.

After playing those maps again, the only monsters I'd want to include are vorelings, but the price of requiring a pak file is a bit too high...

You're right, if this were episode 4 (which I'm not a fan of) the picture would look very different. With those crazy maps like the Pain Maze etc.

thanks for input. 
if I'm going to make this easily speedrunnable (which I intend to) there's not going to be a custom progs... so... 
On Topic 
Is there any trick to animated textures? I just apply the one that starts with +0 right? The rest of the stack should be included by qbsp I guess.

I can tell it's not working because other animations (spinning globes, buttons) get played; my own ones don't.

Sorry if this is a stoopid question. Is there something in the texture itself? 
animated tex folow frame rules.
when you have made a +0_frame.bmp the most common why is to follow up:


when youre frames are ready import them all together to the texture editor. Watch out for the + mark, windows don't like it in names.

If all went right they should animate.
If all went wrong ( + not acomplished, wrong framenr, bad size) you'll end up with individual frames in your editor. 
Free Music 
Is there anywhere that I can get my hands on some decent Quake type music to include in a map pack.

I would like between 5 - 7 tracks on a dark theme. I could just set up the cd entry for the pack to play off the original Quake tracks or else Distran's Travail set but want something that hasn't been used, at least for Quake - and don't want to steal the Travail tracks anyway.

I've got my hands full finishing off the pack and my composition is rusty to non-existant.

I thought about including tracks from the rare q3 maps that have thier own music (with permission of course) but these are fairly disparate and I'd want something a bit more cohesive.

You could ask these for permission: pretty dark, weird style though (if I remember correctly)

Or browse through until you find something nice. 
These look perfect. 
Too many light styles on a face ?

I can have too many lights?!

There are just simple point lights in the area I'm working on, plus three light_fluoros. I didn't set style flags on any. 
Oh And... 
I'm really sorry to ask so many stupid questions. ISTR that you could alter the radius of a point light (how far the light travels.)

Goldenboy / Columbo I Know You're The Same Guy!!!!13 
lights that you turn on/off with a trigger or button generate additional light styles (specifically, one style per unique targetname.)

Radius and brightness are together affected by the "light" value. If you want to shift the radius independently of the brightness, you can use the "wait" value. 1.0 is default, and values > 1 will reduce the radius, and values < 1 will increase the radius.

Basically, radius=light/wait 
Haha :-) 
yep. Sorry I double-post regularly... it's because I'm routinely using the Edit function of other forums right after/during posting. I often go "man I forgot something!" right after posting.

Some of it comes from having a browser open while mapping. A question arises, I make a post, I think for a minute, bang! another question.

I'm trying to cut down on this. Really :-)

Thanks for light/wait info. I don't think I have any switchable lights there though... the error popped up while I removed/relocated some point lights in a very defined area.

No more questions tonight :-)

Light Styles 
I believe there is a limit of 4 unique light styles per face, someone correct me if I'm wrong please! 
What exactly counts as different light styles then? Everything that is in the "style" flag?

I have controlled all the lights in the area (I know where it is because it popped up after I worked there.) None have a style value other than 0 (unset).

There is actually one switched light there (it is the bridge/nailgun area of e1m1.) The nailgun room goes dark when you touch a trigger etc. as we all know. I did not change the size of the door and I did not change any lights in the NG room, just outside (in the bridge area.)

Can slanted/angled faces make this error suddenly appear? I'm pretty much rebuilding parts of the level now because I decided to align all textures. ^^

Is there a way of checking at which coordinates the affected face is?

And the questions of today:

1) I am teleporting in monsters with the standard teletrap setup. Apparently teleported monsters wake up (they seem to lose the ambush flag which I set.)

Is there a way to make teleported monsters (any monster, really) return to the ambush state (not moving until it sees you), either via a trigger that the monster touches, or via quakeC (nextthink or the like)? I could of course use func_doors to trap them, but that seems a bit bulky.

Basically, I want to re-stock an area with monsters, all triggered by a trigger_once and teleported in. Those monsters should then go to ambush state (do nothing until player in sight.)

2) Is it in some way possible to get onto the TOPMOST crate at the start of e1m2, without explosives (i.e. in normal singleplayer)?

There are slopes nearby. Perhaps with enough speed... Anyone managed this jump? Possible or not? (in netquake)

What determines the height of a slope jump? The slope's angle? The speed?

and yes, this has level design implications :-)

3) Hypothetically, let's say someone would find a lightning gun just before entering Ziggurat Vertigo (also in normal singleplayer.) Furthermore, let's say the following maps had double the monster count, plus tougher monsters.

It wouldn't be imbalanced, would it.

If you're using my Light tool, you'll get coordinates and tex name for each face with too many styled lights on it. And I think switchable lights also count as styled (e.g. a light can't be both switchable and styled at the same time).

This problem can be seen e.g. in hipend. 
I got the full download of your tools and suddenly all problems are gone.

The Light warning has vanished (I got my sanity back, thanks) and all animated textures are there.

Just wow.

I was using tools modified by Alexander Malmberg before (from the quest website.) I am using quest because I can't run radiant on my laptop (no GL) and no other editors will run under Linux.

Luckily, your tools run under Wine (windows emulator.)

thanks man. 
Deserves some sort of Quake community medal. 
Well I think if we all just spelled his name right consistently that might be thanks enough. :) 
I won't look back. I even tried writing Linux makefiles for his tools, but apparently they contain windows-or microsoft specific code. No idea. They don't compile.

Anyway, the tools are great (the lighting! WOW) so I'm absolutely going to live with that.

I knew I didn't have more than 2 light styles there :-D :-D :-D 
Anyone Know A Way... 
to get a list of all the precache models in a level along with the total number? 
for mdl/bsp/spr and soundlist for wav. 
Just the job. Thanks very much.

232 models :/ I guess that means I have at most 24 more triggers, doors or additional precaches I can use, though I suspect there are some engines that precache their own extra things for enhanced explosions, shotgun shells etc.

Do you know off the top of your head the max number of edicts? Is edicts something that can be increased at the command line in a regular Quake engine? 
Oldest engines (DOSQuake?): 450
Old engines: 600
Old Neh engines: 1000
Joe: 2048
Fitz: cvar, up to 8192
My engines: 4096
DP: 32768

Other engines may be different. I haven't seen any cmd line option for edicts.

Usually, it doesn't help much increasing just the edict limit, as having many edicts will just generate packet overflows or SZ_GetSpace errors instead. The only engines I know that can handle many edicts are DP and my own. 
Size Limit On Rooms? 
I'm working on a level where you are at the top of a tall cliff and you're shooting rockets down far below. Is there a limit to the size of a room in Quake? I get a lot of tearing in the distance I think because the room and blocks are too big. 
How Do You Mean? 
By tearing - it sounds like HOM (hall of mirrors). It also depends on your engine. In AguirRe's the only limit is created by including fog, which sets a clip plane before it's end that can chop long distance stuff (not sure how far, 1024 units or so).

If you include fog with a low density and have long distances this'll crop up. If not you should be able to see from one corner of a max extents box to the other. Though it does depend on the engine.

Other than that you can try looking for tiny brush misalignments - the usual cause for HOM's. 
I'm using WinQuake and might start using DOS. I made my giant room smaller and now it doesn't tear much (unless you get in a certain corner with a lot of enemies around). It was just a test map. I was curious if there was some set limit you weren't supposed to go past. Thanks, ijed. 
In Original WinQuake 
try setting

r_maxedges 100000
r_maxsurfs 100000

or just use my Enhanced WinQuake and save yourself a lot of trouble. 
I know the game is ten years old, but I want to design it for the original. 
thanks for the info, you fountain of knowledge you. 
Hi Ijed... 
... looks like you found some trax for your pack, but if you need sound in the future drop me a line. 
What is the best program for drawing your own Q1 textures? 
Thanks for the offer, though I found some that fit really well. I thought about asking but didn't want to because it'd be alot to make in a short time.

But now I've got some computer issues so I don't know how long it'll take for release; bah. 
search Wally or Texmex 
Thanks, Madfox. 
Marksurface Issue 
I'm currently working on a big project (i.e Doom3 Hell level remake), and I exceeded this evening the maximum marksurface value (i.e message is WARNING: Marksurfaces 34803 exceed normal engine max 32767 , with aguirRe's TxQBSP v1.12). I'm able to load the map with aguirRe's engine, but it is choppy as Hell with FitzQuake...
I just would like to know if there's something I can do either to dicrease Marksurfaces in a map... without removing any poly (and it is not yet finished....), either if there's something to do with engine options... or if I have to restrict the map to aguiRre's engine ?
Any advices ? 
if you're planning to expand the map further, you likely have a problem. you can try to lower marksurfaces by turning some structures into funcs, moving them away from adjacent brushes, or reducing faces by merging them into individual textures. 
According to other mappers, marksurfaces might go up and down while adding more brushes, so you could try continue working on it and see if they drop.

Furthermore, if Fitz is just choppy, I doubt that it's the marksurfs that's causing it (normally it would crash if the marksurfs were exceeded). You could also check with e.g. JoeQuake.

Try upping heapsize instead and see if that helps, e.g. 48-64MB. 
Yes Marksurfaces Can Make You Insane! 
Sometimes they go up other times they go down.
I'm having trouble with marksurfaces as well on the map I have in beta.
I have found that Fitzq can handle marksurfaces up to around 38000 and then it crashes! Anything under this seems to be safe although it's over the max. 
...if you can build it over the limit Fitz will handle it to where Hrimfaxi indicates. But, JPL if this thing is as big as I think then you might seriously consider chopping it up at some logical point. The only way I could get qte2m3 to work in the end was lop off everything past the GK door and turn that into a separate "end" level...that and simplify some of the natural rock formations in the main map (that was painful =/ but necessary)

Good luck with it either way. 
Fitz And Exceeded Max Marksurfs 
I am currently having problems with the number of marksurfs in my large map, but fitzquake still loads it. The thing you need to be careful of in fitz is that when marksurfs, clipnodes etc. are exceeded, memory gets randomly overwritten. I don't know exactly how random this is, because at the moment there are no noticeable problems with my map. However, when I had too many clipnodes as well as marksurfs, the last func entities that I created were becoming nonsolid - I guess this is just because there were too many clipnodes to fit into memory and the solid entities were the last things being loaded so they became nonsolid.

I have had fitz crash because of exceeded maxsufs before, but oddly it doesn't crash as soon as you pass the limit. Anyone know why? 
Thanks a lot for all the advices... I think I will continue my work as I just need one more corridor and a room plus the final area to finish the map... Maybe it will pass with a fullvis process... In anyway, I already have an idea where to split the map... I'll see that later when all the design will be done. Maybe FitzQuake will be able to load it without choppy thing... I don't know what happened, but it occurs after the first monster spawn... pretty weird... I have to re-test it to see if the problem is persistent....
Thanks a lot again ;) 
MarkSurfs Crashing 
The limit *is* 32768, any engine that's not fixed to handle a higher amount will behave unpredictably due to memory being trashed. Depending on how that memory was/is being used, you'll get different results.

JPL: did higher heapsize help the choppyness? 
I still not tested it yet... but I think I've always a -heapsize 48000 added in the command line.. (note I'm not usre of the value ;P ...) 
Well, having -heapsize 48000 option doesn't help much with FitzQuake: the result is that i need to cut the map in two pieces.... Not a big deal....
Anyway, I already said it but, thanks a lot for all the help above :) 
Leaks Leaks Leaks 
C:\Program Files\worldcraft\Q1Tools>txqbsp -quiet -numpercent capacitance
TxQBSP 1.11 -- Modified by Bengt Jardrup


Building hulls sequentially...
Processing hull 0...
WARNING: Reached occupant at (512 -1240 8), light
Simplifying ... Leak file written to capacitance.pts
Processing hull 1...
WARNING: Reached occupant at (64 -256 32), info_player_start
Processing hull 2...

34 warnings

So, yes, my map leaks. I don't know why.

The map is completely sealed. I do have complex brushwork, as in 3/4 of a pipe wrapped around curved corners. Could this type of manipulation cause a map to leak, even if it is completely sealed in the editor? 
If you are using Worldcraft, the answer is yes. The most likely problem you are likely to face regarding leaking maps and worldcraft is that you have used vertex manipulation to create an invalid brush (i.e. a non-convex volume, or non-planar face). When you try to compile a map with such a problem, the brush shape will be changed by the compiler so that it is convex, which can result in leaks appearing.

You can check for invalid solids by hitting alt-p (should also be in the map->check from problems menu), which will give you a list of problems with your map. DO NOT let Worldcraft auto-fix your problems, as it can sometimes make things worse by deleting things that only required minor modification. The go to error option is, however, completely safe, and is VERY useful for tracking down solid entities that don't have any brushes (if you merge two solid ents, one always remains and causes problems, but can be selected by checking for problems and deleting it manually.)

There are other reasons that a leak might occur, but I think the above mentioned vertex manipulator abuse is the most likely problem. Try checking it out.

By the way, if you add a lot of fields manually to entities rather than modifying your FGD files to include them, Worldcraft's problem checker will report the key/value pair as being an error ("entity has unused key/values") These errors can be ignored completely. 
...Ionous is mapping again! I thought we'd lost you buddy, welcome back. 
If you can't sort it out, send me the zipped map+wad and I'll check it out. 
i got 311 on mine :\ and i dont have leaks to... 
One thing I found with terrain mapping (lots of wedge brushes) is that if it's a long thin wedge then it won't break, but usually breaks any thicker wedges nearby so that the leak goes straight through a solid brush. The only decent way to het round this is avoid thin wedges, or else have a big block inside your terrains, usually alot of em, though that's a ugly and wasteful fix.

Other than that turn all pillar / pipe / cable flanges into func_wall or else leave them 2 units from touching the wall or floor. The second can still produce vis crashes if you have lots of them but the first is completely safe, as long as you don't breach edicts.

As than says use the check for problems function, but don't auto-fix. If you do have invalid brushes you may not be able to fix them without creating from scratch, though that depends on how complex they are.

Can't think of much else (I assume you know about the pointfile command - type it ingame at the console and it's show a particle line pointing at the precise location of the leak).

Hope that helps. 
Many Thanks 
Yeah, i am using Worldcraft.

It appears i have been caught. I was using the method outlined in CZG's curve tutorial to bend a 3/4 piece of hollow pipe (roughly 256 in diamter, with 32 thick edges). When using this method, i found that the edges weren't aligning on the vertices with exact precision, so i using vertex manipulation to get it right. I then got lazy and started doing it purely with vertex manipulation. I'm guessing that might be the problem part.
I have used the "problems" feature, and it claims that the map is without error. It once had errors, but i fixed them manually, and then worldcraft seemed to like it enough to not give me an error.

Thanks, it's been a long time, my mapper's block had gotten so bad that i just decided to stop for like 6 months. Things seem to be going good now. Hopefully Travail isn't giving you splitting migraines.

Thanks for the offer. I'm not going to be able to touch Worldcraft again until maybe tomorrow, most likely Friday, so if i still can't make the bad leaks go away i'll drop you a line.

I wasn't specific enough in my post, but the "pipe" i spoke of is actually the hallway, so i'm not sure if making something like that would work as a function_wall. I may be mistaken, but i'm not sure if i could use a function_wall as a border to the void.
What you said about terrian is interesting though, since i do plan to use a good amount of terrain in my map. What do you mean by breaking brushes, wedges and leaks through solid brushes? I don't quite understand the explanation.

Thanks for the help all. 
Nope, you can't use a func_ to stop void ;)

The pipe thing (I use the czg method as well) is awkward, you've got to figure out the system of thinking in base 8 and even now I end up redoing it a few times to get it right for a corridor or whatever. I wouldn't recommend vertex manipulation for this - it'll drive you up the wall.

Also, you can just make a blocky corridor when seen from outside, then make it round on the inside with the 12 sided cylinder and double-wedge corner piece. Since the outside is void and not world nobody'll see it.

By blocking off broken brushes I meant putting a quad brush inside your terrain, sealing any hole it has from the void - but this is a big waste and will fuck vis.

When making terrain copy and paste a single unmodified wedge as many times as you'll need it then vertex adjust each piece seperately - WC tends to create errors when copying multiples of these. Either tiny misalignments (leaks) or a slight lip in the ground, so that you hit an invisible wall in the game when walking in a certain direction and then can't get unstuck. 
One other thing, probably something else you already know, but I didn't figure this out until a long time of using WC - you can move the camera (not just rotate it) in the 3d view with right click.

If that helps. 
Thanks for the heads up on the camera deal. I always found it annoying that the camera use was limited. That makes it better to use. 
Camera In WC 
they are great.

In addition to being able to move the camera around in both 2d and 3d views, you can create multiple camera views per map by holding shift and dragging in the 2d view when in camera mode. There might be a key to cycle camera views, but I don't know it if there is. Deleting a camera will return you to the last one create before that, or just the default camera (which doesn't have any icon in the 2d views).

In addition to the mouse controls, you can also move the camera around with d/c (zoom in, out - also works in 2d views) and s/f (roll, not very useful). Also, if you learn the shortcuts to switch between camera and other modes, the fact that controlling the camera requires you to be in camera mode (aside from moving it via the keys) won't slow you down anymore. 
iirc, it's page up & page down to cycle through cameras...been a while for me though 
pgup and pgdown work, but only in camera mode. In selection mode they seem to do something weird, like add the previous selection to the current one. Maybe you can use it to get the last selection if you lose the selection.

...hmm, just tried it, and in selection mode pgup and pgdown have very odd behaviour. This is what it says in the WC help:

PgUp - previous selection in "hit" list
PgDn - next selection in "hit" list

Whatever the fuck that means. 
WC Help 
I think that many WC and Hammer users should spend some time reading the users guide included in the program. It is an interesting read. There are many tips and pictures. All the features mentioned above are described throughoutly.
Here is a section from Hammer manual about the cameras:

Using Cameras

To take advantage of the 3D view, you need to be able to place cameras. Cameras determine your vantage point(s). Hammer provides you with precise control over the camera movements in your map.

A camera in Hammer (as displayed in the 2D views) consists of two parts: the eye, and the viewing angle, which is represented by a line extending out from the eye. The length of the line that represents the viewing angle is not important, though it can help you aim the camera exactly at an object.

While it is possible to move a single camera all over the map each time you need to look at something new in the 3D window, it is more convenient to have easy access to multiple cameras placed throughout the map. Hammer allows you to easily cycle through multiple cameras by pressing PageUp and PageDown.

Camera Placement
Placing cameras in Hammer is extremely simple. First, switch to Camera mode by pressing Shift+C, then hold Shift and with the left mouse button, click-drag a line in one of the 2D views. This will create a thin red line with a large dot at one end. The dot is the camera's position, and this is where the 3D camera view will originate. The red line is the camera's viewing angle. You can adjust either end of the line to change the view. Follow the above steps to create as many cameras in your level as you need.

Note: There are a number of options available to you when using multiple cameras. You must have the Camera tool selected to take advantage of these:

PageUp: cycle up to the next camera position
PageDn: cycle down to the last camera position
Delete: delete the current camera position
Shift: hold shift and click-drag with the left mouse button to create a new camera.

Tip: While in camera mode, you can adjust the camera position by moving the eye or viewing angle in any of the 2d windows.

Mouselook/NoClip Style Movement
Version 2.1 of Hammer introduced a new style of 3D View movement called mouselook movement. It is designed to be the same as when you are in the game and walking around with +mlook (mouselook) and the NoClip cheat both turned on. It can be enabled or disabled by pressing (lowercase) z.

Moving your mouse around will change the player's direction of focus, while W and S control forward and backward movement, and A and D control sided to side (left and right strafing) movement.

The old style keyboard shortcuts (listed below) still work. You can disable this new movement style by going into the 3D View options and disabling use mouselook navigation.

Keyboard Shortcuts
There are a number of keyboard shortcuts that you can use to quickly maneuver through the 3D view without switching to the Camera tool.

While holding the spacebar:

holding the left mouse button allows you to rotate your angle of view in any direction, while the viewing point remains stationary.

holding the right mouse button will allow you to move left, right, up, and down while keeping the viewing angle constant.

holding the left and right buttons and moving the mouse causes the view to strafe forward, backward, right, and left. (note that this makes the following behavior redundant).

While holding the spacebar and Shift:

the left mouse button acts the same as above.

the right mouse button allows you to move forward and backward, as well as from side to side.
I Agree 
read the manual :) The manual will also have information specific to your version of the editor, be it worldcraft 1.6a full (what I use) or one of the more recent Half Life versions/ Hammer.

There is no noclip style movement in WC 1.6a, nor is there any decent hardware acceleration, but I like it's simplicity. 
the below isn't described in the manual though :)

if you merge two solid ents, one always remains and causes problems, but can be selected by checking for problems and deleting it manually

I didn't know about the above fact but it sems to apply for hammer also. If I knew it before I could solve some problems easily.
Than seems to know many WC features and tricks that aren't described anywhere. 
that is one hell of a nasty problem if you don't know what the cause is or how to fix it. Still, you know now, eh? :)

The absolute WORST problem you can get in worldcraft, however, is when you use the clipper on a multiple brush (or single brush if you are silly) selection and accidentally clip along one of the faces of a brush. This creates an infinitely thin brush which will crash compilers and is a fucker to track down if you have added a lot of other stuff since creating the problem. If you know it can be caused by the clipper, at least you know roughly where the problem might be and in which brushes it is in. 
The Absolute Worst Problem 
In WC is using the carver - this evil tool tends to destroy everything it touches. There's no way to delete it from the toolbar which is a shame. Another problem is clipping across multiple brushes that aren't touching (such as when using the czg curve maker method). It'll crash maybe 15% of the time, so always save before doing this.

Never really used the pgup pgdn controls, they didn't seem to follow the order of creation for cameras and in a big map it's pretty creaky switching all over the place to find the one you want. I'll give that a try again, though. 
Carve Is The Worst Problem? 
I beg to differ. I will agree that carving can sometimes cause a mess of brushes. But, if you know how to carve carefully, you can avoid most problems. Almost all of the complex brushes in my maps were made by carving. Why? Because I know what carving likes, and does not like.

And in my opinion, carving is much much quicker than manually adjusting the surrounding brushes, which is usually a pain.
As long as you carve carefully, you should never have any problems. I use it constantly, and do not plan to stop. 
WC No Crash Tips 
The more you save, the less it crashes. I don't know why this is, but I tend to save very frequently (at least every 5 mins) and it almost never crashes.

Using the clipper can sometimes cause a crash, but if I take it slowly and save between clips when using the tool several times, I don't seem to have any problems.

The only time WC really ALWAYS crashes is when I've been using it for several hours, done a lot of work and then exit. It always crashes when it's closing after a long day of mapping, but otherwise WC crashes are incredibly rare for me these days. Maybe it's my pc, or maybe I'm just naturally avoiding the things likely to make it crash. Hmm. 
Well, I Learnt 
That it likes to crash at certain times, so I ended up saving before doing anything I know is risky. I also save compulsively and rarely get crashes.

The one you mention, than, seems to be the compiler crash. It always happens with a bigger than small map build or two. It's not a problem since it's shutting down anyhow, but annoying when it doesn't remember last map worked on on reopen.

Orl - I thought you used QuArK? 
Why did you think I used Quark?

Ever since day one of mapping, I have always used Worldcraft 1.1a. And sometimes 1.6.

And 1.1a can crash much more frequently than 1.6, if your not careful. 
A Half-remembered Post About Orlmap 

Always use 1.6a, tried the 3.3 conversion but it needs some stuff ironed out - the wad limitations mainly. 
Yeah But 
I have my reasons for using 1.1a than 1.6.

And yes, I did try the 3.3 conversion, and after a minute I immediately lost my mapping erection. 
Hardware Reasons? 
Also, an implant can help with the other problem. 
The Reasons Are... 
... certainly not related to hardware. I'm up to date with all that :) But here are my reasons why I prefer 1.1a to 1.6

1. Zooming. In 1.1a the zoom value is about .06 for each zoom in, whereas in 1.6 the zoom value is .50 and this frustrates me, because either its too close, or its to far away. At least in 1.1a, there are much more zooming values and I can map comfortably.

2. Slowness. 1.6's 3d view runs much slower compared to 1.1a. Even if it's the same exact map, 1.6 renders it much more slowly than 1.1a, thus making texture alignments a real pain in the ass, and I'm forced to use visgroups, which you don't need in 1.1a because it never slows down. And another weird thing. The wireframe 3d mode in 1.6 renders MUCH slower than textured or solid mode. But in 1.1a, Wireframe mode renders much faster than textured or solid. Whats up with that?

3. Selection handles. I hate these things. They not only distract me from the actual brushes themselves, but they sometimes get in the way of other items, normally entities. Thank god 1.1a doesn't have them.

I may have a few smaller gripes about 1.6, but these are the real main issues. However, I do have positive things to say about 1.6

1. No file size limit. 1.1a has a .map file size limit of about 1800kb. 1.6, as far has I know, has no limit.

2. Better shearing manipulation than 1.1a.

Thats about it really. All those extra features in 1.6 I do not use. Anything 1.6 can do, 1.1a can do as well, to a degree. And there you have it. 
The Problem Appears To Be Fixed 
I had no luck fixing the leak myself, so i sent it off to AguirRe. He said that he really couldn't do much, as it seem that my curves were not exactly snapped to the vertices, so it was causing the compiler all sorts of headaches. So i thought that perhaps if i scaled up the size of the pipe, that would make it large enough to have all of the vertices lie on the grid. I rebuilt, and tested, and was met with failure. Several times, to the point of my girlfriend imploring me to stop working on it.

(I didn't)

Well, since this wasn't working, i rebuilt the pipe example in CZG's tutorial, which obviously compiled without incident. I compared this to my failed ventures, to see what was different. I'm pretty sure i've isolated the issue.

In order for curved pipes to compile properly, it would appear that:

The diameter of the outer region of the pipe must be equal to the radius on the inner section of the pipe.

On the pipes i was trying to make, the above ration was not used, leading to a leak every single time.

I'm guessing that if the ratio stays the same, it betters the scalibility of the pipe, so when it's stretched in strange and unusual fashion, it causes for vertices to be formed off-grid. Or something.

Does this sound cogent? 
Like I Said Before, 
You have to think in base 2 (8 for doing the stretching). Basicly everything in games works on power of two and is sqaure. The textures in Quake that are rectangular slow down the engine because it basicly converts them to square before drawing.

The wedge used for the pipe bending is 2x4 to the grid, which means all subsequent structures are based off that ratio, if it's different or off-grid then it won't work, like you say, lots of holes and warped shapes.

Hopefully that makes sense, but usually you just have to sit there in editor and mess with it until it clicks. 
The textures in Quake that are rectangular slow down the engine because it basicly converts them to square before drawing.

Okay, this isn't really true. Video cards (except some of the newest ones) can only handle texture dimensions that are powers of two, but they don't have to be square -- a 64x128 texture is just fine, for example.

Second, non-power-of-two textures don't slow the engine down except perhaps for a few nanoseconds at load time when the engine resamples them to a power-of-two so that the video card will accept it. But there is no performance hit during play. 
Ah, Ok 
Although I did mean power of 2 textures that are rectangular.

The problem with non power of 2 on modern cards is that a default colour is generally inserted to fill in the space and make them power of 2. Which can cause some strange visual effects, like a load of black lines marching down a wall or pixellated artefacts on eg. a fontsheet. 
is that really true? I would think that sort of artifact would result from bad resampling done by the application.

I assumed that the cards that truly support it (using ARB_texture_non_power_of_two in OpenGL for example) would support it seamlessly and without artifacts -- otherwise, what's the point?

However, I have not personally seen it in action. 
A fontsheet is typically 1024x2 and we spent nearly a week trying to sort one out, convinced it was an art problem but unable to find it. Turned out nobody thought to check the dimensions. Random letters had a one pixel almost invisible line along one edge, but depending on the tv / where the text was on the screen it could be invisible.

We weren't building for PC but it's the same kettle of fish. Turned out the image template was saved in 1023x1024, thanks to some option of the fontsheet exporter. These are the basic kind of things that are overlooked for platforms, like full .png support etc. 
what platform? are you sure the hardware really supported it and there wasn't some code in the API that silently resampled it at load time?

I confess to know basically nothing about console development, except that PS2 devkits are really noisy. 
And 360's Drop To Pieces 
Bounding Box V Model... 
One beastie I'm working with at the moment has a bounding box as big as the doggie but a model that is quite low to the ground. The player can actually jump over the thing. So, does collision detection work differently model:model and model:world? 
...I'm using fitz80 (with a custom progs) and when I'm in -developer 1 and have the SNG, if I shoot a brush object I get a message telling me what it is (worldspawn, func_wall etc.). Is this a feature of fitz80 I've never noticed or the result of ineraction with the progs? 
Bounding Box 
The bounding box of the model is only used for the engine to determine when it needs to render it. But the hitbox set by the QC with setsize() is used for collsion between player and monster, for instance. So if the height is set low enough you can indeed jump on them.

And that SNG message was a dev thing I put in to try and fix a bug, it'll be removed in the next version. 
Lightwave To Quake Map 

Having some problems getting a lwo to convert into a map or bsp? Any recommended tools or utils? A lot have disappeared over the years, anyone got any on a dusty harddrive. Many thanks. 
Ta Preach... are the bomb, as usual.

I definitely won't be binning that progs version :). It's annoying when one is "playing" in developer mode, but might be extremely useful when one is debugging a level. 
...I'm using fitz80 (with a custom progs) and when I'm in -developer 1 and have the SNG, if I shoot a brush object I get a message telling me what it is (worldspawn, func_wall etc.). Is this a feature of fitz80 I've never noticed or the result of ineraction with the progs?

huh... must be the progs :) 
Modding Is Easy 
Checking your post to make sure it isn't broken? Or ever returning to the thread?

That stuff's tough... 
Yep, I'm Dumb. 
That should have been in the Jobs thread.

(Posting in the right thread? That shit's damn-near impossible.) 
Quoth Add-Ons 
There are several Quoth add-ons being developed and the current situation is that all have to co-exist in the main Quoth directory. This is cumbersome and highly error-prone both for developers and players as pak files must be arranged/renamed to avoid conflicts. When more paks are added, the situation will deteriorate pretty quickly.

I'll probably add a new engine option -quoth to solve this problem in the same manner as other major Q1 mods; hipnotic, rogue and nehahra. This option will make it possible for each new Quoth mod to have its own directory and still load things from the main Quoth dir. So instead of having a command line

-hipnotic -game quoth

you'll have e.g.

-quoth -game warp

(if the mod is called warp) and instead of having conflicting pak files all in the Quoth dir, you'll just have the overriding ones in your own mod dir, beginning with pak0.pak and upwards as usual. Engine resource search order is then current dir (the mod dir), quoth and finally id1.

The -quoth option will automatically set the -hipnotic behaviour for the engine (basically the status bar), but will not add the hipnotic dir in the search order, i.e. it will not require anything from hipnotic paks. AFAIK, this is how Quoth wants it; it doesn't require hipnotic to be installed to work.

The engine code to add this behaviour is simple, just a few lines in a few source files and it follows the same manner as all other major Q1 mods. I'm testing it right now and it seems promising.

Any comments to this? Have I missed something? 
while i think that's a really cool idea, wouldn't it be better to have a way so you could load any mod like that? ie: quake -base quoth -game warp so that it could work with any other mod out there where people would make new mods for it. 
LordHavoc recently modified -game in Darkplaces in a very interesting way.
Usually you want to put replacement content in either id1/ or another directory such as pretty/ inside your quake directory, in DarkPlaces you can run multiple -game options at once (such as -game ctf -game pretty -game dpmod to have texture overrides from pretty, maps from ctf, and gameplay from dpmod) or multiple gamedirs specified with the gamedir console command (gamedir ctf pretty dpmod).
I wonder though what priority there is. Looks like the last -game overrides the previous. "-game first second third" would be more logical on a first glance for me where first is the "master" (overrides all previous). Dunno.

"-base quoth -game whatever" looks nice to me. One should not want to use more than 2 mods at the same time anyways (normally). It would be a bit nicer if something was changed in .pak usage. Like getting rid of the pak0, pak1, pak2 and allowing any name for them (maybe even proceed to .pk3 or just .zip/.7z/something). Maybe choose the paks with 1..., 2... in their name to be first, second priority.
Just brainstorming. ;) 
Looks Like A Nice Simplification 
The multiple packs pending are going to be awkward to arrange properly, so this is a great idea. It has other side bonuses as well - quicksaves, screenshots and demos (etc.) will be kept seperate, allowing clean folders without conflicting junk confusing what's where.

Warp enters final beta in seven days since I've got plenty of time to work on it atm; having this feature will allow me to avoid stepping on anyone's toes or mangling the end-user's Qouth folder.

Good idea! 
I thought about that too, but then you'd lose the custom connection with hipnotic behaviour, which means you'd have to specify that as well.

More important, this is a really simple extension and it's not like there are dozens of major Q1 mods ... This is basically the first SP mod after Nehahra that needs this treatment.

As for DP, AFAIK it already uses precisely this syntax probably more than any other engine for all its supported mods; nehahra, transfusion etc.

Simplicity might also be imperative to getting metl to put it in Fitz soon ... ;) 
So, this is something i've thought about before.

The way -game works is it adds a few extra paths onto the list of searchpaths for loading a file. For example, if you are playing rubicon2, then quake would try to load each file from locations in the following order:

rubicon2/ (unpacked files)
id1/ (unpacked files)

There's no reason you couldn't add more -game commands on the command line and have them added to the searchpath list (after increasing the array size so it doesn't overflow.) Paths at the top of the list would always override paths further down the list.

I would prefer to mimic darkplaces syntax (-game quoth -game mymod) for the sake of standards, rather than "-quoth" which would be inconsistent with DP and would provide less general functionality (since it only works with quoth.) But I understand that you'd still need -hipnotic.... hmm.

In the case of fitzquake, since you can dynamically change moddirs using a "game" command in the console, I would have to modify the command to take more arguments... "game quoth mymod" for example.

One weird thing about -hipnotic and -rogue is that they do more than affect the searchpath list, they also change some things in the HUD. Fitzquake currently can't turn that stuff on or off in the console, unfortunately. It's something I should look into. 
I can see how -quoth makes the task simpler from a coding standpoint, so maybe your idea is the right one :) 
If There 
ever was a standard in handling add-ons to add-ons, it *is* the -hipnotic, -rogue, -nehahra syntax. All engines work like this and should therefore be able to add this option without problems.

My proposal is a simple and neat solution to a growing problem. Once you start generalizing it, it'll just be more convoluted and less coders will be interested in adopting it.

A few simple lines in a few source files, that's it. In my engines, it's actually only two files and the header file is optional since the var is only used in common.c.

It should also be noted that a Quoth mod that's distributed in this way, will not shut out all other engines that don't support it. The player will then just have to re-arrange the pak files in the main Quoth dir instead, and this is something they'd have to do anyway.

The only drawback I've seen so far is that someone (like me) that regularly swaps engines while testing mods, will have to make some arrangements when using engines that don't support the -quoth option.

But I think I'd rather have that, than the pak file mess in the Quoth dir that I have now. 
i meant standard in the sense that the only engine that can currently load quoth + another mod is darkplaces, so if we copy that then all engines do it the same way.

However, I support your plan for its simplicity. You could probably convince lordhavoc to implement it in DP as well, since he often adds things to DP that are motivated by the needs of specific mod projects. 
There Is 
of course the question of Quoth2, should it be put in the main Quoth dir or should it always be included in newer Quoth mods?

The former is the most space-saving alternative, but it basically requires that Quoth2 is completely backwards compatible in order not to break existing Quoth1 mods. Also, it requires that any further Quoth core development has the same characteristics.

The latter requires more duplicated files in newer mod distributions, but OTOH it'll not break anything and is the preferred route if Quoth is going to be further developed. There's a lot more freedom in this alternative.

Naturally, both routes will quickly become a seriously complex mess if new Quoth mods are placed in the main Quoth dir (which is the current situation).

There are of course more alternatives; e.g. to rename the existing Quoth dir to quoth_old and put together a new Quoth dir that essentially is Quoth2, which then can be used as the base with the -quoth option. Or add yet another engine option -quoth2 that automatically will include both dirs in correct order.

But all this is probably stretching it too far, this is not a proposal to solve any and all potential problems in the bright future when there are dozens of new Q1 mods in various versions being released each month ... 
The way I handle multiple pak files is with symlinks.

I name my extension pak "plaguespak.pak" and make a symlink like this:

ln -s plaguespak.pak pak(number).pak

That way I always know what is inside a pak file.

It's the same with progs. dat and (Q2) files; I have a progs.dat.qdq linked to progs.dat, a linked to etc. The expansion pak retains a meaningful name _and_ the engine thinks everything is OK.

In my mod directories (like BB, hipnotic etc) I have the corresponding speedrun demos; I just dumped the paks in there, named them nhrun.pak and linked them to pak(number).pak. So I can easily watch a NH run of the map I'm on without changing gamedir or using complicated command line switches.

I guess that's expecting too much from the average windows user though :-/ afaik symlinks are practically unknown in that culture. 
Uh, Yeah 
I don't know what the hell you're talking about ;)

Now for wikipedia . . . 
No problem. At least you didn't ask if I was taking drugs.

A symlink is practically something that looks like a file, has a name like a file, but in reality only links to a file.

You can have a file called pak0.pak whose single purpose is to link to another file. If your Quake engine calls for pak0.pak, the symlink pops up and says "Hey! That's me!" and in reality only redirects the Quake engine to "quoth.pak" or whatever (any path really.)

Thus your Quoth pak can keep a name that means something instead of being renamed to pak0.pak (where you quickly forget what the hel is inside it.) Pretty neat feature.

When you combine this with shell scripts, you can do all kinds of stuff with files (create a symlink before you start your program, delete the symlink on shutdown, automatically... anything. You can redirect binaries to a number of different config files etc.)

For example, I have extra X11 config files for games in fullscreen mode. The game gets their own X server, their own config... and afterwards, everything looks like normal again. (X11 is Linux' windowing system.) The benefit is that nothing else uses that instance of X11, so the game runs faster/better. Symlinks are used to redirect the X11 program to non-default config files.

yadda yadda :-) it's practical for PAK file housekeeping purposes, that's all.

I also use symlinks to my Quake config in my mod folders. 
Without Knowing 
any details, I assume it's an OS/FS feature available in *nix? I don't know if Windows' NTFS has a similar feature, otherwise maybe upcoming (Vista++?) versions of it might.

Sounds useful if you know what you're doing. 
Sounds useful if you know what you're doing.

That pretty much sums up the *nix experience :) 
any details, I assume it's an OS/FS feature available in *nix? I don't know if Windows' NTFS has a similar feature, otherwise maybe upcoming (Vista++?) versions of it might.

There are NTFS hardlinks, which are basically the same thing I beleive, and I don't think they're officially supported. It's one line of script-code in AutoIt, I've used them to get around certain apps that don't tolerate root directories well (so I hardlink a subdir somewhere to that root dir and all is well) 
While testing the new -quoth engine option, I noticed that in Quoth2 (beta from Nov 2006), there's one h_scourg.mdl that's required from the hipnotic paks to work.

Are you aware of this issue or should I assume that Quoth2 actually will require hipnotic to be installed? 
we're aware of it, it's just the scorpion gibbed head model we forgot to put in the beta 
I've simplified the -quoth option handling and removed the global var so it's even easier to add the feature now. With this design, you can still add the -hipnotic option if you want to, even though Quoth normally doesn't need it. Idea copied from JoeQuake.

Code sections below from two areas in Fitz' common.c (leading dots only for indentation):

if (COM_CheckParm ("-hipnotic") || COM_CheckParm ("-quoth"))
....hipnotic = true;
....standard_quake = false;

if (COM_CheckParm ("-rogue"))
....COM_AddGameDirectory (va("%s/rogue", basedir) );
if (COM_CheckParm ("-hipnotic"))
....COM_AddGameDirectory (va("%s/hipnotic", basedir) );
if (COM_CheckParm ("-quoth"))
....COM_AddGameDirectory (va("%s/quoth", basedir) );
I'm working on detailing a Q3 map at the moment, based on a blockout I did for the Raven lunchtime RA crowd. It doesn't need detailing because they play with it as is, but as long as I have the layout I figured I might as well throw some guns in the corners and make it Lun3DM5.

I wanted to go for a similar theme to Strombine, with plenty of brick and metal trusswork, but I'm finding myself getting stuck. I had gone ahead and been as abstract and free as usual with my blockout since surely I can bend any theme to any shape because I'm fucking Lunaran, but I'm finding the proliferation of 26� and 45� angles really don't lend themselves to the boxy functionalism of a factory space. They also make it impossible to do the distinctive sloped ceilings and peaked roofs.

My original plan had been to just go ugly 70's poured concrete everywhere, because the images you see of old bunkers and other structures where the whole building looks like a blank canvas for weathering and decay are really awesome. I thought I might get that kind of variety out of liberal decal use but it turned out to be a lot of decals for very little payoff.

I'm still wanting to do something that's less abstract and fantastical than previous maps, just because doing the same thing over and over is easy, but I'm afraid I might have confined myself to such things by starting with a blockout shell that requires it.

It's probably nothing anyone can help with per se, I just thought I'd vent, and GA is currently wrapped up in a discussion about economics. 
I saw your Q4 Strombine map (thank to PlanetQuake), and I think you should open a news thread for this map: it deserves it IMHO. I don't have Q4 on my PC, but the shots are particularly realistic: Good work ! 
so yeah, i'm working on a map (q1). i've been using glquake to test it, with no problems. i just tried it with winquake though and got the error:

"mod_numknown == MAX_MOD_KNOWN"

when i tried to load it, resulting in winquake dying. any ideas? 
It's An Array 
of known "mods" in the engine that's exceeded. A mod is any unique bsp/mdl/spr that has been loaded into the engine in the current session.

The original limit was 512 and you typically exceed it by loading many bsps in sequence that also require many mdls/sprs. My engines and DP have higher limits.

What exactly are you trying to do when this happens? 
I see now that the original limit was actually only 256 in WinQuake and 512 in GLQuake, that's probably why you're seeing a difference. Still, it's not so common to hit that limit. 
I See.. 
well, it was only the 3rd map in the session i'd loaded, was checking round 2 others first (it's kind of an episode i'm working on).. and i'm sure i've played through many many more maps at a time than that! could it be something to do with not allocating extra memory? just realised i didn't do that

still i tried again and got it to load on it's own.. just relieved it's not a prob with the map 
It's A Static Array 
in most engines, i.e. it doesn't help to have more RAM or heapsize. Is it reproducable? Are you using a custom progs that loads a lot of stuff? 
Texture Trouble 
So here I am, mapping away happily in WC 1.6. I make a wall, it has Texture X on it. I replace it with Texture Y. I save, and close WC for now. Upon re-loading the map in WC, the wall that I replaced with Texture Y, still has Texture X on it.

Apparently, this certain wall does not want to change its texture, no matter what I try. I mean, I can change the texture to Texture Y during my current session in WC, but once I save and re-open it, the texture reverted itself back to Texture X. What black magic is this?

Anybody else experience something like this, and have a solution? 
Worldcraft Texture Naming Bug 
You've got to rename texture X or Y to fix it, inside the Wad. I'm not sure what the proper convention is so that Worldcraft doesn't revert your textures. Alot of Kell's metal textures have the same problem, just for the name, though its not something that was possible to forsee.

Its an irritating bug but can be easily solved in TexMex. 
Well I Fixed It But.... 
Renaming the texture in the wad file was not helping. Here was my situation.

I have 3 textures. wbrick_egy wbrick_egyv1 and wbrick_egyv2.

The wall that was reverting its texture was the texture wbrick_egyv1. So I went into Wally and renamed the 2 textures to wbrick_egvn1 and wbrick_egvn2.

So back into WC, the texture name of the wall was wbrick_egyv1. If I changed the texture to wbrick_egvn1, it would look like it changed, but in reality, the texture name was still wbrick_egyv1. So no matter what texture I could have put on that wall, the texture would have always been wbrick_egyv1.

So the only thing I could do to fix it was to delete the wall and make a new one with the correct texture. 
I believe WC 1.6 only uses the first 8 letters of a texture name when matching names. 
I've Had This Problem 
i *think* the way it works is that when you're replacing the texture, if the first ~8 or so digits of the new tex's name are the same as the old one, it doesn't save properly and reverts to the old texture when you reload. next time it happens try renaming your new texture to w_brickegbnv1 or something like that 
D'oh Too Slow 
For Rj 
In the mapping contest thread you wanted to know how hard it was to add monster spawning to the standard progs. There's a tutorial on how to do that at:

It might not be exactly how it's done in quoth, but it will probably do what you want. 
Thanks Preach 
i'll just go step quietly back into my corner.. 
I Made 
a so called spawn64 progs for JPL's CDA map, it has basically the same spawning as Quoth (or Zerst�rer actually).

If you wish, I can update it to my latest std id1 fixes and you could check it out. 
Just Fyi 
i don't think the quoth spawning is that good... in fact, it's probably the worst way to do it. preach's looks a lot lot better and a lot simpler too. 
would it be possible to change it then? without b0rking maps using the previous method? remember, when it comes to code I know nothing 
just delete all the spawning stuff and use preach's nicer method, replacing spawnflag values where appropriate to keep it from breaking existing maps.

i really only skimmed his method though, and it may not be any better. :P

it looks like all the spawning stuff goes through the same function, unlike how i did it which was to have a seperate function for each monster.

preach's method looks more streamlined and... uh.. unified, i think is the term.

it's just that it's really boring and long to do cause you gotta open up 20 or 30 something monster qc files and change the same lines of code over and over. 
NOOOOoooooo !!!!! 
If you change spawning method, I will have 3 maps to rework entirely !

And what about back compatibility ! Please don't do that Kell ! 
wtf do you think I was asking about? backwards compatibility is exactly what I want to keep 
i would have said yes but judging by the previous few replies, preach's technique looks more like the option to go for. what other fixes are incorporated in your progs?

i've been slowly grappling together bits of code from various sources to come up with my own progs.dat for the episode i'm working on. i'm no coder by any means but i'm starting to understand some of the qc basics & have gotten a few new mods to work ok. i actually browsed the inside3d tuts before but somehow missed that one.. dammit 
Too Many To 
mention ...

As for spawning simplicity, how can it be much simpler for the mapper to just add 64 to the spawnflags and a targetname for a teleporting monster? 
aguirRe is right i use in Quoth and real easy what�s the big problem? 
Sorry, I misunderstood the subtelty of your sentence... and I also think that spawn64 method is really good. it is very simple to use, so please don't change it.
Maybe coders have another point of view... but I think the sipmpliest it is for users, the better it is.
My 2 cents... 
Quoth Spawning 
Works well, and is very simple to use. The func_hordespawn has an issue but nothing killer.

As far as I can see the only way it could be improved is spawning entities with preset variables, targets or killtargets, for example.

HL1 had this but from the (very) little I know of QC it's none too simple. 
quoth spawning lets you set targets and killtargets no problem. In fact, enemies you choose to spawn can be set up exactly as if they were regular unspawned enemies because that's what they are. The spawnflags just delay their spawn. You can even have them spawn and go to path_corners and it works no problem.

Unless you are referring to the hordespawn. I guess it would be cool to be able to set enemies spawned with that to have targets so you could unlock a door after the player kills 10 monsters spawned from it. I've never tried to use it though, so maybe there is a way. 
Yep, Hordespawn 
The open a door thing is a bit straightforward, I was thinking to make some of the more complex horde battles a la Serious Sam - the arena spawns thirty fiends, after you kill ten of them it spawns twenty scrags, once you've killed a total of twenty monsters of either type it spawns ten shamblers and once you've killed all the shamblers the door opens.

And then, if the player runs away they live to fight another day, but if they kill all the monsters a MH unlocks. 
...I could use a hand finishing a DM level if you've got the time and the inclination. Your email in the "people" section seems suss. If interested send to my gmail :) 
Worldcraft Starting To Stress Me Out. 
So, after a long discussion with aguiRe, apparently WC 1.6 likes to misalign my brushes. What I mean is, I could be working in the .rmf adjusting wedge brushes with the vertex tool. The vertices of the wedge brushes might look perfectly aligned in the .rmf, but in the .map, some vertices are misaligned, sometimes but 8 units or more.

Has anybody else experienced this before? If so, how do you go about working around this?

I'm currently doing my mapping in the .map, but I want to go back to mapping in the .rmf. But with this vertex mishap, I simply cannot. 
It is sometimes necessary to break wedges diagonally into two separate "spike" brushes, like when trying to create a spiral path ala CZG's curves tutorial. 
wc does that because it doesn't check to see if your brushes are valid or not. If you use vertex manipulation, you can totally fuck up the validity of a brush if you so desire, so you need to be careful to keep faces planar and brushes convex. As generic mentions, you can build more complex shapes by splitting brushes with the clipper tool. An interesting feature of worldcraft is that if you split an invalid brush with the clipper, the misaligned vertices will change position.

You can actually create REALLY huge problems with the clipper if you aren't careful though. When clipping multiple selections, be sure not to clip along the face of a brush, as WC will create an infitely small brush that will stop compilers but can be a total nightmare to find. 
As Well 
Avoid long thin triangles, or ones where the centre handle is close to an edge. 
I Followed Generic's Advice And... 
...split the wedges into 2 triangles with the clipper tool, then readjusted them. Surprised to say, that did the trick. So, for every brush I'm going to adjust with the vertex tool, I should split into triangles first? 
Basicly. It's slow but that the way brushwork is. It depends on how complex the shapes are, for simple terrain you can get away with wedges as long as the centrepoints are fairly central to the brush.

For complex stuff you'll most likely have to break it to four pointed brushes. 
So, for every brush I'm going to adjust with the vertex tool, I should split into triangles first?

not really. providing you keep your faces legal then there should be no need for this.

if you can't figure out what a legal face is then imagine 4 points laid out in a square, like so:



and imagine you have a square sheet of thin metal that sits on top of it, meeting each point at the corners.

now, imagine raising point 4 by 5cm or so, and trying to lift one corner of the metal sheet to align with it.. you'll see there's no way to do it without bending the sheet. this is the equivalent of creating an illegal face in your map, so WC ends up trying to correct it when exporting. in order to make it legal yourself, you could either a) raise points 2 & 3 by 2.5cm each, or b) saw the sheet in half diagnonally (clipping equivalent) so you end up splitting the face into 2, which gives you more flexibility (as has been said, 3-sided faces are always legal)

i'm not sure legal/illegal is really the best term but it works :p ..i guess than had it right with 'planar' 
Do you mean you're having the problem with wedges (5-sided) or tetra triangles (4-sided)? 
Whew, Lot Of Stuff To Remember 
I pretty much understand now how I should go about adjusting brushes with the vertex tool. I have never used these 2 tools before, clipper and vertex, and this is why I am asking these questions. I have always been a man of carving.

Thanks much for the help rj, generic, than, and ijed. :)

Do you mean you're having the problem with wedges (5-sided) or tetra triangles (4-sided)?

5 sided wedges is what I was having problems with. 
Demo Question 
I have a demo on one of the Travail DM levels that I'd like to use as an opener for the mission. Unfortunately, the demo was recorded on a previous version of the map to the release version. The only difference between to two versions is the Text at worldspawn and the CD track number; file name etc remains the same. Is it possible to hack the demo file so it links to the latest version of the level? Alternatively, is it possible to hack the demo file so it plays with a different CD track? 
Dirty Map Title Hack 
i don't know how to change the cd track, but you can change the map title by editing the .dem file with a hex editor if the intended title is shorter than the present one (fill the remaining characters with blanks). maybe there's a better way, demo editors for example (e.g. filmat11?). 
There Should Be 
several ways to do those things, I'd probably hex patch it as the CD track and message are at the beginning of the demo file. You can probably also use lmpc, demtool or other similar utility (see SDA downloads).

If the demo isn't so big (dzipped), send it to me and I'll try to patch it. 
Cool... guys are champions, as always. 
Ingame Proposal 
I wondered if it would be possible to add a short ingame show-demo like in hexen2 to a map to give the player information about some act-in-game after pushing a button.

Maybe it has something to do with changing the progs.dat, I don't mind, just wanted to know if it's possible. 
It's possible in some sense, but it's not all that easy, and you need some custom code to do it. You might want to check out zerstorer for an example of what can be done, pushing a button in the second level(among the dead) gives you an in-game cutscene of what the button did(in a different part of the map to the player). The main restriction is that you can't actually play demo files as such, without disconnecting the player. So instead you need to recreate whatever you want to demo "live", which might require a lot of custom qc code.

You might also want to look at the "custents" mod, which has some cutscene code supplied already.
This will allow you to change the player's view to a camera when they press a button, and do some scripted sequences. You might need extra code depending on what you want to happen in the cutscene. 
Does it fairly neatly - but its a big download for your end users. 
Would help if I linked to a download site you could actually download it from, try: 
supports an in game camera mode that can be used for scene like actions, (close up of Chthon: "Quakeguy we meet again, but this time I have the
upper hand! See. No lightning rods anywhere!), but as far as demos -- I haven't realy experimented but there is a QuakeC patch somewhere in here:
(sorry, having a brain fart over its name)
that lets you trigger cvars so maybe a setup like this would work:
trigger_cvar(entityfield savegame) --> trigger_relay ---> trigger_cvar(entityfield playdemo) ---> trigger_relay ----> trigger_cvar(entityfield loadgame) 
Ah, Missed Preach's Post! 
Cutscenes Via Cvars 
This method has potential, but there's a problem with the way you describe it. At the moment, once you load that savegame, the first thing the progs will do is load the cutscene again, as you saved just before that command. So you need another cvar like scratch1 as a check to whether the cutscene has run. Something like

cvar_set(scratch1 1)
trigger_cvar(entityfield savegame)
if(scratch1 == 1)
trigger_cvar(entityfield playdemo)

at the end of the demo stuffcmd "scratch1 0;loadgame"

Then when it loads, the cvar has changed so the cutscene isn't run. 
In the unreleased portion of FMB-bdg (The Imp's Castle) I had used the cut-scene module from Vision by Darin McNeil.

The scenario is that just as the player picks up one of the keys, the view is switched to a camera showing a reinforcemnt troupe of Ogres rushing across the castle courtyard towards the player. So, the player has been warned but he doesn't know exactly when they will arrive.

I works quite well and was very easy to incorporate into the progs.dat. 
Vision Pak 
Yes, I'd also suggest to take a look at that: 
Thanks for your answers! I asked it on the Quakeplanetforum to check if the dates were changing (they didn't) and got rather cheered off.

I don't care about some coding, but I remember this question being asked earlier. The main reason was demo's need to be loaded in the quake engine before the game starts.
And working with camera's is already a big count on my knowledge.

As for the hexen2 exampel, I thought it was made with the Quake2 engine(?) which has other capabilities. Although I thought Quake and Hexen could go through one slipgate.

I'll check the custom ent mod, and try the others also. I ain't have a straight idea for it yet, but as I found myself at some strange mapping ends I was intrigued by the way it was done in The Portal Of Praevus. 
New Old Q1 DM Map - Golden Apples Of The Sun 
So errmm.. I have this q1 dm map, a sequal to my old map "Shall I compare thee to a summer's day" (Summer.bsp) which is 99% finished. it seems however that I just can't get the time to finalise it. It is enormous, fits 16 players easily, and I am not sure what to do with it. What do you guys think? Keep at it or dump through lack of dm interest?

My Suggestion, Keep At It 
and give the map file to Than (if he concurs) so he can build Single Player play into it. Your map would then get the audience it deserves. 
Release It! 
if it is a good ffa map then the qw ffa server(s) will probably install it. 
Good idea but haven't spoken to than in ages.
Is he on #terrafusion maybe? 
Than's Here 
And I'd say if it can fit 16 players then you can get SP working well inside. With or without SP you should release, don't give up. 
On Here 
and TCE as YMLL :) I posted in your level design thread a while ago in fact.

Not sure I really have time to work on an sp conversion of your map, but I wouldn't mind having a look if that's alright with you.

If the map is really big it might be a bit daunting to do a good sp conversion. DM3RMX was a good month or two of work, though a lot of that was spent building stuff, so perhaps adding SP to an existing dm wouldn't be so hard. 
Long time no speak Than :-)
let's continue this on email?

h� that vision pak is great!

Must thank that Darin McNeil for his sense of scripting, although it's more then ten years ago. Had to know this earlier, but before it was just spagethi to me. 
Quake C Triggers 
I'm currently having a look at triggers in QC and am wondering how to implement a new touch trigger type that doesn't precache any model. I basically want this so that I can have a lot of touch triggers without wasting precache ents on something that can be represented by two position vectors.

The plan for the triggers is that the mapper places a point entity on the floor and then enters a vector that defines a box from that point as an offset in x,y and z. The main problem is that I don't know how to make Quake understand that the player has entered this area. The other problem is that I barely remember how QC works at all :)

Any tips would be awesome. 
More Regurgitation Of Q2 Lazarus 
. . . where they had exactly what you're describing, a bbox min and max the defined the area as a trigger once / mutliple / whatever.

I seem to remember it had the problem of always being solid, though you could tell it to autokill itself afer triggered.

There's plenty of documentation of the planetquake/lazarus page, don't know if it'll be much help for Q1 though. 
Point Entity Triggers

The first half of the post is how to do it, but it's missing one very vital line...

"Find the line
setmodel (self, self.model);// set size and link into world
and replace it with this chunk of code"

should also mention that you are looking for that line in the function "InitTrigger" found in subs.qc

If you have any questions on why it works then fire away. 
Re: Quake C Triggers 
Seems pretty easy actually. All I need to do is create a new InitTrigger function that uses setsize instead of setmodel and then copy the main trigger functions (e.g. void() trigger_once) and replace the InitTrigger call with a call to my new function. I should have probably waited a little longer before posting a message about this actually :)

If it doesn't work then I'll post again >:) 
It's even easier, you replace the lines in the original InitTrigger, so it now works for both types of trigger. Then you don't need to create any new classnames in theory, just creating a point based entity with classname trigger_multiple will work, and the same goes for any types of trigger. Saves a lot of copy-pasting with the same change over and over.

The added trigger_multiplep class is just a convenience for mappers using worldcraft, which gets confused if you add a point entity with the classname of a brush entity. So you create a new class, which then just calls the exact same code as trigger_multiple. Kinda like how monster_ogre_marksman just gives you the same entity as monster_ogre(except the classname). 
Marksmen Are Different 
Seems not to be widely known because its easy to miss, but the difference between a marksman and standard Ogre is that the marksman doesn't play his alert snfx - the Ogre roar / growl we all know and love.

But you probably already knew that ;) 
I tried that too, but I wasn't sure how to differentiate the func from the point ents in code. Can I just do
if(self.model) {setmodel(blah);}
else {setsize(blah);}?

I tried using self.mangle as the differentiator last time, which didn't work, though I guess that was a pretty dumb idea anyway.

Are you sure it's safe to meddle with the inittrigger function? 
Yeah, it's because the alert code checks the classname to decide what alert sound to play, and doesn't have an extra check for monster_ogre_marksman. Other places this matters are infighting - monster_ogres will attack monster_ogre_marksman, and obituaries, which are uncredited if the marksman gets the killing blow. Most interestingly, while the monster_ogre uses OgreCheckAttack, the marksman uses the generic CheckAttck function to decide when and how to attack.

The differences between the two are that OgreCheckAttack always melee attacks if at melee range, and always fires grenades if enough time has passed since the last attack and line of sight is not blocked. CheckAttack is more probabilistic, with 20% chance per frame of a missile attack if near, and 5% per frame if mid range. On the upside for the marksman, the minimum time between attacks is shorter, randomly between 0 and 2 instead of 1 and 3 for the ogre. So at short range the expectation is the marksman fires faster, at mid range the regular ogre comes out on top, on average. Pretty much all of the marksman's advantage is gone in nightmare.

If you look at the OgreCheckAttack code you might see "chance" assigned various values depending on how far the ogre is from the target. This is all totally redundant, as the function then goes ahead and fires anyway without testing chance. Seems most likely this is leftover code from the generic function that should have been deleted, not an intended design that should have been fixed up.

One other thing I thought of about the AI here is that it shows you how the chance function is not a good way to try and make the enemy close the distance, firing occasionally. Even with a low probability like 0.05, we expect a shot every two seconds. If you're designing your own monster, and you want them to occasionally lay off the attacking to get close, a more reliable way of doing it is to set an attack_finished time.

A crude decision process would be to randomly decide with p = 0.7 say to not attack for a while and instead close in on the player. Then set attack_finished to time + 2, and the monster will just run at the player for that wrong, then decide if they need to melee or close in further, or if this time they should attack. It's useful because it allows you to make a command this frame that affects the ai for several frames in the future. Making better decision than random number generators would be the next step, like deciding to close in if the player has a RL out. 
Checking whether the entity has a model is a safe way to decide whether the entity is a brush model or a point entity. The original f