Jabroni Brawl: Episode 3

Jabroni Brawl: Episode 3

Not enough ratings
Hammer Editor Tips & Tricks
By LordDz
Here are some tips and tricks from the level designers of Jabroni Brawl that will hopefully improve your skills and reduce the time it takes you to make maps in hammer.
Can be applied to all source 1 games.
   
Award
Favorite
Favorited
Unfavorite
Introduction
~~The guide will be edited over time~~

When in doubt, check the Valve Developer Community or ask other modders!
You can also get help in the #modding channel in Jabroni Brawl's discord or ask for help in the Map Labs discord.

Link to Valve's Wiki

Useful Tools, Resources & More
Slartibarty’s Hammer and compile tools
knockout.chat/thread/992/1
Has some new features and bugfixes over the default Hammer, but might be extra unstable for some. As for the compilers, they bring many improvements and features.

Compile Pal X
github.com/ruarai/CompilePal
No more having to deal with that ♥♥♥♥♥♥ compile window integrated on Hammer, having to manually introduce the parameters or your computer freezing while compiling in 2020. With an easy GUI, many options to quickly set up different configurations and options, batch compilers, auto cubemap generation, error check and definitions from Interlopers and more.

Script for Compile Pal X with the unique parameters from Slartibarty's compile tools
cdn.discordapp.com/attachments/473572712015462400/606088056923226123/compilepal_parameters_04.07.2019.zip
Compile Pal X doesn’t have parameters from other compilers than the official one, so this script adds these.
Note that future updates might make this file not longer compatible, but it should be easy as just copy-paste these into the newer JSON file.

Hazard Team Compile Tool
htdlhost.herokuapp.com/files/download/htct-0.6.0-BETA.zip/
An alternative to Compile Pal X developed by the team behind Black Mesa: Hazardous Course and Peer Review. Lightweight, allows for custom parameters and batch compiles, and other advantages.
Note: when running it for the first time, your antivirus might mark it as dangerous as it generates some temp files, is actually harmless.

BspZipGui
github.com/geotavros/BspZipGui
This tool allows you to easily add and extract content embedded in your compiled map.
Quite handy when you use custom assets but don’t want to deal with extra files, or for overriding content ( like a model or a sound that in any other case wouldn’t be possible).

Legacy Source SDK content
github.com/chipsnapper/SourceSDKMapFiles
The old Source SDK launcher had example VMF files, but with Steampipe these were gone. This archive brings them back.
If you are seeking the prefabs, they are still on the Source SDK, you have to install it as Valve didn’t manually add them to each game.
Editor Controls
Saving
CTRL + S all the time, even in your sleep.

Undo, Redo, Cut
CTRL + Z, CTRL + Y, CTRL + X. Use these hotkeys a lot.

Camera Movement
The easiest way to move the camera is to press ‘z’ in the 3D view, then just move around with the wasd keys and mouse.
You can also use the scroll wheel to move forward/backward.

You can rotate the camera in the 3d view by holding space and left click +you can also use wasd while in this mode

If you select something and press CTRL + E, it will focus it in 2D view.
If you select something and press CTRL + Shift + E, it will focus it in 3D view.

Grid Size
You can change the grid size from the default 16 units by pressing the following buttons or with “[” and “]”:
Or use ALT + A, ALT + S.

Try and keep to a grid size of 8-16 for most things, only going down in size when doing detail work. This is to ensure that you keep the grid clean. Try also to always keep things onto the grid, ie don't move brushes off the grid as it can make the vvis compiler sad.

Entity Properties
If you double click something in the 3D view, it will open the properties window.

Transform brushes
Select at least one brush or prop, then hit CTRL + M, the most useful option here is the scale option ( note, it will be 99% of the times off grid ), often used for making 3D Skyboxes ( 0.0625 ).

Or if you want to rotate something 90, 180, 270 degrees.

Hotkeys
Don’t click on the selection, brush tool etc. Instead use their hotkeys:
Selection: CTRL + S
Brush: CTRL + B
Texture: CTRL + A
Vertex: CTRL + V
Clipping: CTRL + X (Has 3 modes, press hotkey to switch)

Fullscreen viewport
Hover your mouse cursor over a viewport and press CTRL + (TODO: which damn hotkey was it again?) to make it fullscreen, press the hotkey again to undo the fullscreen.

Optimization and Compile Speed
func_detail
The easiest way to get your map to compile fast, is to get used to func_detail as you're making your map. I've had maps that others have made, that would take them hours to compile, reduced to minutes with some func_detailing.

So, whenever you make a small brush or a brush at a weird angle, hit CTRL + T and it will be made into a func_detail.
Valve's wiki explaining func_detail
Selection
Grouping objects and brushes
For easy selection of several objects, select them and hit CTRL + G.
If you still want to select a single object, you can change the selection in the Selection menu to the right.
[TODO: INSERT PICTURE]

Quickhide
Select something and hit ‘H’, it will hide it.
Press ‘U’ to unhide it.
This can be fantastic for selecting something when a prop or brush is blocking it.

You can also press shift + H to only show the selection in hammer, press shift + H again to revert.

Entity Report
An easy way to find entities in your map is to use the Entity Report.

Here you can search by class to quickly find something, or use the key/value.

The function to search by value can be very useful for us, for example say we want to change all lights with the color of "0 255 0", we can search by the value.

Visgroups
On big / complex maps, it will reach a point where it gets hard to navigate even if you use groups, cordon tool and quick hide ( especially if you use a lot of models / displacements ).
Visgroups allows you to display only the elements you desire, either only brushwork, logic entities, water...etc.

Like if you want to see what you could func_detail more, hide the entities group and hide the func_detail.

Aside of the automatically generated ones, you can also create your own Visgroups. Which they are super useful to toggle potential features / zones you might don’t want on a compile / map version without having to delete them.
Leaks
Leak Check
The fastest way to hunt for leaks is to run the compiler with vvis and vrad off. The compile will be very fast and the compile log will mention if you have any leaks. Then you can load the pointfile or copy the coordinates.


Pointfile
In the Map menu, hit "Load Pointfile" to get a red line from the origin of the leaked object to the where it finds the void.

Go to Coordinates
The compile log will mention where the leak is by writing out the coordinates to the leaked entity.
We can then copy these coordinates and go to View->Go to Coordinates.This solves 90% of the problems posted on r/hammer :)

Read the damn compile log
Before thinking that your map is possessed by the evil, read the compile log. Chances are that it says exactly what the problem is.
Debugging
One of the fastest ways to test your map, is to check the “Don’t run the game after compiling” in the compiler, then right click the game in steam, properties, launch options:
-console -windowed -noborder

This way, when you finish a compile, you can alt-tab into your game and reload the map.
In multiplayer games, you need to type map nameofmap in the console
In Singleplayer games, you can just type reload

For even faster debugging, in the console bind the reload command to a button.
bind "9" "reload"

This way, when a compile finishes, we just alt-tab into the game and hit 9.

Cordon Tool
To quickly test an area of your map that isn't fully sealed against the void, or if you just want the compile to be faster you can use the cordon tool.

You can also use the cordon tool to limit how much of your map is rendering in hammer, so if you feel like hammer is becoming slow, use the cordon tool.

Finding Problems
Either use ALT+P or Map->Check for problems to open it.

Often it might complain about redundant / useless stuff like “unused” keyvalues ( warning: Hammer might not recognize it due not being present on the FGD, but that doesn’t mean that it doesn’t work in game! ) on entities or not finding info_player_start on the map, but it quickly tells you if there are missing textures, invalid solids ( nothing more frustrating that compiling a map and see a brush being deformed ) and other important ones.

Proper naming convention
Name your ents properly, like "lab_button01".
Don't use silly names like "♥♥♥♥♥♥♥♥♥♥♥♥" or capital letters or spaces.

This way, can then use ent_fire in the console, ingame to test things.
Like in my maps I tend to use logic_relays a lot. So if I want to test a logic_relay, I can just type in the console:
ent_fire relay_lab_start trigger

Player Reference
Place info_teleport_destinations around the map and name them player_reference.
Now you have a good reference to how tall the player is and can make your doors, etc in the correct size.
How to use Carve
If your geometry is on grid, feel free to use carve as a quick time save; do check that your topology is still good afterwards. just don't use carve anything complex or hammer will go crazy.
Texture Browser
Quick sorting textures / sprites
With the texture browser open, type the name of a texture in Filter, or if is already sorted under a keyword, in Keywords:

When seeking for certain textures like transparent or glowing in the dark, you can quickly display them by hiding the rest after unchecking the checkboxes at right side.
Checking the checkbox on the left will only display the textures used on the map / visible cordon tool part.

Selecting all textures
In the texture browser, select a texture and hit ‘M’ and it will select all brush faces with that texture. Quite handy if you want all of them to be of the same size.

Quickly find and replace missing / wrong textures
While the Check For Problems window ( ALT+P ) will correctly bring you to where they are, there are moments where you might be interested to see where they are being used.

You can quickly do that by using the Replace function of the texture group at the right toolbar:
Then on the next window, make sure you check Do Not Replace Textures:

You will get a pop-up telling you “X Solids Marked”. Now, while these solids are already selected, press QuickHide Unselected at the top toolbar ( see Quick Hide for references ).

This will hide everything on your map except these brushes with the texture you wanted to check. Pretty useful to find quickly where you used a texlight texture for example.

Note: we use the replace function from the right toolbar and not the one from the Texture Tool as this one will only select the faces, which you can’t select the affected brushes.
Vertex Mode
Scale vertices from brushwork
On Vertex Tool mode ( SHIFT+V ), and being active on one of the 2D viewports, press ALT+E to bring up the Scale Vertices window.

Select the vertices that you are interested on moving, then scale them up / down.
Pretty handy to make columns, arches and other complex brush. Remember to always check for invalid solids anyway!

This will produce brushwork off-grid, so make sure it is part of a func_detail / brush entity.
Model Browser Freezing
If your model browser becomes unresponsive when searching for models, close it down and open it again. No need to close down the map or anything like that.

This deserves it's own section, since I've seen so many people struggle with this.
Advanced Inputs
OnUser1-4
All entities, brushes and points, etc have the “OnUser1-4” output. It causes the entity to do things when it has “FireUser1-4” fired on it.

In this example I have a game_text and an ambient_generic.
We give the game_text and the ambient_generic the same name:

In their outputs we add:

Then we can call both of them to do their action, with FireUser1.

Say we now want to show a sprite when the text is displayed, then we can just set the name to be the same, player_text01 and set the output to "OnUser1 !self ShowSprite"
In the example, I have 16 game_texts and 16 ambient_generics, by having the same name on the ambient_generic and the game_text, I only need 16 unique targetnames, instead of 32.
Conclusion
Thanks!
Thanks to everyone in the Jabroni Brawl Community who helped create this guide.
More tips will be added to the guide as time goes.

Also make sure to check out Jabroni Brawl on Steam as well as on twitter.
Steam Link
Argue about useless things on Twitter
8 Comments
*DMG* Reflector 14 Nov, 2022 @ 3:55pm 
Lorddz, yeah.
LordDz  [author] 14 Nov, 2022 @ 2:36pm 
KIND SLAYER, is this what you're trying to do?
http://www.interlopers.net/forum/viewtopic.php?f=2&t=37109
*DMG* Reflector 14 Nov, 2022 @ 10:51am 
how to make a tunnel that turns to the other end, or a winding tunnel using the Vertex Tool, I tried to figure it out but nothing works.
Grande1900 13 Nov, 2022 @ 10:07am 
@potato1234_x you have to download the authoring tools
LordDz  [author] 13 Nov, 2022 @ 12:49am 
Currently the official hammer for JB is not out yet.
potato1234_x 12 Nov, 2022 @ 9:48pm 
jabroni brawl does not come packed with hammer where do i find it
LordDz  [author] 12 Nov, 2022 @ 1:30pm 
It's the best video about mapping for hammer.
Richard 12 Nov, 2022 @ 8:57am 
I recognize that picture for the guide...