• Introduction (Home)
  • What's New?!
  • MapMaking Q&A:
  • Beginning Issues
  • Intermediate Issues
  • Advanced Issues
  • Mega-TF Issues
  • More Information:
  • Errors & Solutions
  • Author Advice
  • Files Archive
  • Real Audio Show:
  • Blueprints Mint
  • Internal Links:
  • Blueprints News
  • DyerMaker's Maps
  • Blueprints Guestbook
  • External Links:
  • The Forge
  • QuakeLab
  • TF Console
  • Ented Home
  • Advanced MapMaking Issues


      Q: How did Midori make Ladders in BaM4?

      Thank you Midori, for the answer: Using the CLIP texture on a brush turns it invisible. Players can bump into it and not pass through it, but bullets, rockets, and other weaponsfire can (unlike GLASS; the "glass" trick keeps all weapons fire except the Engineer's rail gun from going through). Ambushed! Mega TF drones can't pass through CLIP-textured brushes - if you were wondering why they stop in the middle of Well6, it's because Kaufman put a huge clip-textured brush in the center "to prevent people from grappling from one fort to the other" (previous versions of Well6 had grappling enabled).

      Essentially, Midori made the ladders that you visually see, and then made little stair-steps in front of the ladders, which you do not see because they are covered with the CLIP texture.

      Q: How do you make one-way doors? (like in 2fort5)

      The way I made one when I was messing around with the idea was to put an info_tfgoal only on the side of the door in which you want it to react to a player entering or exiting. Give the door a name this time ("targetname" "door_out") and have the info_tfgoal call it by name ("target" "door_out"). You may make the goal team-only and class-only if you like so that, for example, only snipers could enter a particular room, or only medics...you get the idea.

      Q: How do you get custom textures into your maps?

      Raistlan suggests using MipDip for this. Apparently it's now called QArt, and you can find it here.

      I have Quakemap version 3.beta 2, and this is how I get my textures into my maps. However, you better believe I'm going to follow that MipDip link up there when I start building a new map! :P Thank you, Raistlan, for these links! Quakemap is now known as QuArK (The Quake Army Knife) and can be found here.

      • Make the texture (has to be the right size: 32x32, 64x64, 128x128 etc). I use various programs for this including Corel Paint 6 and Paint Shop Pro. Be careful of fullbright colors. Save it in .BMP format.
      • Open a BSP which has custom textures with Quakemap (ROCK1 is a good choice)
      • It will tell you that 27 textures were new. This is a *good* thing. :}
      • Hit the "Textures" button in Quakemap.
      • Find the "tab" at the top that says "Textures from Rock1.bsp"
      • Right click on any texture in that group. Choose "Import Texture."
      • Find your texture (newtext.bmp) in the file diologue box.
      • Right click on the new (your) texture. Choose "Export to Wad."
      • Name the wad file, saving it where you keep your other wads.
      • Exit Quakemap. No, do *not* save changes to Rock1! Heh :P
      • Open Worldcraft. Add the new .wad file under Options.
      • Wha-laa.

      Q: What are / how to use Entity Files?

      An entity file contains the information in a compiled map (BSP) about the entities within it. A person can create and modify an entity file for any compiled BSP by using EntEd. Or, one can be created "by hand" using DOS EDIT and searching for the word "message" in quotes. If it doesn't have an open bracket like this { above the word "message" then arrowkey to the line above, hit END on your keyboard, you should see an open bracket there. You need to copy that open bracket and all of the following information down to the closed bracket right before the "junk characters" start. It may take a while, I hold the SHIFT key and arrow-down key to highlight all the entities. Then edit>copy, file>new, and edit>paste that information. Save that as MAPNAME.ENT. Then, the entities (except LIGHTS) may be moved around, changed, even made into completely different entities such as what Ambush has done to add dogs into maps like BaM4. He tells me he may even insert new entities into the file (amazing). Then he runs QBSP like this:

      QBSP -onlyents MAPNAME.ENT MAPNAME.BSP

      ...and wha-laa, dogs in BaM4. I'd be sure to contact the author for permission to tweak the entities in their finished maps, however. As a MapMaker, I would appreciate being asked first, so I am quite sure others would, as well. I asked Midori if I could change his 2Brave1 to incorporate Frags into the scoring and he not only said yes, he also sent me an ENT file for it, bless his heart.

      Building Lagless Levels:

      I found this under "gameflow" at QuakeLab, one of the very best non-editor-specific Map Making sites out there. QuakeLab disappeared for a while so I'm putting the important text here and am including a picture found on their site for clarification. I don't generally take things from other sites, but I feel this is far too important to be lost if QuakeLab bites the dust again. I added QuakeLab's caption into the image itself. I cut out some of the text found at QuakeLab, if you want to read the entire page (suggested) and QuakeLab is still around, then click here. This is from QuakeLab:

      One of the more critical aspects of level editing is the framerate or speed of the level. Generally, the R_SPEEDS value should be kept under 450, although slight excesses are acceptable. To activate the running tally, type R_SPEEDS 1 at the console. Then go through your level, looking all around, and inspecting each room and region to ensure that there are no significant slowdowns ('spikes' in the number outlined in the screenshot.) An easier way to detect framerate slowdowns is the R_TIMEGRAPH. Type R_TIMEGRAPH 1 at the console to activate the graph. The lower the graph, the better. You shouldn't have to use R_GRAPHHEIGHT to increase the graphable area since this probably indicates that you are far past the reasonable constraints. All the id levels appear to maintain graph measures well within the default graph size. Typing TIMEREFRESH at the console will return an average framerate as measured from your current position.

      Before you use these commands, remember to use a complete VIS (vis -level 4) so that you get accurate readings. [DyerMaker's Note: You can shave off even more unwanted R_SPEEDS per level you VIS. EG: You might have 200 less R_SPEEDS at a level 3 vis than you do at a level 2 vis. And you will definitely have more R_SPEEDS on a fast vis than a full vis.]

      The most useful tool for controlling framerate is R_SPEEDS. This command will display a list of numbers that bear directly on the current view's framerate.

      [DyerMaker's Note: I've added this "example" line and modified the paragraph below to make it easier to follow]

      Example: AA.A MS BBB/CCC/DDD POLY E SURF

      These numbers are, from left to right:

    • (A) game cycle time (how long each game cycle is taking in milliseconds)
    • (B) total polygon surfaces in current view
    • (C) total polygon surfaces actually drawn in current view
    • (D) total visible (but not drawn) polygon surfaces
    • (E) total number of polygon surfaces affected by dynamic lighting.
    • Many people have the 'grey planes' problem when their map becomes too complex. If the grey planes don't go away after a level 4 vis, you should start all over again, because the design of your level is the problem. [DyerMaker's Note: Ugh. Before starting over I suggest placing walls that go floor-to-ceiling (especially near doorways) which should help block Quake's view quite a bit. Hills (for outdoor areas) not only make the terrain interesting but helps keep R_SPEEDS under control as well.]

      If you type "R_NUMEDGES 1" at the console you can examine how complex your level is. The maximum of edges Quake can handle is 2000, so now you can check early if you're approaching this value (and do something about it).

      If your level is a bunch of rooms interconnected with hallways, you can easily improve performance by not making any straight hallways. [DyerMaker's Note: Connect hallways at right-angles to relieve Quake's engine. Also useful is elevation; make an entry way descend or ascend into the next room.]

      Putting Sky brushes where you would normally have roof stuff is less costly than doing a textured roof. Why? Because the Quake Engine doesn't split the sky texture like a normal textured surface. Therefore, having large areas of sky is actually faster than a closed off roof. Makes you wonder why there aren't more outside places in Quake..eh? [DyerMaker's Note: This was written way before Team Fortress..eh? :} You'd be surprised what QBSP does to flat planes. Even though it may be one simple brush, Quake slices, dices, minces, and if you order now we'll throw in this handy apple-corer :} Read about R_DRAWFLAT below.]

      R_DRAWFLAT will display all brush surfaces as untextured and solid-colored. This can be very helpful in witnessing exactly how BSP cut-up your original brushes, especially when you make irregular, non-rectilinear shapes. Often I will find that BSP has cut-up a cool looking door into hundreds of small, subordinant polygons. This door will be a huge tug on the framerate and I'll usually get rid of it.

      R_DRAWORDER is another great tool for controlling framerate. It will display the current view in reverse order; that is, instead of blocking rooms and such that are occluded by obsticles in the foreground, it will display them. These occluded rooms and views, although not "seen", are being included in the overall view's calculations and are an otherwise unseen destroyer of good framerate. [DyerMaker's Note: Definitely use this to see exactly what Quake is seeing. Then you know what you need to block out of Quake's view. Remember to get a decent VIS on your level before being too concerned, however. And do remember Quake can't see through water (until you GL vis your level, that is!)]

      Blinking lights are the #1 slowdown for the Quake engine. If you do a R_SPEEDS 1 on your level, and the last number ( xx surf ) is over 50 for any constant time, your level is going to be WAY too slow. What that means is that the engine is redrawing xx surfaces every cycle. Even though Quake's surface cache is the fastest out there, its not that fast. Don't make every light and torch in your level flicker/blink/or fade!! *If you have a big complex room with lots of surfaces, don't even put *1* blinking light in there. That single light will affect every surface in that room (if its bright enough) making the surface redraw jump extremely high, and slowing down performance greatly. *If you do use a blinking light, do it in places where there will be low traffic. [DyerMaker's Note: Another thing I noticed was when I made on- and off-switcheable lights, I was getting the "too many lit surfaces" error. This was in Starbase (a yet uncompleted map of mine). In the TelePod Room, I have 5 teleporters, and whichever one was last activated, a light came on for 10 seconds. This way, if you were chasing an enemy, you'd know which one he used. Well, it looked cool at the time.]

      "I don't know all the .MDL filenames!" you say :( Well, here they are for your viewing pleasure. [DyerMaker's Note: You can use these as "statues" in your levels. Just add a "progs/(model).mdl" to your TF entity, and you can select a certain "frame" you would like to use for effect (such as the kneeling knights in Unholy Kingdoms. Get a good model editor (I use QMe Lite by 3D Matrix) to view the frames, then you have to count them all the way to the one you want to use. Even then you may be off by a frame or two, so keep your test map with the model open and the model at the same time. Run Entities Only in Worldcraft to change the frames and then re-run the test map until you can see in your test map that you have the right one. Be sure to read what I wrote here about Model Issues.]

      BOSS.MDL HKNIGHT.MDL TELEPORT.MDL DEMON.MDL INVULNER.MDL V_AXE.MDL DOG.MDL KNIGHT.MDL V_LIGHT.MDL ENFORCER.MDL OGRE.MDL V_NAIL.MDL EYES.MDL OLDONE.MDL V_NAIL2.MDL FISH.MDL PLAYER.MDL V_ROCK.MDL G_LIGHT.MDL QUADDAMA.MDL V_ROCK2.MDL G_NAIL.MDL SHALRATH.MDL V_SHOT.MDL G_NAIL2.MDL SHAMBLER.MDL V_SHOT2.MDL G_ROCK.MDL SOLDIER.MDL V_SPIKE.MDL G_ROCK2.MDL SUIT.MDL WIZARD.MDL G_SHOT.MDL TARBABY.MDL ZOMBIE.MDL