Activating the Console
Both players need to follow these steps.
Begin by launching the Steam client. Locate 'Portal 2' in your list of games and right click on the game icon. Click 'Properties' and a window will open. Now click 'SET LAUNCH OPTIONS...' which will open another window. Paste -console in the empty field and then click 'OK'.
Create Toggle Button
Both players need to follow these steps.
Launch 'Portal 2' and the console will appear immediately. Paste bind f11 toggleconsole in the bottom field and click 'Submit'. Press 'F11' a couple of times to verify that you can indeed toggle the console off and on. Relaunch 'Portal 2'.
Launching the Server and Connecting
Both players now need to login to their mutual VPN. You can use Tunngle , Hamachi, Evolve or any other LAN-like network of your choosing. If you are unfamiliar with this type of software then I suggest reading my article General assembly: ArmA 2 VPN Setup which explains in detail how to connect with your friends on Tunngle.
The player hosting the game will need to provide the VPN temporary IP address to the other player. That player will then paste the code connect 11.11.111.11 into the console. The example IP 11.11.111.11 must be replaced with the actual IP address. If you don't connect right away don't worry: It'll continue to attempt a connection every few seconds.
While the other player is prepping, the host will launch the CO-OP map by placing this code in the console: map map mp_coop_start. At this point both players will enter the map simultaneously and begin playing.
There are forty-two 'Portal 2' maps that can be played. You can run them in sequence by entering the game via 'mp_coop_start' or you can load each one individually and start play from that point.
mp_coop_start
mp_coop_lobby_2
mp_coop_doors
mp_coop_race_2
mp_coop_laser_2
mp_coop_rat_maze
mp_coop_laser_crusher
mp_coop_teambts
mp_coop_fling_3
mp_coop_infinifling_train
mp_coop_come_along
mp_coop_fling_1
mp_coop_catapult_1
mp_coop_multifling_1
mp_coop_fling_crushers
mp_coop_fan
mp_coop_wall_intro
mp_coop_wall_2
mp_coop_catapult_wall_intro
mp_coop_wall_block
mp_coop_catapult_2
mp_coop_turret_walls
mp_coop_turret_ball
mp_coop_wall_5
mp_coop_tbeam_redirect
mp_coop_tbeam_drill
mp_coop_tbeam_catch_grind_1
mp_coop_tbeam_laser_1
mp_coop_tbeam_polarity
mp_coop_tbeam_polarity2
mp_coop_tbeam_polarity3
mp_coop_tbeam_maze
mp_coop_tbeam_end
mp_coop_paint_come_along
mp_coop_paint_redirect
mp_coop_paint_bridge
mp_coop_paint_walljumps
mp_coop_paint_speed_fling
mp_coop_paint_red_racer
mp_coop_paint_speed_catch
mp_coop_paint_longjump_intro
mp_coop_credits
written by RJ Wattenhofer