|September 21st, 2012, 08:34 PM||#1|
Join Date: Aug 2012
Borderlands 2 PC (Steam) split-screen / dual-monitor guide
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.
You will need a fairly powerful machine to run 2 copies of the game in decent quality. These are my specs:
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.
Set Steam to Offline Mode (Steam -> Go Offline... -> Restart In Offline Mode) -- this is not necessary, but I feel that it's probably prudent.
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.
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:
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]
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
"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
Notes about the required arguments:
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:
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.
So, with all the batch files made and everything installed, these are the steps I use at the start of each play session:
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.
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]
@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.