ARK: Survival Evolved

ARK: Survival Evolved

185 ratings
Setting up a Dedicated Server: The Basics
By alien.system
A guide meant for everyone confused by all other "How to set up a Dedicated Server" guides. It explains the difference between LAN and Internet servers, the point of the SteamCMD, how to set up a 1-click server launch, and a primer in how to adjust the server settings.
2
2
3
2
   
Award
Favorite
Favorited
Unfavorite
Introduction
There are a lot of "How to make a Dedicated Server" guides for ARK to be found on the internet, but I have yet to find one which does not begin with the conter-intuitive and unecessary instruction to download SteamCMD.
In this guide, I will explain how to set up a dedicated server for those who just want to play a private game with their friends. Unfortunatly, even in this simple guide, I will not be able to avoid talking about "command lines" and "batch scripts", but I will try to keep it simple and explain what it does.
During the guide, I'll talk about Windows machines mostly, but there will be a small section outlining the differences for Linux (there aren't many).
Dedicated Server Basics
ARK's hosting lets the consumer peek a little deeper into the network architecture than other computer games, where there's just a host button somewhere in the multiplayer menu. Therefore, a short explanation of the client-server model:
When running a game, there will be one person (usually called the host), whose computer (called the server) is keeping track of the game state, while each other player's program (called the client) just relays changes of this game state to the host. For example, the server knows where your survivor is. When you now turn your head and walk to the beach, the client tell the server: "I turned 90° and walked forward 2 m", and the server answers: "Okay, you're now at the beach" (The reality is of course more complicated than this, but this is what the client-server approach boils down to).
For most games, the part of the game doing the server duty is included in the main executable (the thing you run when playing the game). However, for resource-intensive games, there will be a separate executable, which only does the server duties and can't actually act as a client. This is a dedicated server.
For ARK, the client executable is the ShooterGame.exe that is called when you start the game, while the dedicated server is ShooterGameServer.exe, which the game starts when you start a dedicated LAN server via the "Host/Local" menu of ARK (which I'll say more about in a moment).

ARK can also be hosted without a dedicated server, in what they call non-dedicated multiplayer, where one player's client program will take over server duties. However, since this is very resource-intensive, the game tries to cut down on how much the island is simulated at once by tethering everyone to the host, preventing them from moving further away than a set distance.
Local Hosting
When it comes to hosting over LAN (what most of you probably will want to do when just playing with a bunch of friends), ARK already tries to be user-friendly.
When starting the game, there is a button called "Host/Local" in the menu that brings you to a screen so full of sliders and checkboxes that it's difficult to see the three host options: Singleplayer, Non-dedicated Multiplayer (both in the lower left corner) and Launch Dedicated Server (hiding in the upper right). We'll be talking about that last option.
The reason why it might be hiding up there far away from the visible buttons could be that at the time of this writing (v237), it's not actually working correctly. Yes, it starts the server, and yes, you can play on it without bugs. However, all those nice options set via sliders are ignored. If you click on that button, you're launching the game under standard difficulty.
Also, we want a 1-click solution, instead of having to navigate through two menus and then having to change the session name because it takes your steam name as standard and then complains that it doesn't allow special characters.

Therefore, we now come to the unfortunately necessary part of diving into the file system and setting up a batch script. First, we shall find our dedicated server executable. Go to the steam library, and find ARK's local files (Properties->Local Files->Browse Local Files). From there, it's ShooterGame/Binaries/Win64 to the right folder. Among lots of other stuff, there will now be the two aforementioned executables, ShooterGame.exe and ShooterGameServer.exe.
However, if you just double-click on the server executable, it might show a command window and proclaim to have loaded something, but it won't actually work, because we haven't told the program what game to load.
For that, we will use a batch script. What is that? It's a file that tells the computer to do certain things, in the order listed in the file. Every line in a batch script is a command, starting with the name of the command, and followed by the parameters of that command, separated by spaces.
Therefore, create an empty text file in the folder and rename it server_start.bat. Make sure to have "Show file endings of known types" checked in the folder display options, otherwise the file will be named server_start.bat.txt and not actually work. When you correctly change the file ending, there will be a warning prompt telling you this is dangerous. Since we know what we're doing, confirm and proceed.
Open the file in a text editor (by right clicking on it and choosing edit. Double clicking won't open a text editor, but attempt to execute the file) and enter the following line:

start ShooterGameServer.exe "TheIsland?QueryPort=27015?listen"

"start" is the command, telling it to launch a program. The first parameter, "ShooterGameServer.exe", is the program it will launch. The second parameter is the parameters this program will be given. If we left out the quotation marks, start would interpret it as commands for itself, and since it can't understand them, ignore them.

And what does "TheIsland?QueryPort=27015?listen" now tell the server? It's again a list of parameters, this time for our server, separated by question marks. The first is always the name of the save you want to launch. The server will automatically put in the remainder of the file directory to look at ShooterGame/Saved/SavedArks. Usually, the file you want is TheIsland, which is the main save file, from which it will make backups regularly, in case the main file gets corrupted.
"QueryPort=27015" tells it which port it should use to connect to the network. A port is like a keycode for a firewall, meaning a program using the right port is allowed to communicate with other computers via a network (as usual, the truth is more complicated, but we don't need to worry about more). This port is the one used by the server browser, so this parameter allows our server to appear in the server list of ARK, and, more importantly, for other people to join this server.
The last one, "listen", tells the server to watch out for incoming connections, and thereby allow people to join. (I'm not sure why this parameter even exists, since a non-listening server seems a bit strange, but I can't tell you more than to include it, to make sure your server runs correctly)

Save the batch file, and double-click it. It should now start the server command window and load for some time. Upon startup, it will show a few lines about memory usage, then add a line about how long it took to load Primal Game Data. It will have started the server when it then (after usually several minutes of loading for a game in progress) displays three additional lines, telling you the parameters it was launched with, how long it loaded, and how many CPU cores it is running on.
When you see that, you should now be able to join your server by starting ARK, clicking "Join ARK" and looking for LAN servers.

What about those slider settings, then? We shall get to them later, since they are the same, not matter whether you're hosting locally or over the internet.
Internet Hosting
LAN hosting is good when all players are part of the same house, but if you want your buddy from Sweden, or even just from the next house down the street, to join in, you'll have to host over the internet.

For that, you will need, unfortunatly, another 30 GB of hard drive space, as the internet-capable ARK server comes as an extra program. You can download it from the Tools part of your steam library. You need the ARK: Survival Evolved Dedicated Server, not the Dev Kit (that's for making mods). Install it somewhere, then look at its local files.
The Dedicated Server Tool file structure will look a lot like the files for the client, because it's more or less the program, just with the visuals stuff cut out and internet hosting added. What is important for us is that when talking about things like "ARK directory" and "Saved Games", we are meaning the ones in the server directory, not the one of your client.

The server start itself can be done via the same batch script as for the local hosting, so just make a server_start.bat with the line:

start ShooterGameServer.exe "TheIsland?QueryPort=27015?listen"

Remember to put it in the server directory, right next to the ShooterGameServer.exe

Unlike for the LAN case, we'll now need to talk slightly longer about ports, since we not only need to allow the server to communicate through the firewall of your home computer, but also through the router that connects your local network to the internet.
The communication through the Windows firewall is granted as soon as you confirm windows that this program is allowed to communicate via network, which basically pops up the first time a program tries. If it doesn't, then you'll also need to allow that manually.
For the router, you'll first need to access it and then find the port settings. This is always slightly different for each router, so please google and look at a tutorial how to do it. If you don't have the router admin password, you're unfortunately out of luck and will have to contend with LAN play.

However, a word of warning: Opening ports in the router will mean that you're leaving a door open into your computer. If a hacker scans your router and finds the open port, they can access your files. That is why usually internet servers are actual server machines, meaning a computer without screen, GPU or input devices, and, most importantly, nothing but the game data saved on it. The chance that a hacker will try to attack you is small, but I am obliged to mention this security risk nonetheless.

With that out of the way, you need to open at least two ports for ARK: First, the aforementioned Query Port, 27015, as UDP, as well as a game client port, standard being 7777, also UDP. In addition, you can open an additional TCP port for RCON, meaning remote console, which I assume means being able to send some admin server commands from another machine. This port seems to be variable, and since this guide is focused on small, private play, I won't go into more detail.

Now, when you launch the server by executing the batch script, you should be able to find it under the "Unofficial Servers" category of the server browser. Let a buddy check whether they can access it from afar.
The Server Settings File
With the servers being able to be launched with a single click (okay, admittedly a double-click), we can now go to the part which we couldn't do via the in-game menu: Adjusting difficulty settings.

The configuration files are found in the server directory under ShooterGame/Saved/Config/WindowsServer. The two we'll be interested in are GameUserSettings.ini and Game.ini. The former has all the global settings, like how much damage all players should do (or take), and how quickly everyone gains XP, while the latter, initally empty, allows you to change details of the game, like how likely it is for Alpha Raptors to spawn in a certain area of the game.
There are already several nice tutorials and lists of commands out there for both setting files (like for example this one), as well as tools that allow you to create settings files without having to type out every setting by yourself, so I shall be brief.

GameUserSettings.ini is separated into several sections, each headed by a name in square brackets. For the server relevant are mostly [ServerSettings] and [SessionSettings], while [/script/shootergame.shootergameusersettings] has your local settings that only affect your client.
In each section, every line determines one parameter for the server in the form "parameter=value".
In [SessionSettings], there's only the session name, which is the name other will see in the server list.
Under [ServerSettings], there will be lots of options, and you can add many more. A few important ones are the following:

ServerPassword=LorenIpsum
ServerAdminPassword=DoloresSitAmet

Those two protect your server from unauthorized entry (assuming you change those passwords, of course). The first is the password people will need to enter your server, while the second can be entered into the command line when in game, and allows that player to then use a few admin "cheats".

ServerHardcore=False
ServerPVE=False
AllowFlyerCarryPvE=False

Normally, a server is launched as non-hardcore, PvP server, meaning everyone can damage everyone, and when you die, you can respawn with your current survivor instead of beginning at zero again. Setting ServerHardcore to True will force people to make a new survivor when dying, making death considerably more punishing. The other option is PvE, which means people can't damage each other or each other's tamed dinos, so the only fight happens between the survivors and the wilderness. Usually, to prevent griefing, you can't pick up things with flyers in PvE, so you don't circumvent the "no damage" rule by picking somebody up and dropping them from great height. If you trust each other, set the last option to true to re-enable it, so that flyers can carry dinos and friends again.

TamingSpeedMultiplier=1.0
PlayerResistanceMultiplier=1.0
XPMultiplier=1.0
ResourcesRespawnPeriodMultiplier=1.0
PlayerCharacterWaterDrainMultiplier=1.0
PlayerCharacterFoodDrainMultiplier=1.0
PlayerCharacterStaminaDrainMultiplier=1.0
PlayerCharacterHealthRecoveryMultiplier=1.0

These are a few of those slider options from the in-game hosting menu that aren't carried over when clicking "Launch dedicated server". Their names should be pretty self-explanatory. Small warning for the PlayerResistanceMultiplier: It's actually a multiplier for the damage you take, so setting it to 2.0 will mean you're taking twice as much damage, while 0.5 means you're taking half damage.
What's the deal with SteamCMD?
Since every other guide about dedicated servers talks about downloading SteamCMD, this section will tell you what all those other guides don't, which is what using it actually does.

SteamCMD is mostly meant as a developer and server tool, since it allows you to everything the Steam client does, without having to use the interface. This is useful in situations where you don't want to have the whole Steam client, like on a server. The server doesn't need to know about what's on sale for Midweek Madness, or what the community is doing. Ideally, the server doesn't even have to be logged into Steam to host.

Steam, like the operating system and the ARK server, can take commands and execute them. For example, if you have a shortcut to ARK on your desktop, that shortcut goes "steam://rungameid/346110". This is basically a command for Steam to run a the game with the ID 346110, which happens to be ARK.
SteamCMD has a slightly different syntax compared to the steam client, so for example the commands:

login <username> <password>
force_install_dir <install_dir>
app_update 346110 validate

would install ARK at <install_dir>, assuming you replaced <install_dir>, <username> and <password> by a sensible file path, your username and password, respectively.
Since people want to install the Dedicated Server Tool instead of the game, the ID in the last line is usually 376030.

The advantage of using SteamCMD is that you can even put the whole of the Steam commands into a batch file like this (note that you can download the ARK server without even having to log in):

start steamcmd.exe +login anonymous +force_install_dir <dir> +app_update "376030 validate" + quit

When you're good enough at batch files and some other technical wizardry, you could for example make your server shut down every time at midnight, check for updates, then restart. For that you'll need the SteamCMD. But when you just want to locally host a game for friends, it's overkill.
Differences for Linux
The main difference of Linux is that when you want files that execute some command lines, you're using shell instead of batch, which had a slightly different syntax. So the shell file is (let's call it server_start.sh):

#! /bin/bash
./ShooterGameServer TheIsland?QueryPort=27015?listen

And to make it executable, you have to call:

$chmod +x server_start.sh

(Windows users don't need to do stuff like that because Windows trusts file endings a lot. Linux doesn't, and is therefore more secure, but also more difficult to learn. But if you're reading this section, that's probably not news to you.)

And, as is probably expectable, the path to the server settings is ShooterGame/Saved/Config/LinuxServer
Closing Words
This is probably one of the longer guides out there, but I hope it clears up some confusion for those who felt estranged by having to download a command line program and enter some lines without any explanation.

I thank the ARK Wiki[ark.gamepedia.com],Curcuit Six and rlc[rlc-gamer.de] (German) for their tutorials, from which several of the code examples are taken.

If you have any questions or suggestions, feel free to comment, and if this guide helped you, please don't forget to rate.

This guide still isn't finalized, and especially the Linux section hasn't been tested by me. So if anyone can confirm that they work, I'll be thankful and add their names to the credits.
39 Comments
LadyCaswell Mar 21, 2021 @ 7:51am 
I did notice the date stamp on this but I was hoping someone would know what I'm going through. I have tried a lot of other troubleshooting sites but still nothing has helped (I've been working on this for 2 weeks). I will likely just have to wipe everything and start over again. Thank you for your time.
alien.system  [author] Mar 21, 2021 @ 7:42am 
That does sound like there is a problem. Note however that I haven't updated the guide or played ARK for years and thus can't really troubleshoot in detail
LadyCaswell Mar 21, 2021 @ 7:40am 
I do understand that. I have let it sit overnight. It really shouldn't take that long, right?
alien.system  [author] Mar 21, 2021 @ 7:37am 
@LadyCaswell: Note that the launching process can take upwards of 15 minutes of even mid-range computers.
LadyCaswell Mar 21, 2021 @ 7:30am 
When I try to launch my server in the game it pops up a cmd screen, goes through the prompts and then just stays there and never launches the game. What is making this happen? (first time ever setting up a dedicated server). All the proper ports are open and when starting it on my server computer it starts successfully. The game itself just won't start. Where can I check to see if something is hung up? or maybe I missed a command somewhere? Any help is appreciated!
Frosty Sep 28, 2020 @ 4:05pm 
Make sure you open ports 7777, 7778, and 27015. This fixed my issue with the server.
churoapple Feb 27, 2020 @ 3:16pm 
so i follow the steps but the server always shows up under lan. im stumped and i dont know if its because i didnt portfoward it right, but ive checked if the ports are open and they are.
KingSloth Jan 27, 2020 @ 1:52pm 
on the windows/xbox version of the game, to host a dedicated server, its as simple as selecting the "Host Dedicated Server" option, and the game launches, and BOOM server hosted with all the pre-determined settings via the sliders, why does the steam version have to be so complicated when it comes to hosting a dedicated server?
you shouldn't have to worry about scripting, port forwarding, or steamcmd for any of this to work

How can they make it so easy to host a server through the Microsoft store, and play with friends, but to play on Steam is overly complicated, and time consuming?
lucifier May 7, 2018 @ 1:16pm 
Is there more info on the the other commands you touched on like the server reset at midnight and the server pause with out players I'm interested in adding those to my server.
Power King Aug 25, 2017 @ 7:59am 
I fixed it :csdsmile: