As with any job it is important to use the tool that is appropriate for it. UDK provides three ways of giving interactivity to the game world: Kismet, Matinee, and UnrealScript. At this point, you should be familiar with the previous two options. All the three have specific advantages and disadvantages to them, but Kismet is the one that I use most often.
As you expand your research into UDK after reading this book you may see forum posts with people asking about how to do something in Kismet. A lot of people will reply to someone telling them to learn UnrealScript instead. While they may seem arrogant, there are some reasons why they are saying to use that tool. I’ve included a list of pros and cons to Kismet which may help you, afterwards, in deciding if it is the correct tool for what you’re working on.
Benefits of using Kismet
Kismet is a wonderful tool and is a great starting point when first starting out with UDK. Some other benefits associated with Kismet are:
- Having a lower barrier to entry: No programming knowledge is needed so it is easier to get started and you can start creating games now.
- Great for prototyping gameplay mechanics: Saying a mechanic is going to be fun is one thing, but no one is going to believe you unless you can show it. Kismet makes it extremely easy to get something up quickly. As a designer, having something to show a programmer will make it much easier for them to translate to code.
- Great for one-off events: If your level needs to have something specifically for it or only at a specific time or level events like an explosion, Kismet is a great tool to use for it.
- Easier to see the flow of events: If you are more of a visual thinker or like to stare at something to see the big picture it is a lot easier to use Kismet. The Sequence Objects and colors all mean something specific to make it easy to discern what is going on within a specific scene.
- Easily extendable with UnrealScript: With knowledge of how UnrealScript works it is possible to create custom Sequence Objects of your own to create actions of your very own. If your game would have a dialogue system, creating a custom “Show Dialogue” action would be possible in Kismet to make it easy to create entire Dialogue trees within Kismet.
However, Kismet is not the be-all and end-all solution for everything that can possibly be done with UDK. Here are some of the drawbacks that using Kismet may have:
- Complexity issues: As you get more comfortable using Kismet you will probably try to do more and more complex things with it (I know I have). If you are not careful you may have problems reading what your code is actually doing. Basically, the more complex a sequence gets, the harder it is to read.
- Reiterations: Many times in a game you will want to have the same thing happen if you interact with a similar or identical object, like a door. If you want the same behaviour with multiple objects or multiple levels you have to paste it every single time you want to have that action happen. This can quickly stockpile into a really large amount of Sequence Objects which could be avoided if you wrote an UnrealScript file with the same behaviour and made that object use that file to execute the actions inside.
- Level Specific: In much the same way Kismet is also specific to just the level that it is created in. For instance, if we wanted to create 10 levels in our game we would have to do the console command event in every single level. With UnrealScript, this would be built into the code base for the game and be automatic for all levels of the game.
- Kismet can’t do everything you’d like to in a game: The truth is that the game Unreal Engine 3 was created to make a First Person Shooter (FPS) and the further you stray from that path the harder it is going to be to create your game. That’s not to say UDK can’t be used to create other games, it’s just going to be much more difficult as the Sequence Objects in Kismet are meant to create an FPS.
- More custom behavior requires UnrealScript: Continuing with the previous point most of the time a game does something such as a game mechanic that UDK doesn’t seem to do (like the Scarecrow boss battles Batman: Arkham Asylum, Plasmids in Bioshock 1 and 2, or the jet packs in Dark Void). These examples probably use UnrealScript or C++ code to achieve the desired result.
- Kismet is slower than UnrealScriptWhile it will not matter with the project that we are creating now, since Kismet is basically prewritten UnrealScript executed in a certain order,Kismet is slower than what could be achieved using just UnrealScript and something that your game will continuously use would best be done with UnrealScript.
Hopefully this will help you when deciding the appropriate tool for the job in your own projects!