Creating and Adding Bot Support For Jump Pads (Kickers)

By: Sam Sutton

sutton@alphalink.com.au

Audience: Level Designers

In this tutorial, I will show you how to make a jump pad that works for humans and bots, plus how to add a sound effect.

Jump pads, (or kickers) work in a very similar way to lifts. They require two lift exits, a lift center (found in the NavigationPoint section of the classes browser), and a kicker, which is found under the Triggers section of the classes browser.

There are two main types of kickers – vertical ones, that kick you up, such as in DM-Morpheus, and DM-Cybrosis][, and there are horizontal ones, that kick you up and across. If you are familiar with Quake III: Arena, they are in almost every level.

Setting up a kicker

The kicker actor, is for the moment, the most important part of making a jump pad work. This is what moves you from position A to position B. Open up the properties of a kicker, and expand the Kicker tab. There are four sections in it: bKillVelocity, bRandomize, bKickedClasses, and bKickVelocity.

KillVelocity is the most important attribute of a kicker, and of all the custom levels using jump pads that I have seen, none of them have set this attribute to true.

Basically, KillVelocity stops you (and bots) from being thrown off in a random direction. What it does is this: it ignores any existing velocity that you had before making contact with the kicker. So if you run at it at an angle, drop down from above, walk onto it, or run onto it, you will always land in the same place!

There is only one slight exception. After much experimentation, I found that if you run at a jump pad, and jump onto it, you will get kicked a little bit further than if you just run at it and don’t jump. However, this is only a marginal amount, and will only matter if you have a jump pad that goes to a very small platform – you may fly over it.

So KillVelocity is a must for horizontal jump pads. For vertical jump pads, KillVelocity is not essential, but it is better to use it anyway, for the bots’ sake, as they can’t use air control as well as humans.

| Randomize is set to false by default, and I would leave it at that – I don’t know what the point of it is. KickedClasses is just who can use the kicker. The default is pawn, which means anyone can use it, so leave it at that. KickVelocity has 3 components – X, Y, and Z. It is here that you plug in the values so that you can get to your destination. X is horizontal (north ß à south), Y is horizontal (east ß à west), and Z kicks you up, (or down if you desire!).

If you have all 3 components set to 0, you won’t go anywhere. A positive value sends you in one direction, a negative in the opposite. In the case of Z, a negative value will kick you downwards.

For a simple horizontal kicker, you will need either X or Y, and Z. If you don’t have any Z value, you won’t go very far. It depends on how far you want to get kicked, but you will probably need at least half the horizontal component in Z. Over long distances you may need more than the horizontal component. Getting the values right takes a lot of testing and guessing, so be patient. Make sure you set you KillVelocity to true first.

For a more complicated horizontal kicker, you may want to be kicked at an angle. In this case, you will need both X and Y components, as well as Z.

For a vertical kicker you could just have a Z component, which will kick you straight up, and you can use air control to get to the ledge or whatever. However, I recommend adding some X (or Y, depending on the direction) so that it steers you slightly in that direction. The reason is bots (always is!). If you just have a Z value in you KickVelocity; the poor bots keep bouncing up and down until they are "helped" by some flak or a rocket!

There is one other thing you will need to change – the collision radius. The default is 40, and for a jump pad of size 128 units wide, by 150 units long, this is not enough. If you set it to 80, it should be ok. You can change the collision height too if you want, but you will only want to change it for a vertical kicker. Collision height is how far away (vertically) that you have to be to trigger the kicker. The only reason for changing it is it looks funny if a bot, or player is kicked from above the actual brush (it looks like they are bouncing from thin air). It isn’t much of an issue, but changing it to 20 or smaller will fix that. Just remember that changing the collision height affects how high you are kicked, so if you make it smaller, you will want to make your Z value bigger.

Adding Support for Bots

As I said earlier, jump pads work in a similar fashion to lifts. Make sure that the lift exits, and lift center all have the same LiftTag.

Put your lift center where the bot will "get on" the jump pad – in the middle of the brush, next with the kicker should be fine. Place one lift exit where you want the bot to "get off", but out of the way a bit, just as you would do for a lift.

The other lift exit needs to be placed before the jump pad brush, also as you would do with a lift.

Adding a sound effect

| To do this, all you need is a trigger, and a special effect. Open up the trigger properties, and open the event tab, and set the event to something like jumpsound. Now go to the trigger tab, and set initiallyactive to true, and the triggertype to playerproximity.

Now open the special event’s properties and open the event tab, and set the tag to the same thing as the trigger’s event. In this case: jumpsound.

Note: If you have more than one jump pad in your level, make sure your event and tag of your trigger and special event is different for each one.

Now go to your browser and open SoundFX. Click on the first dropdown menu and select Unreall. Click on the next dropdown menu and select Pickups. Now click on the sound BootSnd. In your special event properties, expand the SpecialEvent tab, and down the bottom where it says sound, click on it, and hit Use.

Also, alter the collision radius and height of the trigger and special event so that it is the same as the kicker’s, and try to place them in about the same place and at the same height as the kicker actor, because otherwise the sound won’t play consistantly.

Bot Bugs

There are a couple of bugs that need to be brought to attention. Bots tend to jump higher than humans on kickers, and on some angled jump pads, if the angle isn’t very steep, the bots seem to interpret this as flat, so they will bounce straight up in the air first, then jump horizontally. This is a problem with UT AI, not your kicker.

Conclusion

Jump pads are not difficult to make, but to get them to work properly, consistantly requires some effort. Bots, as with most things are quite tricky to get exactly right, and you will most probably have to play around with the locations of the two lift exits.

If you want to see a level that has complete working jump pads in it, go here. If you have any problems, you can always email me.