Zum Inhalt springen
Herunterladen

Unter der Haube


Ein Teil nach dem anderen: wie die Simulation den Zustand führt, wie das ECS Daten ordnet und wie der Renderer daraus Licht macht.

01 · Simulation

Ein Schreiber, viele Leser


Die Simulation läuft in einem eigenen Thread mit 60 Ticks je Sekunde und ist der einzige Schreiber des Spielzustands. Netz, Offline-Treiber und Mitschnitte liefern ihr dieselben Eingaben – woher sie kommen, merkt sie nicht.

Oberfläche, Renderer und Ton lesen nur, was sie veröffentlicht: eine Welt-Sicht je Tick und Ereignisse. Keiner greift in fremde Zustände.

  • Offline prüfbar: feste Uhr, feste Seeds, steuerbare Antworten
  • Derselbe Code online und offline

Eingaben

  • Netz
  • Offline-Treiber
  • Mitschnitt

Ein Tick alle 16,7 ms

  1. Eingaben anwenden Pakete, Befehle, Bewegungen
  2. Spiellogik Zauber, Auren, Kampf, Wege der Figuren
  3. Sicht veröffentlichen Welt-Sicht und Ereignisse für alle Leser

Leser

  • Oberfläche
  • Renderer
  • Ton

02 · ECS

Daten zuerst, nach dem Vorbild von bevy


Entities sind Index und Generation. Components liegen dicht in Archetyp-Tabellen, eine Spalte je Typ – Systeme laufen über Spalten statt über Zeiger je Figur. Eigene Umsetzung, ohne unsafe und ohne fremde Bibliothek.

Jede Zeile trägt Änderungsmarken. Wer nur wissen will, was sich bewegt hat, fragt mit Changed und bekommt genau diese Zeilen; Systeme ohne Konflikt laufen gleichzeitig.

Render-Welt der Figuren: umgesetztSimulation: nächster Schritt
Archetyp mit den Components Lage, Pose und Modell
EntityLagePoseModell
12 · v15804, 624StehenMensch
13 · v35811, 630Laufen 0,42Zwerg
17 · v25790, 641Reiten 0,10Nachtelf
21 · v15822, 618Zaubern 0,71Gnom
Query<(&Lage, &mut Pose), Changed<Lage>>

Nur Entity 13 hat sich in diesem Tick bewegt – nur ihre Pose wird neu berechnet.

500 Figuren in der Dalaran-Messung

0 Zeilen unsafe

03 · Renderer

Licht 2.0: vorher und nachher

Links der Original-Stil wie 2008, rechts Verbessert – beide aus demselben Client, an derselben Stelle zur selben Uhrzeit. Den Regler ziehen, um zu vergleichen.

Sturmwind, 20:30, VerbessertSturmwind, 20:30, OriginalOriginalVerbessert
Schatten Sturmwind, 20:30
Goldhain, 19:30, VerbessertGoldhain, 19:30, OriginalOriginalVerbessert
Abendlicht Goldhain, 19:30
Dalaran, 22:00, VerbessertDalaran, 22:00, OriginalOriginalVerbessert
Punktlichter Dalaran, 22:00
Westfall, 17:30, VerbessertWestfall, 17:30, OriginalOriginalVerbessert
Sonnenstrahlen Westfall, 17:30
Licht
Light.dbc mit Tageszeit, vier Schattenkaskaden, bis zu 1.024 Punktlichter, Raytracing-Schatten und -Verdeckung.
Atmosphäre
Volumetrischer Nebel, Wolken, Sonnenstrahlen, Wetter mit Wetterleuchten, Windspuren.
Bild
Automatische Belichtung, Bloom, DLSS Super Resolution und DLSS 5 Neural Rendering auf Vulkan.
Welt
Kachel-Streaming im Hintergrund, Portale mit Sichtvolumen, Verdeckung über eine Tiefenpyramide.

Plattformen und Qualität

Ein Code, geprüft auf jedem Weg

SystemGrafikDLSS
WindowsVulkan, DirectX 12ja, NVIDIA RTX
macOSMetal–
LinuxVulkangeplant

3.623 Tests mit Quellenangabe

≥ 70 % Abdeckung je Modul

Jede Funktion wird zuerst offline entwickelt und geprüft: ein Offline-Treiber spielt Server, QA-Läufe steuern das echte Fenster ohne Maus und schreiben Bilder. Erst danach geht es gegen AzerothCore.