News

Entwicklertagebuch: Wie die Abstürze im Update 0.25 repariert wurden

Kommandanten!

Eine der häufigsten von euch auf Discord und in den Foren gestellten Fragen ist die nach unserer Behandlung von kritischen Problemen, die sich negativ auf den Spielfluss auswirken. Dazu gehören vor allem Spielabstürze. Nach der Einführung von Update 0.25 erhielten wir eine Menge Berichte über Probleme dieser Art, die zu einer umfangreichen Untersuchung und den kürzlich umgesetzten Hotfixes führten. Im heutigen Artikel möchten wir euch mehr über diese Probleme und die Verfahren erzählen, die zu ihrer Behebung geführt haben.

scr1

Allgemein über Abstürze

Abstürze gehören mithin zu den größten Problemen, die in einem Spiel auftreten können und es ist deshalb enorm wichtig, sie umgehend zu beheben. Allerdings können Abstürze aus einer Reihe von unterschiedlichsten Gründen auftreten und es müssen schon Unmengen an Daten gesammelt und analysiert werden, um ihre Ursachen zu lokalisieren. Erschwerend kommt noch hinzu, dass Abstürze meist nicht während der Entwicklung oder in den Testphasen auftreten (wäre dies der Fall, würde die betroffene Version erst gar nicht in den Umlauf gebracht werden). Die Daten werden mithilfe eines automatisierten Absturznerichtsystems gesammelt, das bei einem Crash aktiviert wird.

Die gesammelten Informationen werden in unterschiedlichen Kategorien unterteilt und jeweils von einem spezialisierten Team bearbeitet. Lasst uns diesen Vorgang an einigen spezifischen Beispielen illustrieren.

img1

Relative Menge an Abstürzen auf 32-Bit-Systemen

img2

Relative Menge an Abstürzen auf 64-Bit-Systemen

Diese Grafiken zeigen die Menge an Abstürzen auf dem russischen Client zwischen zwei großen Updates an (Caribbean Crisis und Black Sea Incursion), geordnet nach der Art des verwendeten Betriebssystems. Beachtet bitte, dass die Anzahl der Abstürze auf 32-Bit-Systemen mit der Einführung des Updates "Black Sea Incursion" gesunken ist, während bei 64-Bit-Systemen ein Anstieg zu verzeichnen war. Die Farben repräsentieren jeweils eines der Updates.

Lasst uns zunächst einen Blick auf die 32-Bit-Systeme werfen.

Eine Optimierung des Spiels für 32-Bit-Systeme mag nicht allzu relevant für westliche Märkte sein, je weiter man sich jedoch Richtung Osten bewegt, desto wichtiger wird sie aufgrund der dort dominierenden Hardware-Gegebenheiten. Das Problem mit 32-Bit-Systemen besteht jedoch darin, dass ihre Speicherkapazität nur 2 GB beträgt. Wenn das Spiel also mehr als zwei Giga in Anspruch nimmt, stürzt es unweigerlich ab. Aufgrund der Fragmentierung des Arbeitsspeichers kommt es in Wirklichkeit bereits früher zu einem Absturz, also bei 1,5 oder 1,6 GB, bzw. wenn kein Speicherplatz mehr für das Spiel zur Verfügung steht.

Die meisten Abstürze von 32-Bit-Systemen hängen mit fehlenden Speicherkapazitäten zusammen, weshalb wir alles daran setzen, den Client durch Verringerung der Speicheranforderungen für die betroffenen Systeme zu optimieren. Dessen ungeachtet empfehlen wir eine Aufwertung auf ein 64-Bit-System, weil 32-Bit-Systeme bei Anwendungen wie Armored Warfare wegen der genannten Einschränkungen generell instabiler sind und Spielentwickler die Kompatibilität mit diesen Systemen zusehends aufgeben. So hat beispielsweise Nvidia angekündigt, künftig keine Updates mehr für 32-Bit-Systeme anzubieten.

Lasst uns jedoch wieder zu der oben dargestellten Grafik zurückkehren. Wie ihr sehen könnt, wurde die Anzahl der Abstürze nach dem letzten Hotfix bedeutend reduziert. Wir behalten die aktuelle Entwicklung weiter im Blick, um sicherzustellen, dass die Anzahl der Abstürze nicht die akzeptable Menge übersteigt.

Behebung der Abstürze

Um mehr über die Art der Abstürze herauszufinden, die das Spiel im Udate 0.25 heimgesucht haben, müssen wir uns an zwei Entwickler wenden, die sich auf diesem Feld am Besten auskennen, also den Leiter des Spielclient-Teams Aleksej Petranovski und den Chefprogrammierer der Spielmechanik Marat Radtschenko.

Lasst uns das an einem Beispiel illustrieren, bei dem ein Spieler mitten in der Schlacht einen Absturz erleidet und das Spiel einen Absturzbericht sendet. Natürlich möchte der betroffene Spieler in dieser Situation schnellstmöglich in den Kampf zurückkehren und startet das Spiel neu, ohne zusätzliche Angaben in dem Spielbericht zu machen. Das ist soweit verständlich. Am wichtigsten ist es, zuzulassen, dass der Bericht überhaupt gesendet wird, indem man "Senden" im Absturzbericht-Bildschirm drückt.

Die auf diese Weise gesendeten Berichte werden zentral gesammelt, je nach Fall sortiert und an unterschiedliche Teams geschickt. Um zu verstehen, wie der Sortierungsprozess abläuft, muss man folgendes wissen:

  • Der Client ruft diverse sogenannte "Funktionen" ab
  • Beim Sammeln der Berichte wird eine Liste mit den abgerufenen Funktionen an die Entwickler geschickt
  • Anhand dieser Liste wird eine ID-Nummer kreiert, die das Problem möglichst genau beschreibt. Von nun an werden alle Probleme dieser Art (bei denen zum Zeitpunkt des Absturzes ähnliche Funktionsstörungen diagnostiziert wurden) mit derselben ID-Nummer belegt. Wenn der zuständige Entwickler die von den Spielern eingereichten Absturzberichte analysiert, kann er sie anhand der ID-Nummer identifizieren. Das ermöglicht einen Überblick über die aktuell auftretende Zahl des jeweiligen Problems.

scr3

Diese Grafik zeigt die typischsten Absturzursachen, sortiert nach Häufigkeit des Auftretens. Einige sind miteinander verknüpft (auch wenn die Gründe für ihr Auftreten unterschiedlicher Natur sind) und können in mehrere Gruppen aufgeteilt werden:

Gruppe 1 besteht aus den Absturzursachen 1 und 3. Diese wurden durch Probleme mit alten Netwerkcodes verursacht, die zu Clientabstürzen führten. Die Ursachen wurden in dem letzten Hotfix durch das Kampfmechanik-Team behoben. Das führte zu einer Reduzierung der Abstürze auf dem Liveserver um 30 Prozent.

Gruppe 2 besteht aus der Absturzursache 2. Diese wurde durch Situationen hervorgerufen, in denen DirectX an einem Punkt die Verbindung mit dem Grafikprozessor "verlor", was dnen Client zum Absturz brachte. Dafür kann es mehrere Gründe geben – Probleme mit der Hardware der Grafikkarte, Probleme mit Treibern, ein überhitzter Grafikprozessor oder Probleme mit dem Renderingsystem des Spiels. Von unserer Seite aus können wir leider nur den letzten Punkt behandeln und selbst in diesem Fall ist eine Fehlerbehebung auf Basis von Absturzberichten relativ schwierig, weil wir das Problem zu diesem Zweck individuell reproduzieren müssen. Die Behebung dieser Fehlerursache hat momentan höchste Priorität und unser Client-Team ist an der Sache dran.

Gruppe 3 besteht aus den Absturzursachen 4, 5 und 7. Dabei handelt es sich um Abstürze des Kampfladungsbildschirms. Beim Laden eines Kampfes ist das Spiel damit beschäftigt, Ressourcen zu laden, während es parallel den Bildschirm aktualisiert, wobei einige Teile des Spiels diese parallele Inanspruchnahme nicht handhaben können und abstürzen. Das Problem wurde von unserem Nutzeroberfläche-Team im letzten Hotfix behoben.

Gruppe 4 besteht aus der Absturzursache 6. Ironischerweise wird dieser Absturz von einem System verursacht, das Spielabstürze überwacht (ein System namens Watch Dog). Dabei werden laufende Spielprozesse überwacht und sobald sie innerhalb einer bestimmten Zeitspanne nicht antworten, führt das System absichtlich einen Absturz durch. In diesem Fall ist der Absturz jedoch nur ein Symptom für ein anderes Problem und nicht das Problem selbst – er wird benötigt, um uns mit Informationen über nicht antwortende Komponenten zu versorgen, sodass wir sie analysieren können. Diese können mehrere Ursachen haben, sei es ein überlasteter Prozessor oder eine überlastete Festplatte, ungenügender Speicherplatz oder ein Bug. Auch diese Problemgruppe wird von unserem Client-Team betreut.

Wie ihr seht, helfen uns eure Kommentare und Spielberichte immens dabei, die häufigsten Absturzursachen festzustellen und ihnen höchste Priorität zuzuschreiben. Das soll natürlich nicht bedeuten, dass wir nicht auch an anderen Problemen arbeiten, diese werden vielmehr parallel zu den angeführten Tätigkeiten behandelt.

Eine wichtige Sache noch: Je seltener die Absturzursache, desto wichtiger ein möglichst detaillierter Absturzbericht. Scheut euch also nicht, uns die erichte zukommen zu lassen, damit wir die Probleme möglichst schnell beheben können. Wer sich auf andere Spieler verlässt und uns seinen Absturzbericht vorenthält, tut sich selbst keinen Gefallen und hindert uns an unserer Arbeit – seid bitte nicht der- oder diejenige. Jeder Absturz ist würdig, an uns berichtet zu werden. Jeder Bericht wird ernst genommen und jedes Stück Information ist nützlich.

Darüber hinaus könnt ihr natürlich alle Probeme den Damen und Herren unseres wunderbaren Supportteams melden, die sie allesamt erfassen und in ihren Berichten an die entsprechenden Stellen weiterleiten.

Wir sehen uns auf dem Schlachtfeld!

Nach oben

Sei dabei!