Playing around on a few of the maps and I think it's pretty clear that wide open areas are more fun to play on. Unfortunately source doesn't like wide open areas, so I'm trying to think of a few ways to mitigate the lag. But first, more stuff to avoid in dab maps.Physics props
It might just be the fact that I have a 300ms ping but physics props are a pain in the ass for me. The vault attempts to roll over them while vphysics attempts to have the player kick them out of the way. They also lag when diving or sliding into them, causing choppy unwanted behavior. A very prominent part of the gameplay in dab is smooth movement. I get a little rage every time I go for a dive and am stopped by a well placed barrel/crate.Fix?
Instead of using physics props, change them to static props (duh). But if you do want some physics props in order to emulate carnage, make them small debris type props that don't collide with the player, or that don't alter the players movement when they do collide. Try to avoid using the default barrels and crates, since these are recognised by the player as physics props, and could cause some confusion when they don't move.Falling down holes
I played on da_city for a little while and it feel like it has the potential to be really fun, but I kept sliding off the edge. I think it's fair that a player should dive off the edge, but an unfortunate slide seems like a bad reason to punish them.Fix?
Unless that is what you want in your map, remember to put stoppers along your cliff edges. Same goes for connecting walkways, I hardly ever manage to slide along a walkway perfectly down the middle, and since you can't change the direction of your slide, it's probably going to be better to have something to stop you sliding off the edge of most walkways.Dead ends
Dead ends and pointless rooms are no fun and waste resources. Dab is more about constantly moving through the environment, not so much about rewarding exploration. Empty rooms and dead ends break the game flow too much.Fix?
Avoid dead ends in your maps.
Now, about that lag. Optimization is a big part of source mapping, so it's important to have an understanding of how it works and how to do it. Open areas like da_rooftoops are going to be essentially impossible to truly optimize, but there's a lot of small things you can do that will add up, and might squeeze an extra frame here or there. For starters, you can use the buildings to generate visleafs. If I am on one side of a building, I only need to see everything on my side. Using hint brushes, there is a few ways you can ensure that the player doesn't render behind buildings.
You can hint off a visleaf that travels along with the walls of the building, ensuring that the player won't see the other side, like this (red is the building, purple are hints):
The problem with this approach is that there is only one visleaf that the engine won't render, that is the one exactly opposite the player. If you are on a diagonal to the building, you're going to be rendering a bunch of stuff you can't possibly see, because the visleafs are squares. So you can put 4 more hint faces in like this:
Now you have more visleafs, which means more ways to block vision from the player. Of course, this also means that you have a lot more visleafs, so there is going to be a bit more of a compile time and, if you go overboard, it will most likely lower the fps as the engine has to spend more and more on visleaf tracking. You'll want to weight up how much this is going to block off from the player and decide for yourself if it is worth it in each case.
I'm still new to optimization so take this with a grain of salt. there's probably better ways to do this, or good reasons not to do it this way at all.