You finally decided to make a map for CSGO targeting the competitive scene. Good move and welcome to the ruthless world of competitive CSGO design.
In addition to the regular set of norms that govern multiplayer level design, the competitive aspect has some additional “requirements” so to speak.
I see many designers making the same mistakes when tackling competitive projects for CSGO, so this article will serve as a quick reference guide for good practices. The list is not exhaustive but should cover the most common ground; if you have further valid points and techniques, please do share them in the comments for the greater good of the community.
In manufacturing and operations management (my background), we have something that we call GMP, Good Manufacturing Practices. It basically applies to the pharmaceutical and food industries (mandatory), but can be expanded to other industries as well (cosmetics, chemicals, etc…).
Good manufacturing practices guidelines provide guidance and minimum requirements for manufacturing, testing, and quality assurance in order to ensure that a food or drug product is safe for human consumption. These guidelines are a series of general principles that must be observed during manufacturing.
In a similar approach, I will coin a new term relative to level design; competitive GMP – Good Mapping Practices (calling the patent office, be right back).
Food and pharmaceutical industries are strict, so is CSGO competitive play. Everyone is tense, on the edge, ready to unleash fury. The last thing players want is unfair conditions imposed by the map itself that could hinder and “endanger” their gameplay, therefore, their chances of beating the opponent.
What I will present in this article is basically a series of general guidelines and practices that have been tried and tested by a multitude of level designers (myself included), and more or less verified by players who play competitively. These competitive “good mapping practices” should be used as a rough guideline when designing new maps geared towards competitive play; these will hopefully eliminate wasteful guess-work, and provide a smooth flow for your design.
If you are designing the map for non-classic game modes or for custom ones, or if you are targeting casual/fun 32-player public servers, then most of this guide does not apply. It is mainly targeted to “competitive 5vs.5” gameplay.
The following guidelines are in no particular order and should be treated with equal importance.
Very noisy textures/player readability
Player readability against backgrounds is an utmost requirement for a smooth and fair gameplay. If the opponent blends in with the background or is very hard to discern on the fly, then ‘we have a problem”.
If you are rushing a site or just peeking around a corner, and it takes you 5 seconds to decide whether that “brown-ish” spot in the distance is a player or just part of the texture/shadows, then you might as well be dead already.
Get in the habit of having clear, light textures in critical high traffic areas (bombsites, chokepoints, rotation connectors) within the player height. That’s not to say that you should always use a flat monochrome texture rather a simple-pattern (or pattern-less), light-colored texture. Feel free to go “crazy” in texturing areas above player height (not affecting readability directly), low traffic zones (CT/T spawns), and parts of the map that serve as decorative non-playable areas.
The above screenshot is just a simple test to showcase the difference between textures’ readability. On the left is a noisy metal texture while on the right is a fairly clear one. You can notice that on the fly, the player on the right is effortlessly identified and his silhouette is clearly marked against the background. The one on the left is not so obvious as the player’s shape and textures tend to blend in with the background; the effect will be a lot worse had this test map been in a dim environmental lighting.
Excessive shrubs and bushes at player height
This is a pretty common mistake. Foliage is a nice method to add colors and vibrancy to the map and “beautify” the level. However, excess foliage, especially within player height becomes problematic for a good visibility.
Whenever possible, avoid dense and large foliage within player height where the player can blend in or even hide completely in them. It is best to use smaller foliage for the main areas of encounter, and keep the large bushes to decorate areas above player height, low traffic areas, or some places where player visibility is not crucial.
As with the previous example, the player on the right blends in and basically hides inside the bush, and his silhouette is barely seen against the dense ivy on the wall. The player on the left is much more easy to spot; notice how on the left side I still used various foliage props to decorate and liven the scene but I did so with small subtle bushes at the player’s feet and some large ones above player’s height.
Those dark areas are an excellent choice if you are designing an atmospheric single player experience or zombie/horror themed multiplayer level, however, they have no place in competitive CSGO design.
There is nothing more frustrating than getting shot by a ghostly enemy lurking in the dark shadows without even knowing where you got shot from.
Make sure all your areas are adequately lit by using a combination of lights and light spots with varying brightness. You can also experiment with quadratic/linear/constant and falloff distances in your lights to make sure no dark spots are left.
You can “artificially” boost lighting with some tricks such as adding duplicates of your main room light at a lower brightness (without the props). Another trick I resort to is to add a light spot having the same color/brightness of the ambient in your “light_env” entity. This will help propagate the uniformity of your ambient lighting into shadowy areas without contrasting with the main environmental light color.
Notice in the above screenshot how the poorly lit room makes identifying the player’s location on the spot a rather difficult task; by the time you notice this player lurking in the shadowy corner, he would have already shot you long ago.
This screenshot above is a big improvement on the previous one. With adequate lighting (“light” + “light_spot” at different brightness as opposed to just “light” with low brightness in the previous example), the player can be clearly seen in the corner. The scene can still be improved with additional lights and falloff distances; it was just to showcase how good lighting can make a big difference to help identify players on the fly while eliminating unfair lurking spots.
Non-harmonious composition/extreme patterns
In competitive matches, the player’s focus should be on their opponents; any distraction is detrimental.
The human eye likes patterns, a lot. If you have an extreme pattern in your texture or an overly patterned texture composition (several non-matching textures that when placed on a surface, form a distinct pattern), the eye will tend to follow this pattern…at the expense of losing focus of the opponent. A simple distraction, even for a second or two, can prove fatal in an encounter.
As I said in earlier points, I am not asking you to use flat textures, rather keep patterns under control in a way not to affect visibility and deviate player’s attention.
In the screenshot above, both walls on the left and right are made of 5 different brushes covered with 5 different textures. The texture composition of the wall on the right is very coherent, and the overall pattern is very harmonious; the player in front of the wall is the center of interest (your eye will focus on the player’s silhouette when you look at the right wall).
In contrast, the texture composition of the left wall is totally random with conflicting texture patterns and colors; this obvious contrast will create a pattern that your eye will be subconsciously drawn to instead of focusing on the player. Mixing different themes randomly will also create this distractive pattern effect (mixing an old stone texture with a high tech metal panel on the same wall for example).
This is another example of distracting patterns. The player on the left is basically lost within the pattern on the texture, and your eye will inadvertently lock on this pattern instead of the player. On the right, we still have a patterned texture, however, it is very subtle and easy on the eye, and does not detract from focusing on the player.
This doesn’t need much explanation; anything in the map that gives a unilateral advantage should be avoided.
Examples are aplenty: foliage that the player can hide inside (refer to point 2 above), dark corners (point 3), overpowered high position, sniper nest with long line of sight, small opening that a player can duck behind and gun down any attacker without exposing himself, peeking spot/angle (i.e. between 2 crates, underneath a car on a sloped road); you get where this is going.
If one team gets a privilege not immediately available to the opposing team, it’s an unfair spot and should be dealt with.
This is a classic example of an unfair spot. I can easily peek through the narrow slit between the crates, while the other player might not even notice that I’m hiding behind these crates. This scenario is totally unfair as I have the opposing player in my crosshair leading to the easy kill, while that player doesn’t have the possibility of hitting me even if he manages to spot me in the first place (very unlikely).
Narrow chokepoints as primary paths
There is nothing wrong with having narrow paths as secondary or alternate routes to your objectives but having those as your primary itinerary is problematic.
Rushes will get interrupted, players will pile, and the risk of friendly fire/grenades becomes higher. Even if you are alone down this path, your maneuver space is very restricted and could hinder proper cover/evasion/peeking tactics.
In case this narrow primary path leads to a bombsite, then things get worse as defending players will have an easy time protecting the entrance, slaughtering any attackers that dare show their head along this path.
Allow enough entrances for bombsites/hostage sites
This point complements the previous one. In addition to adequately spaced paths, critical sites should have more than one entrance obviously. Typically, you’d be looking to have 2-3 entrances with a chance to mix primary and secondary paths to increase the total number to 4-5 (2 wide main entrances in addition to 2 secondary ones, a vent and a tunnel for example).
Some people might argue that too many entrances will increase the number of angles to cover, therefore, create unfair spots. That is true and this is where you, the level designer, has to cleverly design these entrances.
If the player entering from one path has to cover 4 other entrances at different angles while scanning the area on the fly for snipers/campers, then obviously this will be overwhelming and frustrating. What you could do to help is to make sure that only 2 entrances are visible at a time out of the 4-5 (that is if you end up having these entrances – limiting them to 2-3 is fine). You need to visually block opposing entrances from certain angles to help the player rushing from one entrance: low-rise wall, crates, vehicles, opaque fences, or simply parts of the surrounding geometry are all ways to achieve this.
Avoid unnecessary long sight lines
That is easier said than done depending on the map’s theme that could dictate certain design choices.
A long unbroken line of sight creates unfair sniping spots/ranges despite all your best intentions when designing it. Players will abuse these sight lines creating gameplay imbalances and over-powered positions.
If you absolutely need to have these long sight lines, then make sure to scatter enough cover and visual block to aid players progressing through this area, and try to limit sniper nests along the long sight line; you could also make these sniper nests risky to discourage players over-using them by having their backs or flanks exposed, thus keeping the “sniper” on their toes.
Open skyboxes whenever possible
This is about having the skybox open (no skybox brushes) around bombsites and mid area in general.
From a technical standpoint, I’m not a fan of open skyboxes; they will decrease your fps anywhere between 10-30 fps (a lot more without proper optimization) depending on location and details, and proximity to other open skybox areas. However, competitive gameplay relies heavily on “nades” tactics and players will appreciate an open skybox that allows them to toss grenades/smokes/flashes across the map as an integral part of their attack/defense strategies.
Whenever possible, and if your layout/design allows for it, open the skybox in strategic places (between mid and bombsites for example) to allow for such strategies. Obviously you will need to tighten your optimization setup to counter for this opening, so naturally do not go on a skybox opening spree across the whole map. If there is an area/angle that is near impossible to throw meaningful grenades across, then there is no need to open the skybox at this place. Other places such as the back of CT/T spawns are also candidates for a “closed skybox”; use your common sense and best judgment when deciding to open the skybox and remember to counter the effect with additional optimization (horizontal hints, areaportals, props fading…).
This is roughly the time it takes the player to move from one bombsite to the other.
By default, the C4 timer is 45 seconds (35 secs in most professional leagues as far as I know), so a good number for the rotation time would be around 15 sec.
Making an extremely short rotation time will ruin gameplay as both bombsites will be practically covered at the same time, negating a whole plethora of strategies revolving around pushing/rushing/faking/etc.
In contrast, creating an extremely long rotation time will barely allow a CT to reach the other bombsite, let alone have enough time to defuse (and clear the area beforehand).
The 15s figure is not cast in stone though and can vary depending on the map layout/connectors/obstacles/angles (12 to 17s rotations are not uncommon).
If the rotation route is fairly simple and straightforward without much obstacles and hiding spots, then pushing the rotation time slightly above 15s won’t be a big issue. However, if the route is complex with multiple obstacles to clear, angles to check, and hiding spots to pre-fire, then obviously these “hindrances” must be taken into account as they will add to the default rotation time that you calculate by simply running from bomb site A to site B; in this case, a sub-15s time is desired.
Clear signs for directions
This really goes without saying, clear signs are a must for smooth gameplay. Even if your layout is simple and easy to learn, you still need to mark bombsites as well as the paths leading to them using arrow decals or custom signs. It is a bad idea to let the player guess the best route to use or how to reach the bombsite from their current location; a hesitation could mean getting killed prematurely by the opponent.
My best advice is clip, clip, clip then clip some more. Even with your best efforts, one player will manage to boost outside the playable area thus gaining an unfair advantage and breaking gameplay. Always use the console command r_drawclipbrushes 2 (or 1 for wireframe clips) to make sure that you did not overlook an area without clipping.
In addition to preventing players from boosting to otherwise unreachable locations, clip brushes, adequately placed in the playable parts of the map, will help have a smooth, hassle-free movement for players. There is nothing more frustrating in an intense firefight or heated 1vs1 situation than getting stuck on a tiny doorframe or window sill or stumbling on a small flower pot or bucket.
Get in the habit of disabling collisions on all trivial static props such as gutter pipes, flower pots, small bushes, decorative windows, power boxes, etc. For minor physics props (bottles, mugs…), you can tick the “debris” flag to prevent players from getting blocked and bumped by them.
Clip brushes will also be useful to prevent the C4 from being dropped into awkward places where it cannot be retrieved. In CSGO, “Clip” and “Player Clip” are identical with the added advantage of clip in preventing the navigation mesh from overflowing beyond the clip brushes; for this reason, it is better to use “clip” rather than “player clip”.
As I mentioned in the intro, this guide should hopefully lay the basic ground work for any designer wishing to build a level geared at competitive CSGO, enabling them to avoid common mistakes.
This list of best practices is not extensive but it includes the most common and obvious practices that every designer should use as guideline when creating their competitive map. If you feel you have additional valid practices, please feel free to share them in the comments so we can all, as a community, benefit from them.
December 6, 2015