top of page
Search

Final optimization and release of my Quake level

Writer: Soleil D'or
Soleil D'or
Jan 4, 2025
2 min read

Updated: Apr 25, 2025

I am proud to announce that my Quake level has finally been released!

If you are interested in playing it, check out the community download page :)


It took me quite some time to finish polishing it to a standard I was happy with and a state I was comfortable releasing it in, but I think it was worth the effort! I wanted to optimize my level as much as possible and really clean up any odd collisions and the occasional bug to ensure a great play experience, but I'll talk about that a bit more below.


In the meantime, I would like to warmly thank the Quake mapping Discord community for taking the time to help me out and give invaluable feedback on my level, and I hope you have fun playing my level!



VIS optimization

By default, a lot of optimization is already taken care of by Trenchbroom, and generally, Quake is quite light when it comes to performance (given that it was made for computers from the 90s...). However, I thought it would be good practice to still optimize what I can, to ensure as smooth of an experience for everyone.


The main area that could be optimized was VIS, or visibility optimization, which is essentially an optimization method originally introduced for Quake. It is a way to segment the level into "leaves," which allows the engine to dynamically load and unload geometry that the player cannot see, based on where they are. If you are interested in reading more about VIS and how it works: link to some resources


VIS is calculated automatically by the engine when compiling the map. My job to optimize that process is to turn some meshes into "func_detail" which will not be taken into consideration when calculating VIS. This helps drastically reduce the number of leaves in the level and makes the visibility optimization more useful. Essentially, I disabled every mesh that did not significantly affect sightlines from being calculated during VIS.



Here are some nice shots (ignore the unsatisfying, out of sync animation...), showing the before and after with the "func_detail" brushes visible or not. The player will see all the detail and nice brushes, while the VIS calculations will ignore them, creating faster compiling times and better in-game performance.


Cleaning-up collisions

Lastly I wanted to clean up some collisions, to make traversal more smooth and with less unvoluntary headbobbing...

This was mostly about disabling collisions on ground detail meshes like trims or dirt piles, as well as using collision boxes to make stairs and small parkour sections more smooth.


Above are two examples of what I did, and that is something I applied all throughout the level. This didn't take much time but it had such a big improvement on game feel, I wondered why I didn't do that sooner...

Playing through those areas was a lot more enjoyable !


In the end

With VIS done properly and optimized, and with cleaner collisions throughout the level, as well as addressing a couple bugs, I ended up with a level that I was quite happy with, and with a really nice gameplay experience! I think the map was ready to be published :)

 
 
 

Comments


bottom of page