DS2 Revival

Install guide: Dungeon Siege II online and LAN

Updated

Online and LAN play for the Steam release of Dungeon Siege II (Dungeon Siege 2), and for Broken World. Nothing of the game is modified: the package adds a plugin loader and four small plugins next to DungeonSiege2.exe.

What you need

Download the DS2 Revival package

Use the package with the unmodified game. It is not meant to be combined with mods that replace DungeonSiege2.exe or version.dll, such as Dungeon Siege II Remastered or OpenSpy's version.dll: use one approach or the other.

Install on the Steam version

  1. Close the game

    Make sure Dungeon Siege II is not running.

  2. Extract the ZIP

    Extract it into your Dungeon Siege 2 folder, the one with DungeonSiege2.exe, for example C:\Program Files (x86)\Steam\steamapps\common\Dungeon Siege 2. In Steam: right-click the game → Manage → Browse local files.

  3. Play

    Start the game from Steam as usual and click Multiplayer. The plugins already point the game at use1.dsii.uk.

After extracting, the game folder contains:

FileWhat it does
version.dllUltimate ASI Loader: loads the plugins in scripts.
scripts\DS2Multiplayer.asiOnline and LAN play without GameSpy (see how it works).
scripts\DS2Multiplayer.iniThe server address and the relay mode.
scripts\DS2Widescreen.asiBorderless window at your desktop resolution.
scripts\DS2Fixes.asiStops the game from making typing lag in other programs.
scripts\DS2BrokenWorld.asiStarts Broken World from a subfolder and fixes it (only does something when Broken World is there).
Firewall setup.cmdOptional Windows Firewall rules for hosting (below).

Every plugin works on its own and all are on by default. Delete a plugin's .asi file to turn it off. Steam's "Verify integrity of game files" does not remove them, because no game file is changed.

Playing online

Main menu → Multiplayer offers three connections:

Accounts and passwords. The game's storage login proves the password as md5(password + challenge), so the server has to keep account passwords as they are, not as a one-way hash. Use a password you do not use anywhere else.

When parties reach the vault. The game uploads the active party on Save and Exit or at most every 5 minutes while playing. A party that is created and left before that is not in the vault at the next login.

Up to 8 players. The game ships "Old School Mode" (8 players with one hero each) and "Couples Mode++" (6 players with two heroes each) but hides them online. With DS2Multiplayer they can be picked when hosting; only the host needs the plugin for this. Sessions with more than 4 players have had little testing so far.

Everyone in an online game needs DS2Multiplayer to reach the server. See who is online before you start.

Broken World

  1. Copy the expansion's files into a folder named Broken World inside your Dungeon Siege 2 folder.
  2. Copy version.dll and the scripts folder's .asi files into that folder as well (Dungeon Siege 2\Broken World\version.dll, Dungeon Siege 2\Broken World\scripts\*.asi).
  3. Start the game from Steam. It starts Broken World; hold Shift while it starts for the original game.

No registry patch is needed: DS2BrokenWorld tells the expansion where the base game is. From the expansion's folder only these files are used: DungeonSiege2.exe, system_detail.gas, system\EBUEula.dll, Resources\x*.ds2res and Maps\x*.ds2map; the other files duplicate the base game's or belong to the old installer. Plugins deleted from the main scripts folder are off for Broken World too, and Broken World uses the main folder's settings.

Heroes made in the Steam game can be brought over with Multiplayer → GameSpy → Convert Hero.

If Broken World lives somewhere else, set BaseGame= in DS2BrokenWorld.ini (below) to the Dungeon Siege 2 folder.

Firewall and port forwarding

Double-click Firewall setup.cmd once (it asks for administrator rights) so other players can connect to games you host. It adds two program rules: DungeonSiege2.exe and Windows' DirectPlay helper dpnsvr.exe. Nothing else is opened. The game's own "add to the firewall exceptions" question is skipped by the plugin, because answering it needs administrator rights the game does not have.

Port forwarding is optional. When a joiner cannot reach your game directly, the connection goes through this server's relay automatically. If you forward UDP 2302 to the hosting PC, players connect directly instead; set Relay=off in DS2Multiplayer.ini to force that.

Already have multiplayer? Hosts file only

If your game already has a working Multiplayer menu without our plugins (for example a disc copy with its own CD key, or another unlock) and you only want to play on this server, you can point the game here with the Windows hosts file instead. Open Notepad as administrator, open C:\Windows\System32\drivers\etc\hosts, add these lines at the end and save:

# Dungeon Siege II multiplayer: GameSpy -> use1.dsii.uk
216.212.35.35 dsiege2.available.gamespy.com
216.212.35.35 dsiege2.master.gamespy.com
216.212.35.35 dsiege2.ms7.gamespy.com
216.212.35.35 dsiege2.gamestats.gamespy.com
216.212.35.35 gamestats.gamespy.com
216.212.35.35 peerchat.gamespy.com
216.212.35.35 gpcm.gamespy.com
216.212.35.35 gpsp.gamespy.com
216.212.35.35 natneg1.gamespy.com
216.212.35.35 natneg2.gamespy.com
216.212.35.35 natneg3.gamespy.com
216.212.35.35 motd.gamespy.com

Every GameSpy name the game looks up then leads to this server; delete the lines to undo. The same lines work for Broken World. Things to know:

Settings

The package has one settings file, scripts\DS2Multiplayer.ini:

[Network]
Server=use1.dsii.uk
Relay=auto

Server is the multiplayer server (host name or IP; 127.0.0.1 = a server on this PC). Relay: auto = only when needed, always = every game, off = never (the host must forward UDP 2302).

Everything else has defaults. To change one, create scripts\<plugin>.ini with the line:

FileSectionSettings (defaults)
DS2Multiplayer.ini[Multiplayer]EnableMenuButton=1 FixStartGuard=1 SkipFirewallPrompt=1 DirectConnectTimeout=60 LobbyServer=1 EightPlayers=1
DS2Multiplayer.ini[Network]Server=use1.dsii.uk Relay=auto SingleLanAddress=1 VirtualCdKey=1
DS2Widescreen.ini[Display]Mode=borderless (or window, or off = the game's own video modes), Resolution=desktop (or e.g. 2560x1440), RetryDeviceReset=1, MaxFps=refresh (or 0 = no cap, or a number)
DS2Fixes.ini[Fixes]NoGlobalKeyboardHook=1 QuietCursor=1
DS2BrokenWorld.ini[BrokenWorld]Launch=auto (off = never start Broken World), AcceptSteamParties=1, FastCpuid=1 (the frame-rate fix), BaseGame=

Troubleshooting

Each plugin writes a log next to itself, e.g. scripts\DS2Multiplayer.log. It lists every patch as applied or skipped and is the first thing to look at.

The Multiplayer button is still greyed out
The plugins are not loading. Check that version.dll and the scripts folder are next to DungeonSiege2.exe and that scripts\DS2Multiplayer.log appears after starting the game. If another mod replaced version.dll, the loader is gone. If the log says "unknown DungeonSiege2.exe build", your exe is not the Steam v2.3 or Broken World build the plugins know.
"Unable to connect." after choosing Internet or GameSpy
The game cannot reach the chat server. Check Server= in DS2Multiplayer.ini, check the live status page, and make sure nothing blocks the game's outgoing connections.
"Could not find a valid CDKey"
Steam copies have no CD key; DS2Multiplayer gives each Windows user a random identity of their own (VirtualCdKey=1). This error means the plugin is not loaded or the setting is off. A real CD key in the registry is always used instead when present. The game's registry keys are never changed; the identity is kept under HKEY_CURRENT_USER\Software\DS2Revival.
Nobody can join my game
Run Firewall setup.cmd on the hosting PC and leave Relay=auto. Joiners need DS2Multiplayer as well. The host only lets players in once it has loaded into the world; joiners wait up to 60 seconds for that (DirectConnectTimeout).
"'X' is already being used by another player" in LAN mode
Happens on PCs with extra network adapters (Hyper-V, WSL, Docker, VPNs): the game met its own LAN chat server again through another adapter. SingleLanAddress=1 (default) fixes it.
"Video initialization failure! ... GetBackBuffer" after alt-tab or with an overlay
RetryDeviceReset=1 (default, in DS2Widescreen) retries the failed graphics reset instead of ending the game; it gives up after 10 seconds of failures.
Typing lags in other programs while the game runs
Fixed by DS2Fixes (NoGlobalKeyboardHook=1).
Stutter or frame drops while moving the mouse or clicking
Fixed by DS2Fixes (QuietCursor=1): the game reset the cursor twice on every mouse event. See why.
The frame rate stays at 75
That is the game's own cap for windowed play. DS2Widescreen raises it to your monitor's refresh rate ([Display] MaxFps=refresh); MaxFps=0 or maxfps=0 on the command line removes it.
The game closes when I host or join, or Multiplayer says DirectPlay is missing
Dungeon Siege II plays online through DirectPlay, a Windows feature that is off by default on Windows 10 and 11. DS2Multiplayer checks for it when you open Multiplayer and offers to install it (Windows asks for permission). To install it yourself: Control Panel → Programs → Turn Windows features on or off → Legacy Components → DirectPlay.
Broken World runs at a low frame rate
Fixed by DS2BrokenWorld (FastCpuid=1). It affects PCs where Windows runs its hypervisor: Memory Integrity, Hyper-V, WSL2, Docker Desktop, Virtual Machine Platform, Windows Sandbox, Credential Guard. See why.
Broken World: the camera spins far too fast with the middle mouse button
Some Broken World downloads carry an old mouse edit in the exe. DS2BrokenWorld undoes it where it finds exactly that edit.
Broken World: "Failed to transfer vaulted character file from the server..."
Broken World rejected heroes made in the Steam game. AcceptSteamParties=1 (default) fixes it.
My party is not in the vault
Parties are uploaded on Save and Exit or at most every 5 minutes. Play a little and use Save and Exit.
I prefer a normal window or exclusive fullscreen
[Display] Mode=window in DS2Widescreen.ini, or Mode=off for the game's own video modes (or delete DS2Widescreen.asi).

Uninstall

Delete version.dll and the scripts folder (and the same in the Broken World folder). Your game is then exactly as it was.