This long guide will try to help you set up your lobby and serve as a reference for everything related to lobby and games modes. See chapter "Reference" for usefull pictures where your text ends up in-game.Sorry for the wall of text :).
Index
I don't know how to use anchors links on this site, so this is basicly a list with everything thats in this tutorial (or planned).
Creating a ‘one mode’ map
Creating a map with multiple modes
Player attributes, picking your hero in the lobby
Lobby reference
Creating a ‘one mode’ map. (Foundation for every map, this should be applied to every map).
You want this kind of map if your players have nothing to choose, however every map should apply these settings at first.
Set up your general map information at Map > Properties. See the reference to see where the text shows up in the game.
First set up your players, and who’s controlling them at Map -> Player Properties. For this example i choose to use four players (and player 0 is always neutral). Don’t set up race/color or anything else in here. ONLY THE CONTROLLER.
Now open up Map -> Game Variants.
Click the [Add] button and right click the item in the list and select ‘Default’. Select the newly appeared item in the list.
Go to the General tab and give your Variant a new name (this is not displayed anywhere in-game). I used “Classic”.
Give it a nice description (look at the reference for appearances of this field in the game).
I’m not sure if the Icon field is used, you might want to post in this thread if you find out what it does.
Next go to the Game Type tab. This is a fairly important tab, consult the reference to see where the fields are displayed in-game.
Please note that the Category will have to describe what kind of game your map is. Is it a FPS, RTS, Hero Defence, Tower Defence, etc.
The mode will be how the game is played. Take DotA for example, you can play DotA on APEM, AREM, etc.. Since you are reading this topic you will want to name your mode something like ‘Default’ or ‘Classic’.
Go to the Attributes tab.
Now I’ll walk through all the different Attributes, if I skip an Attribute just don’t touch it and leave it to default. Also lock every field. And I mean all of them.
Game speed: put this Faster.
Lobby delay: I think ten seconds is perfect.
Locked Alliances: This is will keep players from making teams once in-game (or un-ally players).
Teams: Put this to Custom Teams.
Color: You can lock the color’s for the players here if you want to.
Race: If you need certain players to be a certain race, this is the place.
Team [Custom teams]: Here you can set up each player’s team. So if you want 1vs3 set player 1 to Team1[1] and players 2,3 and 4 to Team2[1]. You get the picture.
That’s it for now.
Click [OK] (if you hit [Cancel] you’re so fucked).
Note that, as soon as you change anything to Map > Player Properties, you will get a Custom mode without any way to hide it. So retards may still set it to custom and fuck up your game. I consider this automatic Custom Mode thing a bug and I hope Blizzard will fix it in the next patch.
That should be it for now! Try hosting your game with the settings and you’ll be sure the teams and such are in order.
Multiple game modes.
This chapter builds on the previous chapter, if you haven’t read it yet, please do so now.
Lets go to the Map > Game Variants window.
Duplicate your ‘Default’ mode by right clicking it in the Game Variants list and selecting ‘Duplicate’.
Now select the newly created Variant and go to the General tab.
For this example, I’m going to make a Deathmatch FFA mode, so I’m going to call mine “Deathmatch”.
Next up the “Game Type” tab. Don’t change anything in the Category fields. For the Mode fields I set the name to Deathmatch FFA (because my deathmatch won’t have teams, every man/alien/zerg for himself hehe).
Click the ‘Attributes’ tab. Ok because this is Deathmatch mode I’d like to give my players a little more options. I lock the (Game) Teams to Free For All. Clear the custom teams, and well change anything you’d like, most things should be self-explanatory.
Click [OK] to exit the Game Variants window. Open up Map > Game Attributes.
Ok, for reasons beyond my understanding, Blizzard has given us no way to get the used Game Mode in the trigger editor. No biggy, we can use a Game Attribute for this.
Click the [Add] button to create a new Attribute. Go to the General tab and make sure the “Game” selection is selected for Type.
For name fill in “Game Mode HACK”, don’t skip the HACK part or you’ll have trouble later (you can call it anything, but make sure you’ll recognize it later).
Go to the Values tab and create a new value for every game mode you have. For this example I have ‘Default’ and ‘Deathmatch’ as values.
Now go to the Usage tab. Here we are going to hide all the settings from the players because it should all be done automatically:
Availability: Always
Visibility: None
Access: None
Options: [ ] Locked when public [x] Hidden
Click [OK] to wrap it up and go back to Game Variants (Map > Game Variants). Select Deathmatch from the Variants list.
Go to the Attributes tab, you might have noticed already, there is now a new Attribute in the list: (Game) Game Mode HACK, click on it.
Now for (All Players) select the appropriate game mode, so Deathmatch gets Deathmatch, etc..
Repeat these steps to set the Game Mode HACK for Default game variant to Default.
Open up the trigger editor and create a new trigger called ‘gamemode’.
Now I’m getting pretty lazy, so I’m going to make a picture and elaborate on it:
(to be continued).
Player attributes, picking your hero in the lobby
Please download at look at the attached map when reading this.
Because most of the players know DotA, I like to use it as an example.
Now as you are aware, players pick a hero at the start of the game. Why not let our players pick their hero in lobby? Obviously you are not limited to picking a hero, you could give a player all sorts of choices.
Go to Map > Game Attributes and click the [Add] button. Select the new item in the list.
Go to the General tab select Player for the type.
Fill out the name and description field.
Go to the Values tab. These are the options your players can choose from, I made some silly heroes (Action Hank, Bahama Man, Monkeylord) for this example.
Next up let’s make sure we set some default warnings or Blizzard will yell at us for not doing so.
Just randomly assign them, OR, if actually want player 1 too always play Action Hank, put in the Action Hank value and check the [Locked] box.
Note that you can have more than one Player Attribute, but it will look shitty in the lobby as the layout gets messed up. So I’d recommend against that.
Ok next up using this information in the game.
Open up the trigger editor and create a new trigger. I called mine startingHeroes for the example.
First thing you don’t want to forget is that the trigger needs to be triggered when the map initializes, add an Run Trigger action to your initiation trigger that will trigger your trigger (if I say trigger one more time ill pull the trigger on myself).
So the next part is fairly dynamic if you didn’t follow the tutorial example, but it should be clear to you how to apply this to your own map.
We start the new trigger with reading the chosen heroes into an array. Create a global variable of the type Attribute Value, check the Array box. Set the Size of the array to the maximum amount of players your map will have. I called my var heroPicks.
We need a loop that goes through all the active players. Add a new variable called “player” to the local variables. Next add this action “Player Group - For each player player in (Active Players) do (Actions)” (a basic loop through all the players loop).
Add an Set Variable action inside the loop. Parameters:
Variable: heroPicks
Index player (the local var)
Value: Attribute Player Value (a function)
Attribute: Hero (or whatever you called your player attribute)
Player: player (the local var)
Great now we have an array with the hero’s the players picked.
So now we need to translate the picked hero’s to an actual in-game unit. Let’s create a function for this.
Right click the left pane and select New > Function and give it a suitable name, I called mine attributeToUnit.
Set the return type to “Unit Type”.
Create a new parameter (right click parameter and select New > Parameter or press CTRL+M). Call it attribute, type is Attribute Value.
Create a new Switch action and set the Value to the Parameter ‘attribute’.
Add the as many cases to the Switch as the amount of attribute options you have.
Now for each General – If (case) set the value to your attribute -> option. So using my example I set the first case to Value:
attribute: Hero
value: Action Hank.
Now for each Case return the correct unit type. Do this by adding a Return action to each case. For the Value enter the unit type you want the Hero you want it to correspond with. For example I returned the Marine for the hero Action Hank.
For the Default case return any unit type, this shouldn’t ever happen anyway.
Back to the startingHeroes trigger we created earlier.
At the end of the trigger create a new ‘loop through players loop’ like before outside (make sure it’s not inside the other loop).
For the actions inside the new loop we need to give each player his hero, so add a new “Create Units With Default Facing” action to the loop.
Now for the parameters:
Count: 1
Type: attributeToUnit (function we created earlier)
Attribute: Hero (your player attribute)
Player: player (the local var)
Player: player (the local var)
Point: <a point on your map>
Flags: Anything you’d like.
Test your map.
Note that the array heroPicks can now be easily used in other triggers (as it’s an global var).
Reference
Create custom game screen
: Map properties – Name
: Game Variants – Game Type – Category – Name
: Map Properties – Name
: Author
: Map properties – Description Extended
: Map properties – Name
: Map properties – Description Extended
Game lobby
: Game Attributes – Values – Values – Name
: Map Properties - Name
: Game variants – Game Type – Category – Description
Thanks a lot for this, it explains a lot of things I didn't understand. Especially helpful to me was the method for detecting which game mode was picked by the user.
This is immensely helpful, and I think it's something the community really needed. Thank you!
One question, though. Are you aware of any reason (or a setting) that would cause a game NOT to auto-start when its lobby is full? Mine won't, and it's caused several incidents involving afk hosts in lobbies.
If I set up a good portion of my triggers to only function when someone picks a certain game mode, doesn't that kind of screw up anyone playing offline? Or is there some way for offline players to specify game mode that I'm not thinking of, aside from me implementing a dialog to choose (which defeats the purpose of using game modes in the first place for me)?
I know most people will play online so it's not a huge deal in the end, but I still like to think about it at least.
@Lapig: Go
I've played WoW since beta, so could be ;)
@Myndful: Go
Oh I wasn't even aware that was possible, sound like a good option to have :).
@goofoffjw: Go
yep, I think it's kind of weird blizzard didn't think of this (or cared). You should use some kind of Chat Trigger if you want to debug your map comfortably.
Does anyone know how to lower the 30 second wait when the game starts because lobby is full? I saw it changed on a few maps but couldn't find where to do so? When the host manually starts the game it's only 10 seconds (which I locked under (Game) Lobby Delay)
@goofoffjw: Go yep, I think it's kind of weird blizzard didn't think of this (or cared). You should use some kind of Chat Trigger if you want to debug your map comfortably.
Probably something to do with Blizzard wanting people to be connected to Battle.net all the time.
It is possible that I've set the lobby up wrong, but I believe I've done it right. So, what I'm about to ask, I believe is broken. However, if you know what might cause the problem, I'd love to know:
Lobby players aren't transferred to the game properly. For example, if player 2 is moved to player 4, he is still player 2 in game, even if people join after him and fill up the spots (but it would be nice if it worked, imho, even when nobody else joins, so you can do a 1v1 game).
I'm having a weird issue where a phantom computer player appears when I switch game modes in the Create Custom Game lobby on battle.net. Also when I switch from the first mode it's impossible to switch back, and you have to create a new game to get back to the default mode. I'll upload a video and attach the map in a little bit.
The only thing I customized in the Player Properties is the names of the players and the controllers. The two game modes are identical aside from description/name and the "game mode HACK" attribute you showed us how to use.
Custom teams doesn't seem to work well because if I have 8 players, I can only put up to 3 per team. When I have 12 players, I can only put 2 per team.
The complete guide to the Lobby and Game modes.
Intro
This long guide will try to help you set up your lobby and serve as a reference for everything related to lobby and games modes. See chapter "Reference" for usefull pictures where your text ends up in-game.Sorry for the wall of text :).
Index
I don't know how to use anchors links on this site, so this is basicly a list with everything thats in this tutorial (or planned).
Creating a ‘one mode’ map. (Foundation for every map, this should be applied to every map).
You want this kind of map if your players have nothing to choose, however every map should apply these settings at first.
Multiple game modes.
This chapter builds on the previous chapter, if you haven’t read it yet, please do so now.
Player attributes, picking your hero in the lobby
Please download at look at the attached map when reading this.
Because most of the players know DotA, I like to use it as an example. Now as you are aware, players pick a hero at the start of the game. Why not let our players pick their hero in lobby? Obviously you are not limited to picking a hero, you could give a player all sorts of choices.
Reference
Create custom game screen
Game lobby
Loading screen
Please look at the image for reference.
just in case i need some more room
Definitly a very sexy and helpful tutorial, really shows what the lobby is capable of, if used properly.
Thanks a lot for this, it explains a lot of things I didn't understand. Especially helpful to me was the method for detecting which game mode was picked by the user.
Awesome, thanks a bunch!
Very helpful, doesn't make it any less annoying though that this is so hard.
offtopic: Where you ever in a guild in WoW called volatile?
Finally a tutorial on game variants. I had no clue how to get it right for the longest time.
This is immensely helpful, and I think it's something the community really needed. Thank you!
One question, though. Are you aware of any reason (or a setting) that would cause a game NOT to auto-start when its lobby is full? Mine won't, and it's caused several incidents involving afk hosts in lobbies.
Thank you. I'd been wondering how they worked.
If I set up a good portion of my triggers to only function when someone picks a certain game mode, doesn't that kind of screw up anyone playing offline? Or is there some way for offline players to specify game mode that I'm not thinking of, aside from me implementing a dialog to choose (which defeats the purpose of using game modes in the first place for me)?
I know most people will play online so it's not a huge deal in the end, but I still like to think about it at least.
@goofoffjw: Go
Set up a game variant for single player and allow players to host it on bnet when they want to.
@Lapig: Go I've played WoW since beta, so could be ;)
@Myndful: Go Oh I wasn't even aware that was possible, sound like a good option to have :).
@goofoffjw: Go yep, I think it's kind of weird blizzard didn't think of this (or cared). You should use some kind of Chat Trigger if you want to debug your map comfortably.
Does anyone know how to lower the 30 second wait when the game starts because lobby is full? I saw it changed on a few maps but couldn't find where to do so? When the host manually starts the game it's only 10 seconds (which I locked under (Game) Lobby Delay)
Probably something to do with Blizzard wanting people to be connected to Battle.net all the time.
@Kanaru: Go
It is possible that I've set the lobby up wrong, but I believe I've done it right. So, what I'm about to ask, I believe is broken. However, if you know what might cause the problem, I'd love to know:
Lobby players aren't transferred to the game properly. For example, if player 2 is moved to player 4, he is still player 2 in game, even if people join after him and fill up the spots (but it would be nice if it worked, imho, even when nobody else joins, so you can do a 1v1 game).
@ubdead: Go
I seem to be the only one who has it, and I don't want it :(.
I'm having a weird issue where a phantom computer player appears when I switch game modes in the Create Custom Game lobby on battle.net. Also when I switch from the first mode it's impossible to switch back, and you have to create a new game to get back to the default mode. I'll upload a video and attach the map in a little bit.
The only thing I customized in the Player Properties is the names of the players and the controllers. The two game modes are identical aside from description/name and the "game mode HACK" attribute you showed us how to use.
Custom teams doesn't seem to work well because if I have 8 players, I can only put up to 3 per team. When I have 12 players, I can only put 2 per team.
@KelvCM: Go
Nah, you can just keep assigning the right team.
Player 1: Team 1 [1]
Player 2: Team 1 [1]
Player 3: Team 1 [1]
Player 4: Team 1 [1]
Player 5: Team 2 [1]
Player 6: Team 2 [1]
Player 7: Team 2 [1]
Player 8: Team 2 [1]
Player 9: Team 2 [1]
that works :).
@goofoffjw: Go Yea, I have no idea what's going on, you might have messed up somewhere I'm afraid.
@ubdead: Go
Quite possible, oh well. I'll keep looking for screw-ups for now.