RSS HackerNoon
Folgen
Optimierung des stetig wachsenden Spielstands in einem 11 Jahre alten Spiel
War Robots speichert Spieldaten, bekannt als 'Balances', für seine riesige Auswahl an Inhalten. Diese 'Balances' sind in Meta und Kern-Gameplay unterteilt, mit separaten Sätzen für den Standard- und den 'Skirmish'-Modus. Im Laufe von elf Jahren hat das Spiel eine beträchtliche Menge an Inhalten angesammelt, was zu großen Dateigrößen der 'Balances' führte. Ursprünglich betrug die Meta-Balance 9,2 MB und die Kern-Balance 13,1 MB, was für Spieler insgesamt 44,6 MB zum Herunterladen bedeutete.Um dies zu beheben, analysierte das Entwicklungsteam die Dateigrößen der 'Balances' und entdeckte, dass Zeichenketten einen wesentlichen Teil ausmachten. Sie entwickelten Werkzeuge zur Identifizierung von doppelten Zeichenketten, die sehr häufig vorkamen. Die Lösung bestand darin, einen eindeutigen Zeichenkettenspeicher für jede 'Balance' zu erstellen und direkte Zeichenketteninstanzen durch Indizes zu ersetzen. Dies reduzierte die Verwendung von Zeichenketten erheblich und verbesserte die Effizienz.Eine weitere Optimierung beinhaltete die Überarbeitung des Datenprotokolls, der Übergang von MessagePack mit Zeichenketten-Schlüsseln zu einem binären Byte-Array mit numerischen Schlüsseln. Leere Sammlungen wurden ebenfalls entfernt, was die Datengröße und die Verarbeitungszeit weiter reduzierte. Neue Funktionen wurden hinter 'Toggles' implementiert, was die gleichzeitige Unterstützung alter und optimierter 'Balance'-Versionen ermöglichte. Strenge Tests mit Reflektion stellten sicher, dass beide 'Balance'-Versionen identische Werte erzeugten.Diese Optimierungen führten zu erheblichen Reduzierungen der Dateigröße, wobei die Meta-Balance auf 1,28 MB und die Kern-Balance auf 2,22 MB sank. Auch die Deserialisierungszeiten wurden drastisch verbessert, und der auf der Clientseite benötigte Speicher verringerte sich. Das Team kam zu dem Schluss, dass eine sorgfältige Datenverwaltung und die Beseitigung von Redundanz, insbesondere bei Zeichenketten, für eine effiziente Datenübertragung und Kosteneinsparungen von entscheidender Bedeutung sind.