Wenn ihr mal in irgendwelchen Onlineforen Leuten begegnet seid, die an Videospielen arbeiten, dann wird euch aufgefallen sein, dass die häufig auffallend überzeugt von ihrer eigenen Befähigung sind.

Sie halten ihre Probleme für die schwierigsten, ihre Lösungen für die schlauesten, ihren Code für den zeitkritischsten und ihre Algorithmen für die besten.

Ich habe das noch nie verstehen können, aber das mag an meinem Spielegeschmack liegen. Wer mit Mass Effect 3 und Bethesda-Spielen großgeworden ist, der findet die Idee eher abwegig, dass Spieleentwickler besonders fähig sind. Das stürzt alles ab, wenn du kurz blinzelst. Wenn du kurz durch eine Tür in ein Zelt gehst und dann wieder raus, dann hast du ne Minute Wartezeit, weil er die ganze Welt neu lädt, etc.

Es gibt da fähige Leute und trickreiche Lösungen, klar, aber der meiste Code ist Mist, genau wie überall sonst auch. Gerade kam dieser tolle Artikel über GTA Online an mir vorbei. Das Game ist jetzt 6 Jahre alt und lädt auf der Hardware des Autoren 6 Minuten lang. 6 Minuten!! Man stelle sich das mal vor, Firefox würde so lange brauchen! Ich krieg ja schon bei 5 Sekunden Ladezeit Wutpickel!

Dieser Typ hat sich aber nicht nur aufgeregt sondern mal ein paar Reversing-Tools angeworfen. Stellt sich raus: Die Wartezeit kommt davon, dass das Spiel 10 MB JSON parsed. Und zwar mit strlen, scanf und einer "accidentally quadratic" Datenstruktur. Falls euch accidentally quadratic nichts sagt: Googelt das mal. Das heißt, dass bei einem Algorithmus die Rechenzeit quadratisch mit der Anzahl der Elemente steigt.

Das ist leider nicht ungewöhnlich, dass solcher Code ausgeliefert wird, weil das bei kleinen Datenmengen kein Problem ist und man dann später erstmal die Crashes mit Priorität bearbeitet und Performancekram liegen lässt. Im Falle von GTA Online sechs Jahre lang.

Was hat der Typ also gemacht? Einen kleinen Hack, der diese Funktionen ersetzt. Damit war seine Ladezeit dann runter auf knapp 2 Minuten. Der Fix hätte Rockstar (haha, die heißen auch noch Rockstar!! Wie geil ist DAS denn! Und verkacken dann sowas triviales!) vielleicht ne Stunde gekostet. Stattdessen scheißen sie drauf und verplempern Jahrzehnte an Lebenszeit ihrer Kunden.

Spieleentwickler hab ich ja echt gefressen. Das sind so Leute, die Fehler nicht abfangen, weil das zuviel Performance kosten würde. Aber immer Ausreden zur Hand, wieso ihr Code so unfassbar kacke ist. Ja, äh, das war der Crunch! Zeit war knapp! Geld war alle! NA DANN MACHT HALT KEINE UNREALISTISCHEN PROJEKTE, IHR DEPPEN!

01.03.2021