Hello,
Some advice I give here will be paraphrasing
my KOTH guide:
Your map is rather short (one of the spawn doors is visible from the point area!)
I estimate it would take around 9 seconds for an Engineer, after spawning, to walk to the control point.
Typically in KOTH maps you aim for this value to be around 12 seconds - almost every map in the game takes this long.
Since an Engineer walks 300 hammer units per second, to add 3 extra seconds of length to your map you would need to add 900 units - or, alternatively, a nice round 1024.
The reason why a short KOTH map can cause problems is that, as the team who doesn't own the point, you can kill the entire enemy team, but have them respawn and come back before you've even finished capturing the point.
This makes the point more difficult to recapture, which is
never something we want in KOTH - in my experience on hundreds of maps, the most unfun KOTH rounds are the ones where the first team to take the point holds it for three minutes.
In a similar vein, your point takes quite a while to capture, with a captime value of 12. The typical value for KOTH maps is 6.
A point that takes longer to capture will again make it possible to kill the entire enemy team, but have them come back before you've finished capturing.
The layout leading up to the cap point area is reasonably competent - a little derivative of Viaduct, but that's no great sin.
One thing I would like to point out is this building:
It falls victim to the classic "doorway problem", where if you want to go from the left route to the right one, or just go from the right route to the health pack, you have to pass this brutal sniper line.
Something I often like to do is put a little indent in the floor to fix this:
With this in place, a player can now
choose whether they want to move through this room
under the sniper line and safe from being headshot, or whether they want to go up to the high ground and challenge the enemy snipers.
It's also not good practice to put spawn doors directly in long sniper lines.
Because I think the layout leading into the point area is relatively competent, I think the best way to lengthen the map would be to add a little bit of extra distance here:
This would also let you reorient the spawn doors, and separate them into different areas of the map more so they're harder to spawncamp.
This health is a little too close to the point:
Typically you want to bias most of the health in the map into the "lobbies" the teams use to attack the point.
This means that the team who doesn't own the point will have quick access to health, but the team who does own the point will need to retreat all the way to their lobby area to get health, essentially giving the enemy team the point area for free.
Another mechanic that encourages rounds to be more intense and back-and-forth by making it easier for the team who doesn't own the point to capture it.
Your map is skyboxed by putting it all inside a massive box:
This is a massive no-no for various reasons:
- All faces outside your map will be rendered if not given the nodraw texture, which will reduce framerate and increase your map's filesize (because these faces have to store lighting information)
- Your map will generate a lot more "visleaves" than it should - having more visleaves makes your compile time longer, and visleaves outside the map are pointless because there isn't even anything out there to render
I typically skybox all of my maps by placing a skybox brush on top of every outer wall, and then extending it up to a given height, where I'll put one massive "top" skybox brush. Here's my newest map,
ctf_bruhboulecross as an example:
This is easy to do, and perfectly ensures that all faces outside the map and on top of high-up walls are not rendered.
I also do this on walls that are partitioning different areas of my map, since this will help one area not be rendered from another.
In your map, the equivalent of this would be turning these two clipbrushes into skybox brushes:
Finally, there's a hole in your spawnroom's roof that will let players see and shoot into it:
Hope this helps!