How to run Sven Co-op as a Windows Service with FireDaemon Pro.

Sven Co-Op Dedicate Server


Sven Co-op is a first-person co-operative action game. The dedicated server component can be run as a Windows service using FireDaemon Pro, which allows you to start the dedicated server automatically at boot prior to login, start multiple instances of the dedicated server. This guide will show you how to set up Sven Co-op Dedicated Server as a Windows Service with FireDaemon Pro. You can also use FireDaemon Fusion to manage FireDaemon Pro and other Windows services via a web browser.


Sven Co-op In Action


Step 1. Download and Install SteamCMD

Download SteamCMD for Windows. Unpack the contents of the ZIP file into the directory of your choice (eg. C:\SteamCMD). There's only one file in the zip file: steamcmd.exe. Double click steamcmd.exe to download related support files and update SteamCMD.


Step 2. Download and Install FireDaemon Pro

Download FireDaemon Pro for your CPU architecture (32-bit or 64-bit). Look for the Download buttons. Then install FireDaemon Pro.


Step 3. Download and Install Sven Co-op Dedicated Server

Go to the directory where you installed SteamCMD (eg. C:\SteamCMD) and create a shortcut to "SteamCMD.exe" called Sven Co-op. Edit the Properties of the shortcut and edit the Target to read:


C:\SteamCMD\steamcmd.exe +login anonymous +force_install_dir "C:\SvenDS" +app_update 276060 validate +quit


The shortcut dialog should look like this:


Sven Co-op Shortcut Properties


Now double click the shortcut you created and let it run to download the Sven Co-op dedicated server files. It might take some time for the game server to download. You should also run the shortcut every week or so to grab the latest server updates. Make sure to stop your server first prior to applying updates.


Downloading the Sven Co-op Dedicated Server


Step 4. Setup the Sven Co-Op Dedicated Server as a FireDaemon Pro Service

Next step is to start FireDaemon Pro and click on the New button in the toolbar (or type Ctrl+N). Complete the FireDaemon Pro Program settings per the screenshot below.


Sven Co-op FireDaemon Pro Program Tab


The FireDaemon Pro Program tab settings are summarised in the table below:


FieldDescriptionRecommended Value
Short NameShort Name of the FireDaemon Pro ServiceSven Co-op
Display NameDisplay Name of the FireDaemon Pro ServiceSven Co-op
DescriptionDescription of the FireDaemon Pro ServiceSven Co-op Dedicated Server    
Executable    Full path the svends.exe fileC:\SvenDS\svends.exe    
Working DirectoryThe directory containing the svends.exe fileC:\SvenDS
ParametersDedicated game server parameters (described below)    -console -secure +ip "1.2.3.4" -port 27015 +maxplayers 12 +log on +map "_server_start"
Startup ModeHow Windows launches the game server on machine bootAutomatic (Delayed Start)


The Sven Co-op dedicated server parameter options are summarised in the table below:


OptionDescription
-consoleEnables a text base server display. The server can only be automatically restarted in text-based mode.
-game svencoop[Optional] Load the game server mod
-secure

Enables VAC (Valve Anti-cheat) protection of your server. If you do not want to enable VAC on your server you must use the “-insecure” switch instead, however, this opens your server to the possibility of abuse

+ip "1.2.3.4"This should be the IP address of your computer (not 127.0.0.1). If your computer only has a private/LAN IP address assigned (such as 10.x.x.x, 172.16-31.x.x, or 192.168.x.x) you must use this or your server will not be connectable. Use this option if your server has more than one IPv4 address due to multiple NICs including virtualised ones.
-port 27015

This is the default server port. You can change it to anywhere from 27015 to 27020. You would only change this if you host multiple servers as each server has to use its own port when using the same IP

+maxplayers 12

This controls the maximum amount of players that can connect to your server at once. Since Sven Co-op is a co-operative game, gameplay is severely affected when there are more than 12 players. So keep the +maxplayers to no more than 12. You can only control the max players on server startup. If you plan to primarily play the Half-Life campaign consider lowering this to value to 8

+log on

Displays the output of information on the screen and logs events to file. You can turn it off by using +log off instead. Keeping this value on makes it easier to debug any errors you might encounter, and for reviewing player misbehaviour

+map "_server_start"

Loads a specified map on server startup. You should ideally keep this as the stub map “_server_start” particularly if you are running plug-ins, as some need at least 1 map to pass to properly initialise. the stub map will terminate within a few seconds and then your map cycle will continue as normal.

-nonetthread[Optional] Disable threaded networking.


Step 5. Now click on the FireDaemon Pro Settings tab per the screenshot below. 

If you DON'T want to see your dedicated server running, uncheck the Interact with Desktop check box and select Hidden from the Show Window dropdown. Ideally, you should run the Sven Co-op Dedicated Server as a non-administrative user with “Login as a batch job” and “Login as service” rights for security purposes. You will need to create that user account manually and set a password. In the Logon Account field type that account username (e.g. SvcSvenDS) and then enter the user's password twice in the Password and Confirm fields. If you do decide to take this approach, you will need to ensure this user has the “Modify” NTFS security permissions set on the folder “C:\SvenDS” and child folders. You should not set permissions to Full Control for your user as it's not required.


You can change the Process Priority to allocate more CPU time to the dedicated server or specify which CPU or core the dedicated server will run on (in the case of multi-processor, hyperthreaded or multi-core CPUs). Realistically the Sven Co-op Dedicated Server will only require 2 threads at most, the majority of the CPU time being spent on a single thread.


Sven Co-op FireDaemon Pro Settings Tab


Step 6. Now click on the FireDaemon Pro 

Dialogs tab per the screenshot below. Enable this feature, then click Insert. Specify the title “Error” and button text “OK”. Even if your service is configured to be hidden the Sven Co-op Dedicated Server may still display an error dialog behind the scenes, causing your server to become stuck doing nothing until manually restarted.


Sven Co-op FireDaemon Pro Dialogs Tab


Step 7. Now click on the FireDaemon Pro Scheduling tab per the screenshot below. 

Add a daily restart schedule per the screenshot below. You should ideally schedule a game server restart every 24 hours, particularly if you plan to run any custom maps. This is because the vast catalogue of custom maps has not been quality tested, meaning certain buggy maps can leave your server frozen until manually restarted.


Sven Co-op FireDaemon Pro Scheduling Tab


Step 8. Now click OK to finish the setup and start your Sven Co-op Dedicated Server! 

The server will run on Session 0 so you will need to switch desktop to see it running by clicking on the "Session 0" button in the FireDaemon Pro toolbar. The screenshot below shows the Sven Co-op Dedicated Server running on Session 0 along with FireDaemon Zero.


Sven Co-op Running on Session 0

Sven Co-op Configuration File

Sven Co-op uses one configuration file to store its settings called "server.cfg". It's located in the svencoop folder under the folder where you installed the game server (eg. C:\SvenDS\svencoop). The vanilla server.cfg file contains the basics you need to configure your server, however at an absolute minimum you should set the following in server.cfg:


SettingDescription
hostnameThis changes the name of your server as seen in the server browser and scoreboard. If you can’t think of anything just use your on-line name, e.g. “Adambean’s server”
rcon_passwordSetting a strong password here is important. Leaving this password as weak/simple could leave your server open to anyone running remote console commands, effectively taking control of your Sven Co-op instance. If you do not want the remote console enabled at all leave this setting undefined or commented out (with the two // at the beginning of the line), however, this will deny even yourself from any in-game management abilities.
password    If you want your server to be private for just yourself and a closed group of your friends set a shared password here. Otherwise, leave this undefined or commented out with the two // at the beginning of the line.
sv_regionThis should match the region of the world your server is located in as per Steam’s documentation. This will allow the Steam server browser to allow players to find servers in their region.


For a comprehensive version of "server.cfg" please refer to the server.cfg found in C:\SvenDS\svencoop\servers\example. The majority of this configuration file will not need to be changed. Ideally, just copy and amend what you need into your own "server.cfg" file. Setting descriptions can be found in the official server configuration guide.


Updating Sven Co-op


Now that you have the Sven Co-op Dedicated Server installed and running it is worth taking a step to help you keep your server up to date. Updates typically come out every 1-2 months so you should not require a scheduled task, however creating a batch file will allow you to update your server with one click!


Open your favourite plain text editors such as Notepad or Sublime, and into a new file paste the following text:


@ECHO OFF

ECHO Stopping Sven Co-op DS ...

net stop "Sven Co-op"

ECHO.

ECHO Updating Sven Co-op DS ...

C:\SteamCMD\steamcmd.exe +login anonymous +force_install_dir "C:\SvenDS" +app_update 276060 validate +quit

ECHO.

ECHO Starting Sven Co-op DS ...

net start "Sven Co-op"


Save this file as "updated.cmd" in your Sven Co-op installation folder (eg. C:\SvenDS\update.cmd). If you wish you can make a shortcut to this, otherwise simply run this batch file to update your server. Your Sven Co-op server will shut down while the update is applied, so you should ideally check to see if anyone is playing first prior to updating.


Running Multiple Sven Co-op Servers Simultaneously

Sven Co-op fully supports running multiple instances in parallel with a single set of configuration files. This is known as configuration profiling, whereby you define multiple basic configuration files with different settings (even if only the hostname changes) but each instance can all access the same content.


This is particularly useful for saving time and disk space, which becomes paramount if you decide to run lots of custom maps. It is also commonly done so that multiple servers can run a different standard cycle of maps while still allowing a much broader/complete range of maps to be played if voted for. (See "mapvote.cfg" for a list of voteable maps.)


A full guide of this functionality is available in the Sven Co-op manual, but the basic steps are:

  • Install Sven Co-Op Dedicated Server via SteamCmd as normal. If you have already done this you won’t need to do it again
  • Create multiple services in the same way as the first FireDaemon Pro service you created, or use the clone feature in FireDaemon Pro to do this quickly
  • Instead of naming each service as “SvenDS” with description “Sven Co-op Dedicated Server” give them different names/descriptions such as:
    • “SvenDS-1” with description “Sven Co-op Dedicated Server: Public #1”
    • “SvenDS-2” with description “Sven Co-op Dedicated Server: Public #2”
    • “SvenDS-3” with description “Sven Co-op Dedicated Server: Public #3”
    • “SvenDS-Private” with the description “Sven Co-op Dedicated Server: Private” – this one could be password just for your friends to use.
  • Change the “port” parameter of each server. This is because only one instance can listen on 27015 at a time. Generally, you should increment each instance port by 5 or 10 (27025, 27035, 27045, etc.) in case you have a plug-in that wants to listen on an additional port
  • You will now want to specify some extra parameters to help you split up your instance settings, logs, and map cycle. Add the following parameters to each service instance, but replace “svends-1” matching the service name you used
    • +servercfgfile “servers/svends-1/server.cfg”
    • +mapcyclefile “servers/svends-1/mapcycle.txt”
    • +motdfile “servers/svends-1/motd.txt”
    • +logsdir “servers/svends-1/logs”
  • For each instance, you created, navigate to “C:\SvenDS\svencoop\servers”, and create a sub-folder for the matching service name you used in your parameters, e.g. “C:\SvenDS\svencoop\servers\svends-1”
  • Inside each server folder, you now need to copy your base “server.cfg”, “mapcycle.txt”, “motd.txt”, and create a “logs” sub-folder, then adapt the 3 files to be specific to your instance. This applies, even if you’re just changing the hostname to number your servers
  • In each “server.cfg” file make sure you define parameters “servercfgfile”, “mapcyclefile”, “motdfile”, and “logsdir” but without the “+” before, pointing to the same locations mentioned in the parameters. If you don’t do this these parameters could become lost during a bad map change.
  • Add each service to your “update.cmd” script twice, so that each service instance is stopped before updating, then started again after updating.

You will now have multiple Sven Co-op Dedicated Server instances on a single installation!


Conclusion

That’s all for the FireDaemon Pro specific aspects of Sven Co-op Dedicated Server. If you require extra support on the specifics of Sven Co-op including running/configuring your server(s) there is plenty of information in the game manual including some advanced topics, and there is an active community willing to help at the on Discord.