Armed Assault 3 – eigenen Server erstellen (How to)

So – da ich ja gestern mehr erklärt habe worüber man sich alles Gedanken machen sollte, kommt heute die technische Seite.
Die Konfiguration von der ich für dieses Tutorial ausgehe:

  • Windows Server 2008 R2
  • 4 GB RAM
  • 250 GB HDD
  • 4 Kerne
  • 100 MBit Leitung

Vorraussetzungen

Programme auf dem Server:

runassvc sorgt dafür, dass die ArmA 3 Server als Dienste gestartet werden. Wir wollen den Server ja schließlich Neustart fähig halten. Ich glaube kaum, dass jemand immer angemeldet sein will. Vor allem was passiert wenn jemand dann ingame den Server mit dem Befehl „#shutdown“ herunterfährt? Hochfahren muss dann manuell erfolgen. Im Laufe dieses How Tos zeige ich euch wie ich das mit einem simplen Powershell-Skript gelöst habe. Aber wie gesagt, dafür brauchen wir Windows Dienste.

Steam auf dem Server zu installieren ist vielleicht nicht die klügste Idee, aber da wir ja eh einen Server haben wo nichts sensibles drauf liegt, kann uns das ja alles egal sein. Mal ganz ehrlich, wer will denn schon immer mehrere Gigabyte hochladen? Ich lade ehrlich gesagt lieber runter. Wenn man schon 100 MBit/s hat, dann kann mans auch krachen lassen. 🙂

Wissen:

  • Mit Steam: Wie lade ich den ArmA 3 Server herunter? (Nicht das Spiel, nur den Server)
  • Ohne Steam: Wie lade ich den ArmA 3 Server auf den Server? (z.B. via FileZilla)

Achso und bevor ich es vergesse -> man benötigt kein Steam um die Server laufen zu lassen.

So nun aber genug mit den Vorraussetzungen. Ich will euch ja nicht erschlagen 🙂

Im Folgenden nehme ich nun einfach an, dass Ihr den ArmA 3 Server auf den Server geladen habt, z.B. in „C:\ArmA 3 Server“. Wer mit Steam lädt, könnte folgenden Pfad haben: „C:\Program Files(x86)\Steam\SteamApps\common\Arma 3 Server“. Außerdem gehe ich davon aus, dass runassvc.exe unter „C:\Program Files(x86)\runassvc\“ liegt. Und ich nehme auch noch an, dass ihr nur einen Server laufen lassen wollt. (Gerne erkläre ich später noch worauf bei mehreren Servern zu achten ist.)

Armed_Assault_3_eigenen_Server_erstellen_How_to_C_ArmA_3_Server

Nun müssen wir uns über ein paar Dateien und Parameter Gedanken machen. Auch hier wieder, einlesen hilft. Folgende Links sind wahrscheinlich sehr hilfreich:

In diesen drei Links finden wir alles benötigte. Haben wir uns das angeschaut, könnten z.B. folgende Konfigurationen dabei rauskommen:

  • Basic.cfg

    language=“German“;
    adapter=-1;
    3D_Performance=46875;
    Resolution_Bpp=32;
    Windowed=0;

  • Server.cfg
    steamPort=8766;
    steamQueryport=21016;

    //password = „“;
    passwordAdmin = „passwordfortheadmin“;
    hostname=“My_server_how_it_will_be_shown_in_the_multiplayer_screen“;
    maxPlayers = 50;
    kickduplicate = 1;
    equalModRequired = 0;
    disableVoN = 1;
    vonCodecQuality = 7;
    BattlEye = 1;
    voteThreshold = 0.25;
    voteMissionPlayers = 1;
    persistent = 1;
    /*
    Message of the day. It can be several lines, separated by comma
    empty messages „“ will not be displayed at all but are only for increasing the interval
    */
    motd[]=
    {
    „Welcome to my server“,
    „“,
    „Visit our website:“,
    „http://meinedomain.com“
    };

    // Time interval (in seconds) between each message of the day
    motdInterval=10;

  • Startup parameters

    -port=2310 -config=server.cfg -cfg=basic.cfg -MOD=@mymodpack,@mysecondmodpack,@mythirdmodpack

So, die zwei Dateien legen wir in unser „ArmA 3 Server“-Verzeichnis ab (wir erinnern uns an „C:\ArmA 3 Server“). Nun müssen wir natürlich unseren Server erstmal ans Laufen kriegen. Dazu brauchen wir die Parameter und runassvc. Runassvc müsst ihr mit Administrator rechten ausführen (für gewöhnlich blobbt dann ein Fenster auf, wenn nicht ist die Benutzerkontensteuerng (engl. UAC) ausgeschaltet).

als_admin_ausfuehren_runassvc

Armed_Assault_3_eigenen_Server_erstellen_How_to_runassvc

Das Arbeitsverzeichnis auszufüllen ist unnötig, da der Server keines benötigt. Ansonsten ist hier denke ich alles selbsterklärend.
Jetzt betrachten wir unser Schmuckstück noch unter Dienste (services.msc). Voilà. Das einzige was mich persönlich jetzt noch stört ist, dass dort „Anmelden als“ und „Lokales System“ steht. In einem anderen Blogeintrag, wo ich dann den Server noch feinkonfigurieren werde, erkläre ich auch gerne warum. Für einen einfachen Server – ausreichend.

Armed_Assault_3_eigenen_Server_erstellen_How_to_local_services

So, hätten wir das auch geregelt. Aber falls sich doch ein Tippfehler oder ähnliches eingeschlichen hat, erkläre ich auch gerne wo man diesen wieder entfernen kann. Achso noch ganz wichtig – die Deinstallation dieser Dienste kann ganz normal unter „Programme und Funktionen“ (appwiz.cpl) erfolgen. Dort ist ein entsprechender Eintrag hinterlegt worden. Hier kann man den Eintrag aber nicht ändern. Nur gänzlich löschen!

Also unter „Start“ -> „Ausführen“ (Windows-Taste + r) geben wir nun „regedit“ ein. Vorsicht: Regedit ist ein machtvolles Tool, genau das machen was ich beschreibe und nichts anderes oder unter Umständen funktionieren Programme nicht mehr, bis hin das der Server gänzlich „am Arsch“ ist.
Dann schauen wir uns doch mal den Pfad an:
„HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services{08CECC71-A9B1-417d-AB3A-C57C4F854F53}1927671501“

Die Syntax hierfür ist:
„HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services[GUID]“

Auf den folgenden Bildern sieht man links den Pfad, rechts die entsprechenden Werte. Mit einem Rechtsklick auf die sich in der rechten Spalte befindlichen Einträge und Auswählen von „Ändern“ kann man die Werte logischerweise verändern. Doch bitte nur Parameters, Displayname oder Description verändern.

Armed_Assault_3_eigenen_Server_erstellen_How_to_regedit

Armed_Assault_3_eigenen_Server_erstellen_How_to_regedit_parameters

So hätten diesen Batzen auch wieder weg. Wir kommen dem Ziel immer näher! Was jetzt noch fehlt ist die Firewall. Danach sind wir startbereit und können online gehen.

Die Firewall ist auch wieder kritisch, ja ich weiß, das sage ich vermutlich viel zu oft, aber wer nicht weiß was er tut zerschießt sich alles, holt sich Viren, Trojaner, die NSA (eyerole) etc auf den Rechner. Ok aber genug davon auf in die Praxis.

Die Firewall erreicht ihr indem ihr bei „Start“ – „Firewall“ eintippt. Es erscheint ein Eintrag mit „Windows-Firewall mit erweiterter Sicherheit“. Anklicken. Wir benötigen die „Eingehenden Regeln“. Rechts einfach eine neue Regel definieren. Und einfach so machen wie ichs in den folgenden Bildern zeige. Aber vorher erinnern wir uns noch an die Start-Parameter des Server – einer davon war „port“ mit „2310“. Also müssen wir das hier auch berücksichtigen.

Armed_Assault_3_eigenen_Server_erstellen_How_to_firewall_1

Armed_Assault_3_eigenen_Server_erstellen_How_to_firewall_2

Armed_Assault_3_eigenen_Server_erstellen_How_to_firewall_3

Armed_Assault_3_eigenen_Server_erstellen_How_to_firewall_4

Armed_Assault_3_eigenen_Server_erstellen_How_to_firewall_5

So jetzt haben wir eine Regel erstellt. Die Regel lässt aber ALLES durch. Also müssen wir sie noch konfigurieren. Dazu kopieren wir die Regel. Das erfolgt leider alles über Rechtsklicks (Kopieren und Einfügen). So nun noch ein Doppelklick auf beide Regeln und umbennen bzw. ähnlich konfigurieren wie meine.

Armed_Assault_3_eigenen_Server_erstellen_How_to_firewall_6

Armed_Assault_3_eigenen_Server_erstellen_How_to_firewall_7

Armed_Assault_3_eigenen_Server_erstellen_How_to_firewall_8

Armed_Assault_3_eigenen_Server_erstellen_How_to_firewall_9

Den Teil hätten wir nun auch, mir ist grade noch eingefallen, dass ich euch noch die Aufgabenplanung erklären muss. Denn bei dem Befehl „#shutdown“ fährt der Server nur runter, aber nicht wieder hoch. Und normalerweise macht man ja einen Shutdown um den Server neustarten zu lassen, weil der RAM schon zu sehr verbraucht war, es gelaggt hat, oder oder oder.

Also die Aufgabenplanung findet ihr im Server-Manager (unten in der Taskleiste sollte ein entsprechendes Symbol sein, ansonsten einfach wieder unter „Start“ eingeben). Auf der linken Seite (in der Baumansicht (engl. Treeview) könnt ihr den Ast „Konfiguration“ sehen. Darunter gibts die „Aufgabenplanung“, darunter die „Aufgabenplanungsbibliothek“. Mit rechtsklich „Neue Aufgabe erstellen“ könnt ihr die Aufgabe erstellen, die euer Skript startet, welches eure Server restartet, falls sie mal down sein sollten.

Unbenannt

Unter „Trigger“ müsst ihr natürlich einstellen, wann das ganze Starten soll. Eigentlich ja auch voll automatisch, weswegen wir das am besten auf „Beim Systemstart“ stellen.

Unbenannt1

Danach müssen wir natürlich noch sagen, was getan werden soll zeigt folgendes Bild:

Unbenannt2

Das passende Skript gibts von mir natürlich auch noch:

function Reaction-Service {
<# .SYNOPSIS This function reactes to a service if it is not started. It will start the service. .DESCRIPTION This function reactes to a service if it is not started. It will start the service. .PARAMETER service Type here the name of the service that shall be checked and started if it is not. .EXAMPLE Reaction-Service -service "spooler" #>
[CmdletBinding()]
Param(
[string]$service
)

If ((Get-Service $service).status -eq „Stopped“){
Start-Service $service
}
}

$dada = $TRUE
While ($dada -eq $TRUE)
{
Reaction-Service -service „MeinServer“
Start-Sleep -s 30
}

Das Skript einfach als z.B. reaction.ps1 abspeichern (ps1 steht für Windows Powershell Dateien) und die Aktion definieren. Wunderbar.

So nun ist alles getan und ich kann gemütlich weiter zocken. Aber eines noch nicht vergessen. Um Spielen zu können braucht man auch Missionen. Die gehören in den „MPMissions“ Ordner. Also Frohes Zocken…

Kosten dieses Eintrages:

  • Mehrere Mahlzeiten
  • 3 Tage Arbeit
  • Jahrelange Erfahrung
  • Graue Haare
  • 3 virtuelle Server
  • Last but not least – meine Nerven
  • Euer Durchhaltevermögen