viele Fragen zur WoW-Grafikengine

Zur letzten Blizzcon wurden einige interessante Fakten der Grafikengine von WoW genannt. Zum einen das WoW auf der selben Grafikengine wie WC3 (& reforged) bassiert, wahrscheinlich in SC2 auch.
Zudem das die Engine (mal wieder) verbessert werden soll.

  • Wie Alt ist die Engine nun eigentlich? Die müsste doch nun 20 Jahre (oder mehr) alt sein
  • Wie heist die Engine? Warcraft-Engine, Blizzard-Engine, namenlose-Engine
  • Wovon profitier die die Engine am meisten? Rechenleistung pro CPU-Hertz, Rechenleistung pro GPU-Hertz, mehr CPU-Kerne
  • Unterstützt WoW multi-GPU?
  • Unterstützt WoW 3D-Ausgabe? Stereoskopie, Vive, Oculus, Nvidia ... dingsda

Die letzte Frage ist eher subjektiv .. aber Trotzdem
  • Wäre es nicht mal an der Zeit eine komplett neue Engine zu nutzen?
10.11.2018 00:37Beitrag von Santee
Zur letzten Blizzcon wurden einige interessante Fakten der Grafikengine von WoW genannt. Zum einen das WoW auf der selben Grafikengine wie WC3 (& reforged) bassiert, wahrscheinlich in SC2 auch.
Zudem das die Engine (mal wieder) verbessert werden soll.

Wie Alt ist die Engine nun eigentlich? Die müsste doch nun 20 Jahre (oder mehr) alt sein


Die ursprüngliche WoW-Engine dürfte ca. 22...24 Jahre alt sein, die aktuelle Engine ist ca. 3 Jahre alt.

Wie heist die Engine? Warcraft-Engine, Blizzard-Engine, namenlose-Engine


vermutlich Warcraft-Engine.

Die WoW-Engine basiert ursprünglich auf der Warcraft-III-Engine.

Wovon profitier die die Engine am meisten? Rechenleistung pro CPU-Hertz, Rechenleistung pro GPU-Hertz, mehr CPU-Kerne


Eindeutig CPU-IPC und MHz.

GPU ist am zweitwichtigsten, Multicore ist praktisch egal - selbst auf schnellen 2 Kern-CPUs läuft es besser als auf langsamen 4-Kern-CPUs.

Unterstützt WoW multi-GPU?


Das ist der Engine schlicht egal, WoW spricht DirectX 11/12 und Metal.

Wie gut oder schlecht DirectX / Metal seine Befehle dann an die Grafikkarte oder Grafikkarten verteilt, ist das Problem von DirectX / Metal, und nicht von WoW.

Unterstützt WoW 3D-Ausgabe? Stereoskopie, Vive, Oculus, Nvidia ... dingsda


Falsche Frage.

Unterstützt "normales" DirectX / Metal die 3D-Ausgabe wäre die richtige Frage.
Die letzte Frage ist eher subjektiv .. aber Trotzdem

Wäre es nicht mal an der Zeit eine komplett neue Engine zu nutzen?


Aus unternehmerischer Sicht: Nein.

Aus technischer Sicht wurde mit WoW Legion und BfA die Engine in zwei Schritten stark modernisiert (aber nicht komplett ersetzt) - 64bit-Code und DirectX12 / Metal.

Darf ich Dich daran erinnern, das die ursprüngliche Engine für DirectX 7 und 32bit-Single-Core-CPUs erstellt wurde, die anfangs auf 64bit-CPUs und/oder auf Pentium 4 mit Hyperthreading schlicht abstürzte und ein "zurückschalten" des PCs im BIOS zu 32bit-Single-Core zwingend notwendig war, um WoW starten zu können?

Das Spielprinzip von WoW wird sich selbst durch eine komplett neue Engine nicht entscheidend verändern, also braucht es keine "komplett neue" Engine, sondern nur Anpassungen an jeweils im Massenmarkt angekommene Technologien - oben erwähnte Stereoskopie gehört da übrigens nicht mit dazu.

Sie erhöhen also alle 3 Jahre (sprich: mit jedem neuen Addon) etwas die Texture-Details und Polygon-Dichte, und zwar im gleichen Maße, wie in diesen 3 Jahren die Leistungsfähigkeit der CPUs und GPUs steigt.

Somit bleibt das jeweils aktuelle WoW auf den jeweils aktuellen CPUs gut spielbar.

Ist wie mit Autos: Die sind seit ca. 100 Jahren mehr oder weniger rechteckige Kästen mit 4 runden Rädern an allen 4 Ecken, dazu irgend ein Antrieb, ein Lenkrad, Blinker und Scheinwerfer und meistens ringsrum Glasscheiben zum durchgucken. Der Rest sind irgendwelche Addons...

Wurde am prinzipiellen Aufbau von Autos in den letzten 150 Jahren irgendwas grundlegendes verändert? Nö. Selbst Elektro-Autos gab es schon vor 100 Jahren, und ist jetzt plötzlich scheinbar "der neueste Schrei".

Früher gab es für die meisten Autos einen fest angestellten Fahrer, inzwischen fahren die meisten Menschen selber, demnächst lassen wir uns von Computer-Fahrern durch die Gegend gondeln, und werden gemeinsam mit dem Leuten mit fest angestelltem Fahrer und den selber-Fahrern allesamt im gleichen Stau stehen. Also auch keine "komplett neue Engine" für das Prinzip "Automobil".

"Etwas komplett neues" wäre dann sowas wie beamen - DAS wäre eine "komplett neue Engine" für das Prinzip "Automobil" - und vom beamen sind wir ja wohl noch ziemlich weit weg. Und bis das für alle preiswert täglich anwendbar ist, werden wohl noch sehr viele klassische Automobile (gerne auch mit modernisiertem Elektro, Brennstoff, oder auch Fusionsreaktor-Antrieb im ansonsten noch immer rechteckigen Kasten mit 4 runden Rädern an den 4 Ecken und Glasfenstern ringsum) gebaut werden.
1 Like
10.11.2018 03:01Beitrag von Naldo
Das Spielprinzip von WoW wird sich selbst durch eine komplett neue Engine nicht entscheidend verändern
Soll es ja gar nicht, nur die Engine bedarf mal einer richtigen Anpassung an aktuelle Hardware.
Bestes Beispiel ist die Zweikernlimitierung. Spätzestens seid 2012 sind Vierkern/threadprozessoren eigentelich in jedem Haushalt vorhanden.

10.11.2018 03:01Beitrag von Naldo
10.11.2018 00:37Beitrag von Santee
Unterstützt WoW 3D-Ausgabe? Stereoskopie, Vive, Oculus, Nvidia ... dingsda
Falsche Frage.
Falsch gestellte Frage:
Unterstützt WoW noch/wieder 3D-Ausgabe?
Irgendwas wurde mal zu Wotlk-zeiten unterstützt, ich bin mir relativ sicher das es Stereoskopie, anaglyph oder Nvidia ... dingsda war wo man ne spezielle Brille für bauchte, damals als wir WoW noch auf dem Abakus gespielt haben.
Soll es ja gar nicht, nur die Engine bedarf mal einer richtigen Anpassung an aktuelle Hardware.
Bestes Beispiel ist die Zweikernlimitierung. Spätzestens seid 2012 sind Vierkern/threadprozessoren eigentelich in jedem Haushalt vorhanden.


Da hätte ich gerne mal eine verläassliche "Auwertung / Statistik" drüber. Nur weil hier in den Tech-Foren jeder nen i15 11500 mit einer RRTTXX 3080 hat(Achtung, Übertreibung), ist es ja noch lange nicht überall so.

Wie man hier im Forum ja öfter lesen kann, werden auch heute noch "High-End-Gamings-Pcs" (jetzt fühle ich mich wirklich schlecht weil ich diese Dinger so genannt habe) mit Hardware von 2012 und früher vekauft.
Frag doch mal, wie gut WoW da mit aktueller Engine laufen würde, wenn die Core2Duo oder die AMD FX (waren doch die FX) verbaut wurden.
1 Like
10.11.2018 12:51Beitrag von Mahiri
Da hätte ich gerne mal eine verläassliche "Auwertung / Statistik" drüber.
Hat Blizz vor ein paar Jahren nicht mal so nen Technickcheck durchgeführt und die Ergebnisse veröffentlicht? Zusammen mit ner ganze Menge anderer Zahlen.
10.11.2018 13:00Beitrag von Santee
Hat Blizz vor ein paar Jahren nicht mal so nen Technickcheck durchgeführt und die Ergebnisse veröffentlicht? Zusammen mit ner ganze Menge anderer Zahlen.


Soweit ich mich erinnere, waren das aber nur "interne" zahlen, wie viele Server, weclhe Datenmengen, Accounts / Chars angelegt etc.
Aber ich wüßte nicht, das eine Auswertung zur "User-Hardware" dabei war.
Ich glaube Steam hat da öfter mal Auswertungen, allerdings bin ich mir da nicht sicher, ob das nicht "abwählbar" war die User, und so auf alle Fälle Accounts fehlen.

Edit:
https://store.steampowered.com/hwsurvey/Steam-Hardware-Software-Survey-Welcome-to-Steam

Wie man dort unter CPU sieht, sind doch noch ganze 31% der User mit einer 2-CPU-Lösung unerwegs.
10.11.2018 03:01Beitrag von Naldo
Das Spielprinzip von WoW wird sich selbst durch eine komplett neue Engine nicht entscheidend verändern
Soll es ja gar nicht, nur die Engine bedarf mal einer richtigen Anpassung an aktuelle Hardware.
Bestes Beispiel ist die Zweikernlimitierung. Spätzestens seid 2012 sind Vierkern/threadprozessoren eigentelich in jedem Haushalt vorhanden.


Es gibt im aktuellen WoW keine "Zweikernlimitierung", WoW besteht aus ca. 40 Threads, kann also bis zu 40 CPU-Kerne beschäftigen. Windows unterstützt jedoch "leider" nur 32 CPU-Kerne pro Anwendung.

Schau einfach mal während eines Zonen-Wechsels auf die Auslastung Deiner CPU - da werden nämlich teilweise mehr als 4 CPU-Kerne durch WoW voll ausgelastet.

Nur im "normalen" Spielbetrieb sinkt es dann auf effektiv 1,5 ständig laufende Threads ab.

WoW ist also bereits seit ca. Patch 3.xx Multicore-fähig, und mit jedem neuen Addon wird wieder etwas mehr in Richtung Multithreading verbessert.

Wenn Du jedoch meinst, dass Du der Super-Genialo-Top-Programmierer bist, und es für Dich ein leichtes ist, eine über 20+ Jahre "organisch gewachsene" Engine mal eben neu zu programmieren, dann bewirb Dich bitte bei Blizzard unter Angabe Deines Gehaltswunsches.

Kleiner Tipp: Ich habe bereits vor > 10 Jahren kommerzielle Anwendungen programmiert, die damals auf > 80 CPU-Kernen wunderbar skalierten (nennenswerte meßbare Einbrüche durch die Abhängigkeiten in der Verwaltungsschicht waren erst bei > 300 CPU-Kernen zu bemerken), und mit denen wir damals gut Geld verdienen konnten. Und nein, ich traue mir nicht zu, die WoW-Engine grundlegend zu überarbeiten.

Es gibt nunmal Dinge, die lassen sich leicht sehr stark parallelisieren, und es gibt Dinge, die haben massive Abhängigkeiten, welche eine Parallelisierung verhindern. WoW fällt dabei in die zweite Kategorie.


<span class="truncated">...</span>Falsche Frage.
Falsch gestellte Frage:
Unterstützt WoW noch/wieder 3D-Ausgabe?
Irgendwas wurde mal zu Wotlk-zeiten unterstützt, ich bin mir relativ sicher das es Stereoskopie, anaglyph oder Nvidia ... dingsda war wo man ne spezielle Brille für bauchte, damals als wir WoW noch auf dem Abakus gespielt haben.


Nochmal: Wenn dies "ab Werk" direkt in DirectX drin ist, dann brauchst Du es nur in Windows anzuschalten.

Wenn nicht, und wenn also Blizzard dies extra einbauen muß, dann stellt sich sofort die Frage: Wieviele Kunden (in Prozent) werden dies nutzen, und was kostet die Programmierung extra.

Wenn dann also am Ende nur 0,01% der Kunden davon profitieren, dann ist ja wohl klar, das solche Dinge wie "Bugfixing" oder "mehr Rechenlast auf die DirectX12-GPU legen" eine höhere Priorität bekommen wird, oder?

Ich hab mir das mit der Kernauslastung nun selbst nochmal auf verschiedenen Systemen angesehen (bzw es mir mitteilen lassen so viele PCs hab ich auch nicht), wobei ich zu folgenden Schluss komme:

  • Im aktiven Spielbetrieb Raid/BG/AH/Questen nutzt WoW nie mehr als 2 Threads, ganz egal wie gut/schlecht die CPU ist. Auf nem gurksigen Celereon…irgendwas, Amd 5 1XXX genau so wie auf einem Highend i9-8XXX.
  • beim Laden von Daten scheint auch irgendwo ne Obergrenze zu sein. Allerdings glaube ich dass das eher am RAM, HDD, SSD liegt.

Diese Zweitkernlemitierung im aktiven Spiel, die ist das was mach so verwundert/stört.
Ist es so kompliziert, ich selbst habe ja davon keine Ahnung, dem Spiel zu sagen: gugg mal wie viele CPU-Threads der PC/MAC hat und entscheide dich dann bei 4 oder mehr Threads für N-2

Wenn mein Englisch nicht allzu schlecht ist steht da physikalische Kerne was bei den meisten CPUs (~85% sind ja von Intel) 2Kerne+HT heist, also Vier.
Andererseits werden da auch ~1% EinkernCPUs gelistet … ich wusste gar nicht das es die noch gibt. Ich hielt die mit Ende von PATA für ausgestorben, gut möglich das ich also doch schon so Weltfremd bin.

Das Problem dabei ist halt, dass die komplette Engine darauf ausgelegt sein muss und da WoW immer noch auf einer (sehr stark weiterentwickelten) Warcraft 3 Engine läuft, war diese grundlegend nicht darauf ausgelegt.
Im Endeffekt ist der Aufwand wohl nicht allzu viel geringer, als gleich eine neue Engine zu schreiben bzw. das Spiel auf eine andere Engine zu portieren, was sich nur in den allerwenigsten Situationen überhaupt vom Zeitaufwand rentieren dürfte.

Man kann vieles halt nicht einfach so auf mehrere Threads aufteilen, sondern muss da sehr viele Kontrollen einbauen.

Nehmen wir mal ein Rechenbeispiel mit vier Rechnungen:

1 + 2 = X
2 + 3 = Y
X + 1 = Z
Y + Z = A

Wenn man diese Berechnungen in einem Thread ablaufen lässt, dann benötigt das vier Rechenzyklen.

Würde man das jetzt einfach so auf zwei Threads aufteilen, dann hat man noch zwei Rechenzyklen, bekommt man schon die ersten Probleme:

. Thread 1 . | . Thread 2 .
1 + 2 = X | 2 + 3 = Y
X + 1 = Z | Y + Z = A

Der erste Thread würde problemlos durchlaufen, der zweite Thread würde im zweiten Rechenzyklus aber eine Fehlermeldung auswerfen, da zu diesem Zeitpunkt Variable Z noch nicht gesetzt ist.

Also müsste man im zweiten Thread dann eine Verzögerung von einem Rechenzyklus einbauen, damit die Variable Z gesetzt wurde, bevor damit gerechnet wird. Somit käme man dann auf effektiv drei Rechenzyklen:

. Thread 1 . | . Thread 2 .
1 + 2 = X | 2 + 3 = Y
X + 1 = Z | __ Pause __
__ Pause __ | Y + Z = A

Das müsste dann bei jeder einzelnen Berechnung gemacht werden, die irgendwas von einer vorherigen Berechnung weiter nutzen muss.
Bedenkt man jetzt den Umfang des WoW Sourcecodes, dann dürfte die Entscheidung eindeutig sein: Zeitverschwendung. :confused:

1 Like

WOW nutzt quasi einen thread für fast alles was wir sehen, lediglich ein paar kleinere Dinge werden auf andere ausgelagert. Hierdurch spielt es keine Rolle ob wir 4 oder 8 Kerne haben, weil wir diesen einen thread nicht aufsplitten können.

Das ist recht typisch für Engines die sehr alt sind. Früher gab es halt keinen Grund alles zu verteilen, zudem war DX nicht dafür ausgelegt. So haben die Programmierer halt alles irgendwie zusammenhauen müssen, was aber auch einfacher ist.

Ich habe früher auch mal programmiert und es ist ein deutlich kleinerer Aufwand wenn du diesen einen Thread hast, als wenn du viele hast und diese immer wieder auf sich aufpassen müssen. Klingt jetzt sehr vereinfacht, aber oben wurde das ja ganz gut dargestellt.

1 Like