What is this?
This is a simple roadmap of my optimization papers/articles for any newcomers to Source optimization or for folks who would like to further strengthen their knowledge about the subject. The goal eventually is to produce solid, well optimized maps.
I keep seeing some simple questions being asked such as “what’s a hint brush and what does it do? Where do I place an areaportal? I also see many confusion and misconceptions about Source optimization on topics such as visleaves and PVS. Many folks contact me saying “hey, I read your paper/article X but I missed/wasn’t aware of your paper Y, Z, U, V…which is an additional reason of having this roadmap in one place for people to use for navigation through the different hoops of Source optimization.
Think of this roadmap as a course syllabus depicting the various topics and logical progression of the course, in this case, Source optimization.
1- Man vs Engine
This is a comprehensive paper covering the process of optimization in the Source engine and providing a systematic approach to be used for winning your optimization battles.
This paper should be the first step in your optimization course and it shouldn’t take you more than an hour on a slow evening to finish the read. It is a good idea to keep the Valve developer community wiki open if you need to look up the definitions of any terms that you come across in the paper (to be on the safe side, read the entry related to visibility optimization which contains all the keywords definition like hints, areaportals, etc…).
2- Optimization Testing in Source Engine
It’s a technical paper tackling the issue of methodically testing the frame rate and optimization system in the Source engine.
This should be the second read after Man Vs Engine to get a solid grasp of map performance testing.
Practical work: test the average fps using the timedemo technique on a map of yours (or a stock map if you do not have a finished map yet). Practice all the testing console commands that I gave in the paper to become familiar with them.
3- Demystifying Source Engine Visleaves
This is an article in which I explain Source visleaves in layman's terms to allow beginners and veterans alike to understand the cornerstone of source optimization.
After the first 2 papers being more hands-on and practical, this 3rd read in the roadmap is more on the theoretical side to allow one to fully understand the inner workings on Source’s BSP and visleaves systems.
4- Source Engine PVS - A Closer Look
This is an in-depth technical article where I delve into more details about the PVS creation and visibility calculation and their implication on optimization in the Source engine.
This 4th read is a natural follow up to the previous article and will cement your intimate knowledge of Source engine.
5- Common Misconceptions in Source Engine Optimization
It’s an article in which I identify common misconceptions in Source engine optimization process to help demystify some optimization “myths” and bust them once and for all, thus allowing designers to avoid the costly pitfalls that could hinder their maps’ optimization setup.
This 5th step in the roadmap should come as an easy read once you understood the previous 2 steps (visleaves and PVS)
6- Hints about Hints - Practical guide on hint brushes placement
This is a technical article in which I showcase how I think about and approach hints placement in Source engine and how I systematically proceed with hint brushes with practical examples.
With the theoretical side taken care of in the 3 previous steps, it’s now time to dive into the technicalities of using hint brushes properly and efficiently, and this article will amply show that.
Practical work: make a small test map where you can test the different hinting techniques that I showcased in the article. Make a version with hints and one without and test in-game using mat_leafvis and mat_wireframe console commands to see hints live in action.
7- Practical guide on areaportals placement
It’s a technical article that deals with the systematic placement of areaportals in the Source optimization process. This is the 2nd article in the "practical placement guide" series.
As with the previous step, this one dives deeply into proper areaportal placement with solid examples.
Practical work: make a small test map where you can test the different areaportals techniques/locations that I showcased in the article. Make a version with areaportals and one without and test in-game using r_drawportals, mat_leafvis, and mat_wireframe console commands to see areaportals live in action.
8- Practical guide on occluders placement
It’s a technical article that tackles the systematic placement of occluders in the Source optimization process. This is the 3rd and final article in the "practical placement guide" series.
Occluders have always been a grey area and a big question mark for a lot of designers, and this article will clearly showcase how to practically proceed with them in your map, if needed.
Practical work: make a small test map where you can test the different occluders techniques/locations that I showcased in the article. Make a version with occluders and one without and test in-game using r_visocclusion, r_occlusion, and mat_wireframe console commands to see occluders live in action.
9- Comparative fps study in Source Engine Optimization System
This is an in-depth article where I showcase the clear difference between having a solid optimization system and not having one in a Source engine map. The article will have plenty of numbers, for a complete comparative study that shows the frame rate variation with and without the optimization system in place.
If you have read and followed this roadmap closely, then you are now ready to witness and understand the importance of a good optimization system and the consequences of not having an effective one on the overall frame rate.
Practical work: In one of your maps, uncheck the visgroups of hints/areaportals/occluders in Hammer and save it under a different name. Compile it on final settings then compare the fps with the original version that had all the visgroups enabled to see the difference.
10- Source FPS Cost of Cheap and Expensive Assets
It’s a short technical article that compares the frame rate cost of cheap vs. expensive assets in Source engine optimization.
In the same spirit of the previous step, this one shines the spotlight on the cost of expensive assets so one doesn’t go wild while using them in their map, at the risk of considerably affecting frame rate.
11- Displacement Vs. Func_detail - A comparative fps study
It’s a short technical article that aims at comparing the frame rate of func_detail vs. displacement in the context of the Source engine and the repercussion on their usage in maps.
12- Optimizing An Open Map in Source Engine
This is a technical article that showcases how to tackle optimizing open maps in Source engine.
The roadmap presented above should cover “optimization 101” through “501” courses and cater for a broad range of Source engine users. There are no more reasons for one to feel confused and “not sure where to start/look” when it comes to Source optimization.
If after reading and experimenting with all the above you still have some questions about optimization, then feel free to post here and I’ll try my best to help.
Once you finish all the reading with all practical work, please pass by my office so I can schedule your final exams.