Nachdem nun der erste Beitrag des Hosting eines Teamspeak Servers auf Azure so viel Aufmerksamkeit erlangt hat, habe ich mit einen Co Autoren gesucht. Er stammt aus meinen IT Kursen an einem Gymnasium und hat mich tatkräftig unterstützt diesen Beitrag zu verfassen:
Nun wollen wir euch kurz näher erläutern, wie man einen Arma 3 – Gameserver auf Azure hostet und betreibt. Das Hosting wird auf der Azure A1 Maschine durchgeführt, der auch schon für Teamspeak genutzt wurde. Teamspeak soll ebenso parallel laufen. Die VM A1 genügt für Spielerzahlen bis 100 Spieler und zeigt sich in einem Test performant. Es empfielt sich jedoch für ein besseres Spielerlebnis auf einen größeren Server zurückzugreifen, denn so hätte man noch einige Reserven. Die VM bei Azure schlägt mit rund 42 Euro pro Monat zu buche.
Anleitung:
1. Vorbereitung
- Ihr müsst einen SteamAccount besitzen
- Auf dem Server muss Windows Server 2008 oder höher laufen. Eine Anleitung für Linux folgt später. In Azure wäre dies ein Windows Server 2012 R2 Datacenter.
2. Nun installiert ihr DirectX auf Azure.
3. Nun erstellt ihr im Stammverzeichnis (meist C://) die Folgenden 2 Ordner:
(1) c:\\steamcmd
(2) c:\\Arma3_Server
4. Als nächstes müsst ihr die SteamCMD runterladen, in den Ordner (1) verschieben und dort entpacken.
5. Nun müsst ihr die steamcmd.exe öffnen.
6. Jetzt müsst ihr die Datei „ Arma3server_steamcmd_example.cmd “ erstellen und diese im Ordner (2) speichern.
7. Diese Datei muss den folgenden Inhalt haben, ihr müsst hierbei die rotgedruckten Variablen mit den Pfaden beziehungsweise euren Steam-Daten ersetzen. Diese werden benötigt, um die ServerFiles von den Steam-Servern runterzuladen.
@echo off
@rem http://media.steampowered.com/installer/steamcmd.zip
SETLOCAL ENABLEDELAYEDEXPANSION
SET STEAMLOGIN=Steam-Benutzername Passwort
SET A3serverBRANCH=233780 -beta
:: For stable use 233780 -beta
:: For Dev use 233780 -beta development
:: Note, the missing qotation marks, these need to be wrapped around the entire "+app_data......"
:: There is no DEV branch data yet for Arma 3 Dedicated Server package !!!
SET A3serverPath=X:\Arma3_Server
SET STEAMPATH=X:\steamcmd
:: _________________________________________________________
echo.
echo You are about to update ArmA 3 server
echo Dir: %A3serverPath%
echo Branch: %A3serverBRANCH%
echo.
echo Key "ENTER" to proceed
pause
%STEAMPATH%\steamcmd.exe +login %STEAMLOGIN% +force_install_dir %A3serverPath% +“app_update %A3serverBRANCH%“ validate +quit
echo .
echo Your ArmA 3 server is now up to date
echo key „ENTER“ to exit
pause
8. Nun lädt das Programm den Server selbstständig runter und ihr müsst nur warten.
9. Wenn das Programm fertig ist, erstellt ihr zur Arma3Server.exe eine Verknüpfung auf dem Desktop der VM.
10. Dieser Verknüpfung fügt ihr nun unter RechtsklickàEigenschaftenàDateipfad folgende Parameter hinzu:
„-profiles=d:\Games\Arma3\A3Master“ -config=CONFIG_Vanilla.cfg -world=empty -port=2302
11. Nun müsst ihr das Port Forwarding einrichten. Hierbei müssen folgende Regeln erstellt werden:
Eingehend:
-
2302 (Arma3 Game port) + (VON is now part of main gameport due to NAT issues)
-
2303 (STEAM query )
-
2304 (Steam port)
-
2305 (VON port – not used, but allocated)
Ausgehend:
Ziel-Port
|
Protokoll
|
Ziel-IP
|
Kommentar
|
2344 |
TCP+UDP |
81.0.236.111 |
BattlEye – arma31.battleye.com |
2345 |
TCP |
81.0.236.111 |
BattlEye – arma31.battleye.com |
2302-2305 |
UDP |
any |
Arma Server zum Client Traffic |
2303 |
UDP |
any |
Arma Server STEAM query port |
2304 |
UDP |
any |
Arma Server to STEAM master traffic |
12. Nun müsst ihr die CONFIG_Vanilla.cfg erstellen und diese im Ordner (2) speichern. Auch hier müsst ihr die Variablen ausfüllen. Diese muss folgenden Inhalt haben:
//
// server.cfg
//
// comments are written with „//“ in front of them.
// STEAM
steamPort = 8766; // default 8766, needs to be unique if multiple serves on same box
steamQueryPort = 27016; // default 27016, needs to be unique if multiple servers on same box
// GLOBAL SETTINGS
hostname = „My Server: My Teamspeak address„; // The name of the server that will be displayed in the public server list
//password = „ServerPassword„; // Password to join the server
passwordAdmin = „AdminPassword„; // Password to become server admin. When you’re connected to the server, open the chat and type ‚#login password‘
//reportingIP = „arma3pc.master.gamespy.com“; // not used anymore in Arma 3
logFile = „arma3server.log“;
verifySignatures = 2; // Prevent players with unknown mods from joining the server (best kept at 2 if you want to reduce the number of hackers)
equalModRequired = 0; // Prevent players who don’t have the exact same mods as the server from joining (best kept at 0)
requiredSecureId = 2; // was used to define type of secureID
// WELCOME MESSAGE („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 Arma 3 Server„,
„TS3 Server: teamspeak.somewhere.com„,
„Web: www.example.com“
};
motdInterval = 30; // Time interval (in seconds) between each message
// JOINING RULES
maxPlayers = 40; // Maximum amount of players. Anybody who joins the server is considered a player, regardless of their role or team.
kickDuplicate = 1; // Each player normally has its own unique ID. If set to 1, players with an ID that is identical to another player will be kicked
//requiredBuild = 12345; // Require clients joining to have at least this build version of game, preventing obsolete clients to connect
// VOTING
voteMissionPlayers = 1; // Tells the server how many people must connect before displaying the mission selection screen, if you have not already selected a mission in this config
voteThreshold = 0.33; // Percentage (0.00 to 1.00) of players needed to vote for something, for example an admin or a new mission, to become effective. Set to 9999 to prevent people from voting random players as admins.
// MISSIONS CYCLE
class Missions
{
class Mission1
{
template=“MyMission.Stratis“;
difficulty=“Regular“;
};
};
// INGAME SETTINGS
disableVoN = 0; // If set to 1, voice chat will be disabled
vonCodecQuality = 10; // Supports range 1-30; 8kHz is 0-10 (narrowband), 16kHz is 11-20 (wideband), 32kHz is 21-30 (ultrawideband); higher = better sound quality
persistent = 1; // If set to 1, missions will continue to run after all players have disconnected
timeStampFormat = „short“; // Set the timestamp format used on each line of the server RPT log file. Possible values are „none“ (default), „short“, „full“.
BattlEye = 1; // If set to 0, BattlEye Anti-Cheat will be disabled on the server (not recommended)
// FILE EXTENSIONS
allowedLoadFileExtensions[] = {„hpp“,“sqs“,“sqf“,“fsm“,“cpp“,“paa“,“txt“,“xml“,“inc“,“ext“,“sqm“,“ods“,“fxy“,“lip“,“csv“,“kb“,“bik“,“bikb“,“html“,“htm“,“biedi“}; // only allow files with those extensions to be loaded via loadFile command (since Arma 3 build 1.19.124216)
allowedPreprocessFileExtensions[] = {„hpp“,“sqs“,“sqf“,“fsm“,“cpp“,“paa“,“txt“,“xml“,“inc“,“ext“,“sqm“,“ods“,“fxy“,“lip“,“csv“,“kb“,“bik“,“bikb“,“html“,“htm“,“biedi“}; // only allow files with those extensions to be loaded via preprocessFile/preprocessFileLineNumber commands (since Arma 3 build 1.19.124323)
allowedHTMLLoadExtensions[] = {„htm“,“html“,“xml“,“txt“}; // only allow files with those extensions to be loaded via HTMLLoad command (since Arma 3 build 1.27.126715)
// SCRIPTING ISSUES
onUserConnected = „“; // command to run when a player connects
onUserDisconnected = „“; // command to run when a player disconnects
doubleIdDetected = „“; // command to run if a player has the same ID as another player in the server
// SIGNATURE VERIFICATION
onUnsignedData = „kick (_this select 0)“; // command to run if a player has unsigned data
onHackedData = „kick (_this select 0)“; // command to run if a player has data with invalid signatures
onDifferentData = „“; // command to run if a player has modified data
13. Nun startet ihr einmal die Arma3Server.exe und schaut, ob sich ein Konsolenfenster öffnet und dort keine Fehlermeldungen stehen. Jetzt schließt ihr den Server wieder.
14. Dann könnt ihr die nun generierten Dateien des Servers euren Wünschen nach editieren.
15. Startet nun den Server erneut. Ihr werdet diesen nun unter der externen IP eurer VM im Arma 3-ServerBrowser finden.
16. Loggt euch auf dem Server ein und meldet euch als Admin an. Dies macht ihr, indem ihr das Chatfenster ( Standard: – ) öffnet und dort #login Adminpasswort eingebt. Das Adminpasswort ist das Passwort aus der config-Datei.
17. Als letztes müsst ihr jetzt #missions eingeben. Ihr bekommt dann eine Übersicht über alle Spieler und Missionen und könnt diese dann auswählen.
Wir hoffen, das Erstellen eines Servers auf Azure ist euch durch unsere Anleitung leichter gefallen.
Also herzlichen Dank an Florian!
Als nächstes folgt ein Minecraft-Server.
Nun noch ein paar Screens aus dem Test:
Server startet in Azure auf einem WindowsServer2012R2 Datacenter

Spieler auswählen im Client

Ping zum Azure Server in Dublin:

parallel ein Screen des Taskmanagers auf dem Server in Azure:

Server im laufenden Betrieb

Client verbunden mit dem Server – Mapauswahl

