Abiotic Factor
Dedicated Server in Linux
https://github.com/DFJacob/AbioticFactorDedicatedServer/wiki
https://github.com/DFJacob/AbioticFactorDedicatedServer/issues/3
Installing the Abiotic Dedicated Server to Ubuntu
Note: Do not run as user root - make a user called anything else and give them sudo permissions
Example:
sudo useradd -m abiotic
sudo -u abiotic -s
Now login to that user and go to their home directory cd ~ to start this guide
1. Prepare the server with required packages
sudo apt update sudo apt upgrade -y
sudo apt install software-properties-common lsb-release wget
2. Install Wine
Add repositories
sudo mkdir -pm755 /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/$(lsb_release -is | tr '[:upper:]' '[:lower:]')/dists/$(lsb_release -cs)/winehq-$(lsb_release -cs).sources
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install --install-recommends winehq-staging
sudo apt install cabextract winbind screen xvfb
3. Set up SteamCMD
sudo add-apt-repository multiverse
sudo apt-add-repository non-free
sudo apt update
sudo apt install steamcmd
4. Install Abiotic server (example location - change it to whatever you like)
make a directory for server files to live in
mkdir /home/abiotic/abioticserver
download the game via steamcmd forcing it to use the windows files (you'll get an error if you don't do this)
/usr/games/steamcmd +@sSteamCmdForcePlatformType windows +force_install_dir /home/abiotic/abioticserver +login anonymous +app_update 2857200 +quit
5. Configure server
create the shell script to run your server (we're basically changing the .bat instructions to .sh)
touch /home/abiotic/abioticserver/AbioticFactor/Binaries/Win64/runserver.sh
edit this new file with
sudo nano /home/abiotic/abioticserver/AbioticFactor/Binaries/Win64/runserver.sh
add this to the file and change your password, server name, and world save name if you import any server save from your single player etc. (thank you @sirwillis92 for the changes to this)
#!/bin/bash
xvfb-run wine64 /home/abiotic/abioticserver/AbioticFactor/Binaries/Win64/AbioticFactorServer-Win64-Shipping.exe -log -newconsole -useperfthreads -NoAsyncLoadingThread -MaxServerPlayers=6 -PORT=7777 -QUERYPORT=27015 -tcp -ServerPassword=yourpassword -SteamServerName="yourserver" -WorldSaveName="Cascade"
save and close it (ctrl+x)
6. Forward your ports 7777 and 27015 to your server
7. Start the server by running your runserver.sh
We can't start the .sh without getting file permissions
chmod +x /home/abiotic/abioticserver/AbioticFactor/Binaries/Win64/runserver.sh
then cross your fingers
/home/abiotic/abioticserver/AbioticFactor/Binaries/Win64/runserver.sh
you'll get a bunch of errors, but it should still work
turn it off with ctrl+z
Running this as a script right in your terminal will take over your terminal so I recommend running it as a service. I seem to have to reboot between server launches but that's what LXCs are good at.
Run as a service
1. create the service file
sudo nano /etc/systemd/system/abiotic.service
2. Fill it with this (edit as necessary for your own setup):
[Unit]
Description=Abiotic Factor Server
Wants=network-online.target
After=network-online.target
[Service]
User=abiotic
Group=abiotic
WorkingDirectory=/home/abiotic/abioticserver/
ExecStartPre=/usr/games/steamcmd +@sSteamCmdForcePlatformType windows +force_install_dir /home/abiotic/abioticserver +login anonymous +app_update 2857200 +quit
ExecStart=/home/abiotic/abioticserver/AbioticFactor/Binaries/Win64/runserver.sh
Restart=always
[Install]
WantedBy=multi-user.target
Save it
3. Enable the service
sudo systemctl enable abiotic
4. Start the service
sudo systemctl start abiotic
Use stop and disable commands to do that respectively.
That's it. It will auto restart on a power cycle and always update the server files to the latest build.
Linux run notes
I was able to get it running with xvbf-run wine64
here is a copy of what my shell script looks like:
$ cat examplestart.sh #!/bin/bash xvfb-run wine64 AbioticFactor/Binaries/Win64/AbioticFactorServer-Win64-Shipping.exe -log -newconole -useperfthreads -NoAsyncLoadingThread -MaxServerPlayers=6 -PORT=7777 -QUERYPORT=27015 -ServerPassword=ServerPassword -SteamServerName="ServerName" -WorldSaveName="Cascade"
I end up running into this error though:
LogOnline: Warning: OSS: Async task 'FOnlineAsyncTaskSteamCreateServer bWasSuccessful: 0' failed in 15.001264 seconds which seems to mean that the server is not listed on the steam server list. I am not sure how to fix this, and sine the game doesn't have a direct connect option in-game, me or my friends can't connect [2024.05.04-16.28.35:105][ 0]LogWorld: Bringing up level for play took: 0.265297 LogGameMode: Display: Match State Changed from EnteringMap to WaitingToStart [2024.05.04-16.28.35:208][ 0]LogGameMode: Display: Match State Changed from EnteringMap to WaitingToStart [2024.05.04-16.28.35:381][ 0]LogGameState: Match State Changed from EnteringMap to WaitingToStart [2024.05.04-16.28.35:382][ 0]LogLoad: Took 1.033981 seconds to LoadMap(/Game/Maps/Facility) LogInit: Display: Engine is initialized. Leaving FEngineLoop::Init() [2024.05.04-16.28.35:394][ 0]LogInit: Display: Engine is initialized. Leaving FEngineLoop::Init() [2024.05.04-16.28.35:394][ 0]LogLoad: (Engine Initialization) Total time: 3.48 seconds 0130:fixme:winsock:WS_setsockopt SO_SNDBUF ignoring request to disable send buffering 0130:fixme:winsock:WS_setsockopt SO_SNDBUF ignoring request to disable send buffering 0130:fixme:winsock:WS_setsockopt SO_SNDBUF ignoring request to disable send buffering 0130:fixme:winsock:WS_setsockopt SO_SNDBUF ignoring request to disable send buffering 0130:fixme:winsock:WS_setsockopt SO_SNDBUF ignoring request to disable send buffering LogOnline: Warning: OSS: Async task 'FOnlineAsyncTaskSteamCreateServer bWasSuccessful: 0' failed in 15.001264 seconds [2024.05.04-16.28.50:232][443]LogOnline: Warning: OSS: Async task 'FOnlineAsyncTaskSteamCreateServer bWasSuccessful: 0' failed in 15.001264 seconds 015c:fixme:advapi:ReportEventW (00000000CAFE4242,0x0002,0x0000,0x80000002,0000000000000000,0x0001,0x00000000,00000000198AFC48,0000000000000000): stub
Dedicated Server in Windows
https://github.com/DFJacob/AbioticFactorDedicatedServer/wiki
https://github.com/DFJacob/AbioticFactorDedicatedServer/wiki/Guide-%E2%80%90-Quickstart
login anonymous force_install_dir <DesiredPath> app_update 2857200 validate
Edit
\(Server Install)\AbioticFactor\Binaries\Win64\RunServer.bat
Open RunServer add the following:
AbioticFactorServer-Win64-Shipping.exe -log -newconsole -useperfthreads -NoAsyncLoadingThread -MaxServerPlayers=6 -PORT=7777 -QueryPort=27015 -ServerPassword=YourServerPassword -AdminPassword=YourAdminPassword -SteamServerName="Your Server Name"
Ensure you replace YourServerPasword and "Your Server Name" with the correct info. If you don't want a password to access the admin menu in-game, remove the -AdminPassword= launch parameter RunServer.bat, this allows you to double click it to run the server.
Run the server and check if a console window appears.
If you didn't use the -AdminPassword launch parameter, you will need to manually add your SteamID (Doesn't work for Xbox or Playstation) to the server config. Close the server and navigate to \(Server Install)\AbioticFactor\Saved\SaveGames\Server\Admin.ini. Edit this file and add your SteamID under [Moderators], eg: Moderator=76561198053306820
Use RunServer again, if you can't see the server in the server browser you may have to port forward 7777 and 27015