# Hammer Editor

Hammer Editor ist ein Level-Editor, für Microsoft Windows, zum Erstellen eigener Level für den Ego-Shooter Half-Life und dessen Mods, basierend auf der GoldSrc Engine. Sowie in einer neueren Version für Half-Life 2 bzw. Spiele und dessen Modifikationen, die von Valve entwickelte Source-Engine nutzen. Der Level-Editor wurde ehemals unter dem Namen Worldcraft von Ben Morris programmiert, 1997 kaufte der Spieleentwickler Valve Software die Rechte.

## Geschichte

Der kanadische Programmierer Ben Morris, bekannt durch das Entwickeln des Doom Construction Kit, einem Level-Editor für den Ego-Shooter Doom, entwickelte 1996 einen Level-Editor für Quake. Ursprünglich sollte der Editor den Namen The Forge tragen. Da es jedoch schon einen Levelditor, von Bungie Software für das Spiel Marathon, mit diesen Namen gab benannte Morris den Editor in Worldcraft um. Nach einer öffentlichen Betaphase des Leveleditors veröffentlichte Morris am 3. Dezember 1996 die Vollversion des Worldcraft Editors als Shareware. Für einen Preis von 34,95 $ konnten sich man sich den Editor und zukünftige Updates auf CD-Rom erwerben, der Editor wurde den Käufern auf einer CD per Post zugeschickt. Herausgeber der CD-Roms war der kanadische Softwareentwickler ACD Systems.
Am 14. Juli 1997 kaufte der Spieleentwickler Valve Software die Rechte am Worldcraft Editor und stellte Ben Morris für die Entwicklung am eigenen Ego-Shooter Half-Life ein. Nach dem Release von Quake 2 erschien am 18. Dezember 1997 die Version 1.6 des Editors mit Unterstützung für Quake 2 und Hexen 2. Ben Morris verließ Anfang 1998 Valve Software aus persönlichen Gründen, die Entwicklung des Editors wurde von Valve Mitarbeiter Yahn Bernier fortgesetzt. Eine kostenpflichtige Version des Editors unter den Namen Worldcraft Pro war in Planung wurde jedoch wieder eingestellt. Die Entwicklung war schon so weit fortgeschritten, dass der Editor für den Winter 1999 vorbestellt werden konnte und vom Publisher Sierra Entertainment beworben wurde.
Die Version 2.0 des Worldcraft Editors wurde am 19. November 1998 von Valve veröffentlicht, der Editor wurde auf der CD-Rom von Half-Life bereitgestellt. Zukünftige Versionen konnten nur noch über das Internet bezogen werden. Am 9. April 1999 wurde Version 2.1 veröffentlicht, der Editor funktionierte nur noch mit Half-Life und auf der Goldsource Engine basierenden Spielen und Mods. Drei Jahre später veröffentlichte Valve die Version 3.4 des Editors und benannte ihn in Valve Hammer Editor um. Am 18. April 2003 erschien mit Beta-Version 3.5 die letzte Version des Hammers, die mit der Goldsource Engine kompatibel ist. Die Beta-Version 3.5 erschien nur als Update zur Version 3.4.
Am 3. November 2004 erschien Version 4.0 des Hammer Editors für Half-Life 2, der Editor konnte nur noch über Valves eigene Internet-Vertriebsplattform Steam bezogen werden. Nach und nach kamen Updates für den Editor und Unterstützung für andere, von Valve veröffentlichte, Spiele und auf der Source Engine basierende Mods. Die letzte Version des Editors stellt Version 4.1 dar. Der Leveleditor in der Nachfolge-Engine Source 2 heißt zwar Hammer, stellt aber eine komplette Neuprogrammierung dar.

## Grundlagen

Für die GoldSrc- und Source Engine bestehende Levels, bestehen aus zwei Komponenten: Brushes und Entities:
* Brushes sind die einfachsten geometrischen Objekte und bilden die grundlegende Architektur jeder Map (Wände, Böden etc.).
* Entities werden für alles andere verwendet (Lichtquellen, Startpunkte für den Spieler, Soundeffekte, Einstellungen die den Spielverlauf bestimmen sowie detailliertere oder bewegte Objekte, die sich nicht durch Brushes darstellen lassen)
Im Hammer Editor erstellte Level werden nicht in Echtzeit dargestellt, sondern es wird eine unbeleuchtete Vorschau gezeigt. Berechnungen wie Licht, Schatten und die endgültige Geometrie, eines Levels werden erst nach einem kompilieren, der Quelldatei des Levels, in ein für die Spiele-Engines brauchbares Levelformat berechnet. Während in anderen Level-Editoren, wie etwa dem UnrealEd, eine Methode angewandt wird, bei der Räume quasi aus einer unendlichen Masse herausgeschnitten werden, verwendet der Hammer Editor ein System, bei dem die Brushes in einem vollkommen leeren Raum platziert werden. Damit ein Level erfolgreich kompiliert werden kann, müssen die Brushes das sichtbare Areal des Levels vollständig umschließen. Ist dies nicht der Fall, kann das Level nicht richtig kompiliert werden und man spricht umgangssprachlich von einem leak (engl. für Leck).
Die Benutzeroberfläche des Hammer Editors ähnelt der eines 3D-Programmes; es sind eine texturiert-perspektivische Ansicht und verschiedene zweidimensionale Ansichten gleichzeitig möglich. Da das Licht erst beim Kompilieren des Levels berechnet wird, ist die perspektivische Ansicht unbeleuchtet. Auch Texturen werden als reines Bild ohne Shader oder Normal Mapping dargestellt. Innerhalb der Ansichten ist es möglich, Brushes und Entities auf einem Wireframe zu platzieren und, wenn es der Editor erlaubt, ihre Formen und Texturen zu ändern. Als Längenmaße werden World Units als Einheit verwendet, die einem Zoll entsprechen.

## Kompilieren

Die im Hammer Editor erstellte und bearbeitete Level sind Quelldateien die für die Benutzung in den jeweiligen Spielen erst kompiliert werden müssen. Als Quelldateien werden .map und .rmf für die GoldSource Engine benutzt und .vmf Dateien für die Source Engine. Die Quelldateien können theoretisch auch mit einem einfachen Texteditor geöffnet und bearbeitet werden. Die Finale für das Spiel lesbare Datei wird als .bsp (Binary Space Partitioning) gespeichert.
Der Hammer Editor führt dazu automatisch, je nachdem ob er für die GoldSrc Engine oder die Source Engine kompatibel ist, vier (qcsg.exe, qbsp.exe, vis.exe und qrad.exe) bzw. drei (vbsp.exe, vvis.exe und vrad.exe) externe Programme aus, die nacheinander folgende Aufgaben erledigen und das Ergebnis in die .bsp Datei schreiben:
* Binary Space Partitioning Berechnung: Dies bestimmt, welche Polygone später im Spiel zu sehen sind, und schneidet alle überschüssigen Flächen aus der Leveldatei. Dies funktioniert nur dann korrekt, wenn die Map vollkommen versiegelt ist, also keine leaks entstehen, die es unmöglich machen Außen- und Innenseite der Map zu unterscheiden. Das Ergebnis ist eine vollkommen optimierte, „ausgehöhlte“ Geometrie.
* Visibility Berechnung: Dieses Programm überprüft, welche Teile des Levels zueinander sichtbar sind, und unterteilt es in einzelne Zellen. Im Spiel werden, um den Rechenaufwand so gering wie möglich zu halten, nur die für den Spieler sichtbaren Zellen des Levels dargestellt. Oft, sofern das Level nicht optimiert wurde, ist dies der rechenintensivste und längste Teil des Kompilierprozesses.
* Radiosity Berechnung: Verwendet Radiosity um natürlich wirkende Licht- und Schatteneffekte zu berechnen. Die Beleuchtungsdaten werden in niedriger Auflösung in der endgültigen Level-Datei gespeichert.
Der Kompilierprozess ist komplex und kann, abhängig von der Größe des Levels und der Geschwindigkeit des verwendeten Computers, mehrere Stunden in Anspruch nehmen. Schlecht optimierte Maps können den Prozess noch weiter verlangsamen oder sogar zu einem Systemabsturz führen. Innerhalb des Editors besteht die Möglichkeit komplexe oder kleinteilige Brushes in Detailbrushes umzuwandeln, diese werden von der Visibility-Berechnung ausgenommen und beschleunigen somit diesen Berechnungsvorgang. Es ist auch möglich die mitgelieferten Kompilierungsprogramme durch modifizierte zu ersetzen und das Level durch diese berechnen zu lassen.