Map Design

So you've decided to make a map for Smashball. Hooray! But before you fire up Hammer, take a look at these ground rules for what makes a good Smashball map.

Make It Hookable
First off, make sure that no matter where you are, firing a hook in any direction will bury it in something. If you're using a skybox, put some kind of surface in front of it. Glass works well.

Always keep in mind the potential energy of the different places in your map. The hook lets players turn height and gravity into goal-scoring velocity. You might want to make the areas in your map with more potential energy a bit harder or more time consuming to get to in order to offset their advantages.

The Basic Layout
Traditional Smashball maps divide into 5 basic areas - The home and away goal areas, the home and away choke points, and the midfield area where the ball spawns. Keep the map as symmetrical as possible, any asymmetry can unbalance the map toward one side or the other. A good way to do this is to simply build one half of the map, then copy and paste a rotated copy into the other half.

Stuck In The Middle With You
Midfield is basically flyover country. Once possession of the ball is gained, players will only really be in midfield for a few seconds at a time while they're running the ball between goals. Keep it fairly open and hookable, but add some structure to shape the initial struggle for the ball at the beginning of the round. Make sure there's an easy path for newly spawned players to swing by the ball and quickly grab it.

Choke It
Put a choke point between your midfield and goal rooms to force fast-hooking players to slow down a bit and give KOed or slower players a chance to catch up. The choke point should have 2-3 entrances from midfield and 3-5 exits into the goal room, but all possible paths should require players to travel through a common area that can be defended by a lassoing fullback. Without choke points, a skilled hooker can cross the entire map easily in a matter of just a few seconds. The choke gives defenders a chance to stop offensive players before they get to the goal room and possibly force a turnover.

Techniques to slow down fast-moving players include:


 * Low ceilings, arches or doorways
 * Obstacles such as pillars
 * Using terracing for height changes rather than ramps or stairways
 * Forcing a tight turn in a narrow space

The choke is also a good place to block visibility between the goal room and the rest of the map for better frame rates and the possibility of adding more detail.

The Goal Room
Most of the action will take place in here, so it's important that you get the balance right. The key factors you are balancing are the ability of the offense to create scoring chances and the ability of the defense to create turnovers. If it's too easy to score, individual goals become meaningless and goalies feel useless. If it's too easy to defend, it becomes frustrating for attackers and flukes can end up having too much of an influence on the outcome. If turnovers are too easy, too much of the game time gets eaten up running the ball back and forth. If turnovers are too difficult, the attacking team can just keep hammering the ball at the goal until they score.

Here are some tips to help you balance your goal room:


 * The key goal-scoring stat is velocity. Higher velocity means less time spent being exposed to weapons fire from defenders, especially the goalie's cannon. Most of your tweaks should therefore be aimed at the velocities that are achievable in the various parts of your goal room.
 * Try to keep your goal room entrances within a couple hundred units of ground level to manage the potential energy of incoming players.
 * Make sure your choke is adequately slowing incoming players.
 * Try to keep sight lines clear for the goalie throughout the goal room. If there is cover, try not to make it possible for players to use it to advance the ball.
 * Avoid overly direct routes to the goal, especially from locations with high potential energy. Forcing players to move around, over and especially under obstacles will slow them down.

You can generally get an idea of how a map will play from looking at it and playing a bit by yourself, but the only way to be certain is to put a bunch of real live players in it and let them go at it. Posting your map in the mapping section of the Smashball forums and asking the developers nicely is the best way to get it tested by experienced players.

Keep It Simple
You might have a GeForce OVER 9000 Octuple SLI in your machine, but not all of us do. Source is designed to scale down to even fairly low-end hardware, so you never know what kind of machine your players will be running your map on. Also, as this is a multiplayer game, the players themselves will be creating a good amount of framerate-robbing action in ways you can't totally predict. A room that runs at 200fps when it's empty can go down to 40 when 8 players are trying to kill each other inside it, so use just enough brushwork to create a playable environment, and use models (which can LOD based on distance and hardware) for anything detailed.

Get acquainted with hint brushes and VIS and try to reduce as much of the overdraw on your map as possible. Areaportals are a good way to restrict vis through small doorways (such as the entrances to the choke), but remember that any possible path from one side of the areaportal to the other is a leak.

Spawns and Entities
See Mapping Entity Reference for more info on what the smashball specific entities do.

Info_ball_spawn should be placed in the center of the map where both teams have an equal chance of grabbing it on first spawn. You might want to put it up high so that teams have to fight for altitude to grab it, but make sure there's a ramp or other non-hooking way to get at it as well.

Info_player_xxxx should be placed in their respective teams' goal areas. Info_player_xxxx_midfield are used after a team is scored on in order to give them first possession of the ball, put those spawns in midfield or the choke so that they can get to the ball before the other team (who will spawn at their "normal" spawns). Info_player_xxxx_goalie should obviously be placed directly in front of its team's goal.

Trigger_goal is a brush-based entity representing the goal. Unlike the other entities it is not team specific, you will need to go into its properties and set which team it belongs to.

Team-Colored Materials
Smashball has the ability to put custom team colors onto the playing surfaces of the map to indicate "ownership" of the territory in the map by the teams involved. Materials with this capability are located under the "team" folder in your Smashball materials directory. "Home" materials should be placed on the side of the map that the "home" spawn and goal entities are in, and same with "away." If you are creating your own materials, see Team-Colored Materials for instructions on constructing them. Avoid using explicitly red- and blue-colored materials, as it cannot be guaranteed that the teams will actually be red and blue when the map is played. Also try not to use textures with particularly strong coloring, as they can be misleading in matches where a team is using that color. Stick with a neutral palette that will not clash or mislead when team colors are introduced.

Autocamera System
Smashball has an automatic camera system that records a camera path along with a srctv demo. To take advantage of it properly, you need to add info_spec_camera to your map at points where you think the camera should go. Then, you do 'sb_spec_writecamerafile' in the console with your map loaded, and it will create a mapname.bsp.txt file full of camera positions in the maps directory. This file should be included in any map distribution. The best places to put camera points are along typical paths of player travel.