If anyone was wondering, you can play split screen on a PC just like L4D1. All you need is a spare controller. If you don't know what a developer console is, this guide is probably not for you. Ask a friend for help or see another guide.
HINT FOR CONSOLE NEWBIES:
I've noticed a lot of people having trouble running exec or ss_map. It's usually just a typo. To save yourself a lot of time and trouble, try pushing the TAB key when you type. The Source engine has something called tab completion built into the console - it will try to fill in whatever you are typing or give you possible results as you type.
- Wired 360 Controller
- PS3 Controller (MotionJoy Driver, 360 profile, requires two controllers)
- Wii Classic Controller (see post)
- PS2 Controller (see post)
- Some hints for a Logitech pad are in this post. You can also try emulation (see below).
- Other controllers can try using a 360 controller emulator, see this post or this post for help.
Making a new config for a joystick? See this support page.
Step by Step Guide
Make a new controller config in your portal2/cfg folder with these contents (see below the code if you're confused):
cmd2 joy_name "Xbox360 controller" cmd2 joy_advanced 1 cmd2 joy_advaxisx 3 cmd2 joy_advaxisy 1 cmd2 joy_advaxisz 0 cmd2 joy_advaxisr 2 cmd2 joy_advaxisu 4 cmd2 joy_advaxisv 0 cmd2 joy_forwardsensitivity -1 cmd2 joy_sidesensitivity 1 cmd2 joy_pitchsensitivity 0.75 cmd2 joy_pitchsensitivity_default 0.75 cmd2 joy_yawsensitivity -1.5 cmd2 joy_yawsensitivity_default -1.5 cmd2 joy_autoaimdampenrange 0.85 cmd2 joy_autoaimdampen 0.5 cmd2 joy_lowend 0.75 cmd2 joy_lowmap 0.25 cmd2 joy_no_accel_scale 1 cmd2 joy_accelscale 2.0 cmd2 joy_accelmax 1.0 cmd2 joy_response_move 5 cmd2 joy_response_look 1 cmd2 joyadvancedupdate cmd2 crosshair 1 cmd2 hud_draw_fixed_reticle 1 cmd2 bind "JOY1" "+jump" // (A) Button cmd2 bind "JOY2" "+duck" // (B) Button cmd2 bind "JOY3" "+use" // (X) Button cmd2 bind "JOY4" "+remote_view" // (Y) Button cmd2 bind "JOY5" "+quick_ping" // Left Bumper cmd2 bind "JOY6" "+zoom" // Right Bumper cmd2 unbind "JOY7" //"+mouse_menu_taunt" // Back ("select") Button cmd2 bind "JOY8" "gameui_activate" // Start Button cmd2 unbind "JOY9" //"+quick_ping" // Left Stick In cmd2 unbind "JOY10" //"+zoom" // Right Stick In cmd2 unbind "JOY11" cmd2 unbind "JOY12" cmd2 bind "Z AXIS POS" "+attack2" // Left Trigger cmd2 bind "Z AXIS NEG" "+attack" // Right Trigger cmd2 bind "POV_UP" "+mouse_menu_taunt" // D-Pad cmd2 bind "POV_LEFT" "+mouse_menu" // D-Pad cmd2 unbind "POV_RIGHT" //"+mouse_menu" // D-Pad cmd2 unbind "POV_DOWN" //"+mouse_menu_taunt" // D-Pad cmd2 joystick 1 cmd2 sk_autoaim_mode 2 cmd2 +jlook
- This is basically the joy_configuration.cfg file but with cmd2 in front of everything. Name your new file something appropriate like joy_coop.360.cfg and save in the "common/Portal 2/Portal2/cfg" folder. Feel free to customize the binds to whatever you like as long as you keep the cmd2 in front of any command or bind.
- NEW STEP! Click "Play Cooperative" and wait for it to load the friends list. This allows you to save your progress. Thanks Gander!
- Plug in the controller, and load a map with the following in your developer console:
- IMPORTANT! While it is loading, unplug your controller, wait a few seconds, then replug it. This should switch the player light on the 360 pad to the second slot. Once you have the light on the player 2 slot you can leave the joypad in and it should stay on that slot (mine survives a hibernate even). If this doesn't work (you probably have a wireless 360 pad) you can try JoyID (note: JoyID doesn't work for me).
- Execute the config you just made in the developer console:
You should only need to do this once - the config should stick for player 2.Code:
You should now be able to control the second slot with your 360 pad and the first should be whatever binds you had on the keyboard/mouse!
Tips and Tweaks
Play With Two 360 Controllers
Change the cmd2 joystick 1 line in the config to cmd2 joystick 2Vertical Split for Two Monitors
Edit your aspect in the "common\Portal 2\portal2\splitscreen_config.txt" file. Here's another tutorial that will probably help you out.Changing FOV
The FOV settings for various split modes are also in the "common\Portal 2\portal2\splitscreen_config.txt" file.Switch to Vertical/Horizontal Split
Use ss_splitmode 0, ss_splitmode 1, or ss_splitmode 2 to select a different split mode.
mp_coop_start (First map of chapter 1) 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 (First map of chapter 2, have to load this map after completing coop_teambts or else it will just restart coop_start) 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 (First map of chapter 3) 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 (First map of chapter 4) 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 (First map of chapter 5) 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