Difference between revisions of "Creating a Portal 2 Coop Map"
m (Added info apout places to spawn players) |
|||
(3 intermediate revisions by 2 users not shown) | |||
Line 3: | Line 3: | ||
ru=Creating_a_Portal_2_Coop_Map:ru| | ru=Creating_a_Portal_2_Coop_Map:ru| | ||
de=Creating_a_Portal_2_Coop_Map:de | de=Creating_a_Portal_2_Coop_Map:de | ||
+ | pl=Tworzenie_Mapy_Co-Op_do_Portal_2 | ||
}} | }} | ||
==Basic steps== | ==Basic steps== | ||
Line 24: | Line 25: | ||
* '''TWO''' [[logic_script]]s | * '''TWO''' [[logic_script]]s | ||
* '''TWO''' [[prop_indicator_panel]]s | * '''TWO''' [[prop_indicator_panel]]s | ||
+ | * a [[prop_button]] | ||
+ | * '''TWO''' [[info_coop_spawn]]s (place them where you want the players to start) | ||
+ | {{Note| You must '''HIDE''' the [[prop_indicator_panel]] and the [[prop_button]] so the player's won't see it in the level}} | ||
== Step 2== | == Step 2== | ||
* Name your first [[logic_relay]] '''relay_return_hub''' | * Name your first [[logic_relay]] '''relay_return_hub''' | ||
Line 33: | Line 37: | ||
* Name your first [[prop_indicator_panel]] '''panel_level_return_orange''' | * Name your first [[prop_indicator_panel]] '''panel_level_return_orange''' | ||
* Name your first [[prop_indicator_panel]] '''panel_level_return_blue''' | * Name your first [[prop_indicator_panel]] '''panel_level_return_blue''' | ||
+ | * Name your [[info_coop_spawn]]s '''spawns_1''' | ||
+ | {{Note| The [[prop_button]] doesn't need a name}} | ||
==Step 3: Properties== | ==Step 3: Properties== | ||
Line 67: | Line 73: | ||
|- | |- | ||
| Indicator lights || tex_level_return_orange | | Indicator lights || tex_level_return_orange | ||
+ | |} | ||
+ | |||
+ | 4. Continue to the '''spawns_1''' properties: | ||
+ | ::{| class=standard-table | ||
+ | ! Property Name || Value | ||
+ | |- | ||
+ | | Name || spawns_1 | ||
+ | |- | ||
+ | | Team || <red or blue, depending on wich player> | ||
|} | |} | ||
{{Warning|The '''panel_return_blue''' has the '''SAME''' properties except of the "Indicator lights" which is "tex_level_return_blue"}} | {{Warning|The '''panel_return_blue''' has the '''SAME''' properties except of the "Indicator lights" which is "tex_level_return_blue"}} | ||
− | == | + | |
+ | 4. '''prop_button''' properties: | ||
+ | |||
+ | ::{| class=standard-table | ||
+ | ! Property Name || Value | ||
+ | |- | ||
+ | | Delay Before Reset || 3 | ||
+ | |} | ||
+ | |||
+ | ==Step 4: Outputs/Inputs== | ||
Now we need to connect all these entities together. Follow these instructions: | Now we need to connect all these entities together. Follow these instructions: | ||
Line 82: | Line 106: | ||
|- | |- | ||
| [[Image:Io11.png]] || OnMapSpawn || script_return_hub || RunScriptCode || MapPostLoaded() || 2.00 || Yes | | [[Image:Io11.png]] || OnMapSpawn || script_return_hub || RunScriptCode || MapPostLoaded() || 2.00 || Yes | ||
+ | |- | ||
+ | | [[Image:Io11.png]] || OnMapSpawn || script_return_hub || RunScriptCode || SetMapBranchAndLevel() || 0.25 || Yes | ||
+ | |- | ||
+ | | | [[Image:Io11.png]] || OnMapSpawn || spawns_1 || SetAsActiveSpawn || <none> || 0.00 || No | ||
|} | |} | ||
{{Note| Don't forget the '''"Delays"''' and the '''"Only Once"'''}} | {{Note| Don't forget the '''"Delays"''' and the '''"Only Once"'''}} | ||
Line 115: | Line 143: | ||
|} | |} | ||
+ | |||
+ | *'''prop_button Outputs''' | ||
+ | |||
+ | ::{| class=standard-table | ||
+ | ! || My Output || Target Entity || Target Input || Parameter || Delay || Only Once | ||
+ | |- | ||
+ | | [[Image:Io11.png]] || OnButtonReset || panel_level_return_orange || Stop || <none> || 0.00 || No | ||
+ | |- | ||
+ | | [[Image:Io11.png]] || OnButtonReset || coopmanage_return_hub || SetStateBFalse || <none> || 0.00 || No | ||
+ | |- | ||
+ | | [[Image:Io11.png]] || OnPressed || panel_level_return_orange || Start || <none> || 0.00 || No | ||
+ | |- | ||
+ | | [[Image:Io11.png]] || OnPressed || coopmanage_return_hub || SetStateBTrue || <none> || 0.00 || No | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | That's it! You now can create co-op maps with working co-op scripting! | ||
[[Category:Portal 2 Level Design]] | [[Category:Portal 2 Level Design]] |
Latest revision as of 12:53, 20 May 2019
Contents
Basic steps
Here are the basic steps needed to create a coop map:
- Create a func_instance. Set its VMF file to one of the coop spawn rooms, such as instances/coop/coop_spawn_room.vmf. These VMF files already contain an info_player_start, so don't create another one.
- Create another func_instance, this one set to one of the level end rooms, such as instances/coop/coop_endlevel_room.vmf.
- Build your map in between these rooms. (You can move them, of course.) The embedded VMF files have an obvious exit which should lead into your map. You may need to enclose the rooms in order to prevent leaks.
- Make sure you save the map with the prefix mp_coop_.
That's it! See Testing Portal 2 Co-Op Maps Alone for how to test the map without a partner. (To test it with a partner, both must have the bsp file. Get into the hub normally, then the host should changelevel to the map.)
Co-op Level without spawn Instances
To create a co-op level, you need to use:
- a logic_auto
- TWO logic_relays
- a logic_coop_manager
- TWO logic_scripts
- TWO prop_indicator_panels
- a prop_button
- TWO info_coop_spawns (place them where you want the players to start)

Step 2
- Name your first logic_relay relay_return_hub
- Name your second logic_relay @relay_has_new_taunt
- Name your logic_coop_manager coopmanage_return_hub
- Name your first logic_script script_return_hub
- Name your second logic_script @script_mp_coop_lobby
- Name your first prop_indicator_panel panel_level_return_orange
- Name your first prop_indicator_panel panel_level_return_blue
- Name your info_coop_spawns spawns_1

Step 3: Properties
1. Go to script_return_hub properties and do the following:
Property Name Value Name script_return_hub Entity Scripts debug_scripts/mp_coop_transition_list.nut
2. Now go to the @script_mp_coop_lobby properties and do this:
Property Name Value Name @script_mp_coop_lobby Entity Scripts debug_scripts/mp_coop_lobby.nut
3. Continue to the panel_level_return_orange properties:
Property Name Value Name panel_level_return_orange Time Duration 3 Is a timer? Yes Indicator lights tex_level_return_orange
4. Continue to the spawns_1 properties:
Property Name Value Name spawns_1 Team <red or blue, depending on wich player>

4. prop_button properties:
Property Name Value Delay Before Reset 3
Step 4: Outputs/Inputs
Now we need to connect all these entities together. Follow these instructions:
- logic_auto Outputs

- logic_coop_manager Outputs
- relay_return_hub Outputs
- @relay_has_new_taunt Outputs
- prop_button Outputs
That's it! You now can create co-op maps with working co-op scripting!