*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.



Common Interactives - Ambient/Looping Mover



I have set up a simple test map consisting of a slab of BSP, a skylight, a playerstart, a skydome, and a directional light.

I will only be using default editor assets which can be found in the EditorMeshes and EditorMaterials packages.

I will be using Movers/Interpactors (the terms are interchangeable) that are sometimes animated through Matinee. If you need to learn Matinee, I would recommend Hourences' Tutorial on them as a starting point.

I added the default mesh cube as a static mesh to the map, converted it to an interpactor, and then made it tall but thin in the XY directions and then duplicated it. The pivot is in the center so I will only animate it up and down, or side to side. Something turning on a hinge requires both a pivot on one side of it, and some forethought to where the player will be so as not to interfere with them.

*Note: Pivots/Origin points on StaticMeshes serve as the 'hinge points' or centers of rotation/revolution for interpactors. If you need to create a door, or other moveable object that revolves, rotates, or swings on an edge, you'll need to be aware of the mesh's pivot/origin location. It is impossible to re-assign this pivot permanently in the engine. For mesh placement, you can currently temporarily assign the pivot to a new location, but when you're done, the pivot will be back at the origin. If you find a mesh that you want to use as a swinging door, and its pivot is in the center, you are out of luck. The origin is determined when the mesh is created in a 3D Modeling application - not in the Unreal Editor.

Ambient/Looping Effects: Well, we have many many options to choose from. What exactly do you want to make? I urge you to decide what you want before trying to set up anything. We'll try to cover many different things but generally these all can be combined and intertwined to create varied and interesting effects.

Pistons that uniformly move up and down: Let's use the 'Cooking' analogy I outlined in the Applications introduction to set this up:

*Note: This particular looping system is also available at Hourence's Tutorials site. If you are already familiar with it, you can skip to the next looping system if you like.

1) What are we making? A pumping machine for the background, with steam emitters and sounds.

2) Gather the ingredients:
2 Movers
2 Matinees
2 Emitters
4 PlaySound Actions
LevelStartUp Event

3) Put it together. In the level, I've created two walls and a gap between them. I've created two tall thinnish movers and added two emitters - one to the top of one mover, and one to the bottom.




On the kismet side of things, I'll start with a Level Startup event so that it runs as soon as the level starts. Depending on the engine, this may need to be some other starting even or, in the case of sub-levels streamed in, a Level Loaded and Visible Event. Then I'll add my two matinees - one for a pump starting down, moving up, and back and the other starting up, moving down and back. In the mover group I set the movement to 'Relative To Initial' in case I want to keep the movement, but move the pumps later. I also set the matinee properties to rewind on play. After I keyframed the movement - a simple system of two keys, one for the start and one for the opposite location, I set up the looping. When the matinee is complete, I tell it to reverse itself, as seen below. When the reverse is complete, the matinee is back at its beginning keyframe at 0 time - since this is not its end time, and yet it must stop, the matinee considers its movement as having been aborted. So I use the aborted output and plug it back into play to loop the system. Then I add two events to the matinee to control the sounds and emtters. I add toggles to turn on the emitters, and I add play sounds for the sound of the pumps going up and down. In the screenshot I'm using PSound02 as an emitter sound and PSound01 as the pump sound. Remember to turn off the emitters by default: in the emitter's properties turn off 'autoactivate'.




4) Test it. Go in game and test it out. It worked fine for me.

5) Refine it. First, think about the collision and lighting and get those fixed. Then consider any potential issues involving player interaction, weapon interaction, etc. Since I'm targeting this toward being a background effect, I would probably just place a blocking volume around it so the player never touches it.
Now that the basics are set up, you could go crazy and add lights, more emitters, a pause in the effect, almost anything.

6) Adjust it for Single/Multiplayer. As you may have read in the SinglePlayer/Co-op/MultiPlayer section, there are many considerations to take into account for whichever system you're setting this up for. The system as it stands might be ok for single-player and multiplayer both.



Now say you wanted to create the same system, but you didn't want uniform movement during the loop - in other words, you want the 'going up' to behave differently than the 'going down' part of the matinee. With the system we have so far, we can't do that since the matinee is on a straight-up reverse.
We can construct the matinee a little differently and yet loop it to achieve the desired result.

Pistons that irregularly move up and down: Let's use the 'Cooking' analogy I outlined in the Applications introduction to set this up:
1) What are we making? A pumping machine for the background, with steam emitters and sounds.
2) Gather the ingredients. We'll need two movers, two matinees to control the movers, two emitters, and at least two sounds, but I'm choosing four.
3) Put it together. In the level, I've created two walls and a gap between them. I've created two tall thinnish movers and added two emitters - one to the top of one mover, and one to the bottom.




On the kismet side of things, I'll start with a Level Startup event so that it runs as soon as the level starts. Depending on the engine, this may need to be some other starting even or, in the case of sub-levels streamed in, a Level Loaded and Visible Event. Then I'll add my two matinees - one for a pump starting down, moving up, and back and the other starting up, moving down and back. In the mover group I set the movement to 'Relative To Initial' in case I want to keep the movement, but move the pumps later. I also set the matinee properties to rewind on play. I add toggles to turn on the emitters, and I add play sounds for the sound of the pumps going up and down. In the screenshot I'm using PSound02 as an emitter sound and PSound01 as the pump sound. Remember to turn off the emitters by default: in the emitter's properties turn off 'autoactivate'. Now, in the matinees, I keyframe the 'going up movement and going down movement with separate keyframes. In this circumstance, the last keyframe of the matinee must match the same location/rotation as the first keyframe. Once I have my movement keyframed, I turn on 'RewindOnPlay' and 'Looping' in the matinees properties. Now my matinees will loop with different behaviors on the 'up' and on the 'down' and I no longer need to loop the completed to the reverse and aborted to play.




4) Test it. Go in game and test it out. It worked fine for me.

5) Refine it. First, think about the collision and lighting and get those fixed. Then consider any potential issues involving player interaction, weapon interaction, etc. Since I'm targeting this toward being a background effect, I would probably just place a blocking volume around it so the player never touches it.
Now that the basics are set up, you could go crazy and add lights, more emitters, a pause in the effect, almost anything.

6) Adjust it for Single/Multiplayer. As you may have read in the SinglePlayer/Co-op/MultiPlayer section, there are many considerations to take into account for whichever system you're setting this up for. The system as it stands might be ok for single-player and multiplayer both.