|
|
Einleitung:
Auf den ersten Blick kann so eine
leere Kismet Seite echt abschreckend wirken. Aber mit ein wenig
Übung wirst du schnell den nötigen Ehrgeiz entwickeln,
die leere Seite zu füllen und deine Ideen umzusetzen.
Kismet ist das Instrument, mit dem der User Mover erstellen
kann, Script events, Partikeleffekte an und ausstellen, vielleicht
sogar die KI kontrollieren und vieles mehr.
Man kann sich Kismet als ein GUI (graphical User interface)
vorstellen, welches Zugang zum code bietet, der die Engine steuert.
Dabei helfen kleine Kreise und Rechtecke, die dem User die Möglichkeit
geben, simple oder komplexere Sequenzen aufzubauen, um das Spiel
kräftiger auf den Spieler einwirken zu lassen.
Vorausgesetztes Wissen: Wie man eine simple Testmap erstellt
(BSP, Licht, Pfadnetzwerk und Playerstart).
Das Ziel dieses Tutorials ist es, den Leser in die Grundlegenden
Komponenten und Navigationen zu führen, am Ende werden
wir eine extrem simple Kismet Sequenz erstellen.
Also lasst uns anfangen... |
Übersicht:
Das Kismet Hauptfenster: Es ist in 3 Bereiche
unterteilt: Das Hauptfenster (Main Window), den Einstellungsbereich
(Properties Window) und der Sequenzbereich (Sequences Window).
Diese haben folgende Funktionen:
• Main: Hauptfenster: In diesem Bereich werden die Kismet
GUI Elemente platziert und miteinander verbunden, um auf sich
gegenseitig Funktionen auszuüben.
• Properties: Einstellungsbereich: Jedes erstellte Element
in Kismet hat eigene Einstellungen. Du findest sie in diesem
Bereich, wo du sie auch ändern kannst.
• Sequences: Sequenzbereich: Abhängig von der Aufteilung
und Funktion des Levels kann es in einigen Fällen sinnvoll
sein, Kismet in mehrere Sequenzen zu teilen. Dabei hilft der
Sequenzbereich dabei, die ganzen Aufteilungen übersichtlich
zu halten und es besteht die Möglichkeit, unter den einzelnen
Sequenzen ebenfalls Verlinkungen herzustellen und so ganze Sequenzabläufe
auszulösen.
*Anm.: Es ist möglich, die Anordnung der Bereiche seinen
eigenen Wünschen anzupassen.
|
Menüleiste:
|
Die Kismet Menüleiste:
• Open Parent Sequence (Übergeordnete Sequenz öffnen):
Funktioniert ähnlich des Zurück-Buttons deines Webbrowsers.
Ein Klick führt dich einen Zweig über die aktuell
markierte Sequenz.
• Rename Sequence (Sequenz umbenennen): Erlaubt die Umbenennung
der momentan ausgewählten Sequenz.
• Zoom To Fit (Zoombereich anpassen): Setzt den Zoombereich
automatisch so, dass alle Kismet-Elemente im sichtbaren Bereich
liegen.
• Hide Unused Connectors (Unbenutzte Verbindungen ausblenden):
Alle Verbindungen, die nicht belegt sind, werden ausgeblendet.
• Show All Connectors (Alle Verbindungen zeigen): Zeigt
alle verfügbaren Verbindungen aller Elemente.
• Lines/Curves (Linien/Kurven): Ändert die Linienarten
zwischen geraden Linien und Bezier Kurven. Im allgemeinen ist
das Geschmackssache.
• Open New Window (Neues Fenster öffnen): Ja.. genau.
|
Kontextmenü:
|
Das Kismet Kontextmenü:
Um auf das Kontextmenü zuzugreifen, reicht ein Rechtsklick
auf eine freie Fläche im leeren Hauptbereich. So werden
alle Kismet-Objekte erzeugt.
• New Action: Führt eine Aktion auf einen Actor aus,
abhängig davon welche Aktion ausgewählt wurde.
• New Matinee: Erstellt eine neue Matineesequenz und einen
Matinee data node.
• New Condition: Wird benutzt, um If-Abfragen "if...then"
und eine Ausgabe zu erstellen. Im Grunde nur ein Vergleich zweier
Zustände.
• New Variable: Erstellt eine Variable, die von Aktionen,
Abfragen oder anderen Kismet Elementen geändert werden
kann.
• New Event: Events werden grundsätzlich dazu genutzt,
Aktionen (Actions) auszulösen. Stell es dir als Kismet
vor, das irgendwelche Vorgänge im Level auffängt und
dann etwas ausführt.
• New Comment: Wie beim Coden ist es auch bei Kismet sinnvoll,
Kommentare einzusetzen. Entweder für die eigene Übersicht
oder für andere, die bestimmte Vorgänge verstehen
wollen.
• Create New Sequence: Erstellt eine neue Sequenz. Nach
dem Erstellen erscheint sie im Sequenzbereich. Achtung: Keine
Leerzeichen in Sequenznamen erlaubt.
• Paste here: Anstatt ein kopiertes Element aus der Zwischenablage
irgendwo in die Weltgeschichte einzufügen, kannst du es
mit dieser Funkion direkt an dieser Stelle einfügen.
|
Formen & Farben:
|
Kismet Objekte erscheinen in einigen
speziellen Formen und Farben, an denen folgendes erkennbar ist:
• Rechtecke: Entweder Aktionen (Actions) oder Vergleiche
(Comparisons).
• Rauten/Diamantenform: Events .
• Kreise: Normalerweise bei Zahlen oder bei irgendetwas
was in der Map vorkommt, Variablen, Referenzen oder beides.
|
|
• Rot: Booleans: Logische Wahr/Falsch (True/False) Attribute.
• Schwarz: Externe Variable: Nachdem sie mit einer anderen
Variable verbunden sind, nehmen sie die selbe Farbe dieser Variable
an.
• Dunkelblau: Floating Point Numbers: Im allgemeinen eine
"Computer"-Version von wissenschaftlichen Notationen.
(Zahlen mit Nachkommastellen).
• Hellblau: Integer: Ganzzahlige Ziffern.
• Lila: Objekte: Sie referenzieren ein Objekt, wie zum
Beispiel einen InterPActor oder Mover innerhalb des Levels.
• Grün: String: Eine alphanummerische Variable, die
Text beinhaltet.
• Weiß: Union: Kann mehrere Variablen in eine vereinen.
• Gelb: Vektor: Beinhaltet einen X, Y und Z Achsenwert.
Wenn du die beiden Screenshots einen Moment lang betrachtest
wird dir auffallen, dass an manchen Außenrahmen unten
kleine lila Dreiecke rauskommen. Das bedeutet, dass Objektvariablen
(weil die ja auch lila sind) an diese Verbindungen gehängt
werden können.
|
Verbinden/Trennen & Ein-/Ausschalten von
Kismet-Elementen:
Verbinden:
• 1) Klicke mit der linken Maustaste auf den "Out"-Eintrag
und halte die Taste gedrückt.
• 2) Beim Ziehen des Mauszeigers erscheint eine Linie,
die an den "In"-Eintrag eines anderen Elementes gezoge
wird.
*Note: Du kannst Verlinkungen vom "In" oder "Out"
Eintrag auch kopieren und an andere Anschlüsse Einfügen.
Dafür rechts-klicke einfach auf eine Verlinkung, um an
die Optionen zu kommen:
• Klickst du mit der Maustaste auf einen Anschluss und
hälst dabei Alt gedrückt, werden alle Verbindungen
an diesem Verbindungspunkt gebrochen.
• Rechtsklicke auf einen Eintrag und wähle einen
der "Cut" oder "Break"Optionen. Du kannst
auswählen, ob du bestimmte Verbindungen oder alle trennen
möchtest. Wenn du bestimmte trennen möchtest, gehe
auf "Break link to" und es werden alle momentanen
Verbindungen dieses Elements angezeigt.
|
|
Einschalten:
• Alle Verbindungen sind standardmäßig aktiv.
Inaktive Verbindungen werden rot dargestellt. Klicke einfach
auf das rote (deaktivierte) Verbindungssymbol und wähle
"Toggle-Enable".
Ausschalten:
• Rechtsklicke auf ein Verbindungselement und wähle
"Toggle-Disable". Dadurch wird die Verbindung rot
und das "Signal" wird nicht über diese Verbindung
weitergegeben.
|
|
Kismet-Elementen Objekte aus dem Level zuweisen:
Um eine neue Objektreferenz zu erstellen...:
• 1) Wähle ein Objekt im Level aus .
• 2) Rechtsklicke in Kismet und wähle den entsprechenden
Eintrag aus dem Kontextmenü aus.
|
|
Um einen neuen Actor einem bereits existierenden Kismet-Element
zuzuweisen...:
• 1) Wähle den Actor aus, der dem Element zugewiesen
werden soll .
• 2) Rechtsklicke auf den Eintrag in Kismet und wähle
"Assign to...".
|
|
Im Prinzip sind die Einträge in den beiden Screenshots
die Selben. Ich habe den Trigger nur beiden zugewiesen
|
Eine einfache Sequenz:
Unsre einfache Sequenz wird eine Nachricht sein, die angezeigt
wird, wenn das Level startet. Ich gehe einfach mal davon aus,
dass mein Leser (Du) weiß, wie er eine kleine Testmap
mit Licht und Playerstart (und Rebuild!) macht. Das ist nötig,
damit man die Nachricht sehen kann. Sollte dies nicht der Fall
sein, empfehle ich, erstmal die Tutorialsektion nach Einsteigertutorials
zu durchsuchen
• 1) Rechtsklick -> "New Event" -> "Level
Startup".
|
|
• 2) Rechtsklick -> "New
Action" -> Misc -> Log.
|
|
• 3) Verbinde die beiden Elemente,
indem du eine Linie zwischen "Out" des Level Startup
Elements und dem "In" Eintrag des Log-Elements ziehst.
|
|
• 4) Ändere die Einstellungen
des Log-Elements, indem du einfach daraufklickst. Füge
ein Objektkommentar - In diesem Fall "Tutorial!" -
hinzu. Um sicherzugehen, dass der Log auch ausgelöst wird,
werden wir noch ein Häkchen bei "bOutputObjCommentToScreen"
setzen, damit der Kommentar auf dem Bildschirm angezeigt wird.
|
|
Und das war's auch schon. Wenn die
Map gestartet ist, wird der Spieler spawnen und ein "Tutorial!"
wird im Chat-Bereich in der HUD erscheinen.
• Sollten die Objektkommentare nicht auf dem Bildschirm
ausgegeben werden, kann es sein, dass dein Spiel so eingestellt
ist, dass es diese absichtlich unterdrückt. Es gibt aber
einige Möglichkeiten, diese anzuschalten. (Beachte, dass
du hierbei Änderungen an den Game-ini-Files durchnehmen
musst! Lege immer Sicherheitsbackups an!
1) Finde die DefaultEngine.ini bzw. UTEngine.ini - Datei. Diese
ini kann je nach Spiel an unterschiedlichen Orten liegen und
unterschiedlich heißen.
Öffne die Datei und suche (STRG + F) nach dem Begriff "Kismet".
Einer der ersten Ergebnisse wird "bOnScreenKismetWarnings=FALSE"
sein, den du auf TRUE ändern musst, damit die Meldungen
angezeigt werden. Speichere die ini Datei und schau ob es funktioniert.
2) Sollte es nicht funktionieren, füge zusätzlich
diese Zeile dazu: "bEnableKismetLogging=TRUE".
3) Das sollte zwar funktionieren, ist aber nicht empfohlen,
da es auch ein "cooked" File sein könnte, abhängig
welches Spiel es ist. Suche ggf. noch mal nach einer game-spezifischen
*Engine.ini suchen, wobei der Teil bei * vom jeweiligen Spiel
abhängig ist. Solltest du welche finden, führe die
oben beschriebenen Änderungen dort auch durch.
4) Sollte das auch nichts bringen, kannst du die Map im Ingame-Browser
spielen. Dabei werden alle Log-Nachrichten im Log des GenericBrowser
aufgezeichnet, vorher muss aber auch ein Häkchen bei "bIncludeObjectComment"
gesetzt werden.
5) Sollte selbst das nichts bringen bleibt nur noch ein Weg:
Anstatt eines Logs, nehme einen Emitter und setze ihn dorthin,
wo man ihn sehen kann.Versehe ihn mit einem An- und Ausschaltbaren
Effekt, der ausgelöst ist, wenn du mitbekommen willst,
wann eine Stelle in den Aktionen passiert wurde. Vergiss nicht
das "AutoActivate" in den Emittereinstellungen zu
deaktivieren.
|
|
|
|
|
|