• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

GERMAN - Video-Skip-Funktion

Level 3
Joined
Dec 28, 2003
Messages
15
VIDEO-SKIP-FUNKTION

Tutorial: Video Skip Funktion

Was ist eine Video-Skip-Funktion?
Normal kann man Zwischensequenzen im Spiel nicht überspringen. In einer Map mit einer Video-Skip-Funktion besteht die Möglichkeit, das Video mit der ESC-Taste zu überspringen.

Warum eine Video-Skip-Funktion?
Besonders in umfangreicheren Maps kann es nervig sein, Videos mehrmals anschauen zu müssen. Dies ist zum Beispiel der Fall, wenn man gestorben ist und von neu anfängt bzw. einen Spielstand lädt. Deswegen sollte für den Spieler die Möglichkeit bestehen, diese Videos zu überspingen. Das scheint nicht nur professionel, sondern es erspart auch
jede Menge Ärger ;) .

Der Aufbau eines Videos
Es wäre empfehlenswert die Videos wie folgt aufzubauen. In diesem Beispiel heißt das Video "Intro":

1.Auslöser: Intro Setup
Im Setup eines Videos werden alle Vorbereitungen getroffen. Unteranderem wird hier das Video ausgelöst (Z.B. durch den Event Einheit-Generic Event).
Mögliche Vorbereitungen:
-Tageszeit festlegen
-Einheiten platzieren
-Wetter
-.....
Zum Schluß des Setups wird das echte Video gestartet( Unser nächster Aulöser):
Code:
Auslöser-Run Intro Video <gen> (checking conditions)


2.Auslöser: Intro Video
In diesem Auslöser befindet sich das echte Video. Dies ist der Teil, der
übersprungen werden kann. Am Anfang dieses Auslösers wird der Cinmatic-Mode angeschaltet, am Schluß ausgeschaltet.Hier steht am Schluß die Aktion
Code:
Auslöser-Run Intro Endsetup <gen> (checking conditions)
Siehe dazu den 4.Auslöser.


3.Auslöser: Intro UB
Dieser Auslöser wird nur dann gestartet, wenn der Spieler das Video überspringt. Hier werden die Aktionen durchgeführt, die im auch Video sind. Z.B. wenn im Video eine Einheit stirbt, dann wird im UB-Teil diese Aktion gesetzt:
Code:
Einheit-Kill/Remove Einheit.
Dies muss unbedingt sein. Wenn wird diese Aktion weggelassen hätten und der Spieler das Video vor dem Töten der Einheit übersprungen hätte, dann würde die Einheit nach dem Video noch leben, da sie noch nicht getötet worden ist.Dies ist eine sehr häufige Fehlerquelle. Deswegen sollte man immer genau nachprüfen, ob man nichts vergessen hat. Pflicht ist auch das ausschalten des Cinematic-Modes und das Wiederherstellen der Spielkamera.
Am Schluß muss noch folgende Aktion stehen (Siehe dazu 4.Auslöser):
Code:
Auslöser-Run Intro Endsetup <gen> (checking conditions)

4.Auslöser: Intro Endsetup
In diesem Auslöser werden alle Endvorbereitungen getroffen. Hier stehen die Aktionen, die nach dem Video kommen, z.B das Zeigen eines Quests, das Geben eines Gegenstandes usw..
Hier ist der Vorteil dieses Auslösers:
Theoretisch könnte man ja die Endvorbereitungen auch am Ende vom Auslöser "Video" und im Auslöser "UB" treffen. Hierbei sollte man aber bedenken:
-Mit dem Auslöser "Endsetup" spart man sich das zweimalige setzen dieser Aktionen
-Wenn das Video an einem ungünstigen Zeitpunkt geskippt wird (z.B. ganz kurz vorm Ende), dann könnte es passieren, dass der Quest zweimal angezeigt wird oder dass der Held zwei Gegenstände
bekommt.
Aus diesen Gründen sollte man diesen Auslöser ebenfalls hinzufügen.

Vorbereitungen
In diesem Tutorial wird beschrieben, wie man das Überspringen mit einer Integer-Variable realisiert. Es gibt noch andere Möglichkeiten (z.B mit Wahrheitswerten). Jedoch ist die Integer-Variante zu bevorzugen, da die mit dem Wahrheitswert zur Unübersichtlichkeit neigt.

Als erstes brauchen wir eine Integer Variable:
800_3735666434303566.jpg

In diesem Fall heißt sie "Video".

Einsatzbereich von "Video"
Am Anfang und Ende jedes Video-Auslösers(z.B. Intro Video) sollte die Variable stehen.
-Am Anfang des Auslösers wird der Zwischensequenz(bzw. Intro oder Outro) eine Zahl zugewiesen.
Z.B. für das erste Video der Wert "1", für das zweite der Wert "2" usw.. :
800_3439356131613332.jpg

Am Ende des jedes Video-Auslösers wird der Wert wieder auf "0" gestellt:
800_6331626666363135.jpg

Der Sinn dessen wird zu einem späteren Zeitpunkt erklärt oder ergibt sich von selbst ;)

Am Anfang jedes "UB"-Auslösers sollte "Video" der Wert 0 zugewiesen werden:
800_6233376438656265.jpg


Wieder zurück zu den Video-Auslöser:
Nun werden zwischen allen Aktionen, die eine Zeit dauern, folgende Aktion gesetzt:
Code:
If(Video Gleich 0)then do(Skip remaining actions)else(do nothing)
Hier wird immer während dem Video abgefragt, ob Video den Wert 0 hat. Das ist dann der Fall, wenn der UB-Auslöser gestartet worden ist (Denn am Anfang des UB-Auslösers wir Video ja der Wert 0 zugewiesen!).Ist die Bedinung erfüllt, so werden die restlichen Aktionen vom Video-Auslöser überprungen (durch die Aktion Skip remaining action)
Aktionen, die eine Zeit dauern sind z.B:
Code:
Video-Transmission from Unit
Video-Transmission from Unit-Type
Wait
Wait game-time



Das Überspringen
Nun sollte ein neuer Auslöser Namens "Ueberspringen" erstellt werden.
800_3037373635646335.jpg

Als Ereigniss ist hier das Event
Code:
Player-Cinematic Skipped
gesetzt. Das heißt, dass dieser Auslöser ausgelöst wird, wenn Spieler1 während eines Videos (Also während der Cinematic-Mode an ist) die ESC-Taste drückt. Dann wird hintereinandern abgefragt auf welchen Wert die Variable "Video" gerade ist.
Ist Video gerade auf "1", so wird der Auslöer "Intro UB" gestartet.
Ist Videogerade auf "2", so wird der Auslöer "Baldurin UB" gestartet.
usw..

Somit hätten wir eine Video Skip-Funktion eingebaut.
Hier nochmal alles zusammengefasst in einer Grafik:
800_6634653533333534.jpg


Der normale Durchgang sieht so aus:
Code:
Intro Setup -> Intro Video ->Intro Endsetup
-Am Anfang ist Videoauf "1"
-Am Schluß wird Video wieder auf "0" gestellt
-Zuletzt läuft noch "Intro Endsetup"


Wenn jedoch die Escape Taste gedrückt wird so:
Code:
Intro Setup -> Intro Video->(mittendrin)Ueberspringen -> Intro UB -> Intro Endsetup
-Am Anfang des Videos ist Video auf "1".
-Dann wird die ESC-Taste gedrückt
-Dadurch wird "UB" ausgelöst und Video der Wert "0" zugewiesen
-Dann erfüllt sich sofort die Bedinung im Video-Auslöser, dass Video 0 ist
-Dadurch wird der Rest vom "Intro Video" übersprungen.
-Zum Schluß läuft noch "Intro Endsetup"

Somit ist der ganze Ablauf geklärt.


Zuletzt noch Tipps:

1.:
Im "UB"-Auslöser sollte man bevor die Aktionen gestartet werden ausblenden.(so ca.2-3 sekunden):
Code:
Video-Fade Filter
Am Schluß sollt dann natürlich wieder eingeblendet werden.
Dies macht alles noch professioneler! :) (siehe Bild oben)

2.:
Im "Endsetup" sollte man dann die Auslöser ausschalten, falls sie noch nicht vorher ausgeschaltet wurden:
Code:
Trigger-Turn off

3.:
Beim Endvideo kann man sich die Aktion
Code:
If(Video Gleich 0)then do(Skip remaining actions)else(do nothing)
sparen, da man beim Ensetup auf das Ergebniss
Code:
Game-Victory
herauskommt. Das Spiel wird dann somit beendet.


Zur weiteren Hilfe habe ich noch eine Beispielmap gebastelt:
Beispiel-Map-DOWNLOAD
Hier wird die Video-Skip-Funktion ausführlich beschrieben. Natürlich sind die Tipps eingebaut!

Wäre außerdem schön wenn ihr mich mit in die Credits aufnehmen könntet :ugly:


Achja, und plz Feedback!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! :)


mfg
Nemesis
 
Top