• IT-Karriere:
  • Services:

GTA Online: Per Reverse Engineering gegen nervige Spiele-Ladezeiten

Ein Programmierer hat die langen Ladezeiten in GTA Online mit einem einfachen Hack behoben. Hersteller Rockstar kommt dabei nicht gut weg.

Artikel veröffentlicht am ,
In GTA Online ist offenbar nicht alles so schnell, wie es sein könnte.
In GTA Online ist offenbar nicht alles so schnell, wie es sein könnte. (Bild: Rockstar Games)

Das Videospiel GTA Online ist geradezu berühmt berüchtigt für seine teils extrem langen Ladezeiten, die laut Aussagen einiger Nutzer auch mal 20 Minuten oder noch mehr andauern können. Ein Entwickler, der nur unter dem Pseudonym T0st beziehungsweise Tostercx agiert, hat sich dieses Problems nun mit eher ungewöhnlichen Mittel angenommen und die Ladezeiten per Reverse Engineering untersucht. Die Ergebnisse stellt T0st in einem sehr ausführlichen Blogpost vor, inklusive einem Beispiel-Patch, der die Ladezeiten im Konkreten Fall um rund 70 Prozent verbessert.

Stellenmarkt
  1. Bertrandt Ingenieurbüro GmbH München, München
  2. Brilliant AG, Gnarrenburg

Begonnen hat die Untersuchung dabei mit dem Task-Manager unter Windows, der für die lange Ladezeit einen einzigen voll ausgelasteten CPU-Kern zeigt und sonst keinerlei Aktivität, also weder Netzwerkverkehr noch I/O. Das spricht nicht für schlechten Code sondern für einen Fehler, der eigentlich nicht auftreten sollte.

Mit Hilfe von Profilern, einem Disassembler und der Möglichkeit, den in den Speicher geladenen Code zu untersuchen, waren mit Sscanf und Strlen zwei klassische C-Funktionen schnell gefunden, die zumindest für einen Teil der sehr langen Ladezeiten verantwortlich sind. Damit wird offenbar eine einzige JSON-Datei geparst, die rund 10 MByte groß ist und etwa 63.000 Einträge beinhaltet. Dabei handelt es sich wohl um einen Katalog von Elementen, die in dem Online-Spiel gekauft werden können.

Zwei Mal quadratisches Wachstum

Das Problem des implementierten Parsers ist jedoch, dass für jeden einzelnen Abruf eines Werts in der JSON-Datei immer wieder neu die Länge der gesamten Datei per Strlen bestimmt wird. Diese naive Vorgehensweise ist ein wohl immer wieder auftretender Fehler bei der Nutzung von Sscanf und führt letztlich zu einem quadratischen Wachstum der Laufzeit des Parsers.

Golem Akademie
  1. Einführung in die Programmierung mit Rust
    19.-22 April 2021, online
  2. C++ Clean Code - Best Practices für Programmierer
    7.-11. Juni 2021, online
Weitere IT-Trainings

Die so gelesenen Werte werden darüber hinaus offenbar in einem Array oder einer Liste gespeichert, wobei beim Eintragen neuer Werte das gesamte Array für einen Vergleich mit dem neuen Wert komplett durchlaufen wird. Auch hierbei handelt es sich um ein quadratisches Wachstum. Alternativ ließe sich hier eine Hashmap verwenden, die diesen Prozess deutlich beschleunigt. Ebenso ist bekannt, dass die Einträge in der JSON-Datei einzigartig sind, ein Vergleich mit anderen Elementen zum Eintragen in das neue Array ist also überhaupt nicht notwendig, aber offenbar trotzdem umgesetzt worden.

Grand Theft Auto V Premium Edition - [PlayStation 4]

Zur Veröffentlichung des Spiels ist das quadratische Wachstum der Funktionen möglicherweise nicht direkt aufgefallen, da die JSON-Datei noch vergleichsweise wenig Einträge umfasste. Je größer die Datei geworden ist, umso größer ist dann aber auch das Problem beim Verarbeiten der Datei mit den langsamen Algorithmen geworden. Das hätte Rockstar eigentlich sehr schnell auffallen müssen und wäre wohl durch ein Ändern der Implementierung ebenso schnell lösbar gewesen. Der Hersteller von GTA Online hat darauf aber verzichtet.

Ohne Zugriff auf den tatsächlichen Quellcode lässt sich das Problem eigentlich nicht ohne Weiteres lösen. In dem Blogeintrag wird jedoch erklärt, wie dies durch einen eigenen kleinen Hack von T0st dennoch deutlich verbessert werden kann. Dazu wird Code eingeschleust, der die Länge der Strings einfach zwischenspeichert, statt diese immer wieder neu zu berechnen und diesen Wert dann zurück gibt. Ebenso wird der Code zum Vergleich beim Eintragen von Elementen schlicht umgangen. Die beiden grundlegenden Probleme sind damit nicht mehr direkt vorhanden und die Ladezeit verringert sich so deutlich.

Der Code des Patches von T0st steht zum Download auf Github bereit und lässt sich mit einer bestimmten Version von Steam und GTA Online nutzen. Dabei ist jedoch zu beachten, dass das Einschleusen von fremdem Code in Videospiele oft als Cheat oder Crack erkannt wird, insbesondere bei Online-Spielen. Das wiederum kann zum Sperren des eigenen Spiele-Accounts führen.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed


Anzeige
Top-Angebote
  1. (u. a. Cooler Master Masterkeys MK750 RGB für 119,90€, Chieftec CF-3012 3er RGB-Lüfter für 28...
  2. (u. a. Heckenschere für 117,99€, Hochdruckreiniger für 62,99€)
  3. (u. a. Box mit RGB für 44,79€, In-Ear-Kopfhörer für 30,59€)
  4. (u. a. PC-Gehäuse bis -50% und Cash-Back)

Tragen 05. Mär 2021 / Themenstart

Gerade die Ladezeit versuche ich immer schnell zu optimieren. Gerade als Entwickler oder...

Sportstudent 04. Mär 2021 / Themenstart

GTA V Online in a nutshell. Ist RDR2 Online wohl genau so schlimm?

frostbitten king 03. Mär 2021 / Themenstart

Eh aber wenn man so code schreibt is ziemlich offensichtlich dass hier eine lausige...

Tom01 03. Mär 2021 / Themenstart

Auf Stackoverflow gibt es sehr hochwertige Antworten zu Problemen. Die Antworten werden...

ath 03. Mär 2021 / Themenstart

Vorausgesetzt, dass dynamisch gegen libc/msvcrt gelinkt wird, was hier nicht der Fall...

Kommentieren


Folgen Sie uns
       


Monster Hunter Rise - Fazit

Das nur für Nintendo Switch (und später für PC) verfügbare Monster Hunter Rise schickt Spieler ins alte Japan.

Monster Hunter Rise - Fazit Video aufrufen
Programm für IT-Jobeinstieg: Hoffen auf den Klebeeffekt
Programm für IT-Jobeinstieg
Hoffen auf den Klebeeffekt

Aktuell ist der Jobeinstieg für junge Ingenieure und Informatiker schwer. Um ihnen zu helfen, hat das Land Baden-Württemberg eine interessante Idee: Es macht sich selbst zur Zeitarbeitsfirma.
Ein Bericht von Peter Ilg

  1. Arbeitszeit Das Sechs-Stunden-Experiment bei Sipgate
  2. Neuorientierung im IT-Job Endlich mal machen!
  3. IT-Unternehmen Die richtige Software für ein Projekt finden

Weclapp-CTO Ertan Özdil: Wir dürfen nicht in Schönheit und Perfektion untergehen!
Weclapp-CTO Ertan Özdil
"Wir dürfen nicht in Schönheit und Perfektion untergehen!"

Der CTO von Weclapp träumt von smarter Software, die menschliches Eingreifen in der nächsten ERP-Generation reduziert. Deutschen Perfektionismus hält Ertan Özdil aber für gefährlich.
Ein Interview von Maja Hoock


    Fiat 500 als E-Auto im Test: Kleinstwagen mit großem Potenzial
    Fiat 500 als E-Auto im Test
    Kleinstwagen mit großem Potenzial

    Fiat hat einen neuen 500er entwickelt. Der Kleine fährt elektrisch - und zwar richtig gut.
    Ein Test von Peter Ilg

    1. Vierradlenkung Elektrischer GMC Hummer SUV fährt im Krabbengang seitwärts
    2. MG Cyberster MG B Roadster mit Lasergürtel und Union Jack
    3. Elektroauto E-Auto-Prämie übersteigt in 2021 schon Vorjahressumme

      •  /