Hey, folks! A lot of us here are pretty down on live service games for all sorts of reasons, but there are a number of great games that will always be playable thanks to DRM-free copies and low-latency VPNs that simulate a LAN. It's been so, so long since a shooter was made for me, and a number of my friends are quite dissatisfied with the market as well, that I decided to put in a little effort and make it happen.
Disclaimers:
- I am not an expert on this stuff. Some stuff I researched for this project, and some I just remember how to do from the old days.
- There is an easier way to do this, using free services like Hamachi or similar. I have found that, in rare cases, Hamachi just didn't work for some LAN games for reasons I couldn't discern; and services like these also tend to impose limits on how many users you can have for free. I went with SoftEther because it is still developed in the modern era, works on Linux and Windows, and I can be in control, so that the terms of service will never change. If you don't want to go through setup for SoftEther, a free service like that one will likely work, too.
Setting up SoftEther VPN
I mostly followed the instructions in this guide to set up SoftEther. I'm hosting the server locally on my Ubuntu desktop machine though, so I made the following changes:
- I downloaded the install files with a regular GUI rather than the terminal web browser
- I did NOT set the server to start up with my computer, so that I can control when friends can connect to my VPN
- Port forwarding is done via my regular router UI, which I'll cover later
You'll need a VPN client as well as the VPN server. On Windows, your client is a regular GUI, and you can follow the instructions in the video; basically, you're just right-clicking and creating a new connection with the account that you set up with the server. On Linux, for some reason, we only get a command line client, and you can find instructions here. Note that, on Linux, you do need to separately request an IP address from your VPN, as it isn't done for you as part of connecting to the VPN.
Port Forwarding
The newest game I'll mention in this post came out in 2008. That was 17 years ago. Someone reading this post may not have been born in an era where they ever had to port forward to play an online game. These days it's abstracted behind services like Steam or a game's official servers, but if you're hosting the server yourself, you need to port forward.
The gist is that your router's IP address is the only thing visible to the outside world, so if you want people who are looking for your VPN server to find it on your computer, you need to tell your router, "Whenever someone comes to your IP address on this port, send it to my machine." When friends are trying to connect to your VPN, you give them the IP address that you find on whatismyip.com, and it gets forwarded to your computer on your local network. When people connect to your VPN, they can then just find your hosted game via LAN. You can actually sidestep the entire VPN part of this process if your game can directly connect to a given IP address, which some but not all games allow for. I personally find the VPN easier than trying to find this information for each game.
The ports that you need to forward are found in the server setup video that I linked above. I also forwarded port 22 for the SFTP section below.
The SFTP Server
Using Filezilla on Windows or a generic SFTP setup on Linux, I can host any files that my friends need. I can host the client installer for the VPN, so there's no chance we're ever on different versions of the software. I can host mods for Star Wars: Episode I - Racer that fix the network play and add better support for modern controllers. I can host full on installers for delisted games like Unreal Tournament and Battlefield 2; I found one of these to be difficult to even pirate, but fortunately there was an archive somewhere on the internet that I was able to find.
The Games
GOG has been great for this. They do lots of work to old games, and you can just about always be sure that you've got the latest version compared to installing games off of your old discs. Here's what I've tested so far, all from GOG:
- Crysis Wars
- F.E.A.R. Combat (didn't work; the GOG version returned a CD error, which I reported to support; allegedly, a mod can fix this)
- Red Faction
- Star Wars: Battlefront II, the good one (you can't mix and match the Galaxy/Heroic version with the offline installer version, I found out; the Galaxy/Heroic version is one of the few in this list that still has functioning online in the wake of GameSpy's death)
- Star Wars: Episode I - Racer
- XIII (classic)
I still have yet to test (but expect them to work):
- Battlefield 1942 (not from GOG)
- Battlefield 2 (not from GOG)
- Flatout
- Flatout 2
- Unreal Tournament (now delisted)
- Unreal Tournament 2004 (now delisted)
Some observations, thoughts, and room for improvement...
As I said above, I'm not an expert. There are some things I'd like to improve if I knew the way to get there.
-
Transferring files over that SFTP seems to be limited to about 1.8MB/s per file. If you're downloading multiple files, that's all well and good, but I'm not sure why there's this speed limit there, nor if it's the fault of my server or my friends' clients.
-
Similarly, when my friends connect to my VPN, they're getting about 2/3 access to my entire bandwidth of 300mbps. All traffic from their machine, once connected, is sent through mine before it hits the wider internet, including our Discord call. Fortunately, neither Discord nor online games require a ton of traffic, but it would be nice to have only the LAN traffic go through LAN. I've found a number of sources suggesting ways to maybe achieve that, some on the client side, some on the server side, but my friends only have so much availability and tolerance to go through these sorts of tests with me. It's fine for now, when we play in small groups, but if I ever find myself in a situation where we want to get a 16 player game of Battlefield 2 going, which is unlikely but possible with my friend group, this setup might not scale well with my bandwidth limits.
-
For some reason, while we can run LAN games over this VPN setup, I can't ping my friends' VPN IP address directly. This doesn't harm anything, but pinging is a pretty routine troubleshooting step that for some reason just doesn't work for me.
-
When I go into the server manager and check the DhcpTable, I can see every one of my friends' computers' names except my own. I suspect because my Linux client isn't reporting my PC name. I don't know why this is. I'm the only one in the group on Linux, so I know I'm the one with a blank host name, but I found it odd.
Conclusion
There is something that just hits right about some of these old games, when you're just playing them for fun rather than some extrinsic reward like a battle pass skin. Allowing me to be an old man for a second, maybe we added too much to some of these games and genres, and it would be nice to see some more games come out that retain what these games had going for them, knowing that they won't retain an audience for more than a few months. That used to be okay.
You think battlefield 2142 would work with this? Best battlefiekd game in the franchise
I'm fairly sure every Battlefield game until BF3 had LAN and private servers, so it ought to work, yes. Bad Company 1 never got a PC version, so you're at the mercy of what those consoles allowed for, but Bad Company 2 is on PC.