Warum gibt es so wenige Spiele, die CPU spezifische Binarys anbieten?



  • Die Spiele die das wirklich tun kann man an der Hand abzählen.
    So weit ich mich erinnern kann bot z.B. das erste Riddick Spiel (2004) mehrere Binarys an. Ansonsten fallen mir spontan keine weiteren CS Titel ein.

    Heutzutage kann man ja schon froh sein, wenn man eine 64 Bit Version eines Binarys für ein Spiel bekommt, aber ansonsten gibt es kaum Spiele die die verschiedenen CPUs und ihre Features zum maximal möglichen ausnutzen.
    Sind die Compiler so schlecht, dass das kaum etwas bringt oder haben moderne 3d Engines per Assembler eingebaute CPU spezifische Instruktionen die zur Laufzeit der CPU entsprechend ausgewählt werden?

    Ein AMD64 Binary ist zwar wesentlich besser, als ein Binary auf dem Stand einer Pentium CPU, aber inzwischen sind ja auch schon wieder neue CPU Features dazugekommen. Z.B. SSSE3, SSE4.1 & SSE4.2, SSE4.a (AMD), AVX, AVX2 (noch Intel only), FMA3 (Intel), FMA4 (AMD), ABM (AMD), BMI1, BMI2 (noch Intel only)

    Zumindest die Bit Manipulation Instruction Sets und AVX2 (-> 3 Operanden auch für Allzweckregister) dürften für Spiele doch etwas bringen.

    Zwar sind viele Konsolenports auf einem PC schnell genug, aber gerade bei den PC only Spielen, bei denen die CPU Performance kritisch ist, könnten CPU spezifische Kompilate je nach Fall und Spiel durchaus einen kleinen Vorteil bringen. Insbesondere wenn das Spiel schlecht auf Multicore CPUs skaliert und die Single Threaded Leistung umso wichtiger ist, dann kann das ein oder andere Prozent mehr Speed ja durchaus etwas bringen.

    Von der Handhabung her würde ein Starterprogramm oder ein Script genügen, das entsprechend der vorhandenen CPU dann das passende Binary startet.
    Und falls es Schwierigkeiten mit einem Binary gibt, könnte man einen sicheren Defaultmodus anbieten, bei dem ein normales nicht so optimiertes Binary gestartet wird.
    Auch rechtlich könnten sich Firmen absichern, in dem sie einfach das normale Binary als Supported definieren und die optimierten Binarys als freiwillige Leistung. Dann kann sich auch niemand beschweren, wenn das optimierte Binary nicht zuverlässig läuft.


  • Mod

    Wer sagt dir, dass die Spiele das nicht sind? Der Intelcompiler macht das was du beschreibst beispielsweise vollautomatisch. Dass das im Hintergrund passiert merkst du beim Compilieren kaum und als Benutzer überhaupt nicht.

    Außerdem musst du unterscheiden, welche Teile der CPU-Auslastung vom Spieleprogramm selbst direkt verursacht werden und welcher Teil vom Spiel verursacht wird, weil es teure, CPU-intensive Funktionen der API aufruft (die dann hochoptimiert sind). Eine Spieleengine macht heutzutage schließlich kaum noch was selbst, außer der Spielelogik, sondern wälzt vieles auf die API ab.


Anmelden zum Antworten