Gameplay design through Kismet

So I’ve spent roughly a week with kismet now creating gameplay in the editor, it’s been an interesting time filled with both frustration and success.

I’ve managed to create the basic events that you might assume are present in a game like ours; doors can be opened, locked doors with keys, some inner monologue and cinematic events.

kismet_01

The scripting process is quite simple once you get used to the interface and know what nodes that are needed, it was daunting at first though.

The more frustrating part about kismet though is when you have bugs in the nodes that are released with the editor. To name a few; the GetPlayerRotationAndLocation node can’t actually return the Z rotation into a float vector which made it impossible to create a flashlight that follows all the players movements, instead i had to dig around on the forums (which are incredibly useful) and managed to find someone who made a custom kismet node which worked.

This might be less of a problem for larger projects where such functions can easily be written by one of the programmers, but with Robin focusing on other things i can’t really expect him to have time to write one for me. Neither does my insufficient programming skills let me write one myself, at least not in a timely fashion.

Other problems include playing camera animations on the Player where we had to add a custom handler on the player pawn that Robin created.

The one that irked me the most though is when i wanted to force the players camera to focus on a specific object with an interpolated movement, something that i think is quite useful when doing cinematic events. The function that exists in kismet for it, SeqActLookAt, which is exactly what i wanted, doesn’t actually work because there is no handler for it in any of the player classes. Lots of searching the forums later i came to the conclusion that it’s not actually implemented in the game, even though it’s in kismet.

I guess that this is much the same as the GetPlayerRotationAndLocation problem though, most of the time you would simply write your own version of these nodes and have it do exactly what you want rather then using the stock nodes.