View Full Version : Oh God, the compile time has gone too far!

05-07-2002, 08:28 PM
As I'm nearing completion on my new level the compile time is starting to go sky high! It is a duel map and the compile will approx take 3 days!! Three feaking days!!!! As you might have already guessed, the architecture is quite complex, but not very hard on the frame rate thoug.
So I was wondering, is there anything (except removing brushes and lights) to reduce compile time??

05-07-2002, 09:13 PM
Earlier today, I had a map compile take an hour. Later on the same map, with slightly more added to it, took about 15 mins to compile.

The only difference was, I wasn't running Any tasks in the background while compiling the second time. Close Everything, that you dont need and let it compile. You might shave a few minutes off of it.

More ram helps, and a faster processor wouldn't hurt either :P

05-07-2002, 09:18 PM
Generaly, compile times reflect the experience of the mapper.
I've noticed that over the last 5 years of making maps, my compile times have been cut by 75%. It's all about layout and considering VIS, BEFORE and DURING the map making process.

You can have the most complex map ever, but if you know what you're doing, you can keep the compile times short ( with full vis/lighting ).

There is no way that a duel map ( read: box map most of the time ) should take three days..... 30 minutes TOPS.
Unless you are compiling on a pentium 75 with 32 megs of ram....

I assume you are grouping brushes appropriately?
Using your detail brushes when called for?
I will also assume that your vis blocking was poorly thought out....and that's where you should look first to fix up compile times. when the map is finaly compiled, load it and use r_showtris 1 to see all of your vis in action...solving the problem should be easy after that.

Good luck my son.

05-07-2002, 09:30 PM
Fact is, that I haven't had this trouble before, it's just that this map is stinking complex... And even if I have been mapping for some time, I don't have the slightest idea of what you're talking about with "appropriate brush grouping" and such :) I must admit I don't have much idea what the vis-compiling does :)
Though, I know not to overuse brushes, and I know what lowers fps a lot...
Plz explain the grouping and vis block to me :)

Notice though that this is no mere box map, I'm not kidding when i'm saying that it is complex :)

05-07-2002, 09:37 PM
I have not the time to explain Vis blocking and grouping ( at work )and such - but know this...grouping multiple brushes together forces the vis compiler to consider all of said brushes as ONE brush, thus cutting down on compile times. Of course, detail brushes are ignored by vis as well.
This is old school quake and quake2 stuph bro :)

Hope that helped.

05-07-2002, 09:42 PM
Just out of curiosity, by grouping brushes in this fashion, are you effectively welding them together?

05-07-2002, 10:11 PM
I'm trying it out right now, I'll let you know how it goes...!

05-07-2002, 10:27 PM
The whole map is now grouped together to about 5-6 groupings, but it didn't seem to cut much on the compile time... if anything :(
I think I know what you mean with vis blocking, my map is totally open so much of the complex structures can be seen from one spot, I knew from the start that this might cause trouble, but i don't let compile time go before my visions of a map.
Still, I think you know alot of others hacks and tricks twoshadows, so when you find the time, plz, tell me :)
Or anyone else of course :D

Cmdr. Antilles
05-08-2002, 12:43 AM
Any brushes that aren't walls, ceilings, floors, or large enought to block your view should be made detail. (control+m)

A good idea is to toggle 'show detail' off (control+d), then go through your map and, make all those brushes I mentioned above detail. When you do, they'll disappear from view (they're still in the map, though), and you should be left at the end with just the boundaries of your map, and all large objects, walls, ceilings and floors showing. Then, compile, and that should cut down on your VIS compile times. You might get a leak if you accidentally made a brush that touches the 'void' (the gray background. ;) ) detail. If so, just select it, and go to Selection > Make Structural to fix it.

I once had to kill a compile after 9 hours because I couldn't wait that long... after I did the above, the compile time was about 15mins. :)

Just give it a try. Oh, and just to be on the safe side, do this to a copy of your .map. ;)

05-08-2002, 01:12 AM
What exactly is the difference to the engine? As in... when you're playing, how can you tell what's detail and what's structural? I'm guessing that structural brushes always appear on your map (i.e. if you enter noclip mode and run out, you'll see all the structural brushes) and detail brushes only appear when you get close enough?

Just a guess, but is that right? :)

Cmdr. Antilles
05-08-2002, 01:53 AM
No, sorry.

The VIS proccess is VERY complex... a quick explaination:

VIS calculates what can and can't be seen by the player at a given point in the map. If a brush is structural, it blocks vis, which means that the vis proccess takes it into account when it decides what the player can see.
A detail brush is ignored by the VIS proc. So, you'd want a wall to be structural, so that anything beyond it (which you can't see) won't be drawn, increasing FPS. If you have say, a chair, though, you'd want that to be detail, since it doesn't really block anything, and would just waste time in the VIS proccess...

All these VIS calcs take place during compile when you run a BSP command that uses them. Like Fast Vis or Full Vis...

That's a VERY brief explaination, but I hope it helps. :)

05-08-2002, 05:02 AM
It took me 2 weeks to render an animation in 3Dstudio Max once.

05-08-2002, 06:59 AM
Originally posted by Cmdr. Antilles
That's a VERY brief explaination, but I hope it helps. :)

Gonna try to explain it a little simpler mate :)

Vis seperates your map in blocks. Each block can see other blocks (called nodes) throuhg portals. This is defined like this : if there is 1 pixel of a block that can get a straight line to another block without hitting a structural brush, it will see the other block If you are standing on block1 and it can see 3 blocks, all 3 blocks will be rendered. Putting a structural brush between 2 blocks will make sure that these blocks can't see each other. However, putting a pillar between these 2 blocks won't help. It will block certain pixels of the blocks, but since at least 1 pixel ofthe block can see the other, they will both be rendered. So there is no need for the pillar to be structural => you make it detail. If you would leave it structural, it would split up the blocks, but they would be able to see each other => no need for that. Make it detail => faster vis process, slower lighting. But the speed increase in vis is much higher than the loss in speed for the lighting process.

When yšu run your map, the engine doesn't know which brushes are detail and which ones are structural. All the engine knows is nodes and portals, and these are already defined. Structural and detail brushes only help you to define these while you are creating your map.

05-08-2002, 07:42 AM
Here is a link (http://www.planetquake.com/spog/stuff/technical.html) to a document that goes through pretty much everything you'd want to know about maps and how they are rendered/handled by the engine.

05-08-2002, 08:29 AM
Oh lol, I had no idea it works like that! *feels like a noob*
Hmm, I have a fence mainly made of brushes, i think that may be the reason, haha

05-08-2002, 11:06 AM
Yes, that would be the problem.

Make those things detail. Select all the brushes that make up the fence and press CTRL-M.

Actually, if that is the map that has the open thing in the center, you might as well make almost all of it detail, except the ground and skybox, because there didn't seem to be much that would be good for vis...but I will leave that for you to decide.

BTW: Someone said that grouping brushes helps, it doesn't. Brush groups are ignored by the compiler. They are an editor side only entity for mapping convience.

Detail brushes are the best defense against bad vis compile times.

Nodes are key to compile times, the more nodes, the more portals, the more portals, the longer the compile. Detailing reduces nodes, thus reduces compiles.

By following the suggestions listed on this thread, you should be able to get that compile down to under 10 minutes.

- Vorax

05-08-2002, 02:47 PM
Yes, it's map with the open center... I did make all but sky and ground detail, it reduce the vis time to about 20 minutes :)
But instead the lighting time has gone up quite high, so the total compile time is about 2-3 hours probably. I think that's probably as low as I can get it on my machine (400 mhz, 320 mb ram), considering the new additions on the map, there are big rocks surrounding the temple now, and i was aware that it would make the compile time go crazy, but i didn't want to comprimise with my map because of compile time... The map contains about 650 brushes, wich I guess is quite high for a duel map :)
In the future I'll try to consider compile time more, but I will continue to think aesthetically, not technically, when making a map.
Thanks everyone very much for your help, if you got further tips on the subject plz tell, I have yet much to learn on the technical aspect of map making.

Cmdr. Antilles
05-08-2002, 04:59 PM
Thanks for uh... clarifiying, Uni. :)

05-08-2002, 07:31 PM
Originally posted by Cmdr. Antilles
Thanks for uh... clarifiying, Uni. :)

Was not meant offensive mate.

05-09-2002, 07:51 AM
Uni: You Aussie?