Unser Ziel bei Conqueror's Blade ist es, eine Welt zu schaffen, in der ihr euren Traum von der Eroberung von Ländern und dem Sieg über andere Armeen erfüllen könnt. Zu diesem Zweck haben wir riesige Gebiete geschaffen, Mauern, die das Land im Zickzack durchziehen, und Schlachten, in denen Tausende von Soldaten aufeinandertreffen, Pfeile aufeinander abschießen und sich mit Artilleriefeuer belagern.

Die Schwierigkeit von Massenschlachten

Riesige Karten, eine Vielzahl von Charakteren, Gegenständen und Spezialeffekten erfordern eine erstaunliche Menge an Berechnungen im Backend des Spiels. In den drei Jahren seit dem Start haben wir immer wieder neue Inhalte, Einheiten und größere Karten sowie eine Reihe von grafischen Verbesserungen eingeführt. All das belastet sowohl die Software als auch die Hardware.

Die Interfaces für Einheiten, Helden und Karten sind alle mit hochkomplexen Systemen verbunden. All das gleichzeitig zu bewältigen, belastet die CPU in der Hitze des Gefechts stark. Um die FPS zu verbessern, haben wir dafür gesorgt, dass so viele Algorithmen wie möglich parallel laufen und so viel wie möglich aus den Multi-Core-CPUs herausgeholt wird. Dies hat dazu geführt, dass das Spiel die CPU stark beansprucht und die Rendering-Fähigkeiten der GPU überfordert. Hinzu kommt die schiere Masse an hochwertigen Texturen, die verarbeitet werden müssen, was bedeutet, dass die meisten Spieler/innen nur wenig GPU-Speicher zur Verfügung haben. Andererseits steigen mit der Verbesserung der Spieloberfläche, der Kämpfe und der Szeneneffekte auch die Anforderungen an die GPUs beim Rendering. Bei Spielen, die eine große Anzahl von hochauflösenden Texturen verwenden, erhöht sich auch der Bedarf an Videospeicher. Diese Faktoren führen dazu, dass diese Spiele während des Betriebs mehr GPU-Rechenressourcen und Videospeicher benötigen. Deshalb werden wir bei der zukünftigen Entwicklung mehr auf die Optimierung der GPU achten, um ein reibungsloses Spielerlebnis zu gewährleisten.

Darüber hinaus belasten umfassende Szenen und eine große Anzahl von Charakteren die Speichernutzung erheblich. Oft müssen wir unseren Speicherverbrauch zu Gunsten der Verarbeitungsleistung erhöhen. Wir geben jedoch zu, dass unsere derzeitige Strategie für die Optimierung der Algorithmen, die eines unserer Hauptziele ist, Defizite aufweist.

Während wir weiterhin neue Inhalte erstellen und hinzufügen, erhalten wir auch immer mehr Feedback zu Frame-Drops, Lags und Leistungsproblemen. Wir wissen sehr wohl, wie wichtig Leistung ist. Trotzdem müssen wir letztendlich versuchen, den Sweet Spot für Leistung und Grafik finden.

Wir möchten im Folgenden näher darauf eingehen, was wir getan haben, um die Leistung zu verbessern, und unsere Pläne für die Zukunft vorstellen.

Was sich bei Eternal getan hat

Jede Aktion einer jeden Einheit, sei es Bewegung, Angriff oder Einsatz von Fähigkeiten, beansprucht Systemressourcen, die auf der Qualität ihrer Spezialeffekte basieren. Werden Spezialeffekte abgespielt, hängt die Belastung des Systems davon ab, wie viele Partikel es enthält. Daher ist die Anzahl der Partikel der intuitivste Weg, um die Auswirkungen von Spezialeffekten auf die Leistung zu messen. Wir werden die ursprünglich zu hohe Anzahl von Spezialeffektpartikeln auf ein vernünftiges Maß reduzieren, ohne das Spielerlebnis insgesamt zu beeinträchtigen, und so die Spielleistung verbessern.

Einheiten & Kämpfe

Bei vielen Spielern kommt es zu Frame-Einbrüchen, wenn die Miliz von Zykalia ihre Explosivgeschosse einsetzt. Das liegt daran, dass der Spezialeffekt dieser Fähigkeit zu viele Partikel verwendet.

Um die Leistung insgesamt zu verbessern und gleichzeitig gute visuelle Effekte zu gewährleisten, haben wir in der Season Eternal die Anzahl der Partikel bei vielen Effekten, einschließlich Explosionen, reduziert. Hierdurch hat sich die Leistung unmittelbar verbessert. Im Folgenden findet ihr eine Aufstellung über die Anzahl der Partikel vor und nach der Änderung.

  • Köpfen (Silahdars): 410 Partikel (vorher 1.200)
  • Todeshieb (Silahdars): 890 Partikel (vorher 1.120)
  • Letztes Gefecht (Shifu-Garnison): 420 Partikel (vorher 1.120)
  • Granaten werfen (Shenji-Grenadiere): 210 Partikel (vorher 580)
  • Miliz von Zykalia: 118 Partikel (vorher 310)
  • Kartätschgeschütz (selten): 2.700 Partikel (vorher 6.400)
  • Raserei (Berserker): 370 Partikel (vorher 1.050)
  • Spezialeffekt von Einheiten, die von "Kriegsgott" (Glefe) betroffen sind: 240 (vorher 410)

Wetter & Objekte

Die große Anzahl von Objekten auf jeder Karte trägt zur Immersion bei und beeinflusst auch strategische Entscheidungen. Jede Mauer, jedes Hindernis und jedes Stückchen Vegetation haucht der Karte Leben ein. Natürlich beanspruchen viele Objekte und große Ansammlungen von Einheiten viel Leistung, was bei vielen Kämpfen zu niedrigen Bildraten geführt hat.

Um dies zu beheben, haben wir das Management der dynamischen Objektleistung für Gebiete, in denen oft große Schlachten stattfinden, verbessert und die Rendering-Verzögerung stark reduziert. Das führt unter diesen Umständen zu wesentlich stabileren FPS.

Künftige Leistungsoptimierungen

Wir haben bereits in vielen Bereichen des Spiels Leistungsverbesserungen vorgenommen, die insgesamt zu einer leichten Erhöhung der FPS geführt haben. Natürlich gibt es immer noch einige problematische Stellen. Viele davon befinden sich an Schlüsselstellen, was das Spielerlebnis negativ beeinflusst.

Wir führen derzeit große Tests durch, um gezieltere Optimierungen vorzunehmen, und planen Folgendes:

  • Optimierung der zugrundeliegenden Schnittstellenalgorithmen, um komplexe Algorithmen zu vermeiden, die die Leistung verringern und die Speichernutzung beeinträchtigen. Dazu gehören die Minikarte, die Fähigkeitenleiste und die Einheiteninformationen.
  • Die Wiedergabetreue (Rendering Fidelity) wirkt sich darauf aus, wie Dinge im Spiel aussehen. In den meisten Fällen muss das Rendering der verschiedenen Ebenen nicht auf demselben Treueniveau sein. Wenn ihr beispielsweise an den Mauern von A in der Hohen Feste kämpft, müsst ihr nicht die perfekte Sicht auf die Basisflagge haben, da das die Leistung verringern würde. Die aktuelle Wiedergabetreue deckt jedoch nicht alle Situationen ab, daher werden wir weitere Rendering-Ebenen hinzufügen, die von der Entfernung zu Objekten auf der Karte ahängen. So können wir beispielsweise Objekten in 100 m Entfernung eine Wiedergabe von 1, Objekten in 50 m Entfernung eine Wiedergabetreue von 2, Objekten in 10 m Entfernung eine Wiedergabetreue von 3 und Objekten in 5 m Entfernung eine Wiedergabetreue von 4 verleihen. Dies verringert die Rechenanforderungen für das Rendering und damit die GPU-Nutzung.
  • Neuerstellung des Codes von Stoff- und Physiksimulationen, um die Leistung vieler kleinerer Module wie Haare, Speerquasten, Gewandsäume, Umhänge usw. zu optimieren.
  • Kontinuierliche Verringerung der Anzahl an Partikeln für Spezialeffekte, um ein besseres Balancing von Grafik und Leistung zu generieren.
  • Bessere Verteilung der Texturqualität, um Leistung und Qualität besser auszubalancieren und den Speicherverbrauch weiter zu reduzieren.
  • Verbesserte Grafikeinstellungen durch Hinzufügen weiterer Optionen und Konfigurationen bei gleichzeitig besserer Erkennung der Hardware für verbesserte Standardeinstellungen.

Jede einzelne der oben genannten Verbesserungen ist komplex und wird viel Zeit in Anspruch nehmen. Je mehr Inhalte wir hinzufügen, desto mehr unbekannte Variablen fügen wir der Gleichung hinzu. Trotzdem freuen wir uns, diese Themen mit euch zu teilen und zu diskutieren. Wir kämpfen seit langem mit diesen Themen und erhalten zahlreiche Fragen dazu, die wir mit Taten und konkreten Ergebnissen beantworten möchten. Wir wissen, dass die Bekämpfung von Leistungsproblemen viel Zeit in Anspruch nehmen wird, aber wir werden uns trotzdem weiter verbessern und ein Problem nach dem anderen in Angriff nehmen. Wir haben einen langen Atem und sind bereit, uns dieser Herausforderung zu stellen!

Darüber hinaus möchten wir euch auch dazu einladen, mit uns daran zu arbeiten. Wir haben hierfür vor, die Ergebnisse unserer Optimierungen in offenen, Alpha- und Beta-Tests zu auf die Probe zu stellen. Schon bald werden wir euch mehr darüber verraten, wie dies umgesetzt werden soll! Auch in zukünftigen Entwicklerblogs werden wir darüber berichten, wie es um unsere Leistungsoptimierungen steht.