Metro 2033: Exklusiv-Interview zum DirectX-11-Shooter mit den Themen GPU-PhysX, Fermi, Multicore und den Vorzügen der PC-Version
In Kürze erscheint 4A Games' Metro 2033. PC Games Hardware spricht in einem exklusiven Interview mit dem Oles Shishkovstov, Chief Technical Officer von 4A Games, unter anderem über DirectX 11, GPU-PhysX, 3D Vision, Multicore sowie Nvidias neuesten Streich Fermi alias GF100. (Marc Sauter, 09.03.2010)
Vor knapp einem Monat konnten wir Metro 2033 erstmals anspielen und die Technik live unter die Lupe nehmen, unterstützt vom Engine-Tech-Sheet. Uns war das aber noch nicht genug, daher haben wir uns mit 4A Games in Verbindung gesetzt und Oles Shishkovstov, seines Zeichens Chief Technical Officer von 4A Games, zum ausführlichen Interview gebeten. Im Folgenden finden Sie die übersetzte Version, das englische Original auf
www.pcgameshardware.com.
PCGH: Ihr habt bekannt gegeben, dass Metro 2033 auf einer brandneuen Engine basiert. Habt ihr den Code von Grund auf neu programmiert oder haben es auch einige Teile der X-Ray-Engine [Anmerkung: die Engine der STALKER-Teile] in eure Technologie geschafft?
Oles Shishkovstov: Wir haben die Engine definitiv von Grund auf neu programmiert. Mit den Vorkenntnissen hinsichtlich der X-Ray, an welcher ich von 2001 bis 2002 übrigens selbst mitgearbeitet habe, wurde uns schnell klar, dass sich diese Engine künftig nicht beliebig weiter skalieren lässt. Zu den bekannten Schwachpunkten gehört die nicht vorhandene Multithreading-Tauglichkeit, der instabile Netzwerk-Code und generell das furchtbare Ressourcen- und Speicher-Management, welches jegliche Art von Streaming verhindert oder schlicht die Tatsache, dass die Datenmengen die "Next-Gen"-Konsolen überfordern. Daher begannen wir mit einem leeren Blatt Papier und einer Handvoll Middleware-Lösungen um relativ schnell voran zukommen.
PCGH: Warum habt ihr euch gegen eine Lizenz-Engine wie die Unreal Engine 3 oder gar die X-Ray-Engine entschieden, obwohl gerade letztere für einige in eurem Team ein alter Hut ist? Warum war es notwendig, eine inhouse-Engine zu entwickeln und inwiefern ist diese auf Metro 2033 zugeschnitten?
Oles Shishkovstov: Wir haben tatsächlich darüber nachgedacht, die UE3 zu lizenzieren - die X-Ray stand natürlich nie zur Debatte. Nach langem Auswerte jeglicher Argumente für und gegen die UE3 haben wir festgestellt, dass sie doch nicht so gut ist wie beworben - die UE3 war uns einfach zu überladen und zu "old-school". Und das größte Übel von allen: Die UE3 verschlingt viel Manpower und Zeit, um einfache Dinge zu erledigen. Schnell waren wir uns sicher, eine in jeglicher Hinsicht bessere Engine respektive Entwicklungsumgebung erschaffen zu können.
PCGH: Metro 2033 wird für die Xbox 360 und den PC entwickelt. Letztere Version wird zudem mit DirectX 11 und GPU-PhysX erscheinen. Uns führt dies zu dem Schluss, dass euer Titel keine reine Cross-Plattform-Entwicklung war - ist das korrekt? Entwickelt ihr Metro 2033 für jede Plattform einzeln?
Oles Shishkovstov: Wieso das? Der gleiche Code auf allen genannten Plattformen, sie nutzen den gleichen Content. Die Architektur der Engine passt sich an die Plattform an, auf welcher sie läuft. Natürlich kommen einige kleinere Anpassungen und Optimierungen zum Einsatz, aber wir entwickeln nur ein Spiel. Derzeit arbeiten diese Designer an der PC-Version und kümmern sich nicht um andere Plattformen, sie haben gar nicht eine Plattform-spezifische Option - es funktioniert einfach alles und darauf sind wir besonders stolz.
PCGH: Gibt es abgesehen von DirectX 11 und GPU-PhysX andere optische oder technische Unterschiede zwischen der PC- und den Konsolen-Versionen? Welche Features konntet ihr nicht auf der PS3 und der Xbox 360 realisieren?
Oles Shishkovstov: Sofern mehr Rechenleistung zur Verfügung steht, macht man entweder gar nichts (so wie es bei den meisten Konsolen-Ports der Fall ist) oder man fügt Features hinzu - wir haben uns für die zweite Option entschieden, da wir alle Plattformen als gleichberechtigt ansehen. Natürlich sind die meisten Features grafischer Natur, die Qualität der PhysX-Darstellung etwa würde hinsichtlich der Präzision verdoppelt. Zudem nutzen wir gegenüber den Konsolen die doppelte Anzahl an Sounds, die per "Wave Tracing" [Anmerkung: ähnlich wie Raytracing "schießt" die Geräuschquelle Strahlen, wo diese auftreffen, bestimmt die jeweilige Materialeigenschaft, wie sich der Ton ändert; Wände etwa dämpfen ihn] arbeiten. Zu den grafischen PC-Boni gehören unter anderem:
· Die Auflösung der meisten Texturen beträgt 2.048² Pixel (bei den Konsolen nur 1.024²)
· Die Shadow-Map-Auflösung beträgt bis zu 9,43 Mpix [Anmerkung: 3.072²]
· Die Filterung der Schatten ist sehr viel besser
· Parallax-Mapping für jede Oberfläche, einige sogar mit Parallax-Occlusion-Mapping [Anmerkung: dreidimensional wirkende Texturen mit zusätzlicher echter Geometrie]
· Wir verwenden allerhand "echte" volumetrische Berechnungen, das ist in nebligen Umgebungen sehr wichtig
· Unter DirectX 10 und aufwärts setzen wir auf "Object Motion Blur" [Anmerkung: Nur bestimmte Objekte werden mit Bewegungsunschärfe dargestellt, nicht das komplette Bild]
· Leichtes Material reagiert bei "hoher Qualität" physikalisch annähernd korrekt
· Die Umgebungsverdeckung (Screen-Space Ambient Occlusion) ist deutlich besser
· Durchscheinende oder lichtbrechende Oberflächen ("Sub-Surface Scattering") lässt Haut und damit etwa Gesichter oder Hände deutlich realistischer wirken
· Die Geometrie ist generell detaillierter, bedingt durch die unterschiedliche Auslegung des (beim PC weniger aggressiven) LODs [Anmerkung: "Level of Detail"] - Tessellation unter DirectX 11 außen vor
PCGH: Wenn du bestimmte visuelle Aspekte von Metro 2033 hervorheben solltest, für welche würdest du dich entscheiden? Kannst du uns einige sehr moderne und technisch fortgeschrittene Rendermethoden nennen, die eure A4-Engine einsetzt? Und keine Angst, du kannst ruhig mit technischen Begriffen um dich werfen ;-)
Oles Shishkovstov: Zuerst und vor allem Nvidias 3D Vision. Unser Spiel wurde in und für 3D entwickelt - das einzige soweit ich weiß [Anmerkung: Avatar hält den gleichen Anspruch]. Metro 2033 mit DirectX 11 und in 3D zu zocken, ist schlicht ein überwältigendes Erlebnis - und es ist weitaus eindrucksvoller als Avatar in einem IMAX-Kino.
Aus technischer Sicht spannend sind die "deferred" Reflexionen, das Analytical Anti-Antialising [Anmerkung: 4A Games‘ Bezeichnung für eine Art von MLAA, also Morphological Anti-Aliasing, welches kontrastreiche Kanten per Blur-Shader "glättet"] sowie "Sub-Surface Scattering" für Haut-Shader und so weiter und so fort. Noch ein Beispiel: Selbst mit deaktivierter Multisampling-Kantenglättung erhält der Spieler ein "gebügeltes" Bild (bei hohen Einstellungen). Einzig fast senkrechte beziehungsweise waagrechte Kanten sehen mit traditionellem MSAA besser aus.
http://www.pcgameshardware.de/aid,70...-Spiel/Wissen/
PCGH: Habt ihr während der Entwicklung auch PC-Technologien wie multiple Grafikkarten bedacht, sprich: Profitieren Spieler von SLI und Crossfire?
Oles Shishkovstov: Ja, wir testen ständig auch auf SLI-Systemen. Wir erwarten eine lineare Skalierung mit steigender Anzahl von verbauten GPUs, selbstverständlich gibt es aber einige treiberseitige Einschränkungen, an denen wir nichts ändern können.
PCGH: Seit geraumer Zeit sind CPUs mit mehreren Kernen fast schon de-facto-Standard und die Anzahl der Spieler mit Quadcores nimmt ständig zu. Habt ihr das von Anfang an bedacht und eure Engine entsprechend multithreaded programmiert? Falls ja, wie viele Kerne unterstützt ihr und welche Leistungssteigerung ist mit zwei, vier oder gar acht Rechenherzen möglich? Kannst du uns zudem erläutern, welche Teile der Engine in einem eigenen Thread laufen und wie euer Scheduler arbeitet? Und zu guter Letzt: Profitiert Metro 2033 von SMT/Hyperthreading?
Oles Shishkovstov: Ja, unsere Engine wurde von Beginn an für Multithreading ausgelegt. Das ist der einzige richtige Weg, denn später noch Multithreading einzubauen ist schlicht nicht möglich oder die Entwicklung verläuft äußerst suboptimal. Wir unterstützen mindesten zwei Kerne bis hin zu einer beliebigen Anzahl und erwarten eine lineare Skalierung mit steigender Anzahl, sofern die Grafikkarte nicht limitiert.
Jede Engine, die spezielle Teile in einem eigenen Thread laufen lässt, ist schlicht eine schlechte Architektur, für gewöhnlich aufgrund der verwendeten Basistechnologie. Eine solche Architektur skaliert nicht. Der einzig zukunftssichere Weg ist das so genannte "Task Model", in dem Threads einfach nur Worker-Jobs sind, welche in tausenden von Tasks in einer Art zeitabhängigem Verzweigungsprozess organisiert sind. Und genau das machen wir.
Unsere Engine profitiert (so wie jede vernünftig programmierte) definitiv von SMT. Auf der Xbox 360 etwa erreichen wir daher eine rund 50 Prozent höhere Leistung [Anmerkung: Der Xenon-Chip hat drei Kerne, wobei jeder dank SMT zwei Threads abarbeiten kann]. Wenn deine CPU also SMT beherrscht - bloß nicht abschalten!
PCGH: Wir hören immer wieder, dass Metro 2033 besondere GPU-beschleunigte PhyX-Effekte auffährt. Daher vorab die Frage, ob die normale, auf der CPU berechnete Physik nur der optischen Aufwertung dient oder hat diese Einfluss auf das Gameplay, werden beispielsweise Querschläger simuliert, die Gegner verletzen können?
Oles Shishkovstov: Ja, die Physik ist ein fester Bestandteil des Gameplay und dein Beispiel veranschaulicht das sehr gut.
PCGH: Warum habt ihr euch für Nvidias PhysX entschieden und keine andere Middleware wie Havok oder ODE genommen? Warum ist gerade das PhysX SDK für Metro 2033 am besten geeignet?
Oles Shishkovstov: Wir haben das SDK bereits ausgewählt, als es noch auf den Namen Novodex hörte (das war sogar noch vor der Zeit, als sich Novodex in Ageia umbenannte). Es war performant und bot sehr viele Möglichkeiten. Einer der Gründe, warum wir uns dafür entschieden haben, war der zu diesem Zeitpunkt bereits vollständig vorhandene und konfigurierbare Inhalt und das ist sehr wichtig, wenn man wie wir eine komplett neue Engine mit einem kleinen Team schreibt.
PCGH: Gibt es optische Unterschiede zwischen den per CPU und GPU dargestellten Effekten oder müssen Spieler ohne Nvdida-Karte gar auf bestimmte Features verzichten? Können einige Effekte mit dem Prozessor überhaupt nicht gerendert werden?
Oles Shishkovstov: Es gibt keine sichtbaren Unterschiede. Die GPU erlaubt jedoch deutlich mehr aufwendige Effekte, da sie hinsichtlich paralleler Berechnungen um Welten schneller ist als eine CPU. Metro 2033 berechnet die Physik der Festkörper auf dem Prozessor, alles andere wie die Stoff-, Ragdoll-, Flüssigkeits- oder Partikelphysik auf der Hardware, die der jeweilige PC zu bieten hat (Mehrkernprozessor oder Grafikkarte). Der Spieler kann abhängig von seiner Hardware mehr rechenaufwändige Dinge über das Optionsmenü hinzu schalten.
PCGH: Ihr habt versprochen, dass Metro 2033 mit DirectX-11-Unterstützung auf den Markt kommt - stimmt das denn? Warum habt ihr euch für DirectX 11 respektive das Shader Model 5 entschieden und in welcher Hinsicht erlaubt euch dies den Render-Prozess zu optimieren? Nutzt ihr DX11-Multithreading?
Oles Shishkovstov: Ja, wir setzen auf DirectX 11. Obwohl die API im Vergleich zu C++ schwieriger Hand zu haben ist, ist die Funktionalität gegeben. Drei Dinge mag ich besonders: Compute Shader, Tessellation und die Trennung von Draws und Content kreieren. Vor allem die Compute Shader sind etwas Besonderes: Sie ermöglichen eine komplett neue Art von Algorithmen und Performance-Optimierungen.
Der Spieler kann die zusätzlichen DX11-Features deaktivieren, dabei wird er feststellen, dass die Performance unter DirectX 11 besser ist als etwa unter DirectX 10. Dies ist das Resultat einer Vielzahl kleiner Tweaks, die dank DirectX 11 möglich sind. DX11-Multithreading nutzen wir nicht, sofern ihr damit "Treiberhäppchen" pro CPU-Kern meint.
PCGH: In welcher Weise unterscheidet sich die DirectX-11-Optik von der DX10/DX9-Grafik? Und welche Features sind nur unter DirectX 11 sichtbar?
Oles Shishkovstov: Wenn man die DX11-spezifischen Zusatzeffekte abschaltet, erhält man eine zu DirectX 10 identische Optik - der einzige Unterschied ist wie bereits erwähnt die bessere Performance. Wir haben ungefähr die Hälfte einer zu rendernden Szene mit Tessellation und Displacement-Mapping aufgebohrt. Das ist ein großer Unterschied hinsichtlich der Optik, kostet aber natürlich Leistung. Und vergessen wir nicht das das spezielle Depth of Field, welches wichtig ist um einen "cineastischen Look und Feeling" zu erhalten.
PCGH: Metro 2033 unterstützt auch noch DirectX 9, oder?. Wann meinst du, ist die Zeit gekommen, nur noch für DirectX 11 (und Fallbacks auf DirectX 10/10.1) zu programmieren und den Support für Windows XP sowie DX9 zu streichen?
Oles Shishkovstov: Klar, Metro läuft auch mit DX9 und wir haben eine Menge Arbeit investiert, um auch hier Features darstellen zu können, die normalerweise nur mit DirectX-10/11-exklusiv sind. Beispielsweise sind die Soft Particles auch unter DX9 sichtbar, andere Implementierungen erlauben dies nur mit DX10-Hardware. Aktuell ist es nicht so schwierig, ältere Betriebssysteme zu unterstützen - wir werden den Support aber erst fallen lassen, wenn wenig als 1 Prozent unserer potenziellen Spieler auf solche setzt.
PCGH: Letzte Frage: Gerüchten zufolge ist Metro der Show-Case-Titel für Nvidias kommende DirectX-11-Generation, Codename "Fermi" - ist das wahr und hattet ihr schon die Möglichkeit euer Spiel auf GF100-Karten zu testen?
Oles Shishkovstov: Wir nehmen eigentlich keine Stellung zu Gerüchten ;-) Aber ja, wir testen Metro 2033 ständig auf Fermi-Karten.
http://www.pcgameshardware.de/aid,70...Wissen/?page=2