Day of Defeat: Sprengbare Wände

Tutorial über Wände zum Zerschießen und zum Sprengen

Wir werden das Ganze so abhandeln, als würde Mutti für uns einen Kuchen backen. Soll heißen, wir erstellen zuerst eine Liste mit den Zutaten und im Anschluss rühren wir alles zusammen. Halten wir uns also auch nicht lange mit der Vorrede auf , sondern schreiten forsch zur Tat und schauen, welche „Zutaten“ wir benötigen:

  • 1x func_breakable (die Wand oder Decke, die zerstört werden soll)
  • 1x dod_object_goal (schlicht der Auslöser der ganzen Geschichte)
  • 1x dod_object (das TNT, mit dem das Ziel gesprengt wird)
  • 1x env_explosion (erzeugt in der Map die Explosion des TNT's)
  • 1x env_sprite (die Garnitur des Kuchens, der Timer)
  • 1x multi_manager (sorgt dafür, das die Geschichte funzt)

Setzen wir einmal voraus, die Map hat schon eine annehmbare Gestaltung gefunden, zu der auch ein Gebäude oder ähnliches gehört, in das durch unsere aufbrechbare Lücke eingedrungen werden kann / soll. Die Lücke ist schon ansprechend designed, so daß sie nach dem Zerstören auch wirklichkeitsgetreu wirkt. In diese Lücke plazieren wir vier weitere Blöcke. Am besten ordnet man diese so an, daß sie jeweils mit dem angrenzenden Mauerwerk bündig abschließen, aber zwischen sich selbst eine dezente Lücke offn lassen. So kann man dann in der Map ohne Probleme die Stelle ausfindig machen, die zerstört werden soll.

Jetzt wird nacheinander jeder einzelne Block unter gedrückthalten der Taste Strg angeklickt, so daß alle vier zusammen markiert sind und anschließend über die sich oben befindende Menüleiste per Tools / Tie to entity in ein func_breakable verwandelt werden. Wichtig ist, daß es im Anschluß nur ein func_breakable ist, damit auch die Funktionalität gesichert ist. Nun zu den ersten Feinheiten. Über anklicken der Bruchstelle und anschließendes Alt - Enter sehen wir nun, daß wir hier ein func_breakable haben.

func_breakable

  • Name: Wand (wie unsere Bruchstelle heißen soll)
  • Strength: 1 (Schadensgöße)
    • Diese Definition bestimmt, welchen Schaden die Bruchstelle einstecken kann. Unser Wert ist das Minimum, was bedeutet, daß man schon beim ersten Schuß einer Waffe ein Loch hat. Andere Werte werden wir später erörtern, dieser ist nur zur Veranschaulichung gedacht. Der Name ist nicht zwingend nötig, kann auch weggelassen werden.
  • Material type: - (erklärt sich von selbst)
    • Hier kann man ganz nach Belieben in der Liste aussuchen, aus welchem Material die Bruchstelle sein soll - Holz, Stein, Glas, etc.
  • Gibs Direction: Random (gibt die Flugrichtung der Trümmer an)
  • Delay before fire: 0
    • Der Wert muß unbedingt auf „0“ sein, weil er in Verbindung mit einer Zusatzfunktion steht, die gleich näher erläutert wird
  • Gib model: - (Splittermodel für die Trümmerstücken)

Man kann hier ganz bequem über die Browserfunktion nach den geeigneten Trümmermodels suchen, die nach der Zerstörung durch die Gegend fliegen. Zu finden sind diese im Verzeichnis …Half Life/dod/models/(evtl.)mapmodels/ und dann das geeignete anklicken. Alle anderen Einstellungen interessieren uns nicht und bleiben unverändert.

Nun fügen wir noch eine Zusatzfunktion ein, die in Verbindung mit der Delay before Fire Einstellung zusammenhängt:

Zuerst Smart edit anklicken und dann add. Unter Key geben wir den Befehl killtarget ein und unter value Intrudetrigger

Letzteres ist der Name unseres dod_object_goal, zu dem wir als nächstes kommen. Diese Einstellung bewirkt in Verbindung mit Delay before Fire „0“, daß es nicht mehr möglich ist, nach dem Zerschießen der Wand an dieser Stelle noch das TNT zu plazieren. Auf der Seite der Wand, wo das TNT plaziert werden soll, kreieren wir einen weiteren Block mit der AAATRIGGER Textur. Er sollte ungefähr die Form einer mindestens mannhohen Wand haben, die genau vor das Trümmerstück plaziert wird. Daraus machen wir ebenso mit Tie to entity unser dod_object_goal.

dod_object_goal

  • Name: Intrudetrigger (Name des Auslösers)
  • Target: Intrudermulti (Name unseres Multimanagers)
    • Läuft ein Spieler, der das TNT aufgesammelt in diesen Auslöser, gibt der einen Befehl an unseren Multimanager weiter, der dann den restlichen Ablauf steuert.
  • Group Name: boom
    • Damit definiert man, welche der Parteien diesen Auslöser aktivieren kann und es wird auch das passende TNT gebunden. Gibt es mehere TNT Stellen, erhalten alle den selben Gruppennamen, es sei denn, man will für verschiedene Plätze unterschiedliche TNT's verwenden. Das ist aber nur sinnvoll, wenn dann eine HUD-Mitteilung eingebunden wird, z.Bsp.: „Sie haben das TNT für den Ostwall“. Für unser Tutorial ist das aber nichtzutreffend.
  • Sprite to: - (Sprite, das auf dem HUD gezeigt wird)
    • Das kann auch wieder ganz bequem in ..Half-Life/dod/sprites/(evtl.)mapsprites gesucht werden. Das zeigt dann auf dem HUD an, hier ist eine TNT Stelle. Alle anderen Optionen bleiben unberücksichtigt und unverändert.

Nun klicken wir einmal auf das Entity Tool in der linken Menuleiste. An der Stelle, wo das TNT aufgenommen werden soll, erstellen wir jetzt mit Rechtsklick Create Object und anschließendem Alt - Enter unser dod_object, also das TNT selbst. Unter Class Info tragen wir folgendes ein:

dod_object

  • Model: - (Model des TNT's)
    • Hier wird genau so verfahren, wie mit den Gib models oder dem TNT Sprite. Einfach den Browser öffnen und das TNT Model aussuchen. Es sollte unter ..Half Life/dod/models/Tnt.mdl zu finden sein.
  • Objects Name: TNT (Name für das TNT) !!!ACHTUNG!!! Nicht zu verwechseln mit Name!
  • Team that can pick up: (einfach die Seite aussuchen)
  • Group Name: boom (siehe oben)

Alle anderen folgenden Einstellungen sind für das Gelingen nicht relevant. Das kann jeder nach Geschmack und Bedarf gestalten. Hier wird festgelegt, welcher Sound beim Aufnehmen zu hören sein soll, wieviel Punkte derjenige erhält, der das TNT nimmt, etc. Einzig unter Name, Target, Moves with, Target when complete und Master sollte man wirklich nichts eintragen.

Nun zu unserer Explosion. Ähnlich dem TNT erzeugen wir möglichst nah an oder besser in der Bruchstelle ein entity, das env_explosion. Hier die Class Info Einstellungen:

env_explosion

  • Name: intruder (So heißt halt das Teil)
  • Magnitude: 200 (gibt den Explosionsradius an)

200 ist ein guter Wert. Je größer der Wert, desto größer der Radius. Es wird hier nicht die Stärke der Explosion festgelegt. Den Namen bitte klein schreiben, der Multimanager wird es danken. Bei Smart edit nimmt er nämlich nur Kleinschreibung. Unter Flags machen wir noch bei Repeatable ein Häkchen und fertig ist unsere Explosion.

Kommen wir jetzt zum Dessert, daß uns seit DoD2.0 beschieden ist, dem Timer. Mit dem Entity Tool plazieren wir vor die Wand das env_sprite. Es sollte auch auf der Seite sein, von wo aus das TNT plaziert wird. Klar, oder? Hier die Einstellungen unter Class Info:

env_sprite

  • Name: count (Name halt, klein schreiben!)
  • Framerate: 1 (Spielt mit 1 Bild pro Sekunde)
    • Der Countdown läuft von 5 runter auf Null. Da ist es doch nur richtig, daß er das auch im Sekundentakt macht, oder?
  • Spritename: -

Hier machen wir es wieder so, wie bei den anderen Sprites und Models, einfach browsen und in …Half Life/dod/sprites/mapsprites das c2_5to1count auswählen. Das ist der schöne, rote Countdown aus Caen2. Alle anderen Einstellungen lassen wir wieder unberührt, lediglich unter Flags setzen wir bei Play Once noch ein Häkchen.

Abschließend erzeugen wir abermals mit dem Entity Tool ein weiteres entity, den multi_manager. Der sorgt jetzt dafür, daß alles reibungslos funktioniert. Wegen der Übersicht in WC sollte er in der Nähe der Wand plaziert werden, spieltechnisch hat das keine Auswirkungen. Hier wieder die Einstellungen unter Class Info:

multi_manager

  • Name: Intrudermulti (Jeder muß irgendwie heißen)

Mehr gibt es hier nicht zu tun. Der Rest wird über die Smart Edit Funktion erledigt. Über add geben wir jeweils bei Key und Value folgendes ein:

  • Key: 0 Value: count
  • Key: count Value: 0
  • Key: intruder Value: 5

Das bewirkt, das der Countdown zu Beginn inaktiv ist, aber nach Aktivierung des multi_managers durch den Auslöser, das dod_object_goal, sofort den Timer abspielt. Nach Ablauf von 5 Sekunden schickt der multi_manager ein Signal an das env_explosion und die Explosion wird gezündet. So, fertig ist das Ganze! Jetzt noch einige Kleinigkeiten. Vielleicht wird sich der eine oder ander fragen, warum soll ich das TNT plazieren, wenn ich mit einem Schuß die Wand zerschießen kann? Richtig! So kann man schon mal den Ablauf gestalten und schauen ob und wie es funzt. Um es etwas interessanter zu machen, hier einige Anregungen. Stellt beim func_breakable den Strength Wert auf 2500. Da sollte man, je nach Waffe, ein bis zwei Magazine brauchen, um die Wand klein zu kriegen. Leider bräuchte man jetzt unzählige env_explosions, da das eine nicht genug Schaden macht. Erstellt einfach von dem Einen drei Kopien, benennt sie ebenfalls intruder, dann aber mit durchnummerierter Endung, wie z.Bsp.: intruder1 und so weiter. Verteilt diese dann etwas in der Wand und nehmt am multi_manager noch folgende Einstellungen unter Smart Edit vor:

  • Key: intruder1 Value: 5.5
  • Key: intruder2 Value: 5.7
  • Key: intruder3 Value: 5.8

Dadurch erzeugt man noch drei nachfolgende, zeitversetzte Explosionen, was auch noch richtig gut aussieht! Mann kann das alles nach eigenem Wunsch gestalten, z.Bsp. auch alle env_explosion den gleichen Namen verpassen, so daß sie mit einem mal zünden. Auch die Menge kann verändert werden, je nach dem mit wievielen TNT's man die Wand zerstören will. Im Map Beispiel, daß ich dafür beigefügt habe, braucht man z.Bsp. zwei MP Magazine oder vier TNT's.

So, dann probierts man fleißig aus und viel Erfolg bei Euren Projekten!

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/sprengbare-waende.txt · Zuletzt geändert: 2004/12/30 19:29 von maurusl