*Note: I created the most of the tutorials using the Roboblitz and Gears of War editors. Based on the engine, and the version, some properties specified may be in slightly different locations than what is displayed in the screenshots.

If you need to learn how to create a basic map I would reccomend:
For UT99, UT2K3 & UT2K4: the Unreal Wiki.
For UT3: Waylon's Tutorials.



Introduction:
Upon first glance, a blank Kismet page can be quite daunting. After some practice, you'll find yourself eager to fill it.
Kismet is where the user can create movers, script events, turn particles on and off, perhaps even change some AI, and even more.
Kismet can be thought of as a GUI (graphical User Interface) that brings code accessibility to those uninitiated in manipulating the engine. Friendly little circles and rectangles allow the user to construct simple, or complex, sequences to enhance the game's impact on the player.

Assumed Knowledge: How to create a simple testmap (BSP, light, pathnode, & playerstart).

The goal of this tutorial is to introduce the main components and navigation through Kismet. At the end, we'll create an extremely simple Kismet sequence.

So let's begin...


Overview:



The Kismet Window: It's divided into 3 sections: the Main Window, the Properties Window, and the Sequences Window. Their purposes are:

• Main: This is where the Kismet GUI elements are placed and strung together to perform actions upon the actors in the level.

• Properties: All of the items created in Kismet have individual properties, and this is where those properties can be accessed and changed.

• Sequences: Depending on the scope and function of the level, it may be necessary to divide the Kismet up into seperate parts. The Sequences Windows assists in keeping track of the different parts. Although each Sequence is seperate, it is possible to link between them and even activate whole sequences individually.

*Note: It is possible to re-dock the properties and sequence windows within the main window to suit personal preference.


Menu Bar:
The Kismet Menu Bar:

• Open Parent Sequence: Like the 'Back' button in your Internet Browser of choice, goes back up to the higher Parent Level of the currently selected sequence.

• Rename Sequence: Allows the currently selected Sequence to be renamed.

• Zoom To Fit: Automatically scales the view to fit all the Kismet into the Main Window.

• Hide Unused Connectors: Any Connectors that are currently not used, become hidden.

• Show All Connectors: Unhides any hidden Connectors.

• Lines/Curves: Changes the lines between connectors from Straight lines to curves, and curves to straight lines; generally a matter of personal preference.

• Open New Window: Yes, exactly.


Context Menu:
The Kismet Context Menu: To access it, simply Right-Click anywhere in the Main Window. This is how all Kismet is originally created.

• New Action: Performs an action on an actor in the level based on the instruction chosen.

• New Matinee: Creates a new matinee sequence and a matinee data node.

• New Condition: Used to fill in 'If...then' statements and output a result. Basicaly compares something against something else.

• New Variable: Creates variables that can then be manipulated by actions, conditions, or other Kismet Entities.

• New Event: Events are generally used to fire off 'Actions'. Think of it as Kismet detecting something that occurs in the level.

• New Comment: Just like code, it's always useful to comment Kismet, both for the author's own benefit, as well as others who may try to learn from the Kismet you create. This will create a Text Label (with a checkmark to draw a box) that can be placed and sized around Kismet groups.

• Create New Sequence: Yes, exactly. After the Sequence is created, it appears in the Sequence Window. *Note: No spaces are allowed in Sequence names.

• Paste Here: Instead of pasting to a previous location and then trying to find it, you can specify where to paste copied Kismet entities.


Shapes & Colors:

Kismet Entities conform to a few simple Shape & Color rules:

• Rectangles: Either Actions or Comparisons.

• Diamonds: Events.

• Circles: Usually reference either numbers, or something in the map and are generally Variables, References, or both.

• Red: Booleans: Basic True/False settings.

• Black: External Variable: After they're tagged to another variable, they assume the same color as the other variable.

• Dark Blue: Floating Point Numbers: Basically, a 'computer' version of scientific notation. Google or Wikipedia it for a better, more detailed explanation.

• Light Blue: Integers: Simply whole numbers..

• Purple: Objects: Usually they reference an 'object', such as an interpactor/mover within the map.

• Green: String: An alphanumericly named variable.

• White: Union: Can unite any of the other variables into a single one.

• Yellow: Vector: Represents X, Y, & Z values.

If you take a moment to look at the two screenshots, you'll notice that the outlets at the bottom of the action have little triangles coming out of them that are purple. This means that object variables (because they're purple) can be attached to those locations.


Linking/Unlinking & Enabling/Disabling Kismet Entities:

Linking:

• Step 1: Left click and hold on the 'Out' of the entity.

• Step 2: Drag the line that appears over to the 'In' of the other one.

*Note: You can also copy links on either the out or in and paste them on another. Simply right-click on the link to find the options.
Unlinking:

• Press 'Alt' and click on the link node. All the lines connected to it will break.

• Right-Click on the entity and choose one of the 'Break' or 'Cut' options. You can choose to break specific links or all of them. If specific ones are needed, click the arrow to the right of 'Break Link To' and all the current connections will display.

Enabling:

• All links are enabled by default. If one is disabled, the link line will be red. Simply right-click on the red (disabled) connection node and select 'Toggle-Enable'.

Disabling:

• Right-click on a connection node and select 'Toggle-Disable'. This will turn the line red and prevent the 'signal' from going through.



Assigning Actors in the World to Kismet Entities:

To create a new entity that references an actor in the level:

• Step 1: Select an object in the level.

• Step 2: Right-click in Kismet and choose the appropriate selection from the context menu..



To assign a new actor to an existing entity already in Kismet:

• Step 1: Select the new actor in the level that is going to be assigned to the entity.

• Step 2: Right-click on the entity in Kismet and click 'Assign to...'.



Incidently, the entities in screen 1 are the same as in screen 2. I just assigned the trigger to both.


A Simple Sequence:

The simple sequence is going to be a single message that fires off when the level starts. I'm assuming that my dear reader will know how to set up a simple piece of BSP and add a light and playerstart to it (and rebuild!). This needs to be done so that the player can survive long enough to see the message.
If instructions are needed to do that much, I suggest visiting another tutorial site for 'How to make a room' tutorials.

• Step 1: Right Click -> New Event -> Level Startup.


• Step 2: Right Click -> New Action -> Misc -> Log.



• Step 3: Link Them together by making a line between the 'Out' of the Level Startup and the 'In' of the Log.



• Step 4: Alter the properties of the Log. Simply Lef click on the Log to select it. Add an Object Comment - in this case 'Tutorial!'. Then, to ensure we know that the Log gets fired off, we're going to Output the Object Comment to the screen by adding a checkmark to the box to the right of 'bOutputObjCommentToScreen'.



And that's about it. When the map is launched, the player will spawn, and a 'Tutorial!' will appear in text at the bottom left of the screen.

If Object Comments & Logs don't work: If you follow the instructions and no messages appear onscreen, your engine may be set to disable these 'debug' messages in game. To fix this, you may need to try several things.
*Note: The following involves changing .ini files for the games. This can cause things to go horribly awry in some cases, so back up the files first.
1) Find your 'DefaultEngine.ini' file. This file will be located in different places for different Engines/Games. Open it and do a search for 'Kismet'. One of the first results will be 'bOnScreenKismetWarnings=FALSE'. You'll need to change this to 'bOnScreenKismetWarnings=TRUE', save the .ini, and see if it works.
2) If this does not work, after the 'bOnScreenKismetWarnings=FALSE' line, add this line: 'bEnableKismetLogging=TRUE'.
3) This may work, but is generally not reccomended since it may very well be a 'cooked' file depending on the game. Look for the game-specific xxxengine.ini where xxx is the game and enable the same two settings there.
4) If it still does not work, you'll need to rely only on logs while in PIE (Play In Editor) mode - not the game itself. Add logs to the system per the instructions below. However, you'll only be able to view them in the generic browser's 'Log' tab, and only if you set the 'bIncludeObjComment' boolean to true. The text will appear in the generic browser's log, but not on the screen.
5) If even this does not work, then there's one route left. Instead of using a log, grab an emitter and place it where you can see it. Use a Toggle action to turn it on when you would want the log to go off. Thus, if the emitter goes off, you'll know that portion is working. Remember to turn off the 'AutoActivate' property in the emitter.