The Gearbox Software Forums Go to Gearboxity.comGo to Gearbox Software's Web site

Go Back   The Gearbox Software Forums > Gearbox Games > Borderlands 2 > BL2 General Discussion (No Spoilers!)

Reply
Click here to go to the first staff post in this thread.  
Thread Tools Display Modes
Old September 21st, 2012, 08:34 PM   #1
Sycdan
Member
 
Join Date: Aug 2012
Posts: 102
Lightbulb Borderlands 2 PC (Steam) split-screen / dual-monitor guide

Introduction
These are the steps I used to play Borderlands 2 in LAN co-op mode, with 2 players on the same machine, using 1 copy of the game and 1 Steam account. I know this is a long list, but a lot of this stuff only has to be done once! Also, some of the steps may not be necessary for everyone.

Throughout the guide I will make references to "player 1" and "player 2"; I know there is no strict in-game character numbering, so my definition is that player 1 is the player who uses the default game profile (which is linked to a Steam user ID) and player 2 uses a secondary profile (more about this later). This is somewhat important because only player 1's profile & saves can be backed up with Steam Cloud Sync.

Hardware
You will need a fairly powerful machine to run 2 copies of the game in decent quality. These are my specs:
  • Dell XPS 17 laptop (L702X)
  • CPU: Intel Core i7-2630QM @ 2.00GHz
  • RAM: 8.00GB
  • Video: nVidia GeForce GT 555M 3GB

Windows
You need to be using an Administrator account for this to work.
I'm running Windows 7 64bit and have not tested this under any other OS, so my instructions may need some tweaking for XP or other versions, and/or may not work at all.

Steam
Set Steam to Offline Mode (Steam -> Go Offline... -> Restart In Offline Mode) -- this is not necessary, but I feel that it's probably prudent.

Sandboxie
  • Install and run Sandboxie (download from http://www.sandboxie.com).
  • In the menu, go to Sandbox -> Create New Sandbox. I called mine "Steam2".
  • Then go to Sandbox -> Steam2 -> Sandbox Settings...
  • -> Restrictions -> Drop Rights -> Uncheck "Drop rights for Administrators and Power Users groups"
  • -> Restrictions -> Hardware Access -> Check "Permit programs to simulate keyboard and mouse input" -- I'm honestly not sure why, but lately I've been getting alerts about this happening and figures I may as well allow it
  • -> Resource Access -> File Access -> Direct Access -> ... Now, you have a couple of options here:
  • 1) Click Add and browse to your Steam installation folder and add that, then do it again and browse to your My Documents\My Games\Borderlands 2\ folder -- this seems to create some file access issues for some people, though it worked for me. I recommend the following:
  • 2) Click Edit/Add, enter "C:\" without the quotes (or whatever drive holds your Steam installation and My Documents folder; if they are on different drives, add both drive letters on separate lines) -- this way, the sandoxed Steam can access everything that the regular one can.

Controllers
I used 2 PS3 controllers, but if you have Xbox 360 controllers then you can skip this step, just make sure they're paired and show up in the Windows Game Controllers panel.

Download the latest version from http://www.motioninjoy.com/download, install it and follow its instructions (there are a lot of tutorials for this online, so I won't go into details).
Be sure you select XInput-Default - Xbox 360 Controller Emulator and click Enable for all controllers. Sadly, you'll need to do this again if you reboot your machine, as this setting isn't saved by DS3 Tool.
You should see "Controller (Xbox 360 Wireless Receiver for Windows)" in the Game Controllers panel, if the controllers are set up correctly.

Sound
Whatever else you do, I'd suggest setting "Mute Audio On Focus Lost" to "Off" in the audio options menu. If you have more than one sound output device and want to use different devices for each player, read on.

*Note: with Borderlands 1, you could change default sound devices after loading the first instance of the game, and the next instance would use the new default device. This is not possible with Borderlands 2 as the sound engine they used has changed -- now the game gets permanently muted if you change default devices while it's running.*

I play at night with my wife, after our son goes to bed, so we have to use headsets to keep the noise level down. We also use the mics on the to communicate headsets while playing, as it's sometimes hard to hear over the game, but that's not a very straightforward thing to set up, so I'm not going to get into that at the moment... at least, it wasn't simple with Borderlands 1, and we're still using the same setup as we did for that. I have a USB "soundcard" in addition to the one built into my laptop, so that we can each use one device. Your situation may differ, but here's what I had to do to get each instance of the game outputting to a different sound device.

*The following will probably not work with more than 2 instances, but I haven't tried that.*

Go to Control Panel -> Sound -> Playback and right click the device you want to use for player 2, then select Set as Default Device.

If you want to automate switching between sound devices, so you don't have to do it manually each time:
Download NirCmd from http://www.nirsoft.net/utils/nircmd.html and place the nircmdc.exe somewhere in your Windows path (not necessary, as long as you remember where you put it).
In the Sound -> Playback panel, note the names of the devices you want to switch between (the black text at the top, not the grey text underneath). You may need to change the names (right click -> Properties) if they're not unique.
Make a new text document (in Notepad, for example) for each device, and put this line in it: (if nircmdc isn't in your Windows path, you'll need to include the path to it)
nircmdc setdefaultsounddevice "name of sound device"
Save the file as a .bat and run it when you want to switch to that device. This works for microphones, too.

Download and install IndieVolume from http://www.indievolume.com/download.php. Sadly, this is not a free application ($25 to buy), but it does have a 2-week trial. I haven't actually bought this application yet, still looking for a free alternative... if I find one, I'll update this post.

*Note: on my system, I sometimes can't load Firefox (well, I can but I can't see anything in its window frame) with IndieVolume running, but if Firefox is already running when I load IndieVolume, then nothing breaks.*

In IndieVolume, go to Tools -> Options -> Preferences and uncheck Integrate into System Menu -- this will stop some crashes that IndieVolume might otherwise cause, though it may not be necessary to do for everyone.

These are the steps I go through to get the sound working:
  • Close IndieVolume
  • Set default sound device in Windows to #2 (can be automated with a batch file, see above)
  • Open the non-sandboxed game and get to the main menu
  • Open IndieVolume
  • Find Borderlands 2, check Handled (uncheck first if necessary, don't just leave it checked), select sound device #1 from the dropdown
  • Set default sound device in Windows to #1
  • (At this point, you should hear the game through device #1)
  • Set default sound device in Windows to #2
  • Open the sandboxed game

Game
You must run all instances of the game in either Windowed or WindowedFullscreen mode, Fullscreen will not work.

You need to launch the game with some arguments, which can be done via Steam's "Set Launch Options" function, but I prefer to use batch files and keep them on my desktop. The first instance of the game can be launched directly, but after that you need to go through Sandboxie. Here are the batch files I use for players 1 & 2. For additional players, you'd need to make more sandboxes, then copy the player 2 batch file and increment some numbers in it, but again I've not tested this with more than 2 players. Also, Sandboxie does not allow you to run programs in more than one sandbox at a time unless you purchase a license.

[Borderlands 2 - Player 1.bat]
Code:
taskkill /F /IM IndieVolume.GUI.exe
nircmdc setdefaultsounddevice "Speakers2"
"C:\Program Files (x86)\Steam\steamapps\common\Borderlands 2\Binaries\Win32\Borderlands2.exe" -NoLauncher -AlwaysFocus -WindowedFullscreen -WindowPosX=-1920
[Borderlands 2 - Player 2.bat]
Code:
"C:\Program Files\Sandboxie\Start.exe" /elevate /box:Steam2 "C:\Program Files (x86)\Steam\steamapps\common\Borderlands 2\Binaries\Win32\Borderlands2.exe" -NoLauncher -AlwaysFocus -WindowedFullscreen -WindowPosX=0 -SaveDataId=2 -ControllerOffset=1
*Note for non-Steam players: for player 2, you should be able to remove everything before the call to Borderlands2.exe, that is the Sandboxie\Start.exe call and its /arguments.*

Notes about the required arguments:
  • /elevate -- forces the program to run in UAC Administrator mode.
  • /box:Steam2 -- tells Sandboxie which sandbox to run Steam and the game in; increment and make new sandboxes for additional players.
  • -AlwaysFocus -- ensures that the game continues to receive controller input even when it's not the active window.
  • -ControllerOffset=1 -- tricks the game into thinking player 2 is actually player 1, which circumvents various bugs; increment for additional players (untested). (Note: this argument is not actually required as of version 1.1.3, but not using it can cause crashes. Thanks to timthedim for making me aware of this.)
  • -SaveDataId=2 -- creates a new profile directory under \My Games\Borderlands 2\WillowGame\SaveData\ so that player 1's Badass Ranks don't get overwritten; increment for additional players.

Optional arguments:
  • -NoLauncher -- skips loading the launcher, so you don't need to click "play"
  • -Windowed / -WindowedFullscreen -- set the window mode without using menus
  • -WindowPosX=n -- set the window's horizontal screen position (e.g.: 0 for player 1 and 1920 for player 2, if your first screen's resolution is 1920 pixels wide)
  • -WindowPosY=n -- set the window's vertical screen position
  • -ResX=n / -ResY=n -- these set the size of the window (use with -WindowedFullscreen to get a frameless window that can actually be smaller than the full screen)

As each instance of the game loads (I suggest loading player 2's first), remember to assign it to its respective player's controller (from top to bottom in the Windows Game Controllers panel) by pressing buttons until you get to the main menu. Do not click on the "Press Any Key" screen in player 2's game, or it will think you're actually player 1. If you do this by mistake, you can press Escape at the main menu to get back to the title screen and then press a button on the correct controller.

I run each instance on a different screen (Laptop and TV), but you will need to move the game windows around to suit your setup. Shift + Windows key + Arrow keys is a great way to move the active window between screens, or you could use the above optional arguments, tacked on to the end of the call to Borderlands 2.exe.

If you only have 1 controller connected, you can still play with one player using the keyboard and mouse. Thanks to sirtalomose for verifying that this works.
The following setup assumes player 2 is using the controller:
  • Player 1 (using the mouse) should use the -NoController argument to prevent interference, but NOT -AlwaysFocus or -ControllerOffset
  • Player 2 (using the controller) should use the -NoMouse and -AlwaysFocus arguments but NOT -ControllerOffset=1 (because with only one controller, using this would mean they had no control)

Graphics Quality/Performance
Running multiple copies of the game puts a fair bit of strain on your computer. You will probably want to reduce the resolution and detail settings in the video options menu to allow for smooth gameplay. I use 1280x720 and put most of the detail settings on low or medium, but you'll need to experiment to see what's tolerable for you in terms of the quality/performance ratio. You can also go to \My Documents\My Games\Borderlands 2\WillowGame\Config\WillowEngine.ini and change "DefaultPostProcessName=WillowEngineMaterials.WillowScenePostProcess" to "DefaultPostProcessName=WillowEngineMaterials.RyanScenePostProcess", which will remove the cel shading effect (black border around objects) and might reduce the graphics load a bit. Save the file and set it to read-only to preserve that edit.

Summary
So, with all the batch files made and everything installed, these are the steps I use at the start of each play session:
  • Wake up both controllers and ensure they are set to Xbox 360 mode in DS3 Tool
  • Run Borderlands 2 - Player 1.bat, assign the game to controller #1
  • Open IndieVolume and go though above steps to move the game's sound to device #1
  • Run Borderlands 2 - Player 2.bat, assign the game to controller #2
  • Change resolution in-game to 1280x720 in both instances (this is reset every time due to launching in WindowedFullscreen mode)
  • Ensure LAN is selected in Network Options for both games
  • Find Games with one game and join the other
  • Play!

VPN LAN Play [Added 21 Oct 2012]
It is possible to play the game using the above method and still play with other people over the internet, by setting up a VPN (Virtual Private Network). I believe that some people have had success using Hamachi and Tunngle, but personally I found Evolve to be the simplest and most reliable solution. It doesn't require and special configuration of the game itself, at least it didn't for me.
  • Go to www.evolvehq.com, click "Start Playing with Evolve!" and set up an account.
  • After verifying your account (they'll send you an email with a link for that), download the client and install it.
  • Have your friends do these steps too, then add them to your Friends list in Evolve.
  • Right-click on a friend in your list and select "Create Party..."
  • When everyone's in the party, have everyone start the game with their usual arguments, select LAN mode and do Find Games until something shows up, which sometimes takes a few seconds.

All-In-One Batch File [Added 6 Oct 2012]
For those that are interested, below is the entire batch file script (all in one file) that I currently use to launch both instances of the game. Note that the sandboxed instance is actually used by player 1 and the regular instance is used by player 2. This is because IndieVolume can only interact with the un-sandboxed instance, and I wanted to end up with my main sound card as the default after loading both games, rather than my USB sound "card". Also note that this script creates (if necessary) and configures the sandbox directly, rendering the Sandboxie configuration steps above unnecessary. This script will need to be tweaked to suit your particular needs, but I have faith that you can figure out how. Dig in and get your hands dirty!

[Borderlands 2 Co-op.bat]
Code:
@ECHO OFF
REM Lines that begin with "REM" are comments and are not actually parsed when the script is run.

REM Game config
SET MyDocumentsDrive=C:\
SET SteamInstallationDrive=C:\
SET GameExePath=C:\Program Files (x86)\Steam\steamapps\common\Borderlands 2\Binaries\Win32\Borderlands2.exe
SET CommonArguments=-NoLauncher -NoSplash -WindowedFullscreen
SET Player1Arguments=-WindowPosX=-1920 -AlwaysFocus
SET Player2Arguments=-SaveDataId=2 -WindowPosX=0 -ControllerOffset=1 
REM -ControllerOffset=1 is no longer required for player 2, as of version 1.1.3, but things will probably work best if you continue to use it

REM Sandboxie Config
SET SandboxiePath=C:\Program Files\Sandboxie
SET SandboxName=Steam2

REM IndieVolume Config
SET IndieVolumePath=C:\Program Files (x86)\IndieVolume
SET IndieVolumeExe=IndieVolume.GUI.exe
SET SoundOutput1=Speakers
SET SoundOutput2=Speakers2

REM NirCmd Config
SET NirCmdConsoleExePath=c:\windows\system32\nircmdc.exe

REM Close IndieVolume, if it's running and don't output the result
TaskKill /F /IM %IndieVolumeExe% > NUL 2> NUL

REM Set the default sound device to player 1's
"%NirCmdConsoleExePath%" SetDefaultSoundDevice "%SoundOutput1%"

ECHO Loading player 2's game...
start "" "%GameExePath%" %CommonArguments% %Player2Arguments%

REM Load IndieVolume after waiting a few seconds
CHOICE /C Y /D Y /T 5 > NUL
START "" "%IndieVolumePath%\%IndieVolumeExe%"

ECHO - Remember to press a button on the correct controller at the title screen!
ECHO - Get to the main menu in the game
ECHO - Open IndieVolume from the taskbar
ECHO - Re-check Handled on Borderlands 2
ECHO - Choose player 2's sound device in the dropdown, if it's not selected already
ECHO - Alt + Tab back to this window
PAUSE

REM Set the sound output to device 2, to force IndieVolume to handle the game, then back to device 1
"%NirCmdConsoleExePath%" SetDefaultSoundDevice "%SoundOutput2%"
"%NirCmdConsoleExePath%" SetDefaultSoundDevice "%SoundOutput1%"

REM Create the sandbox (if necessary) and configure it before loading the game with it
TaskKill /F /IM "SbieCtrl.exe" > nul 2> nul
START "" "%SandboxiePath%\SbieCtrl.exe"
"%SandboxiePath%\SbieIni.exe" set %SandboxName% Enabled y
"%SandboxiePath%\SbieIni.exe" set %SandboxName% DropAdminRights n
"%SandboxiePath%\SbieIni.exe" set %SandboxName% AutoRecover n
"%SandboxiePath%\SbieIni.exe" set %SandboxName% BlockNetParam n
"%SandboxiePath%\SbieIni.exe" set %SandboxName% BlockFakeInput n
"%SandboxiePath%\SbieIni.exe" set %SandboxName% Template
"%SandboxiePath%\SbieIni.exe" set %SandboxName% RecoverFolder
"%SandboxiePath%\SbieIni.exe" set %SandboxName% OpenFilePath %MyDocumentsDrive%
"%SandboxiePath%\SbieIni.exe" append %SandboxName% OpenFilePath %SteamInstallationDrive%
"%SandboxiePath%\Start.exe" /reload
"%SandboxiePath%\Start.exe" /elevate /box:%SandboxName% "%GameExePath%" %CommonArguments% %Player1Arguments%

Last edited by Sycdan; January 20th, 2013 at 09:30 AM.
Sycdan is offline   Reply With Quote
Old September 21st, 2012, 08:46 PM   Click here to go to the next staff post in this thread.   #2
botman
GBX
 
botman's Avatar
 
Join Date: Jul 2002
Location: Outside the box
Posts: 7,824
Default Re: PC (Steam) "split-screen" guide

I'm not sure what IndieVolume was for, but if you are just trying to get audio to play when the game isn't the active window, you can look in the Options -> Audio menu and set "Mute Audio On Focus Lost" to "Off" and the game won't mute the audio when you Alt-Tab to some other application.
__________________


"If I had a world of my own, everything would be nonsense. Nothing would be what it is, because everything would be what it isn't. And contrary-wise; what it is, it wouldn't be. And what it wouldn't be, it would. You see?" - Lewis Carroll, Alice in Wonderland
botman is offline   Reply With Quote
Old September 21st, 2012, 08:52 PM   #3
Sycdan
Member
 
Join Date: Aug 2012
Posts: 102
Default Re: PC (Steam) "split-screen" guide

Quote:
Originally Posted by botman View Post
I'm not sure what IndieVolume was for, but if you are just trying to get audio to play when the game isn't the active window, you can look in the Options -> Audio menu and set "Mute Audio On Focus Lost" to "Off" and the game won't mute the audio when you Alt-Tab to some other application.
It's nothing to do with focus, actually. IndieVolume was to get each instance of the game to output to a different sound device. With BL1, that was as simple as changing the default device in Windows before loading each instance of the game, but due to your new audio engine (Wwise), that approach doesn't work in BL2.
Sycdan is offline   Reply With Quote
Old September 21st, 2012, 08:56 PM   Click here to go to the next staff post in this thread.   #4
botman
GBX
 
botman's Avatar
 
Join Date: Jul 2002
Location: Outside the box
Posts: 7,824
Default Re: PC (Steam) "split-screen" guide

Ah, okay. If you just want the sound from both to go to the default audio device, just change the Audio option I mentioned.

EDIT: Also you can use some of the commandline arguments here to set the window size and position...

http://forums.gearboxsoftware.com/sh...d.php?t=151336
__________________


"If I had a world of my own, everything would be nonsense. Nothing would be what it is, because everything would be what it isn't. And contrary-wise; what it is, it wouldn't be. And what it wouldn't be, it would. You see?" - Lewis Carroll, Alice in Wonderland

Last edited by botman; September 21st, 2012 at 08:58 PM.
botman is offline   Reply With Quote
Old September 21st, 2012, 09:00 PM   #5
Sycdan
Member
 
Join Date: Aug 2012
Posts: 102
Default Re: PC (Steam) "split-screen" guide

Quote:
Originally Posted by botman View Post
Ah, okay. If you just want the sound from both to go to the default audio device, just change the Audio option I mentioned.

EDIT: Also you can use some of the commandline arguments here to set the window size and position...

http://forums.gearboxsoftware.com/sh...d.php?t=151336
Yup, actually I think that might be necessary for my method to work anyway (in any case, I set it to Off initially, and haven't tested it any other way), so thanks for the reminder -- I have added that step to the guide.
And thank you for the argument list, that's awesome!
Sycdan is offline   Reply With Quote
Old September 21st, 2012, 10:56 PM   #6
Sycdan
Member
 
Join Date: Aug 2012
Posts: 102
Default Re: PC (Steam) "split-screen" guide

Well, okay, I'm sufficiently impressed. I already knew I loved command line switches/arguments, but the amount of weight they pull in this context is huge: -AlwaysFocus completely removes the need for Auto Window Manager, which I had previously considered the keystone of split-screen co-op. I shall update my guide forthwith.

Last edited by Sycdan; September 21st, 2012 at 11:40 PM.
Sycdan is offline   Reply With Quote
Old September 22nd, 2012, 07:39 AM   Click here to go to the next staff post in this thread.   #7
botman
GBX
 
botman's Avatar
 
Join Date: Jul 2002
Location: Outside the box
Posts: 7,824
Default Re: PC (Steam) "split-screen" guide

You can also run one instance with "-NoController" and the other with "-NoMouse" if you want one player to use mouse/keyboard (this MUST be the "active" window to accept keyboard input) and the other player to use a controller.
__________________


"If I had a world of my own, everything would be nonsense. Nothing would be what it is, because everything would be what it isn't. And contrary-wise; what it is, it wouldn't be. And what it wouldn't be, it would. You see?" - Lewis Carroll, Alice in Wonderland
botman is offline   Reply With Quote
Old September 22nd, 2012, 08:12 AM   #8
Sycdan
Member
 
Join Date: Aug 2012
Posts: 102
Default Re: PC (Steam) "split-screen" guide

Quote:
Originally Posted by botman View Post
You can also run one instance with "-NoController" and the other with "-NoMouse" if you want one player to use mouse/keyboard (this MUST be the "active" window to accept keyboard input) and the other player to use a controller.
Yup, I actually tested that last night and it's awesome that it's so simple. Actually, I tested it without those switches, just not using controller #1 at all. In any case, I'm loving the amount of options are available.
Sycdan is offline   Reply With Quote
Old September 22nd, 2012, 01:15 PM   #9
balgoth17
New Member
 
Join Date: Sep 2012
Posts: 3
Default Re: PC (Steam) "split-screen" guide

Sorry if this is a really dumb question, but are you using the same steam account, or separate? :-\
balgoth17 is offline   Reply With Quote
Old September 22nd, 2012, 01:16 PM   #10
Sycdan
Member
 
Join Date: Aug 2012
Posts: 102
Default Re: PC (Steam) "split-screen" guide

Quote:
Originally Posted by balgoth17 View Post
Sorry if this is a really dumb question, but are you using the same steam account, or separate? :-\
1 copy of the game = 1 Steam account. I'll make the first paragraph more specific.
Sycdan is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -5. The time now is 04:10 PM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.