Let's play DOOM on servers





I got a crazy idea - to play classic DOOM over the network installed on a VPS running Windows. In general, it was conceived as testing new features that we are introducing: server cloning and local network deployment. Yes, and in fact, it's cool to play DOOM right on the servers, especially after watching the tales from John Romero , it was impossible not to play the legend of computer games.

Let's see what came out of this, what problems I faced and how they were solved.



What's the trick?



We have two interesting possibilities: deploying a local network and creating snapshots. If everything is more or less clear with a local network - this is an excellent alternative to the same VPN and it is deployed much easier, then this is what a snapshot is - not everyone understands. Yes, and I'll be honest, I didn't understand right away either. A snapshot allows you to make a current image of the server and then create another server on its basis, even with other parameters, such as disk size, memory, number of cores. This is very convenient, especially if you need to transfer your VPS server from one data center to another. Another feature we'll be using is setting up a production server once, and then cloning it for your clients.

I understand that all this looks too advertising, but initially it was a combat test of our embedded chips. And thanks to him, we were able to assess all the problems that arose and fix them promptly. Therefore, this article was born.



Deploying the masterserver



For this project I chose a server with the following parameters.







I think this configuration is more than enough for our tasks. Initially I wanted to use Windows Server 2003, but Doom flatly refused to work on it, so I decided to stop at 2016.

A few minutes later, after deploying the server and loading the operating system, we will see the finished panel, and most importantly the IP address of our server.







As a network DOOM, I used some clever build of Zandronum, DoomSeeker, BrutalDoom, which my friends gave me. But, in essence, you will need one Zandronum and DoomSeeker to create the server, plus the original .wad file if you want to play on "those very cards". Well, or find a similar assembly in the vastness of the network. I must admit right away that I am not a big connoisseur of DOOM mods, I tried several assemblies, so I am showing a working version. Perhaps, if you want to repeat this, you should succeed with other assemblies. The same BrutalDoom is much more fun and playful for playing on the network.

So, copy this assembly to our server (I recommend using the “c: \ game \ doom” folder), run zandronum.exe.







And select the folder containing the WAD files we will play on. They will determine the cards on which you will play. I have them in the files folder along with the game.











Everything is ready to play. Now we will make copies of our server and add them to a single local network so that other players on the network can play.



Creation of a copy of servers and integration into a single local network



In order to make a copy of the server, you need to turn off the server, go to the "Snapshots" tab.







And select "Take a snapshot". If the server is not turned off, then it will be offered to turn it off in interactive mode, since the server snapshot for transfer is carried out in the off state (actually a disk copy).







This will create a snapshot of our server.







After that, the main server can be started, and based on this snapshot, we can create new servers. To do this, go to the "Order" tab







In the section where "Server Template" is selected, at the very bottom there will be our Snapshot, select it.







Please note that you can select a server with different parameters. This is very convenient if you need to increase the amount of hard disk, RAM and more. Unless there is no way to save the IP address.

As a result, after the described operations, after a while we get a copy of our server. The copy differs from the original only in the login password and other IP and MAC addresses.







After creating the second server, let's unite their single local network. To do this, go to the "Network" tab of any server.







There we select "Configure local networks".







Next, you can give the name of our local network, for example Doom, select the subnet ranges; after which we can add the servers that we want to connect to this local network. Then we press "Create a local network".







And finally, the network is deployed after clicking on the "Expand local network" button.







This is where one problem lies: Windows is very fond of updates, does not allow restarting the server when the changes are installed. Since Windows is updated frequently, it is quite easy to get at the time of the update at the time of creating the network. During the preparation of the material for the article, I got this hit twice. To create a network, a server restart is required, and if the restart fails, the network will be created with an error.





Installing damn updates at the time the network was created.



In order to avoid such problems when creating a network, it is most correct to carry out these procedures on turned off servers, because you will still need a reboot to deploy the network. And when the server is turned off, the update will not suddenly be installed.

After all the described procedures, we will have a local network deployed and the following picture will appear in the server control panel.





Servers on a single network.



After remembering the problems and intricacies of deploying OpenVPN, this option for creating a local network is just miraculous! For me personally, it turned out to be the most convenient.

As you understand, in the same exact way we create several more servers on which my colleagues can already play.



We create a game server and play.



That's it, now we just have to start the DOOM server and play. Run doomseeker.exe on the master server.







Choose "Create Server".







Then we choose for which engine we create the server, which wad file to use and the map.







And click "Start server".







After that, on the main machine and on the client machines, we run zandronum.exe and go to Multiplayer. Browse servers->internal browse, there to choose local. This menu does not always work, so you need to enter it several times.







Don't forget to choose our server. We press "join game" and we are in the game!











Outcome





Colleagues play DOOM in the workplace.



Our team got into the game pretty cool, and now we have remote working machines running the game. They can be shared with other colleagues or played from home. This, by the way, is relevant for turn-based strategies, when you can save progress in this way.

But the main thing is that we managed to test the introduction of new features in a playful way. Everyone was satisfied.










All Articles