Tag Archives: Hosting

Gamingserver auf Azure hosten: ARMA III

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

serverconsole.server.startet

 

Spieler auswählen im Client

User-Auswählen

Ping zum Azure Server in Dublin:

serverauslastung Client

parallel ein Screen des Taskmanagers auf dem Server in Azure:

server_mission-bearbeiten

Server im laufenden Betrieb

Mission-aktiv-vollauslastung

 

Client verbunden mit dem Server – Mapauswahl

Mission_laden

Mission_geladen1