Recreating my childhood home: Part 2February 23rd, 2022

Link to Workshop map

It’s been awhile since my last post and I’ll pick up right where it left off. My last post was about rebuilding my childhood home in Counter-Strike: Global Offensive using Valve's Hammer Editor.


Accurate...or not?
When I started this project, I wanted to make an exact replica of the house that I remembered but soon realized some sacrifices would have to be made to better the gameplay. In the off chance that people would play this map, I decided it was better to provide some cover and chokepoints even if they didn’t exist in real life. Here's a few notable examples:
The bushes on the right and the small fence on the left didn’t actually exist but offer cover for each team
These wooden boards in the basement also didn't exist but made the bombsite less open and provides cover for both teams

Optimizing
Optimzation is something I often neglected in my past maps but it becomes clear early on why this is absolutely necessary. Last week when I was building the club house in the backyard, I started to notice the map was taking about an hour to compile. After some research, one of the suggested solutions was to make every non boundary brush a func_detail.

This cuts down the number of visleafs (visleaves?) in the map which reduces compile time. What is a visleaf and why do I not want a lot of them? According to Valve, a visleaf is a hollow volume in a map which defines a cluster of visible surfaces. Every visible surface of a map is part of one visleaf or another. Visleafs are used primarily by the Rendering Engine to determine (before rendering each frame) which areas of the map might need to be rendered on screen. In other words, the more visleafs the more work the rendering engine needs to do because the map has been broken up into so many of these hollow spaces.

Another technique that came up was using Nodraw on faces of brushes that can't be seen by the player. This will make the the face of the brush not have any texture at all which is less work for our computer. This should be done on walls that the player will never see.

You can see nodraw take effect if you're ever flying around the boundary of a map as a spectator and see these hollow looking walls
I've only scratched the surface of optimization techniques and its not just for compile time but also helps to accomodate players with lower end computers. In the end, my compile time went from 1 hour to 5 minutes...Thanks func_detail!!!

What's next?
I'm happy with the way the map came out and don't plan to add anything else unless the community requests other features. I'd be more than happy to to follow through. The truth is that I haven't been consistently working on this since my last post. I only picked it back up about a month ago when I decided I wanted to start on a new project...a 3D psychological horror game. But I told myself I'd have to finish this first in order to start on that. So here we are. See you in the next one!

P.S. The garage is my favorite part of the map :-)


Link to map in case you missed it