Models im Hammer 3.5

Um sich im Valve Hammer Editor 3.5 die passenden Models zu Pointentities anzeigen zu lassen muss die .fgd mit der wir mappen modifiziert werden. Das ist eigentlich ganz einfach.

Bevor wir uns daran machen irgendwelche Dateien umzuschreiben sollten wir aber zu allererst ein mal Google konsultieren, um herauszufinden ob es für die Mod, für die wir mappen, nicht schon eine umgeschriebene .fgd gibt. Bei Half-Life, DoD oder Counter-Strike dürfte so eine schon bearbeitete Datei nicht allzuschwer zu finden sein.

Sollten wir nun nicht fündig werden, oder aus anderen Gründen einem Entitie ein Model verpassen wollen, müssen wir uns erst überlegen ob wir:

a) Das Model für das Entitie im Editor auswählen wollen
b) Dem Entite ein Model fest zuweisen wollen

Beide Fälle werden wir anhand einer nicht modifizieren halflife.fgd Schritt für Schritt durchgehen. Als Beispielentitie nehmen wir das info_player_start.

Fall A

Um aas Model für das Entitie im Editor auswählen können tun wir folgendes:

  • Wir öffnen die .fgd, die wir modifizieren wollen, mit einem beliebigen Texteditor, z.B. Notepad.
  • Wir suchen in der Datei nach „info_player_start“.
  • Dabei finden wir die Zeile @PointClass base(PlayerClass) = info_player_start : „Player 1 start“ []
  • Um nun die Auswahl für das im Editor dargestellte Model hinzuzufügen müssen zwei Dinge hinzugefügt werden:
    • studio() in die erste Zeile nach dem @PointClass.
    • model(studio) : „Model“ in die eckigen Klammern.


Unser info_player_start, der vorher so aussah:

@PointClass base(PlayerClass) = info_player_start : "Player 1 start" []

sieht jetzt so aus:

@PointClass studio() base(PlayerClass) = info_player_start : "Player 1 start"
[
     model(studio) : "Model"
]

Und damit wären wir auch schon fertig. Ob es jetzt Sinn macht, dass man ein Model für einen info_player_start festlegen (welches sich auch nur auf den Editor und nicht auf das Spiel auswirkt!) kann sei dahingestellt, es geht ja nur um das Prinzip.

Beispiel: Cycler

Wenn man, was ausnahmsweise mal Sinn machen würde, z.B. einen Cycler oder monster_furniture (also alle Model-Auswählen-Entities) dazu bringen will dass das ausgewählte Model angezeiegt wird, muss man NUR das studio() nach @PointClass einfügen, da man, wenn man sich den den Cycler genauer ansieht, merkt, dass model(studio) : „Model“ beim Cyler standartmäßig dabei ist (Logisch, irgendwie muss man die Models ja auswählen können).

Ein normaler Cycler:

@PointClass base(Targetname, Angles) size(-16 -16 0, 16 16 72) = cycler : "Monster Cycler"
[
    model(studio) : "Model"
    renderfx(choices) :"Render FX" : 0 =
    [
        0: "Normal"
        1: "Slow Pulse"
        2: "Fast Pulse"
        3: "Slow Wide Pulse"
        4: "Fast Wide Pulse"
        9: "Slow Strobe"
        10: "Fast Strobe"
        11: "Faster Strobe"
        12: "Slow Flicker"
        13: "Fast Flicker"
        5: "Slow Fade Away"
        6: "Fast Fade Away"
        7: "Slow Become Solid"
        8: "Fast Become Solid"
        14: "Constant Glow"
        15: "Distort"
        16: "Hologram (Distort + fade)"
    ]
    rendermode(choices) : "Render Mode" : 0 =
    [
        0: "Normal"
        1: "Color"
        2: "Texture"
        3: "Glow"
        4: "Solid"
        5: "Additive"
    ]
    renderamt(integer) : "FX Amount (1 - 255)"
    rendercolor(color255) : "FX Color (R G B)" : "0 0 0"
]

Und ein modifizierter:

@PointClass studio() base(Targetname, Angles) size(-16 -16 0, 16 16 72) = cycler : "Monster Cycler"
[
    model(studio) : "Model"
    renderfx(choices) :"Render FX" : 0 =
    [
        0: "Normal"
        1: "Slow Pulse"
        2: "Fast Pulse"
        3: "Slow Wide Pulse"
        4: "Fast Wide Pulse"
        9: "Slow Strobe"
        10: "Fast Strobe"
        11: "Faster Strobe"
        12: "Slow Flicker"
        13: "Fast Flicker"
        5: "Slow Fade Away"
        6: "Fast Fade Away"
        7: "Slow Become Solid"
        8: "Fast Become Solid"
        14: "Constant Glow"
        15: "Distort"
        16: "Hologram (Distort + fade)"
    ]
    rendermode(choices) : "Render Mode" : 0 =
    [
        0: "Normal"
        1: "Color"
        2: "Texture"
        3: "Glow"
        4: "Solid"
        5: "Additive"
    ]
    renderamt(integer) : "FX Amount (1 - 255)"
    rendercolor(color255) : "FX Color (R G B)" : "0 0 0"
]

Bei allen Entities bei denen man so wie so ein Model auswählen muss, damit sie funktionieren muss man also nur studio() nach @PointClass einfügen.

Wenn wir jetzt den Editor aufmachen, haben die Entities ihre altbekannten bunten Boxen, erst wenn ein Model ausgewählt wird wird es auch im Editor angezeigt.

Fall B

Hier wollen wir dem Entity ein Model fest zuweisen.

  1. Wie bei Fall A, die .fgd aufmachen, unser Entitie info_player_start suchen. Da steht dann wieder mal:
    @PointClass base(PlayerClass) = info_player_start : "Player 1 start" []
  2. Alles was wir nun machen müssen, ist nach dem @PointClass das hier einzufügen: studio(„pfad/model.mdl“)
  3. Wenn wir also bei unserem info_player_start im Editor anstelle einer bunten Kiste ein Player-Model sehen wollen (z.B. den Zombie-Player) müsste das Entitie so aussehen:
    @PointClass studio("models/player/zombie/zombie.mdl") base(PlayerClass) = info_player_start : "Player 1 start"[]

Das Prinzip auf andere Entities zu übertragen dürfte nicht all zu schwer sein. Einfach immer nur ein studio(„pfad/zu/meinem/model.mdl“) nach dem @PointClass einfügen.

Häufige Probleme

Das häufigste Problem, mit dem User in dieser Sache zu kämpfen haben, ist das, daß die Models einfach nicht im 3D Fenster von Hammer 3.5 beta erscheinen wollen. Das kann im Kern nur 3 Ursache haben:

  1. Die FGD Datei ist fehlerhaft oder wurde fehlerhaft editiert
  2. Hammer wurde falsch konfiguriert
  3. Es fehlen die Models im entsprechenden Games/Mod Verzeichnis

Fehlerhafte FGD Datei

In diesem Fall sollte man sich eine der im Internet frei erhältlichen und vorkonfigurierten FGD Dateien für HL oder seine Mods besorgen.

Hammer falsch konfiguriert

Bei der „Game configuration“ in den Optionen ist der Pfad zum Game-Directory und Mod-Directory wichtig. Denn dort sucht Hammer relativ zur Pfadangabe nach den Models. Der Suchpfad ist in den meisten FGD-Dateien relativ zum ..\models Verzeichnis angegeben. Wenn Hammer dieses Verzeichnis sucht und dort (relativ) nichts findet, kann er auch nichts anzeigen.

Fehlende Models

Im oberen Abschnitt angesprochen müssen die Models im Verzeichnis GAME_DIRECTORY\models bzw. MOD_DIRECTORY\models vorhanden sein, die von der jeweiligen FGD Datei angesprochen werden sollen. Fehlt in diesem Verzeichnis ein Haufen Models, dann sollte man je nach Installationsart dieses Verzeichnis schleunigst mit Leben füllen!

In der normalen CD-ROM Installation von HL zum Beispiel ist dies das Verzeichnis ..\SIERRA\Half-Life\valve\models. Dort muß neben einigen Unterordnern auch zumindest die Datei player.mdl vorhanden sein. Falls nicht, sollte man das PAK-Archiv pak0.pak mit GCFScape oder dem PakExplorer öffnen und den gesamten Inhalt des Archivs ins valve Verzeichnis extrahieren. Spätestens dann erkennt Half-Life automatisch, daß es die lokale Ordnerstruktur benutzen und nicht - wie sonst üblich - auf das PAK-Archiv zurückgreifen soll. Das ist nämlich auch der Grund, wieso Hammer nichts findet: HL sucht in der PAK-Datei und nicht in der lokalen Ordnerstruktur. Doch dorthin kann Hammer nicht reinkommen, er ist auf die lokale Ordnerstruktur angewiesen! Sie muß also vorhanden sein!

Wer STEAM Half-Life zockt, der sollte stattdessen die Datei half-life.gcf aus seinem SteamApps Ordner mit GCFScape öffnen und den Inhalt nach ..\Valve\Steam\SteamApps\<Dein Accountname>\half-life\valve extrahieren.

Jetzt sollte auch das models Verzeichnis mit reichlich Models gefüllt sein, u.a. auch das Model player.mdl. Jetzt noch schnell den Hammer neu starten und die Models sollten soweit angezeigt werden.

Die Verwendung aller Dokumente einschließlich der Abbildungen ausschließlich zu nichtkommerziellen Zwecken. Verbreitung des Dokuments auf Speichermedien, (insbesondere auf CD-ROMs als Beilage zu Zeitschriften und Magazinen oder sog. "Mission-Packs" etc.) ist untersagt.
 
half-life/tutorials/models_in_hammer_3.5.txt · Zuletzt geändert: 2010/02/17 01:48 von Kriz