This extends the "You buy it, you own it" and "DRM-Free" GOG philosophy to the multiplayer portion of all games that use GOG Galaxy.
Why UniverseLAN? Because the Universe is much bigger than the Galaxy!
UniverseLAN is a GOG Galaxy wrapper which allows LAN / Direct IP connections for games using Galaxy Multiplayer (without using GOG Galaxy client).
This is useful in cases where:
- You and other people own a game
- All or some of you don't have (reliable) internet access
- And as such GOG Galaxy services won't work
- The game you want to play does not natively support LAN and/or DirectIP connections
- But you all want to play together anyway
UniverseLAN allows you to play locally (e.g. LAN parties) without relying on internet access. UniverseLAN does not care if you are in a hotel room with bad WiFi or visiting a remote place with your friends! You can still enjoy your games, together.
I hope this does not need to be said, but:
- UniverseLAN does not bypass or remove any DRM measures.
- UniversLAN does not bypass any cd-key or ownership checks.
- UniverseLAN does not give you free DLC, you still need to buy DLC from GOG and install the DLC before being able to use any DLC.
- UniverseLAN does not and can't bypass any "always online" requirements.
- UniverseLAN does not condone piracy, does not facilitate piracy, and will not facilitate piracy.
- UniverseLAN is not a cheat tool and does not facilitate cheating, and will not facilitate cheating.
- Please adhere to GOG requirements:
Your account and games are for your personal use only. If you want to share them, you can always buy a gift for that person.
The DRM-free nature of our service means that we trust you that this will not be abused.
- The devices that you want to play on together do need to be able to reach each other on a reliable (local) network.
UniverseLAN is in development, and in beta.
Do expect bugs, possibly lost save files, updates and fixes.
At this moment in time you are expected to build it yourself to get up-to-date binaries.
Older binaries may be available at the 'Releases' page.
UniverseLAN requires a C++20 compatible compiler (VS 2019 16.10+ , GCC 13+).
The internal development name of this project isLanSupportForDRMFreeGames [LSFDRMFG]
, you might see references to that in the source.
*** Some games do use GOG Galaxy but do not use GOG Galaxy for multiplayer.
They can use other services or custom networking implementations.
Such games might not be able to be played together using UniverseLAN wrapper.
Check the Util README
folder, or alternatively:
To generate the module definition files, use wrap_dll:
python3 wrap_dll.py Galaxy64.dll
Then remove on each line everything after (and including) =
sign in .def file.
Place in Source/DLLs/<version>/UniverseLAN.def
- Replace target game
Galaxy.dll
,Galaxy64.dll
,REDGalaxy.dll
orREDGalaxy64.dll
to use UniverseLAN (check the .dll file properties to view the version information, else make an sha1 checksum and look in sha1_hashes.txt for the hash to determine the sdk version). - Place config files in the working directory* of the game
- Place Server executable where config files are located.
- Adjust config accordingly (e.g. point to a server address that hosts the UniverseLAN Backend)
- It's recommended to NOT mix x64 and x86 platforms (e.g. x64 server with x86 game)
- Do NOT mix different versions due to ABI incompatibility (e.g. 1.148.3.0 client with 1.100.2.0 server or vice versa), GOG does not keep their Galaxy library backwards compatible / upgradeable.
- One machine must host the server, the other machine must be correctly configured to point to the machine hosting the server.
- Make sure the Galaxy ID numbers are different (Config.ini).
*
- Usually the working directory is the root directory of the game, or where the .exe file is located. Some games use a proxy launcher .exe in the game root directory likeGame_Name\Launcher.exe
, which launches and executable from a subfolder likeGame_Name\Binaries\Win64\RealGame.exe
, this might indicate that config and server files should be placed inGame_Name\Binaries\Win64\
.
For developers:
- Don't add GOG stdint.h when adding new SDK versions, remove it. If you try it WILL cause errors.
- It is possible to support Galaxy SDK versions from 1.57 up to the newest ones (1.152.6+).
- If someone has earlier SDK headers and/or documentation files please share <3
Debug (tracing) files can be found in <Configuration Files Directory>/tracing/<date time when application was launched>/
.
- Visual Studio 2019 16.10 or newer required
- Requires GCC 13 or newer.
- Requires libtbb to be present (libtbb:i386 on 64-bit systems when compiling for x86)
Please keep in mind that if all projects (tests, debug+release, interceptor, client, server, etc.) are built, around 50GiB of free space is required.
Please create an issue with the name of the game, game version, and if known the GOG Galaxy SDK version or Galaxy.dll
/ Galaxy64.dll
sha2 or md5 hash.
For games I don't own I need other people to test UniverseLAN development builds.
Another option would be to gift the game to people working on UniverseLAN project.
✅ (N) - Players can play together, tested with N players [(2) would mean 2 clients].
🚧 - Work in progress.
❌ - Tested and does not work.
❓ - Can't acquire the correct GOG Galaxy SDK version.
🔶 - Worked before, some commit has broken this game. To be investigated.
Game | Status | Tested GOG Galaxy SDK Version | Notes |
---|---|---|---|
Vikings - Wolves of Midgard | ✅(2) | 1.100.2 | Must apply set OPENSSL_ia32cap=:~0x20000000 on newer CPU's for this game to start without crashing.This issue is not caused by UniverseLAN or GOG, but OpenSSL / Unity/Unreal. Tested with build 440 |
Phantom Doctrine | ✅(2) | 1.124.0 | Must apply set OPENSSL_ia32cap=:~0x20000000 on newer CPU's for this game to start without crashing.This issue is not caused by UniverseLAN or GOG, but OpenSSL / Unity. Tested with build 301 |
SYNTHETIK: Legion Rising | ✅(2) | 1.113.3 | Works since build 301 |
Aragami 1 | ✅(2) | 1.121.2 | |
Forsaken Remastered | ✅(3) | 1.124.0 | |
Guns, Gore & Cannoli 2 | ✅(3) | 1.124.0 | |
Tropico 6 | ✅(2) | 1.139.2 | Also other games are displayed? Game has custom networking? Build 161 worked, build 243 seems to be broken (can't join lobby) Update: The person testing UniverseLAN used an invalid configuration (same generated Galaxy ID numbers), after fixing this configuration issue in Config.ini the person reported the game seems to work on build 243. |
Serious Sam 4 | ✅(2) | 1.144.1 | Works since build 256 |
Tooth and Tail | ✅(2) | 1.122.1 | Works with 1.124.0, tested with build 256 |
Door Kickers - Action Squad | ✅(2) | 1.133.6 | Tested with build 287 |
Shadow Warrior 2 | ✅(2) | 1.95.0 | Tested with build 338 |
Hammerwatch | ✅(2) | 1.139.2 | Tested with build 360 |
Warhammer: Chaosbane | ✅(2) | 1.139.2 | Tested with build 389 |
Mutant Football League - Dynasty Edition | ✅(2) | 1.130.0 | Tested with build 395 |
Oriental Empires | ✅(2) | 1.113.3 | Tested with build 397 |
River City Ransom - Underground | ✅(2) | 1.104.2 | Tested with build 399 |
Warhammer 40K - Dakka Squadron Flyboyz Ed. | ✅(2) | 1.144.1 | Tested with build 421 |
Star Wars Battlefront II (Classic, 2005) | ✅(2)/🚧 | 1.112.2 | There are no lobbies visible on the internet tab, but using UniverseLAN does unlock the LAN tab option when you don't have internet access. |
Battlestar Galactica Deadlock | ✅(2) | 1.114.9 | Tested with build 423 |
Driftland - The Magic Revival | ✅(2) | 1.133.6 | Works since build 436, apparently UniverseLAN had a bug where the server was sending the packet "as user" and not "as lobby" (when the user is the lobby owner) |
Knights and Bikes | ✅(2) | 1.133.6 | Tested with build 440, other player needs to join via commandline with --JoinLobby , id will be displayed in the console of the host after clicking invite friend. |
Metal Slug | ✅(2) | 1.100.2 | Works fine since build 464 |
Metal Slug 3 | ✅(2) | 1.100.2 | Works fine since build 464 |
Metal Slug X | ✅(2) | 1.100.2 | Works fine since build 464 |
Shock Troopers | ✅(2) | 1.100.2 | Works fine since build 464 |
The Last Blade | ✅(2) | 1.100.2 | Works fine since build 464 |
Shock Troopers - 2nd Squad | ✅(2) | 1.100.2 | Works fine since build 464 |
Twinkle Star Sprites | ✅(2) | 1.100.2 | Works fine since build 464 |
Streets of Rage 4 | ✅(2) | 1.144.1 | Tested with build 440 |
Talisman Digital Edition | ✅(2) | 1.139.2 | Tested with build 440 |
The Witcher Adventure Game | ✅(2) | 1.69 | Tested with build 440 - 1.68 |
Blood - Fresh Supply | ✅(2) | 1.133.6 | Tested with build 464 |
Stronghold Warlords | ✅(2) | 1.144.1 | Works since build 464 |
Stronghold Crusader 2 | ✅(2) | 1.68 | Works since build 464 |
Gauntlet | ✅(2) | 1.104.2 | Works since build 464 |
GAROU MARK OF THE WOLVES | ✅(2) | 1.114.9 | Works since build 464 |
The King of Fighters XIII | ✅(2) | 1.114.9 | Works since build 464 |
The King of Fighters 98UM | ✅(2) | 1.114.9 | Works since build 464 |
Craft The World | ✅(2) | 1.100.2 | Works since build 466 |
Worms W.M.D | ✅(2) | 1.128.3 | Works since build 466 |
Gloomhaven | ✅(2) | 1.148.3 | Tested with build 487 |
Grand Ages Medieval | ✅(2) | 1.68.0 | Must apply set OPENSSL_ia32cap=:~0x20000000 on newer CPU's for this game to start without crashing.This issue is not caused by UniverseLAN or GOG, but OpenSSL / Unity/Unreal. Tested with build 487 |
The Original Strife - Veteran Edition | ✅(2) | 1.144.1 | Tested with build 487 |
Serious Sams Bogus Detour | 🚧 | 1.100.2 | Can join lobby since build 360 and start game, but both players stuck on black "Loading..." screen |
Dying Light | 🚧 | 1.148.3 | Doesn't seem to work for now and crashes when EncryptedAppTicket is not disabled. I think LAN may be internet-bound unfortunately. |
Niffelheim | 🚧 | 1.139.2 | Stuck at "Loading..." (save transfer?) |
Homeworld: Deserts of Kharak | 🚧 | 1.101 | Tested with 1.100.2. After build 362 lobbies can now be created, but connecting doesn't work. Seems like host game is stuck in SetLobbyJoinable loop? |
Ancestors Legacy | 🚧 | 1.133.6 | Requires Leaderboards features to be implemented |
Offworld Trading Company | 🚧 | 1.94 | Tested with 1.95 build 440, stuck on game load in a GetUserData loop |
Alien vs Predator 2000 | ❓ | It's some waay earlier version than 1.67 (smallest size around 3.5MB). The AvP2K Galaxy.dll is around 1.9MB. Version is maybe 0.176? |
|
Double Dragon Trilogy | ❓ | Unknown version, Galaxy.dll SHA1: 789f3b02ced8dbac2e5f8c2c98448569f70960cc |
|
Rise of the Triad (2013) | Native LAN available | ||
Rage of Mages II: Necromancer | Native LAN or Free Multiplayer available | ||
Neverwinter Nights 2 Complete | Native LAN or Free Multiplayer available | ||
Baldur's Gate 3 | Native LAN or Free Multiplayer available | ||
Heroes of Might and Magic 3 | Native LAN or Free Multiplayer available | ||
Empire Earth 3 | Native LAN or Free Multiplayer available | ||
Jazz Jackrabbit 2 Collection | Native LAN or Free Multiplayer available | ||
Homeworld Remastered Collection | 1.77 | Has native LAN for all three games when launching HomeworldRM.exe | |
Ticket to Ride | 1.139.2 | Tried it with the wrapper and works, but need to create a free Wonder account | |
Aragami 2 | 1.148.3 | Probably does not use GOG Galaxy for networking (doesn't work for private lobbies). Can play on public lobbies without GOG Galaxy or with this patch AFAIK. |
|
DUSK (DuskWorld) | 1.133.6 | Uses steam (works without Steam Client) api for free online play, doesn't use GOG Galaxy. | |
Blood Bowl 2 Legendary Editition | Uses custom free multiplayer, need to create a free online in-game account on their servers. | ||
Deathtrap | 1.75 | Has Native LAN | |
Trine 3 | 1.65 | Has free online multiplayer, but does not use Galaxy Multiplayer which means that this game is internet-only. UniverseLAN can't make it LAN-able. | |
Bound By Blades | 1.150.0 | UniverseLAN can't make this game LAN-able, this game uses custom/free multiplayer (Photon Engine) that does not use Steam or Galaxy, but online multiplayer is DRM Free. Would need to develop a custom Photon Engine API. When dev stops paying for Photon CCU's the game multiplayer will stop working. A project for another time maybe. | |
Saints Row - Gat Out of Hell | 1.96 | Has Native LAN | |
Turok 2 - Seeds of Evil | 1.130.0 | Has Native LAN / DirectIP | |
Ashes of the Singularity - Escalation | ❌ | 1.100.2 | Requires .exe patches to patch out modification checks so that entering lobby is possible, unfortunately both players are seen as 'Host' and other side doesn't 'see' clicking 'ready'. UniverseLAN needs to support .exe patching, and the both players being 'host' needs to be analyzed and fixed. Afters analysis it seems that for the "real" networking the game uses Epic Online Services. No dice here. |
Battlefleet Gothic Armada | ❌ | 1.139.2 | Doesn't seem to use Galaxy for multiplayer. |
Jagged Alliance 3 | ❌ | 1.150.0 | Doesn't seem to use Galaxy for multiplayer. (Steam? With EncryptedAppTicket) |
8-bit Armies | ❌ | 1.95.0 | Uses encrypted auth ticket to authenticate to an external multiplayer service, probably Steam. |
8-bit Hordes | ❌ | 1.95.0 | Uses encrypted auth ticket to authenticate to an external multiplayer service, probably Steam. |
Fade to Silence | ❌ | 1.114.9 | Probably only uses steam for multiplayer, or some other service. |
No Man's Sky | ❌ | 1.148.3 | Uses GOG Galaxy only to get an encrypted auth ticket, which authenticates the GOG user into a third party online multiplayer. |
Speed Brawl | ❌ | 1.144.1 | Does not use Galaxy for multiplayer (EOS? Steam? Custom RakNet MP?) |
Mount & Blade II - Bannerlord | ❌ | 1.144.1 | Uses Epic Online Services, not Galaxy |
Absolver | ❌ | 1.104.2 | EAC is preventing usage of UniverseLAN, without EAC multiplayer is disabled |
DUSK | ❌ | 1.133.6 | No multiplayer --> DuskWorld |
Roboquest | ❌ | 1.148.3 | Probably does not use GOG Galaxy for networking. |
Northgard | ❌ | 1.139.2 | Still thinks the game is offline, custom multiplayer? |
Tropico 5 | ❌ | 1.68.0 | Game uses an external service for multiplayer? |
Saints Row IV - Re-Elected | ❌ | 1.148.3 | Uses Epic Online Services for multiplayer probably (stuck after "do you want to sign in?") |
ArcRunner | ❌ | 1.150.0 | Uses Epic Online Services for multiplayer |
Battlezone 98 Redux | ❌ | 1.100.2 | Uses Steam for multiplayer |
Homeseek | ❌ | - | Uses Epic Online Services for multiplayer |
The Escapists 2 | ❌ | 1.132.1 | UniverseLAN can't make this game LAN-able, this game uses custom/free multiplayer (Photon Engine) that does not use Steam or Galaxy, but online multiplayer is DRM Free. |
Descent - Underground | ❌ | 1.88 | Doesn't seem to load the Galaxy.dll even with --gog launch param? |
Dark Envoy | ❌ | 1.152.6 | UniverseLAN can't make this game LAN-able, this game uses custom/free multiplayer (Photon Engine) that does not use Steam or Galaxy, but online multiplayer is DRM Free. |
Dungeons 2 | ❌ | 1.68 | UniverseLAN can't make this game LAN-able, this game uses custom/free multiplayer that does not use Steam or Galaxy, but online multiplayer is DRM Free. |
I'm not affiliated in any way with GOG or CD Projekt RED.
All trademarks and copyright are property of their respective owners.
Any statements or expressed opinions here are each of their respective own person and do not represent any companies or other entities.
GOG SDK documentation and SDK include files are freely available from https://docs.gog.com/galaxyapi/.
No copyright infringement intended.
I don't think so:
- https://en.wikipedia.org/wiki/Google_LLC_v._Oracle_America,_Inc.
- https://softwareengineering.stackexchange.com/questions/216471/how-does-copyrights-apply-to-source-code-header-files
The tests require the Galaxy.lib and Galaxy.dll files from GOG.
You can get any version matching Galaxy.dll from any game that you own.
UniverseLAN does not and will not distribute (RED)Galaxy / (RED)Galaxy64 dll files, because it's against copyright / GOG ToS.
I don't know if .lib files should be considered API or copyrighted program code, but to play it safe UniverseLAN also does not distribute .lib files.
For the time being; if you wish to build the tests, you need to acquire these .lib files from the GOG Galaxy SDK, available in the GOG Galaxy Developer Portal.
Building the tests is optional.
Tip: By creating a project with wrap_dll and providing a valid
(RED)Galaxy(64).dll
you can generate a wrapper project, which when compiled, should yield a compatible .lib file that you can use to build the tests.
These GOG Galaxy SDK versions should work interchangeably.
For Developers: This does not neccesseraly represent version compilation compatibility, for example 1.125 and 1.125.1 are not compile-compatible (due to
uint32_t
toenum
type change), but should be binary-compatible.
UniverseLAN Release | Compatible Galaxy SDK Versions |
---|---|
1.57 | 1.57 |
1.60 | 1.59 1.60 |
1.61 | 1.61 |
1.64 | 1.62 1.63 1.64 |
1.66 | 1.65 1.66 |
1.67 | 1.67 |
1.68 | 1.68 |
1.69 | 1.69 |
1.70 | 1.70 |
1.72 | 1.71 1.72 |
1.73 | 1.73 |
1.74 | 1.74 |
1.75 | 1.75 |
1.76 | 1.76 |
1.77 | 1.77 |
1.80 | 1.78 1.79 1.80 |
1.87 | 1.82 1.83 1.84 1.85 1.86 1.87 |
1.92 | 1.88 1.89 1.90 1.91 1.92 |
1.95 | 1.92.1 1.93 1.94 1.95 1.96 1.97 1.98 |
1.99 | 1.99 |
1.100.2 | 1.100 1.100.2 1.101 1.101.2 1.101.4 1.102 |
1.104.2 | 1.103 1.103.1 1.104 1.104.1 1.104.2 |
1.104.3 | 1.104.3 |
1.104.4 | 1.104.4 1.104.5 1.104.6 1.105 |
1.106 | 1.106 1.107 1.108 |
1.109 | 1.109 |
1.112.2 | 1.110 1.110.1 1.110.2 1.110.3 1.110.4 1.111 1.111.2 1.112 1.112.1 1.112.2 |
1.113.1 | 1.113 1.113.1 |
1.113.3 | 1.113.2 1.113.3 |
1.114.9 | 1.114 1.114.1 1.114.2 1.114.3 1.114.4 1.114.6 1.114.7 1.114.8 1.114.9 1.114.12 |
1.121.2 | 1.120 1.120.1 1.121 1.121.1 1.121.2 |
1.124 | 1.122 1.122.1 1.122.3 1.122.4 1.123 1.123.1 1.124 |
1.125.2 | 1.125 1.125.1 1.125.2 |
1.126.1 | 1.126 1.126.1 |
1.127 | 1.127 |
1.128.3 | 1.128 1.128.1 1.128.2 1.128.3 |
1.130.0 | 1.129 1.130 1.130.1 |
1.131.3 | 1.131 1.131.1 1.131.2 1.131.3 |
1.132.1 | 1.132 1.132.1 |
1.133 | 1.133 |
1.133.6 | 1.133.1 1.133.3 1.133.4 1.133.5 1.133.6 1.133.7 1.133.9 |
1.134.8 | 1.134 1.134.1 1.134.2 1.134.3 1.134.4 1.134.5 1.134.6 1.134.7 1.134.8 |
1.134.9 | 1.134.9 |
1.134.10 | 1.134.10 |
1.135 | 1.135 |
1.138 | 1.136 1.136.4 1.137 1.137.1 1.137.2 1.137.3 1.137.4 1.137.5 1.137.6 1.138 |
1.139.2 | 1.138.1 1.139 1.139.1 1.139.2 1.139.3 1.139.4 |
1.139.5 | 1.139.5 |
1.139.6 | 1.139.6 |
1.139.9 | 1.139.7 1.139.8 1.139.9 |
1.140 | 1.140 |
1.142 | 1.141 1.142 |
1.144.1 | 1.143 1.143.1 1.143.2 1.143.3 1.144 1.144.1 1.144.2 1.145 1.145.1 1.145.2 1.145.3 1.145.4 1.145.5 |
1.148.1 | 1.146 1.147 1.147.1 1.148 1.148.1 |
1.148.2 | 1.148.2 |
1.148.3 | 1.148.3 1.148.4 |
1.148.5 | 1.148.5 |
1.148.6 | 1.148.6 |
1.148.7 | 1.148.7 1.148.8 1.148.9 1.148.10 |
1.148.11 | 1.148.11 1.148.12 |
1.148.14 | 1.148.14 |
1.149.0 | 1.148.15 1.148.16 1.148.17 1.148.18 1.148.19 1.148.20 1.148.21 1.148.22 1.148.23 1.148.25 1.148.26 1.149.0 1.150.0? |
- | 1.149.1 |
- | 1.149.2 1.149.3 1.149.4 1.149.5 1.149.6 1.149.7 1.149.8 |
- | 1.149.9 |
- | 1.149.10 |
- | 1.149.11 |
- | 1.149.12 1.149.13 1.149.14 1.149.15 1.149.16 |
1.150 | 1.150 |
1.151 | 1.151 |
1.152.1 | 1.152.1 |
1.152.2 | 1.152.2 |
1.152.6 | 1.152.5 1.152.6 |
1.152.9 | 1.152.8 1.152.9 |
1.152.11 | 1.152.10 1.152.11 |