I spent a number of years working for a game server host. As a result many of my projects are focused in that domain.
One of the more recent issues I had with was dealing with mods for Ark Survival Evolved Servers.
At the time of writing this putting mods on an ARK Survival Evolved server is a bit of a pain. You must subscribe to the mod in your client, allow Steam to download it and then upload it to your game server. This is a major pain if you rent a server from a game host.
Due to this problem it left mod installation entirely up to the game server owner. This is especially a problem for people with slow upload speed since they have to upload their own files instead of leveraging the bandwidth on their hosted game server.
I wanted a way to allow game hosts to automate this process via their control panels.
With other games, Arma 3 as an example, you can use SteamCMD to download the mod files directly. However, this does not work with ARK Survival Evolved. When you attempt this all downloaded files are compressed with a non-standard implementation of zlib that will not work on the server.
I decided to roll my own solution in Python 3.
I wanted to create a ‘mod manager’ type tool for downloading and updating ARK mods.
However, due to make lack of file compression knowledge I hit a brick wall trying to extract the .z files. I about gave up there. However, I was happy to find someone had already made a Python 3 script for extracting these files.
With that problem out of the way the rest was straight forward and my tool came together nicely.
The end result was a tool that allows you to specify the Mod ID you want. It will then download it, extract it and move it into your server. The tool handles everything for you.
I also baked in a few other features.
Server Directory – You can either specify the directory of your server via the command line or let the script use it’s current working directory. The easiest way is to dump the provided exe into the root of your server folder.
Update Existing Mods – If you specify the –update flag in the command line it will find all the mods you currently have installed and update them
SteamCMD – By default the tool will check common locations for SteamCMD. If it cannot find SteamCMD it will download it’s own local copy. However, you can also specify a custom location using –steamcmd PATH in the command line.