Enemy Territory: Quake Wars Dev Diary #5 The Making of the Making of Quake Wars: Enemy Territory



Entwicklertagebuch von
Jared ‘jRAD’> Hefty
Programmer
Splash Damage Ltd


Wir bekommen einen Blick Hinter die Kulissen des Tools welches benutzt wird um eines der grössten Multiplayer Shooters des Jahres 2007 zu produzieren.


Von Jared Hefty | 6. März 2007


Ich bin Jared 'jRAD' Hefty, ich bin einer der Programmierer bei Splash Damage welche an id softwares’s Enemy Territory: Quake Wars arbeiten. Genauer gesagt arbeite ich an den Tools welche mit Ablauf, Crunch, Optimierung, Anpassung und all den Dingen die mit dem Spiel zu tun haben. Ich möchte Euch einen Einblick geben wie wir ein Spiel wie ETQW entwickeln, was es dazu alles braucht, und wieso wir es auf diesem Wege machen.


Der Job für die Tools für den Job

Was ist ein Tool Programmierer? Ich denke über mich selber als Splash Damage's Enabler ™ das ich hier bin um die Artisten, Game- und Leveldesigner (die Leute die das ganze zu einem spielbaren Game zusammensetzen) davor zu bewahren sich die Haare auszureissen. Ich bin hier um gewisse Muster in verschiedenen Arbeiten zu finden und diese zu automatisieren.

Ich schaue meinen Mitarbeitern zu wie sie meine Programme in einer Art und Weise benutzen welche ich nie gedacht hätte. „Huh, cool,“ denke ich immer wenn ich den Level Designern zuschaue wie sie gewisse Sachen tweaken und justieren. Die Leute bei Splash Damage verbringen einen Haufen von Zeit in Tools an welchen ich Jahrelang gearbeitet habe.

Ich möchte hier eine kurze Pause machen. Vielleicht habt ihr, oder auch nicht davon gehört das wir an der Mega Texture Engine arbeiten. Aber was ist das genau? Für uns ist es ein weg eine grosse Landschaftsfläche mit einer riesigen Textur zu versehen, aber darüber hinaus enthält es auch alle Informationen über die Traktion der Fahrzeuge sowie alle Infos über den Untergrund über welchen man sich bewegt. Aber jetzt machen wir mal weiter...


Toolmakers: Made, Not Born

Bevor ich als Tool Programmierer zu Splash Damage kam, war ich Lead Level Designer bei der Quake 3 Modifikation Q3F2. Ausserdem war ich professioneller Level Designer bei Rituals Entertainment in Dallas.

In der Zeit in Dallas habe ich viele meiner Programmierfahigkeiten dazu genutzt um das Level Editor Tool Q3Radiant zu verbessern (keine Angst, ich habe auch an den Levels gearbeitet). Ich blieb oft lange am Abend noch im Geschäft um das User Interface zu verbessern und um kleine Bugs zu beheben über welche ich mich am Tag aufgeregt habe. „Hey, weißt du was auch noch cool wäre?“ wurde zu meinem Lieblings Spruch, denn den hörte ich immer wieder wenn Leute zu mir kamen um mir Ihre Ideen mitzuteilen.

Es ist schon über drei Jahre her das ich angefangen habe am Doom 3 Level Editor (bekannt als „Radiant“) zu arbeiten um neue Funktionen hinzuzufügen welche wir für unsere riesigen Terrains brauchen. Nach einigen durchläufen und Verbesserungen haben wir gemerkt dass dieser Editor mehr Aufmerksamkeit benötigt als wir ursprünglich gemeint haben. Ich brauchte ein Framework um damit schnell und effizient zu arbeiten damit jede Abteilung genau wusste wie wir diese Mega Texture zum laufen bringen wollen.


Around editWorld in Eighty Ways

Ich habe mich an die Arbeit zu diesem neuen Tool gemacht mit einem Hintergedanken: Egal was wir daran verändern, egal welche Features dabei hinzukommen oder neu machen (und das waren sehr viele), es muss sich immer noch wie der Radiant anfühlen. Es musste das Tool bleiben welches sich die Level Designer gewohnt waren. Die 4 Jahre Erfahrung mit dem Radiant haben mir dabei geholfen das Monster von innen nach aussen neu aufzubauen. Das ganze brauchte schlussendlich einiges mehr an zeit und Arbeit als geplant, aber ist das nicht immer so? Nach endlosen Monaten der Entwicklung konnten wir "editWorld" an die Leveldesigner weitergeben.

Die grösste Herausforderung war das wir viele kleine Welten zu einer grossen zusammenfügen konnten. Früher war es so das wenn jemand was erstellt hatte, musste er es immer wieder Kopieren um es an verschiedenen Stellen einsetzen zu können. Sobald man mal etwas davon updaten oder verändern musste (und das war während einem Projekt sehr oft der fall), dann musste man zu jedem dieser Objekte hingehen und es an jedem einzelnen Ort abändern. Sollten Computer uns nicht die Arbeit einfacher machen?


Riesige Referenz

“editWorld” bringt uns ein Referenzsystem bei welchem dieses Objekt an nur einem Ort abgeändert werden muss und an allen anderen Orten direkt angepasst wird. Das ganze schaut immer noch gleich aus, aber es wurde viel einfacher. Willst du was ändern? Kein Problem, einfach anklicken, abändern und speichern, die Welt rundherum wird automatisch neu geladen und zeigt dir deine Änderungen.

Diese Referenzen haben einen grossen Einfluss auf den Work Flow der Level Designer. Diverse Leute können gleichzeitig an unterschiedlichen Teilen derselben Map arbeiten ohne einander zu stören. Zum Beispiel kann man einen Teil eines Gebäudes nehmen (einen so genannten „Block-Out“, weil die so blockartig aussehen) und diesen in der Spielewelt platzieren. In dieser Zeit kann ein anderer Designer dieses Block-Out mit den nötigen Texturen versehen und sonst anpassen.

Die Editing Referenzen werden durch ein anderes System nahtlos eingefügt, dem so genannten Multiple Document Support. Die Level Designer können jetzt mehrere Welten gleichzeitig offen haben und immer zwischen diesen hin und her wechseln. Es ist also nicht mehr nötig mehrere Sessions des Editors offen zu haben.

Referenzen sind eine gute Art um Sachen zu Organisieren, aber editWorld hat ein anderes System: Gruppen! Gruppen ermöglichen es den Designern schnell und einfach Dinge zusammenzufügen (Gebäude, Bäume, Lichter etc). Es sind Tausende von Objekte die in eine fertige Welt integriert werden müssen. Die Level Designer kreieren Gruppen für die Vegetation, Gebäude und Gameplay Gegenstände welche man ganz schnell aus und wieder einschalten kann.

Der Doom3 Radiant hat viele Verbesserungen gegenüber seinen Vorgängern gebracht. Die Level Designer können einfach einen Knopf drücken um zu schauen wie Ihre Welt im Spiel ausschauen wird. editWorld nimmt diese Zeitsparende Funktion und erweitert es mit einer Echtzeit Preview Funktion für die Mega Texture Engine mit Sonnenlicht, Umgebungslicht (um gewisse Stimmungen zu erzeugen oder dunkle ecken in Gebäuden auszuleuchten) und Atmosphärischen Effekten wie Nebel und Wolken. Viele Designer arbeiten ausschliesslich in diesem Modus (Render Modus genannt).


Terrain Wreck

editWorld ist der Schlüssel um die die Mega Texturen zu erstellen. Nicht was die schärfe des Terrains angeht (Ein Task welchen man am besten mit professionellen Modelling Packages macht), aber es gibt dem Künstler einen Weg das Aussehen des Terrains zu zeigen. Der Künstler generiert einen Haufen von Layern wie Gras, Felsen, Moos und Sand. Diese Layer beinhalten Informationen darüber wie dieser Layer ist. Jeder Layer kriegt verschiedene Regeln hinterlegt. Zum Beispiel erschient dieser Layer nur auf einer Höhe zwischen 700 und 800 Fuss und wird langsam ausgeblendet auf den letzten 25 Fuss. Es können natürlich noch viel komplizierter Regeln erstellt werden wie zum Beispiel „ist von der Ebenheit so wie die ebene darunter“. So kann man realistische Flächen erzeugen in dem man sie geschickt übereinander legt.

Alle Layer sind gespeichert in einem „Oberflächen-Baum“. Der Terrain Editor befolgt diesen Baum von Oben nach unten zu dem Gebilde was später mal eine Megatexture werden könnte. Diese Layer überziehen die Komplette Map und ist somit sehr gut geeignet für grosse Flächen, aber was ist mit den kleinen Details? Die Künstler haben Tools in ihrem Arsenal mit welchen sie auch die kleinsten Stellen mit interessanten Details füllen können.


The Road Worrier

Projektoren erzeugen eine art von Glanz welcher das ganze Objekt von oben herab überzieht. Die Künstler können Bombenkrater auf den Schlachtfeldern erzeugen oder Ölspuren vor einer Garage platzieren. Strassen sind mehr als eine Strecke mit ein paar Mittellinien darauf. Die Künstler haben die Möglichkeit verschiedene Layer zu definieren um Damit Asphalt Highways mit aufgerissenen Kanten und Markierungen zu erstellen. Ausserdem können zum Beispiel auch windige Fusspfade mit Löchern oder sichtbaren Fussabdrücken erstellen. Falls es nötig sein sollte kann man auch einen Teil des Weges wegbomben.

Wenn der Artist mit all den Layern zufrieden ist welcher er erstellt hat, dann kann er diese in einem andern Tool zusammenfügen. Wir haben die original Idee von John Carmack übernommen und arbeiten mit dem „Stamp Tool“. Im Gegensatz zu all den anderen Tools arbeitet das Stamp Tool während der Künstler sich im Game befindet. Man wählt einen Bereich aus an welchem man an der MegaTexture arbeiten will. Danach kann man ein Bild für seinen Stempel wählen und sich damit auf der Map bewegen. Somit kann man dann sehr schnell Einschusslöcher, verwelkende Blätter unter den Bäumen, Ruinierte Gebäude oder verschüttetes Stroyent erstellen. Hey es ist Krieg, da gehen einige Sachen schon mal kaputt.

Der Künstler kann dann sein Werk im editWorld begutachten. Aus verschiedenen Gründen ist die Grösse dort einiges kleiner als man es schlussendlich im Game sehen kann. Eine höher auflösende Version wird dann von einem Tool mit dem Namen megaGen erzeugt. Dieses Tool splittet und komprimiert die beinahe 10GB grossen Files in die Finale MegaTexture Grösse zusammen.


Crunch Time

Um diesen Oberflächenbaum in die MegaTexture zu transferieren werden extreme viele Zahlenrechnereien benötigt. Zuerst splitten wir diese 10GB grossen Hochauflösenden Bildern mit megaGen. Danach wird es noch durch ein Tool mit dem Namen renderLight nachbearbeitet. Dieses nimmt dem ganzen die Unschärfe, und kombiniert die verschiedenen Lichtquellen und Einflüsse miteinander. Danach ist es nur noch eine Frage der Art wie man diese Hochauflösenden Bilder in eine anständige Grösse zusammen komprimieren kann (in der Grössenordnung von 300–500MB). Diesen Teil des Prozesses wird durch ein Tool mit dem Namen makeMegaTexture gemacht (seht ihr ein Schema bei der Benennung der Tools? Wir verstehen keinen Spass wenn es um die Namensgebung der Tools geht).

Die Meiste Arbeit besteht darin die kompletten Welten zu erstellen. Künstler erstellen Modelle und Texturen welche wir in den Tools benutzen. Die Level Designer stellen das ganze dann zu interessanten Settings zusammen mit Tools wie editWorld, editAtmos (ein Tool welches die Outdoor Atmosphäre generiert), editAmbient (wird benutzt um das Indoor Licht-Ambiente zu setzen) und editSheets (um die verschiedenen Gruppen von Texturen für die Grafikkarte möglicht einfach darstellbar zu machen) All diese Tools zusammen lassen dann die Welten unglaublich genial aussehen.

Wir haben nun einen rechten Haufen Zeug besprochen (har har) aber irgendwie haben wir das ganze nur am Rande gestreift. Ich hoffe es hat euch einen kleinen Einblick darin gegeben wie wir ein Game wie Enemy Territory: Quake Was erstellen und aufbauen. Womöglich sind einige von Euch so mutig und benutzen diese Tools nach dem Release des Spiels um selber was Cooles zu erstellen. Keine Sorge, alles von der MegaTexture wird Released werden, somit müsst ihr euch die Sachen nicht mühselig zusammensuchen und Kopieren, sondern könnt alles selber erstellen.

Login
Officials
sd.jpg
id.jpg
actvi.jpg

nerve.jpg

Partner

gp.jpg

i3d.jpg
sl.jpg

Server
Shop