Sicarius

Fremdwort: Effizienz

Na? Schon alle guten Vorsätze für das neue Jahr wieder über den Haufen geworfen? Dachte ich mir. Warum nehmt ihr euch auch immer so unerreichbares Zeugs wie “FIFA13 durchspielen” oder “Dark Souls ohne einmal zu sterben beenden” vor? Meine Vorsätze sind da viel realistischer. “Habe 500 Spiele gleichzeitig installiert” und “Stapele 150 Spielepackungen so, dass sie beim kleinsten Windhauch umfallen” habe ich schon erfolgreich umgesetzt. Daran solltet ihr euch ein Beispiel nehmen!

Ja, so ist das

Herstellerbild zur Xbox 360-Version von The Witcher 2Und wenn wir sowieso schon bei Beispielen sind: In der aktuellen Making Games (01/2013) ist mal wieder ein interessanter Artikel drin. Der heißt “Porting The Witcher 2 on Xbox 360” (ja, im deutschen Magazin erscheinen auch englische Texte) und wie der Name schon andeutet, berichten darin Senior Programmers und Lead Technical Artists von CD Projekt RED über die Probleme und dazugehörigen Lösungen bei der Portierung des PC-Rollenspiels The Witcher 2: Assassins of Kings auf Microsofts Konsole. Soweit ich es gesehen habe, ist der Artikel leider (noch?) nicht online verfübar.

Ziel war es logischerweise das Spiel auch auf der schlechteren Hardware so gut wie möglich aussehen zu lassen. Im Prinzip erwarten euch beim Lesen auch keine großen Überraschungen. Verringerte Polygondichte, überarbeitete Shader- und LOD-Systeme und mehr Statik statt Dynamik vor allem bei Licht- und Schattendarstellung — so lässt sich der grundlegende Tenor des sieben Seiten langen Reports zusammenfassen. Was ich an dem Artikel so interessant finde, sind deshalb vor allem die Aussagen zwischen den Zeilen. Wenn ich Sätze lese wie “The original foliage system on the PC was built the easiest way possible”, “The performance of the garbage collection was really bad at the beginning” oder “In the PC Version of the game we addressed that problem to a certain degree”, dann lässt heißt das für mich wieder einmal: “Der PC hat ja genug Power, da können wir uns das ganze Performaneoptimierungszeugs ja sparen und schludern das Zeug einfach irgendwie hin. Solang es gut aussieht, ist es doch egal”.

Prozess-Optimierung? Zu teuer!

Das ist eine generelle Einstellung in der Softwareentwicklung, die mich nervt. Da wird im Hardwarebereich versucht mit jeder Iteration noch mehr Energie zu sparen und dann kommen die Softwareentwickler her und verschwenden die verfügbare Rechenleistung nach allen Regeln der Kunst. Ja, Optimierungen kosten Zeit und damit auch Geld. Aber was kommt am Ende besser bei den Kunden an? Ein Programm/Spiel, welches horrende Hardwareanforderungen hat und somit nur bei einem geringen Teil der Käufer tatsächlich gut funktioniert und ansonsten nur Probleme verursacht (= mehr Supportleistung von Seiten des Publishers/Entwicklers). Oder doch eher das Programm/Spiel, das so gut optimiert ist, dass es auch auf schwächeren Systemen läuft und somit einen größeren, potentiellen Kundenkreis hat? Oder gehen wir noch einen Schritt weiter: Das Addon oder der nächste Teil mit der gleichen Engine? Was man sich da als Entwickler zusätzlich investieren muss, nur weil man beim ersten Mal “zu faul” war es richtig zu machen, ist sicherlich auch nicht gerade wenig.

Klar, hinterher ist man immer schlauer. Aber dennoch bin ich mir sicher, dass mit etwas weniger Crunch und etwas mehr Auge auf solche Aspekte vieles sofort entdeckt und behoben werden könnte und nicht erst beim nächsten Spiel. Es gibt auch einige Studios, die haben das verstanden. Blizzard und Valve zum Beispiel sind wohl die beiden Garanten wenn es darum geht Spiele zu produzieren, die gut bis sehr gut aussehen und trotzdem auch auf weniger aktuellen Rechnern laufen. Richtig gut hatte das CroTeam mal drauf. Die ersten beiden Serious Sam-Titel beziehungsweise die dazugehörige Engines konnten nicht nur grafisch beeindrucken — sie liefen auch auf jedem noch so beschissenen (leichte Übertreibung) PC absolut flüssig. Bei Teil 3 hat es aber leider nicht mehr so hingehauen.

Die Erkenntnis

Aber das sind selbst unter den großen Entwicklern und Publishern immer noch eher die Ausnahmen als die Regel. Und Konsolenentwickler sind die schlimmsten von allen. Ja, es ist zum Teil sicherlich mangelnde Erfahrung der Grund warum eine PC-Umsetzung so schlecht ist und natürlich ist die Hardware-Architektur im Detail eine andere. Es liegt aber garantiert auch daran, dass ihr Code schon in der Originalversion so beschissen ist, dass sie ihn für den PC übertrieben gesagt komplett neu schreiben müssten. Aber da der PC ja genug Power hat, braucht man sich da ja keine weiteren Gedanken machen. Einfach die Systemanforderungen ein bisschen höher definiert und schon kann sich der Kunde nicht mehr beschweren. Oder die Schuld wird den Treiberherstellern zugeschoben. Fantastisch.

Das ist wie bei uns in der Firma und unseren Prozessen: Egal wie viel Optimierungsbedarf es gibt, es läuft doch (“haben wir schon immer so gemacht!”), also getreu dem Motto “Never change a running system” bloß nichts ändern. Da macht die Arbeit erst so richtig Spaß.

Bis Montag.

6 Kommentare

Und spontan ärgere ich mich den Beitrag eine Woche vor Weihnachten nicht kommentiert zu haben und stattdessen liegt hier nur noch das halbfertige Dokument rum. Ich muss unbedingt mal aufholen. Obwohl im Absatz "Prozess-Optimierung? Zu teuer!" grundsätzlich nichts Falsches steht und man die Thematik in der Industrie auch in allen anderen Bereichen schon hat, wurde da meiner Meinung noch nicht weit genug gedacht. Allerdings stimme ich auch nicht mit deiner Schlussfolgerung überein. Ich glaube ich schreibe erst einmal das Alte fertig, bevor ich hier etwas dazu schreibe, sonst fehlt dann die Grundlage. Außerdem interessiert mich was Rondrov dazu denkt. :D

Naja, der dritte Sam läuft bei mir zumindest auf dem Notebook mit kleinem i5 und AMD HD6630M sehr gut und geschmeidig. Das halte ich angesichts der gar nicht so schlechten Grafik für durchaus passabel optimiert.

Naja, seit ich thedailywtf.com les (und das ist schon verdammt lange) wundert mich gar nichts mehr. Und da geht's meist um Business Software, wo der Zeit- und Kostendruck evtl doch noch geringer ist und es vorallem mehr auf Langlebigkeit ankommt. Game-Code ist ja dann doch eher wegwerf code.

Und ja, Optimierung ist teuer. Richtig teuer. Nicht in der Richtung: "Dann wirds halt paar Prozent teurer und nen Monat später" sondern volle Kanone. Blizzard und Valve lassen sich allein das vermutlich ein Vermögen kosten. Einmal direkt und andererseits durch die ewigen Verschiebungen bzw. die unglaublich langen Release-Zyklen. Das können sich die kleinen einfach nicht leisten, die stehen schnell mit dem Rücken zur Wand. Ich geh davon aus, dass auch CDProject es sich nicht leisten konnte Witcher2 noch länger auf sich warten zu lassen. Und auch wenn man sich dadurch später viel ersparen kann, bringt einem das nichts, wenn man JETZT Geld braucht, weils ansonsten vorbei ist.

Und was sind denn immer die größten Bugschleudern bzw. Horrorvorstellungen was Performance angeht? Rein subjektiv würd ich sagen Produkte von nicht US oder Kanadischen Studios und Konsolen Ports. Dass z.B. deutsche Produktionen einfach nicht mit so großem Budget ausgestattet sind (ich denke gerade an JoWood Zeiten) und dann gerade sowas auf der Strecke bleibt ist wirklich nichts neues.

Und bei Konsolen Ports wundert mich das auch nicht. Da gehts nicht darum den PC Spielern ein tolles Spiel abzuliefern, sondern einfach noch mal ein bisschen Geld in die Kassen zu spülen ohne großen Aufwand. Ich hab irgendwo gelesen, dass bei GTA4 die PC Version gerade mal 5% zum gesamten Umsatz beigetragen hat (keine Ahnung wie verlässlich die Zahlen sind). Da sollte klar sein, dass man ungern noch mal fast so viel Geld wie für die Konsolenversionen in die Hand nimmt. Und was dabei rauskommt ist uns allen bekannt. Ist dann natürlich auch ein Teufelskreis, ob das für zukünftige PC Versionen gute Werbung ist sei mal dahingestellt. Liefert aber tolle Argumente einfach gar keine PC-Version mehr zu bringen.

Mal zu den Kosten, wir haben das irgendwann mal gelernt, find jetzt aber die Unterlagen nicht (= bin zu faul zum raussuchen), daher keine genauen Zahlen sondern nur das wie ichs in Erinnerung behalten hab:

Im Software Projektmanagement unterscheidet man verschiedene Güteklassen von Software. Da gehts erstmal nur um Bugs, aber nicht optimierter Code ist letztendlich auch nix anderes als ein Bug. Die Klassen sehen ungefähr so aus:
Durchschnittlich 1 verbleibender Bug pro 100 Zeilen Code
Durchschnittlich 1 verbleibender Bug pro 1000 Zeilen Code
Durchschnittlich 1 verbleibender Bug pro 10000 Zeilen Code

Zwischen den Klassen steigt der Aufwand den man treiben muss exponentiell. Die höchste Klasse ist für höchst-sicherheitskritischen Code, also sowas wie Space-Shuttle oder Kernkraftwerk-Steuerungssoftware (und ja, auch da verbleiben so einige Bugs…). Da will man mit Games ganz bestimmt nicht hin und das verlangt auch keiner. Aber um mal aufzuzeigen was da für ein Aufwand dahintersteckt: Für die höchste Stufe schafft man als Programmierer im Durschnitt in einer Mann-Stunde nichtmal mehr eine einzige Zeile Code. Games haben inklusive Engine mehrere hundert Tausend bis Millionen von Zeilen Code. (Die Quake 3 Engine hat zwischen 300 und 400 Tausend, die Unreal 3 Enginge angeblich über 2 Mio).

Das klingt jetzt alles ein bisschen pro-Hinschludern, aber mich persönlich nervt auch weniges mehr als furchtbar optimierte Spiele und bin unter anderem auch deswegen großer Blizzard Fan. Wollte nur mal die andere Seite der Medaille aufzeigen, dass das eben alles nicht so einfach ist.

So sehe ich es auch. Ich glaube es einfach nur als faules Hingeschludere hinzustellen, vereinfacht die Situation zu stark. Vor allem aber richtet es den Finger in die falsche Richtung. Eher sollte man dafür sorgen, dass es weiterhin erleichtert wird eigene Projekte derart zu finanzieren und vor allem sollte man die normalen Unternehmensgründungsregeln anlegen. Auch dieselben Hilfen. Andere Zweige in Deutschland wie Musik und Film beispielsweise, werden auch trotz geringer Rentabilität mitgetragen. Vor allem bei Film gibt es eine massive Kluft zwischen den paar Titeln, die überhaupt der Öffentlichkeit bewusst werden und direkt finanziell positiv einschlagen und dann noch den großen Brutkasten voller unterdurchschnittlicher staatlich mitfinanzierter Suppe…

Natürlich ist der Aufwand/Ertrags-Kreislauf der Hauptgrund, der den Software Entwickler dazu bringt seit Ewigkeiten gegen den gleichen Teufelskreis anzuschwimmen, aber was soll man machen? Rein subjektiv für das System betrachtet, bringt es der Mehraufwand nicht. Rein aus ethischen Gesichtspunkten sollte jedem Programmierer aber die Optimierung seines Codes am Herzen liegen. Allein wie viele Programme erst einmal alle Standardcodezeilen mit sich mitschleppen und den Kurzzeitspeicher unnötig füllen ist aus theoretischer Sicht schon Wahnsinn.

(Die Dev-Videos zum Freelancer Mod Freeworlds zeigen, was bei dem intellektuell sehr anspruchsvoll zu programmierenden Spiel, trotz des Know-hows der Entwickler, relativ simple Verbesserungen des Codes nicht durchgeführt wurden. Und Freelancer läuft auch auf fast jedem Eimer. Laut der Modder resultieren viele ihrer Verbesserungen (vor allem was visuell möglich ist) aus der Anpassung einer zweiten Texturschicht, die dann beispielsweise Reflektionen. Eine Heidenarbeit, mit geringer optischer Verbesserung, da man das auch mit einer künstlichen Reflektion. Für Insider jedoch beeindruckend.)

Aus der praktischen Sichtweise sind es doch meistens Codezeilen, die einfach so vom Hauptprogramm importiert werden, weil das viele Entwickler gar nicht anders kennen. Dies hat zur Folge, dass die kaum angepasste Standardbereinigung während der Laufzeit, dies nicht einmal erkennen und ihren Job machen könnte. In der Anwendung haben aber solche Sachen einen zu geringen Einfluss, da wir mittlerweile mehr als genug Zwischenspeicher haben und Fehlerquellen heutzutage anders abgefangen werden. Als 1GB RAM der Standard waren, war dafür schon mehr als genug Platz übrig. Was ist der aktuelle Standard? Die Entwicklung ging mir zu schnell… jeder halbwegs brauchbare Spiele-Rechner läuft doch mit 2-4 herum… Wenn ich das im aktuellen Witcher 2 Fall richtig verstehe wurde auf die Garbage Collection sogar fast komplett verzichtet, da die ausführliche Filterung mehr Ressourcen verbrauchen, als effektiv freigeben würde. Die Smartphone Entwicklung hat das Ganze zwar ein wenig verbessert, da man hier wieder schauen musste, womit man auskommt, aber wir PC Gamer werden kaum etwas davon merken (außer, dass Java ein paar nette Gimmicks bekommen hat…).

Muss ja seine Gründe haben, warum man hardware-seitig dann irgendwann wieder aufstocken muss, um in den Genuss moderner Bugspiele zu kommen :tongue:

so ist es leider :laughing: :laughing:
die langsam anlaufende gw2 optimierung ist leider das passende beispiel für das letzte jahr ;)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

:smile: :sad: :wink: :tongue: :-x :roll: mehr »