#135 Performance Tests

Motiviert durch irgendein kosmisches Event und vielleicht den ein oder anderen Forum Post haben wir uns in der vergangenen Woche eingehend mit der Thematik ‚Performance‘ beschäftigt. Einige dieser Erkenntnisse möchte ich heute mit euch teilen.

Zwei Seiten einer Medaille

Bei der Betrachtung von Performance, also im Wesentlichen wie gut Arma läuft, bezogen auf die FPS, gibt es zwei verschiedene Sichtweisen, welche für uns relevant sind: Der Server und der Client.

Auch wenn es gewisse Regeln und Dinge gibt, die bei beiden gleich sind, gibt es doch gravierende Unterschiede in den Aufgaben, den Funktionsweisen und eben auch wie wichtig es ist, die Perfomance an bestimmten Stellen zu optimieren. Da es nur einen Server gibt (und theoretisch den HC – Headless Client), welcher die Anfragen aller Spieler bearbeitet, ist es hier vor allem wichtig die verschiedenen Skripte zu optimieren und komplexe Berechnungen zu vermeiden. Auf dem Client hingegen ist jeder für sich verantwortlich und auch ein extrem langsames Skript, welches gelegentlich läuft, hat nicht so viel Einfluss, wie ein schlecht optimiertes Fahrzeug oder Objekt, das gerendert werden muss.

Soviel zu dem Teil der offensichtlich war. Doch wie so häufig im Leben, und vor allem in Arma, sind die Dinge deutlich komplizierter als sie auf den ersten Blick erscheinen.

Der Server

Auch, wenn FPS für einen Server ohne grafische Oberfläche ein etwas irreführender Begriff ist, rechnet Arma auch die serverseitige Performance in FPS. In jedem Frame, oder jedem Tick, wie es in anderen Spielen heißen würde, wird eine bestimmte Menge an Rechenoperationen durchgeführt. Hat der Server wenige FPS (also umgerechnet Rechenkapazität pro Sekunde), so kann es passieren, dass Dinge langsamer ausgeführt werden oder es im schlimmsten Fall zu merklichen Lags führt.

Einer unserer neuen Graphen zur Überwachung der Server Performance

Durch sehr viel Arbeit an der Optimierung des Servers und die Einführung eines Headless Clients (also quasi eines Helfers für den Server) konnten wir die Server Performance über die letzten Jahre sehr stabil halten. Und wenn auch die FPS jetzt nicht großartig sind, gibt es im Spiel kaum merkliche Effekte schlechter Server Performance (Beispielsweise wenn die Garage langsam laden würde).

Nichtsdestotrotz probieren wir den Server weiter zu optimieren, um ggf. mehr Spieler und/oder längere Restart-Abstände zu ermöglichen. Hier sind wir jedoch noch in der Anfangsphase.

Der Client

Läuft der Server grundsätzlich stabil ist die Optimierung der einzelnen Clients die nächste wichtige Aufgabe. Denn ein noch so gut laufender Server bringt nichts, wenn ihr keinen Spaß beim Spielen habt, weil euer Game nur mit 10 FPS läuft.

Was die Client Performance angeht hatten wir diverse Theorien:

  1. Die Anzahl verschiedener Fahrzeuge: Diese Theorie habe ich lange Zeit dafür verantwortlich gemacht, weshalb die Performance in den auf den Wipe folgenden Wochen stetig sinkt und sich dann irgendwann einpendelt.
  2. Die Anzahl der Fahrzeuge und Spieler sorgen generell für eine schlechte Performance.
  3. Die Häuser sind schuld.

Theorie 1, wenn auch extrem logisch erscheinend und naheliegend, ließ sich durch einige Tests schnell widerlegen. Theorie 2 ist logisch und definitiv wahr, dennoch wollten wir genauer quantifizieren, welchen Einfluss die Fahrzeuge haben.

Teil des Ergebnisses des Testscripts

Wir entwickelten ein Testscript, welches Fahrzeuge spawnt und anschließend die durchschnittlichen FPS misst. Das Ganze war ein langwieriger Prozess, Server und Client Restarts mussten immer wieder durchgeführt werden, um die Ergebnisse nicht zu verfälschen, und alle 360 Fahrzeuge wurden mehrmals getestet, um Messfehler oder äußere Einflüsse auszugleichen.

Insgesamt konnten wir auf diese Weise einige Fahrzeuge identifizieren, welche einen erheblich höheren Einfluss auf die Performance hatten als andere. Weitere Stunden der Untersuchung ergaben, dass so triviale Dinge wie Transparenzen in einer Textur dazu führen können, dass 150 Fahrzeuge die FPS auf 10 senken, anstatt wie bei einem normalen Fahrzeug auf 40 (von jeweils anfänglich 60 FPS).

Der nächste Test bei den Fahrzeugen beschäftigte sich damit zu überprüfen, welchen Effekt die Blaulichter und andere Fahrzeug Effekte auf die Performance haben. Jeder Spieler kennt es sicher, dass das Einschalten vieler Blaulichter zu FPS Einbrüchen führen kann, dennoch war der Effekt nicht annähernd so signifikant, wie bei den vorherigen Tests. Hier ist jedoch unklar inwiefern die Performance durch steigende Spielerzahlen zusätzlich leidet.

Theorie 3 ist eine von vielen Spielern gehaltene Theorie, ohne, dass sie je überprüft wurde. Es ging sogar soweit, dass sich ein Supporter vor einigen Jahren einmal berufen fühlte hunderte Häuser zu löschen, damit die Performance besser wird. Nun haben wir das ganze endlich mal getestet und sind zu dem Schluss gekommen, dass die Häuser selber quasi keinerlei Einfluss auf die Performance haben. Die in ihnen befindlichen Container und ihr Inhalt jedoch schon. Wenn auch der Effekt verglichen mit den Fahrzeugen sehr gering ist, haben wir die Haus Regeln im Support etwas verschärft, sodass es nicht mehr so einfach möglich ist durch Überschreibungen 8 Häuser zu besitzen und so hoffen wir, dass wir hier eine kleine Verbesserung erzielen können.

Auch verschiedene Stellen der Karte haben unterschiedliche Effekte auf die Performance. Da wir hier jedoch enorme Unterschiede zwischen den verschiedenen Testern festgestellt haben, haben wir eine Mission entwickelt, die den Spieler über die ganze Karte teleportiert und Daten misst. Diese haben wir anschließend tabelliert, um Orte zu finden, welche bei allen Spielern weniger Performance aufwiesen. Die Tests in diesem Bereich sind noch nicht abgeschlossen und wir können noch nicht sagen, ob wir hierdurch Verbesserungen erzielen konnten.


Wir werden in den nächsten Wochen weiter analysieren, testen und Updates mit Verbesserungen veröffentlichen und hoffen so das Spielerlebnis noch weiter verbessern zu können. Auch haben die Fahrzeug-Modder einiges an Fortschritt bei den Fahrzeugen gemacht. Mehr Infos hierzu demnächst.