If you would like to greatly improve the visual quality of your maps, read the following. I won’t provide the basics,
The Magic 4th Value in Light Color
This is tragically skipped in 99% of tutorials. Choosing a light color needs changes to the first 3 values, RGB, but have nothing to do with how brightly the color is shown when the map is compiled. The 4th value controls the brightness of the light and goes from 0 - 1000. It’s 200 by default, too low by my experience. I use values of 500 - 1000 mostly. You won’t achieve realistic lighting without using this 4th value.
Example: 200 vs. 1000
50% Falloff Distance - 0% Falloff Distance
You can find these options in your common light entities. Use these to your advantage. 50% falloff distance is the distance at which the brightness of the light falls to half of it’s original value. 0% falloff distance is self-explainable.
LDR before HDR
It’s critical that you be aware of how bright your lights actually are with LDR before using HDR. The default tonemap settings of HDR can over-correct what are actually dark lights when viewed under LDR. So, view your maps under LDR when testing your lights.
Dark Textures = Dark Lighting
How dark a texture is measures how much light it will retain. Counteract this by increasing the 4th value of the light color until something acceptable is achieved.
Correct Your Tonemap Settings
As I said above, the default tonemap settings are too extreme. To counteract this, create two entities; env_tonemap_controller, and logic_auto. Give tonemap_controller a name, then go to the output tab in logic_auto. Create 3 outputs:
OnMapSpawn - tonemap_controlller name - SetAutoExposureMax - 1
OnMapSpawn - tonemap_controlller name - SetAutoExposureMin - 0
OnMapSpawn - tonemap_controlller name - SetBloomScale - .5
That’s it. The settings I provided are the ones I found most suitable after testing all my lights under LDR.
This material command will change your life. It tells VRAD how much light should be retained in the material when reflecting light. The Source engine’s default settings are too low, big surprise. I use $reflectivity “[ .5 .5 .5 ]” by default in all of my materials to achieve more realism. On the other hand, lower values can be applicably used. You could more easily design a stealth map with “[ .1 .1 .1 ]”.
Source default settings vs $reflectivity “[ .5 .5 .5 ]”.
Develop an Artistic Hand/Eye
This is rather important. Develop some rudimentary skills in sketching or painting. The further you go with these skills, the further they extend to your ability to make better maps. Nothing is more intuitive than a pencil and paper, it’s also a great way to develop a full idea before opening up the map editor.
First is the basic geometry pass. Create a very basic version of your map with brushes. Imagine an abstract CSS gun game map. Exclude any facets, buttresses, and support structures. Exceptions include doorways, stairs, and windows because they’re critical to visibility and navigation. When you are finished with this process, apply textures. The second geometry pass will include placing facets, buttresses, and support structures. Since these details are repetitive, it’s wise to texture one instance of the detail before duplicating it elsewhere, it saves time. Your brushwork should be done now. The next pass is static props, followed by lighting. Placing props before lights will assist in your choice of light placement. It shortens the time it takes to make a decision as well.
Think Big Before Small
When designing an environment, place the absolute biggest elements in the scene first and work your way down according to size. In a figure of speech, don’t worry about the pebbles when you could be worrying about the boulders. This approach will also help you measure exactly how much detail you want in your map before you stop.
Detail Where it Counts.
This should be an obvious one. Invest more time in detailing areas that players occupy the most. If you intend to detail the entire map, start in areas that need it and work outwards.
The Usefulness of Dev Textures
Dev textures have a big psychological effect. Using them keeps your mind clear and focused on your geometry work.
Textures Types that Demand Details
Texture choice can limit the amount of work that must be done. Brick walls may demand details; posters, windows, drain pipes, ventilation, fans. A fresh, tiling metal or glass wall on the other hand will ask to be kept clean of anything.
Use the same FOV Settings In-Game and In Editor
Again, it has psychological effect. I use a viewing angle of 75 degrees. You can change Hammer’s FOV settings in Tools -> Options -> 3D Views tab
Props Before Lights
Prop placement has a major influence in light placement. Vice versa, placing lights influences placement of props. Prop placement should come first because the location of lights is much more irrelevant. Having your geometry finished, you’ll notice good opportunities to place lights in accordance to geometry in the scene to create interesting light-play. The second philosophy is in achieving atmosphere. If you can achieve the desired atmosphere purely with geometry and textures, the lighting pass will build on that even more.
Shift + Click & Drag on Displacements
The next time you are editing displacements with the Paint Geometry tool, hold Shift + click and drag your mouse up and down. The result is being able to precisely move vertices on the displacement.
**Fast Iteration **
In addition to Cordon Tool, here’s a couple other pointers to test changes as quickly as possible:
- Go to your steam library and open the launch options of the game you use to map with. Enter -novid and -console. These will disable the start up screens and the menu background map from loading. Also, configure the game to run in windowed mode.
- Download the Valve Batch Compile Tool. This is a stable, separate compile tool. The compile progress screen does not hang, reveals more compile options, compiles faster, and does not have issues running games automatically after compile like Hammer. It can also be used without Hammer being open, that’s a big memory save when doing a final compile.
Using VBCT to Compile and Map at the Same Time
Valve Batch Compile Tool is especially useful when you are close to finishing a map and the little time you have is precious. Since it runs independently of Hammer, you can can compile a map and continue using Hammer at the same time. Whenever you’re ready to compile, save the .vmf file under a different name on the desktop, such as “gm_construct_compile”. You can let VBCT compile that with only 1 or 2 processing threads while you continue to edit the original “gm_construct” file. So if your maps take 15 - 30 minutes to compile, use this. Don’t waste time waiting while you could be working.
Disabling T-Junction Fix-ups
This is only applicable to people who are building massive maps, know what creates t-junctions, how to avoid any avoidable t-junctions in their brushwork, and are very familiar with how Source PVS rendering works. If you meet those requirements, you may find adding -notjunc to vbsp.exe in your expert compile settings useful. Rather than juggling between the maximum brush limit and t-junc limit, you can max the brush limit without worries.
Expect a lot more topics to be added in the coming days and weeks. I plan to organize and illustrate all of this info as well as time goes on. Thank you for reading, I hope this comes in handy!