Levelwechsel im Allgemeinen

In diesem Tutorial soll der flüssige Wechsel zwischen zwei Level erklärt und das Zusammenwirken der einzelnen Entities verständlich gemacht werden. Am Ende sollte man in der Lage sein den Levelwechsel an jeder x-beliebigen Stelle umzusetzen. Dabei werden elementare Grundkenntnisse in der Bedienung des Hammer Editors und der Erstellung von Maps vorausgesetzt.

Gebraucht werden:

Hinweis! Beide Karten müssen unabhängig voneinander lauffähig sein. Das heißt, dass in jedem Level ein info_player_start platziert werden muss, da der Spieler sonst beim Wechsel tot im neuen Level ankommt. Außerdem erleichtert es einem das Testen der Karten.

Planung

Bei der Planung und Umsetzung eines Levelübergangs sollten einige Dinge bedacht werden. Ziel ist es, dem Spieler die Illusion einer riesigen Spielwelt vorzugaukeln. Daher müssen sich die Übergänge optische ähneln, so dass der Spieler außer einer kurzen Ladezeit nichts mitbekommt. Es bietet sich deswegen an, den Wechsel an kleinen und verwinkelten Orten umzusetzen, die wenig Einsicht in das restliche Level bieten. Man verhindert dadurch, dass zu viel der Levelarchitektur mit in das neue Level kopiert werden müsste. Sonst könnte auf den Levelwechsel verzichtet werden, wenn zum Beispiel in level2 große Teile von level1 einsehbar sind.

Um den Spielfluss nicht zu behindern, ist es nicht sinnvoll Feinde in der Nähe des Übergangs zu setzen. So wird vermieden, dass aus versehen zwischen den Level gewechselt wird, weil man sich vor dem Feind zurück ziehen will.

Levelwechsel können auch direkt als Stilmittel in den Konzeption einer Mod einfließen um Abschnitte oder Kapitel offensichtlich zu trennen oder um bestimmte Ereignisse vorzugaukeln, die sonst schwer umzusetzen wären. Bei Half-Life erwacht der Spieler beispielsweise in einem zerstörten Testraum, der vor der Ladezeit noch intakt war.
Denkbar ist, den Levelwechsel als Sackgasse zu gestalten um den Spieler an der Rückkehr in das vorherige Level zu hindern. Gestaltungstechnisch sind einem kaum Grenzen gesetzt, also lasst eurer Kreativität freien Lauf.

Vorbereitung des Level

Ich habe mich in meinem Beispiel für einen S-förmigen Gang entschieden, um zu verdeutlichen, wie problemlos ein Levelwechsel auch bei „komplizierterem“ Brushwork funktionieren kann. Der Spieler kommt von links und folgt dann der Biegung. Dem Level habe ich den Namen level1 gegeben und es auch so gespeichert.

Aufbau des Übergangs

Verlassen des alten Level

Platziert nun einen Brush mit der Textur “AAATRIGGER“ an die gewünschte Stelle und macht daraus ein trigger_changelevel Entity und gebt diesem folgende Eigenschaften:

  • name - wird zum triggern benötigt, kann hier frei bleiben
  • New map name - level2
  • Landmark name - lc1-2

Hinweis! Die Größe des trigger_changelevel-Brush ist egal. Auch ob er Wände berührt oder sie schneidet. Der Levelwechsel wir beim Eintreten in Abhängigkeit zur info_landmark berechnet und ihr habt in level2 genau die selbe Entfernung zu dieser wie beim Verlassen von level1. Macht euch das bewusst.

Platziert nun ein info_landmark in euer Level. Um den Überblick zu behalten, positioniert ihr sie am besten unweit von eurem trigger_changelevel. Ich hab sie in der Mitte meines S-förmigen Ganges postiert, damit ich sie sofort sehe und sie leichter zuordnen kann.

Macht bei der info_landmark dann folgenden Eintrag:

  • name - lc1-2

Hinweis! Letztlich spielt es eigentlich keine Rolle, wo ihr sie platziert, sie dient dem trigger_changelevel, wie bereits geschrieben, nur als Orientierungspunkt. Wichtiger ist, dass Name der info_landmark eindeutig ist, damit es nicht zu Problemen kommt, falls ihr mehrer davon in eurer Karte habt.

Bei mir sieht das für level1 nach allem dann so aus:

Ergebnis im ersten Level

Ihr könntet jetzt die Karte schon einmal kompilieren und testen. Der Levelwechsel funktioniert natürlich noch nicht.

Betreten des neuen Level

Erstellt nun eine neue Map und speichert auch diese unter einem gewünschten Namen. Ich habe sie level2 genannt, da dieser Name auch schon im trigger_changelevel in level1 eingetragen ist . Baut nun entweder exakt den Levelübergang aus level1 nach oder macht es euch einfach und kopiert ihn samt trigger_changelevel und info_landmark aus level1.

Und jetzt folgt das Entschiedenste um den Levelwechsel nahtlos und flüssig zu gestalten. Verschiebt nun nicht irgendwie die info_landmark sondern den trigger_changelevel an die Stelle, von der aus man zurück in level1 kommen soll. Ändert dann folgenden Eintrag im trigger_changelevel:

  • New map name - level1
  • Landmark name - lc1-2

Hinweis! Wie ihr also bemerkt habt, hat die info_landmark in level2 genau die selbe Position wie in level1. Mit Position ist aber nicht die Position im Koordinatensystem von Hammer gemeint, sondern die Position im Bezug zum Brushwork des Levelübergangs. Schaut euch dazu das Bild zu level2 an. Vielleicht wird es dann klarer, was gemeint ist.

Für level2 sieht das dann so aus:

Ergebnis im zweitem Level

Kompiliert nun level2 und testet es (denkt an den info_player_start!). Wenn ihr alles richtig gemacht habt, dann könnt ihr nun problemlos und flüssig zwischen den Level wechseln ohne irgendwo hängen zu bleiben.

Hinweis! Wenn ihr beim Wechsel hängen bleibt, habt ihr entweder die Position der info_landmark verändert oder ihr habt in level2 an der Stelle einen Brush, an der in level1 keiner war.

Ohne Rückkehr

Wenn ihr den Spieler die Rückkehr in das vorhergehende Level verwehren wollt, dürft ihr den trigger_changelevel in level2 nicht einfach löschen oder weglassen, denn sonst steckt der Spieler unter Umständen irgendwo fest, wenn er das Level betritt. Um einen Wechsel ohne Rückkehr umzusetzen, gibt es mehrere Möglichkeiten.

Methode 1
Erstellt in level2 wie beschrieben einen trigger_changelevel, aber platziert ihn außerhalb der Reichweite des Spieler. Zum Beispiel in einer Wand.

Methode 2
Macht beim trigger_changelevel in level2 unter „Flags“ ein Häkchen bei „USE Only“. Das hat den Vorteil, dass ihr den trigger_changelevel wieder aktivieren könnt, wenn er einen Namen trägt und ausgelöst wird. FIXME

Levelwechsel auf einer Treppe

Wenn ihr das Prinzip verstanden habt, könnt ihr den Levelwechsel an allen möglichen Stellen umsetzen, ohne dass der Spieler hängen bleibt oder das Gefühl hat, einen „Sprung“ zu machen. Selbst wenn der Wechsel auf einer Treppe stattfindet.

Der Spieler kommt in level1 von links, geht durch den Levelwechsel…

…und kann in level2 ohne Schwierigkeiten die Treppe hoch und trotz Stufen wieder ins erste Level zurück.

Levelwechsel an einer Biegung

Die trigger_changelevel müssen nicht zwangsweise parallel zu einander stehen. Es kann auch ein Levelwechsel nach einer Biegung platziert werden.

Download

Hier ein Download der die drei genannten Beispiel in zwei Karten vereint.

Download

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/level-change.txt · Zuletzt geändert: 2011/05/25 23:05 von Adrian_Broher