Cutscene

Nachdem nun kleinere Bühnen gebaut wurden, gehen wir jetzt unter die Filmemacher. Ich möchte eine Introsequenz als Einleitung erstellen sowie eine Ausblendung nach dem Annehmen der Belohnung einfügen , um die Überleitung ins nächste Gebiet zu gestalten.
Die Introszene soll dazu beitragen,  das etwas steife Herumstehen des Spielers nach dem Einladen der Area zu verbergen.


Ankunft

Einrichten

Zum Erstellen einer Cutscene benötigt man

  • eine Area sowie
  • ein Cutscenenobject

Die Area soll die lhj100ar_gasthaus sein. Die Cutscene erstellen wir über File -> New -> Cutscene. Sie erhält den Namen lhj100sc_intro. Wir sehen ähnlich der Stage einen geteilten Bildschirm: oben die Fenster, um die Einstellungen und die Kamerabilder zu beobachten, unten die Zeitlinie, in der die Objektaktionen und Animationen eingestellt werden.

Im Object Inspector wird jetzt unter Area unsere Gasthausarea eingestellt. Unter Time Scale stelle ich Sekunden ein. Durch Klick auf die Timeleiste und anschließenden Scrollen kann ich mir hier die Zeiteinteilung besser einstellen.
Wenn man eine gute Stage erstellt hat, kann man diese über den Object Inspector ggf. ebenfalls einfügen. Bei meiner kleinen Szene ist dies nicht nötig.

Ich füge nun meine Charaktere ein – dies geschieht wie in der Area. Unter Source ordne ich ihnen die entsprechenden Charaktere zu. Für den eigenen Char erstelle ich entweder über File -> Creature einen Dummy oder füge eine andere Figur ein. Wichtig ist lediglich, dass dieser Char unter Mapping Tag Player stehen hat.

Timeline

Mit Rechtsklick oder Drücken der Taste T füge ich einen neuen Track für ein Objekt ein.
Über Rechtsklick auf diesen Track kann ich nun angeben, was in diesem Track eingefügt werden soll – z.B eine Action wie Play Animation.
Im Object Inspector kann dann unter Animation die gewünschte Animation ausgewählt werden. Durch Klick auf […] werden weitere Animationen angezeigt, aus denen ich durch Eingabe von z.B. *sit* [Enter]   Sitzanimationen filtern kann. Um weitere Animationen einzufügen, erstellt man weitere Tracks und fügt hier andere Animationen ein. Dabei können sich die Animationen durchaus überschneiden.

Animationen können auch aus der Animationsliste ausgewählt und dann von Hand in das Feld eingetragen werden.
Durch Klicken und Ziehen an dem kleinen Kreisel am Ende des Animationsbalken wird diese wiederholt, duch einfaches Ziehen am Balken wird die Geschwindigkeit der Animation verändert.

Ich stelle auf diese Art und Weise ein, dass der Gast, der später schläft, auf dem Stuhl sitzt und trinkt, die anderen unterhalten sich und gestikulieren dabei. Die Wirtsfrau säubert die Theke und der Hund schläft zunächst, kratzt sich dann und steht dann auf.
Mein Char soll durch den Gasthof zur Theke gehen und dort die Wirtsfrau grüßen.

Hierfür stelle ich meinen Char an die Ausgangsposition und halte diese Position durch Klick auf die Taste ‚K‘ fest (Rechtsklick auf den Dummy in der Timeleiste zeigt einem die Auswahlmöglichkeiten)

Ich versetze den Zeitmarkierungsanzeiger, setze den Char dann entsprechend weiter, justiere evtl. noch die Drehung des Körpers, und klicke wiederum auf ‚K‘.
Nun markiere ich beide Fixpunkte und wähle im Object Inspector unter Transition Out die Verbindungsart Linear. Bezier wähle ich, wenn ich mehrere Wegpunkte z.Bsp. bei der Kameraeinstellung über eine weiche Linie verbinden will, ohne dass es abgehackt wirkt. So arbeite ich meinen Char langsam über die Zeit auf die Theke zu. Zwischendurch immer wieder die Position neu festhalten. Durch Einschalten des Knopfes „Show Trajectories“ in der Symbolleiste kann ich den Weg als rote Linie erkennen. Sie sollte möglichst abgerundet verlaufen. Durch Klick auf die Linie werden die Keypoints sichtbar und ich kann sie ggf. von Hand leicht versetzen, um die Bewegungskurve abzurunden. Durch Veränderung des Abstandes der einzelnen Punkte kann sich die Laufgeschwindigkeit verändern, und statt eines energischen Gangbildes ein Gleiten entstehen. Zu Beginn wird man hier sehr viel ausprobieren müssen und immer wieder nachjustieren.

Nachdem meine Charaktere soweit in die Scene  eingebaut wurden, plane ich die Kameraführung.

Kamera

Diese soll zunächst auf die Empore blicken und dann mit langsamen Schwenk durch den Gastraum unseren Held verfolgen.

Nach dem Einstellen der Kamera auf die Empore, drücke ich ‚K‚ (Key Selection), um die Einstellung festzuhalten, dann stelle ich den Markierungsanzeiger weiter und stelle die nächste Kameraansicht ein. Mit ‚K‚ wird auch diese fixiert und anschließend wie bei der Laufanimation die Verbindungsart festgelegt. Über FOV kann ich auch die Kamera näher an das Objekt heranzoomen. So arbeite ich mich langsam durch den Gastraum, und beobachte im oberen Kamerafenster das Bild, um evtl. Akteure neu auszurichten. Hierzu werden sowohl ihre Keypoints als auch die Animationen markiert und entsprechend verschoben.

Ich kann durch Bewegen des Zeitmarkierungsanzeiger und Einstellen des markierten Bildschirms auf Active Kamera den Ablauf langsam verfolgen. Durch Einstellen von Safe Frame kann ich wie bei der Stage den korrekten Ausschnitt sehen.

Will ich den zeitgerechten Ablauf sehen, drücke ich den „Play Button“ in der Symbolleiste. Dies verschafft mir eine Übersicht, wie die fertige Szene im Spiel aussehen wird.

Zum Schluss erstelle im Masterobjekt einen neuen Track und füge ein Fade In hinzu, um die ersten Millisekunden eine langsame Einblendung zu erhalten.

Fertige Introszene

Intro

Abschied

Die Ausblende aus dieser Area gestalte ich über die Conversation mit Edwina. Hierfür konvertiere ich den letzten Satz von Edwina „Oh danke, hier ist das versprochene Heldenamulett.
Dann werde ich mich nun um Euer Essen und das Bett für die Nacht kümmern.“ zur Cutszene. Markieren des Satzes und  Edit -> Convert Line To Cutscene. Die Cutscene erhält automatisch die ID des Satzes als Namen. Eine Stage ist ebenfalls schon eingebaut. Ich füge jetzt unter Master noch einen Track hinzu. Dem  Track ordne ich ein Fade Out zu, das langsam die Figuren ausblendet.

Um den Areawechsel durchzuführen erstelle ich ein neues Script für die Areatransition lhj_areatransition:
void main()
{
object oHero = GetHero();
object oArea = GetArea(oHero);
//if(oArea == GetObjectByTag("lhj100ar_gasthaus"))
// {
DoAreaTransition("lhj200ar_drachenfels","lhj200wp_start_drachenfels");
//}
}

Dieses Skript ordne ich dem letzten Satz des Helden nach der Abblende unter Plot und Scriptung als Action zu. Der Held wird dadurch nach der Abblende automatisch in die neuen Area transportiert und taucht dort am angegebenen Waypoint auf.

(Die Ankunftscene ist noch nicht vollständig durchgearbeitet hinsichtlich der Animation und des Bewegungsablaufes, da die endgültige Area noch fehlt.)

BtB – Datei: Lehrjahre010

Oben


Weiterlesen…