Ein Headless Client (oder kurz HC) ist eine Art Kombination aus Spieler und Server, der dazu dient, die Berechnung von KI-Einheiten vom Server zu übernehmen und ihn so zu entlasten. Die Performanceverbesserungen, die durch den Einsatz eines oder mehrerer Headless Clients enstehen, sind dabei enorm, jedoch mit etwas mehr Arbeit beim Missionsbau verbunden.

Funktionsweise

Headless Clients sind seperate Programminstanzen von Arma, die auf dem selben physischen Server wie der Spielserver laufen. Das erlaubt eine quasi grenzenlose Bandbreite zwischen Server und HC, was eine extrem schnelle Synchronisation zwischen beiden zur Folge hat.

Der Vorteil in der Performance ergibt sich nun aus der schlechten Multicoreoptimierung von Arma. Jegliche KI, Skripte und dergleichen werden in einem Thread berechnet, was effektiv nur einen CPU Kern zum Glühen bringt, während die anderen kaum belastet werden. Hier übernimmt nun der HC: Er lagert die Berechnung von KI auf einen weiteren Kern aus, während sich der Server allein um die Synchronisation mit den verbundenen Spielern kümmert.

Headless Clients verbinden sich beim Start automatisch mit dem Server und slotten sich, sobald eine Mission, die einen HC-Slot hat, gestartet wird. Sobald sie verbunden sind, kann auf ihnen KI gespawnt werden. Sollte ein HC jedoch abstürzen, wird die gesamte KI auf den Server übertragen. Das ist einerseits gut, weil dann nicht die gesamte KI plötzlich verschwindet, andererseits verursacht dies jedoch direkt nach dem Absturz einen kurzen aber heftigen Desnyc. Sollte der Absturz durch eine Überlastung passiert sein, ist es auch wahrscheinlich, dass dann auch der Server abstürzt.

Missionsbau mit Headless Clients

Um den Headless Client zu nutzen, muss zuerst ein Headless Client Objekt platziert werden. Im Eden Editor sind platzierbare HCs in dem Tab mit den Modulen zu finden. Danach muss zusätzlich noch der HC auf spielbar gesetzt und ihm der Name “HC” gegeben werden.

Headless Clients übernehmen die KI Berechnung nicht automatisch, stattdessen müssen die KI Einheiten direkt auf dem HC per Skript gespawnt werden. Das heißt auch, dass im Editor platzierte Einheiten nicht auf dem HC berechnet werden, sondern ganz normal auf dem Server. Es empfiehlt sich also daher, im Editor platzierte Einheiten auf ein Minimum zu reduzieren (also z.B. nur vereinzelte statische Geschütze etc.). Mit dem Gruppe W Missionsframework gibt es nun eine einfache Möglichkeit, auf dem HC Einheiten zu spawnen: die initHC.sqf. Das ist eine Datei, die bei Missionsstart automatisch auf dem Headless Client gestartet wird. Jegliche Spawnbefehle (also z.B. FUPS Spawnbefehle oder per Hand via createUnit) sollten einfach in diese Datei eingetragen werden, und die KI läuft über den HC.