Quick Mapping Tips and tricks

Fantaboi

Gone and one day forgotten
aa
Mar 11, 2013
892
1,050
The idea of this thread
In this thread I think we should share small little tricks that we have come across to make life easier for mapping.

For example:

When mapping at a 45 Degree angle, use an instance and rotate that instead of the original map
or
To test optimistaion, place hundreds of barrels on your map and use mat_wireframe 1 to see how many are rendered at a time

Where can I read all of this?

I'll update the following post with all the comments
 
Last edited:

Fantaboi

Gone and one day forgotten
aa
Mar 11, 2013
892
1,050
Small Tips and Tricks
(Credit is given to the poster, not the person who came up with the idea)

Bakscratch:
-When mapping at a 45 Degree angle, use an instance and rotate that instead of the original map
Note: This makes it difficult to line up with your original grid however
Fantasmos:
-To test optimistaion, place hundreds of barrels on your map and use mat_wireframe 1 to see how many are rendered at a time
-Holding ALT whilst moving an object allows 100% Free movment

Dain:
-Memorize and use as many keyboard shortcuts as you can. You should be frustrated at your map, not the interface.

Idolon:
-Enable "Arrow keys nudge selected object/vertex" in Options > 2D views. Really useful when you want to move stuff that's built on a small grid size.

-When you want to rotate something around a point that isn't its origin, you can do it one of two ways:
A) Make it an instance, and move it so that the rotation point is at 0, 0, 0 in the new .vmf.
B) Put a big brush around it (preferably skip textured) with its center where you want to rotate the object. Make sure that the brush is bigger than the object!

-Learn how to use the morph tool (vertex edit tool) properly. It's super useful for resizing buildings, because you can just select the entire side of a building and move it out. There's countless other situations where it comes in handy.

-If you want to put a prop on a slope, but you're not sure what angle to stick it at, use some trigonometry! I personally use this website to figure out the angles and lengths of slopes.

-It's been said that you should learn keyboard shortcuts, but I'd like to point out [ and ] in particular. They change the grid size, and they should probably be your most used shortcut keys. Don't limit yourself to building on one grid size.
Freyja:
Learn to use quickhide and quickhide unselected. Makes working on isolated portions of your map very easy without cordon.

func_respawnroom will automatically inherit the team of the info_player_teamspawns inside of it.

info_no_dynamic_shadows exists and you use it by selecting faces, and no shadows (pickups or players showing through walls, etc) will appear on that face.

You can control koth timers with i/o by targeting zz_red_koth_timer and the corresponding one for blue. They have all the i/o of a team_round_timer entity.

Hit the help button in the properties panel of an entity to get a window showing all the valid inputs/outputs for that entity ( a BIG one people don't seem to know ).

When flipping your map, create a skip brush on the seam, and drag your copied half around by that skip brush. It will make sure your map half stays on grid.

There's a button in hammer that will turn prop fade distances on in the 3d view.

Place a prop_static with a sentry model in your map, and set it's fade distance to 1024/1024. If you toggle display fade distances in the 3d view, you can see it's range by flying around: if you can see it, you're in range. As it's a prop_static, it won't even appear once the map is compiled.

The player can receive inputs IgnitePlayer and ExtinguishPlayer, useful for waterfalls or lava. (Target with !activator).

The player can also recieve the input SpeakResponseConcept with the override of a response. These are in scripts/response_rules and you can use a trigger to make the player call out voice lines, or scream when they fall into a pit (with HalloweenLongFall).

If you have a trigger_push, the player will only be affected by it if they're in the air already, or they jump. You can force them into it by putting a small, 18 unit or so ledge around the trigger. The player won't notice it, but they'll be forced to fall off it for a split second and be affected by the trigger.

You can replace any sound in the game by using a <yourmapname>_level_sounds.txt file and creating soundscripts (will write a tutorial on this one).

Your respawn room visualizer can be any texture. This is most useful for wide doors - instead of stretching the no entry overlay, make a brush in the middle with that, and then surround it with nodraw to cover the rest of the door. Then tie all of it to the same func_respawnroom_visualizer.

If you build your displacements like this http://i.imgur.com/DcTCQSr.jpg And then you select the faces you can actually see and turn them into displacements http://i.imgur.com/R1jze39.jpg , it all sews because the base brushes match and there's none of that fiddly half angle stuff

Waffe:
If you want to rotate some brushwork by, for instance 45 degrees, select it all and do just that (with Ctrl+M). Then scale it in order to fit the grid (I used 3/4 *square root of 2. Different angles need different values). Select all vertices with the vertex tool, choose a fitting grid size and press ctrl+B to align them all.

You can also click and hold to shuffle through everything beneath the cursor
Tumbolisu

"CTRL+M Scale X/Y -1" Can be used to mirror a map thread
Hanke37:
Quickhide is a massive help when working with overlapping geometry. No more fiddling around trying to fight z-fighting, just select and hide until you get the one you wanted.

It's possible to set the advanced compile system to check for the existence of files before continuing. This lets you avoid wasting time when you have a leak, since the *.prt file will be missing for normal, non areaportal, leaks.

You can use the command line switch "-hijack" when launching the game, this will not only skip the "game already running" MessageBox, but actually reuse the existing instance of the game. No need to manually load the map and no need to restart the game.

Wareya:
You can "clip" overlays by turning Texture Lock off and scaling the bounding box with the selection tool.
 
Last edited:

Idolon

they/them
aa
Feb 7, 2008
2,105
6,106
Word of warning about using instances to rotate bits of your map: In most situations, you won't be able to line up your rotated instance and your "real" map on the grid, ever. There's mathematical reasoning behind it (tl;dr: the diagonal of most (maybe all?) right triangles with integer angles are irrational), so just watch out. Not saying you can't do it, but you should just be cautious of these kinds of issues, and plan accordingly.

Tips:

-Enable "Arrow keys nudge selected object/vertex" in Options > 2D views. Really useful when you want to move stuff that's built on a small grid size.

-When you want to rotate something around a point that isn't its origin, you can do it one of two ways:
A) Make it an instance, and move it so that the rotation point is at 0, 0, 0 in the new .vmf.
B) Put a big brush around it (preferably skip textured) with its center where you want to rotate the object. Make sure that the brush is bigger than the object!

-Learn how to use the morph tool (vertex edit tool) properly. It's super useful for resizing buildings, because you can just select the entire side of a building and move it out. There's countless other situations where it comes in handy.

-If you want to put a prop on a slope, but you're not sure what angle to stick it at, use some trigonometry! I personally use this website to figure out the angles and lengths of slopes.

-It's been said that you should learn keyboard shortcuts, but I'd like to point out [ and ] in particular. They change the grid size, and they should probably be your most used shortcut keys. Don't limit yourself to building on one grid size.
 

Freyja

aa
Jul 31, 2009
2,994
5,813
Learn to use quickhide and quickhide unselected. Makes working on isolated portions of your map very easy without cordon.

func_respawnroom will automatically inherit the team of the info_player_teamspawns inside of it.

info_no_dynamic_shadows exists and you use it by selecting faces, and no shadows (pickups or players showing through walls, etc) will appear on that face.

You can control koth timers with i/o by targeting zz_red_koth_timer and the corresponding one for blue. They have all the i/o of a team_round_timer entity.

Hit the help button in the properties panel of an entity to get a window showing all the valid inputs/outputs for that entity ( a BIG one people don't seem to know ).

When flipping your map, create a skip brush on the seam, and drag your copied half around by that skip brush. It will make sure your map half stays on grid.

There's a button in hammer that will turn prop fade distances on in the 3d view.

Place a prop_static with a sentry model in your map, and set it's fade distance to 1024/1024. If you toggle display fade distances in the 3d view, you can see it's range by flying around: if you can see it, you're in range. As it's a prop_static, it won't even appear once the map is compiled.

The player can receive inputs IgnitePlayer and ExtinguishPlayer, useful for waterfalls or lava. (Target with !activator).

The player can also recieve the input SpeakResponseConcept with the override of a response. These are in scripts/response_rules and you can use a trigger to make the player call out voice lines, or scream when they fall into a pit (with HalloweenLongFall).

If you have a trigger_push, the player will only be affected by it if they're in the air already, or they jump. You can force them into it by putting a small, 4 unit or so ledge around the trigger. The player won't notice it, but they'll be forced to fall off it for a split second and be affected by the trigger.

You can replace any sound in the game by using a <yourmapname>_level_sounds.txt file and creating soundscripts (will write a tutorial on this one).

Your respawn room visualizer can be any texture. This is most useful for wide doors - instead of stretching the no entry overlay, make a brush in the middle with that, and then surround it with nodraw to cover the rest of the door. Then tie all of it to the same func_respawnroom_visualizer.
 

Seba

DR. BIG FUCKER, PHD
aa
Jun 9, 2009
2,364
2,728
If you have a trigger_push, the player will only be affected by it if they're in the air already, or they jump. You can force them into it by putting a small, 4 unit or so ledge around the trigger. The player won't notice it, but they'll be forced to fall off it for a split second and be affected by the trigger.

Players 'teleport' up and down ledges <18u tall, so they're never in the air while going up/down unclipped stairs; the ledge must be 18u or taller in order for the player to start falling and be affected by the t_push.
 

Waffe

L5: Dapper Member
Dec 2, 2012
230
203
Here's a trick I use to rotate brushwork.
If you want to rotate some brushwork by, for instance 45 degrees, select it all and do just that (with Ctrl+M). Then scale it in order to fit the grid (I used 3/4 *square root of 2. Different angles need different values). Select all vertices with the vertex tool, choose a fitting grid size and press ctrl+B to align them all.

Also I just recently got the hang of VisGroups. I don't even know how I was able to map before...
 
Last edited:

puxorb

L69: Emoticon
aa
Dec 15, 2013
531
798
The vertex tool is your friend. You can adjust the length of several brushes at once without stretching anything dis-proportionally by ctrl+selecting brushes and in a 2D viewport, dragging a box around vertexes and hitting enter.

Also, click on a yellow node and press ctrl+f to create a new face to the brush that is selected, and drag its coordinates around without ever having to use the clipping tool.
 

henke37

aa
Sep 23, 2011
2,075
515
Quickhide is a massive help when working with overlapping geometry. No more fiddling around trying to fight z-fighting, just select and hide until you get the one you wanted.
 

Waffe

L5: Dapper Member
Dec 2, 2012
230
203
Quickhide is a massive help when working with overlapping geometry. No more fiddling around trying to fight z-fighting, just select and hide until you get the one you wanted.

You can also just click and hold to shuffle through everything beneath the cursor
 

Muddy

Muddy
aa
Sep 5, 2014
2,574
4,592
func_respawnroom will automatically inherit the team of the info_player_teamspawns inside of it.
I don't know why this one in particular jumped out at me. That's a really neat touch, that...
 

henke37

aa
Sep 23, 2011
2,075
515
It's possible to set the advanced compile system to check for the existence of files before continuing. This lets you avoid wasting time when you have a leak, since the *.prt file will be missing for normal, non areaportal, leaks.

You can use the command line switch "-hijack" when launching the game, this will not only skip the "game already running" MessageBox, but actually reuse the existing instance of the game. No need to manually load the map and no need to restart the game.
 

wareya

L420: High Member
Jun 17, 2012
493
191
You can "clip" overlays by turning Texture Lock off and scaling the bounding box with the selection tool.
 

Fantaboi

Gone and one day forgotten
aa
Mar 11, 2013
892
1,050
Updated the 2nd post, now I think we should have a "best-of" post in the main one as well, what do you guys reckon?

Also feel free to do more than just technical stuff, like art or gameplay mechanics
 

Fantaboi

Gone and one day forgotten
aa
Mar 11, 2013
892
1,050
If a texture comes up as plain white (Like the no_entry texture) Get out of shaded texture mode, and just plain textured mode.
~From Aly.
 
Apr 14, 2013
663
343
I've got a few:

1) when having an overlay selected, you can select the overlay tool and then change the shape of the overlay by dragging the edges. Select multiple overlays and then shift+drag to snap two edges together

2) a few keyboard shortcuts I accidentally discovered (and I don't think they appear in the shortcuts' page):
ctrl+a- resize all 4 2d/3d windows to their original position and size. useful with ctrl+z (fullscreen)
x- show edge drag points in 3d view (useful for props)
p- show grid in 3d view
num keys 1-0- change zoom in 2d views (like the scroll mouse button)

3) ctrl+m has, apart from famous "rotate" option, a "scale" option, useful when you want to make parts of your map into 3d skybox parts
 
Last edited:

Fantaboi

Gone and one day forgotten
aa
Mar 11, 2013
892
1,050
Added tumbolisu's quote from this thread
 
Apr 14, 2013
663
343
I just found out the hard way:
While you can save a .vmf file from hammer with spaces in it's name (instead of the usual _'s), you cannot load a .bsp map file with those spaces. (But you can cmmpile!)

Naming an object with Punctuation marks will cause malfunction with it's inputs. This will happen because the .vmf file uses them to mark the different output fields.
So if you call your cp, for example, "cp3.2", once you reload the .vmf you'll find that the name field, in all outputs that previously named "cp3.2", will now say "cp3" (which doesn't exist), and in the Via this input field, there will be "2".