Creating a Wingman Map

From Valve Developer Community
Jump to: navigation, search
Counter-Strike: Global Offensive Level Creation
English Русский 

Wingman is a game mode in Counter-Strike: Global Offensive where two teams of two people play a match in a competitive environment, with shorter round times and only one bombsite. Here, you can learn how to make a map for it, and how all of this works.

Wingman is not a simple CFG file – it is a real official game mode. That means that you can have a completely normal map AND support Wingman at the same time, as it happens with the official Cobblestone, Inferno and Overpass. Because of that, the map itself has to allow for this kind of thing. You can't 'enable' Wingman in any map that hasn't already followed the process described in this tutorial already.

This tutorial is only really applicable if you already have (or are planning to create) a map for one of the Classic game modes, but also want to also support the Wingman mode. If you are designing your map to only work with Wingman, then you probably don't need this tutorial.

Used entities

  • A logic_auto
  • A logic_script called script.2v2
  • Spawn points for both teams called spawnpoints.standard
  • Spawn points for both teams called spawnpoints.2v2
  • func_buyzones called buyzone.2v2
  • func_brushes called brush.blocker
  • func_nav_blockeres called navblocker.2v2

Creating the map


Our map must detect if the current game mode of the match is Wingman; to do that, we must use VScripting. However, Valve has already make a script that does that and made it available to any map, so you don't have to worry about that. To run that script, create a logic_script entity in your map, and call it script.2v2. Set the "Entity Scripts" property to "2v2/2v2_enable.nut". Then make a logic_auto, and in the Outputs tab, set the output to "OnMapSpawn", the target entity to "script.2v2", via the output "RunScriptCode", with the parameter of "EnableWingman()".

This will change the entities in our level depending on the game mode we are on. Because of that, all of the following entity names are required to be exactly as listed here, otherwise it will not work.

Spawn points and buyzones

Here, we set the custom spawn points. But before that, select all the normal spawn points (both CT and T) that are going to be used in the normal Classic mode. Change their names to spawnpoints.standard. The script will deactivate these when needed.

Now, create at least two spawn points for each team – those are going to be used in Wingman. In the official Valve maps, they use 4 for each team, so it's probably better to use that. Select them all and name them spawnpoints.2v2, and set "Enable by default?" to No.

If these spawns are not already inside of a buyzone, just create a brush, convert it into an entity (Ctrl+T), and choose func_buyzone. Select the team, name it buyzone.2v2. Do the same things for the other team. You don't have to do anything to the standard buyzone, since it will already be outside the play area anyway.

Blocking the play area

The game can work as it is now, but you will probably want so that you can only go to one bombsite. The way to do this is by adding physical blocks in every hallway that leads to the other bombsite to block people from going there. To do that, create some brushes in the places that you don't want the player to go with the tools/toolsclip texture. Convert then to a func_brush and name them brush.blocker. Set "Start disabled" to Yes and the script will do the work for you.

You can even use the cool tools/wrongway texture on that to signalize to players that they can't go through that invisible wall. It even fades out with distance!

Anyway, if you do everything right, it should be working.

Blocking Navigation meshes

You can use func_nav_blocker to restrict bots from crossing over wrong site/areas. To do this, create brush with the tools/toolstrigger texture. Then convert to a func_nav_blocker entity and name it navblocker.2v2. Using a logic_auto create new output, set the output to "OnMapSpawn", the target entity to "navblocker.2v2", via the output "BlockNav".

Testing the map

To play the map in Wingman mode, type in these commands into the console:

game_type 0; game_mode 2;

And then enter the map command to access your map.

When you upload the map to the workshop, be sure to select "Wingman" in the list of game modes so that people can select that when they open the map through the in-game workshop tab. Done!