Optimising maps for the idtech3 engine

  1. Use the caulk (or nodraw) texture for faces that are always invisible in game. At first those facing the void.

    (Image 1.1a) (Image 1.1b)
    (Image 1.2a) (Image 1.2b) (Image 1.2c)
  2. Prevent overlapping (brush) faces. They can cause significant frame drops.

    (Image 2a) (Image 2b)
    (Image 2c) (Image 2d)
  3. CSG Subtract can cause problems if you subtract curves or complex brushes.

    (Image 3)
  4. If your map leaks at compiling do NOT build a box around it but rather fix the leak. Follow the red line and you will always find the leaked spot. Sometimes it can be an entity, placed into the void by mistake, occurring the leak.

    (Image 4.1)

    Or just a very small hole somewhere behind a patch mesh.

    (Image 4.2)
    (Image 4.3)

    Always be sure you've built walls around your patch meshes, since they act like detail brushes. For leak-finding turn off all the detailed brushes (ctrl+d) and patches (ctrl+p). If the leak is resulting from a big wall then look if you turned the wall into a detail and make it structural again.

  5. Turn a straight wall with many brushes and textures into one huge texture and one brush. It is about texture count and size versus brush count.

    (Image 5)
  6. Use "detail brush" to reduce compile time.

    Example 1: Stairs.

    (Image stairs a) (Image stairs b) (Image stairs c)

    Converting those stairs into detail brushes tells the map compiler not to create leaf nodes.

    Example 2: In the screenshot you can see several arches, triggers, water (under the triggers), cones and other patches.

    (Image 6.1)

    Filter the cones and the patches since they are detailed anyway (ctrl+p). Now select all the small brushes (like the ones on the floor), the arches and all the brushes which won't block the view anyway and press (ctrl+m). You should also detail glass.

    (Image 6.2)
    Patch meshes and detail brush filtered

  7. Brushwork! The hollow function is a bad example how to arrange brushes because parts of the brush faces aren't visible in game. In old versions of gtkradiant the hollow function creates overlapping brushes. Try to avoid to use this function.

    (Image 7)
    Do not overlap brushes like this

  8. Using shaders or skies that cast light are easier to change and look far better than placing and testing each light entity one by one. Moreover wrong placed lights can cause nasty light spots.

    (Image 8)
    Light entity unadjusted in the room.

    Or they just look misplaced or wrong colored in game and thereby destroy the atmosphere. For example when the lighting is too strong for certain lights placed on the walls. Shader-emitted light looks more real and softer.

  9. JPEG textures are smaller than TGA textures in bytes. TGA textures have more quality than JPEG textures. Does size still matter?

  10. Place area portals into doors to reduce the amount of brushes being rendered when the door is closed and you can't see what's behind it anyway.

    As you can see in this picture the door is closed but the engine still renders the faces behind.

    (Image 10.1)
    Closed door without an areaportal and triangles enabled (r_showtris)

    If you place an area portal, with the same sizes like the door, into the door the engine won't do anything behind until you open it.

    (Image 10.4 a)
    Selected door

    (Image 10.4 b)
    Selected area portal

    (Image 10.2)
    Area portal and closed door

    (Image 10.3)
    Area portal and opened door

    Be sure that the brushes, connected to the ceiling, the floor and the four walls, around the area portal are structural. Furthermore the door musn't use any glass the player can look through.

  11. Hints