Unreal Tournament 2003
Machinima Creation Tutorial

Last Update 10/22/02

Maintained by
Eric 'StarFury' Bakutis


Table of Contents




The Scope of This Tutorial

 

This tutorial is not intended to be the end-all source for Machinima creation in UT2003... rather, it is intended as a quick start guide for people who want to get into UT2003 Machinima without having to go to two hundred different tutorial sites and UDN links to find out how to create UT2003 Machinima. I have attempted to write this tutorial to be understandable to someone who has absolutely no experience with UnrealEd, so if the instructions seem a bit wordy, bear with me... this is the very same stuff I was banging my head against the wall trying to figure out when I first started.

In some cases, sections of this tutorial will lay out step by step how to set up things related to UT2003 Machinima... in other cases, the tutorial will simply refer you to existing tutorials on the subject via links (an example would be level building, which is outside the scope of this tutorial). I will make all attempts to keep such links updated... this allows you to access such tutorials from one central source (this tutorial) without requiring me to absorb and regurgitate material already covered.

If you have corrections, improvements, or ideas for new content to be added to this tutorial, I am all ears. A disclaimer--I in no way guarantee that the instructions in this tutorial are the best way to do UT2003 Machinima... in fact, I'm sure anyone with half a brain can come up with better methods. However, this tutorial does include one way to do UT2003 Machinima, and for some of the people just getting into it, that will hopefully be enough.

Finally, the tongue in cheek references in this tutorial are not guaranteed and you may find my admittedly poor attempts at humor trite, silly, or just plain stupid. This is probably because I'm only writing this to amuse myself. Them's the breaks, kiddies.

Why You Should Save After Every Step

 

Let's face it people. UnrealEd likes to crash. It DELIGHTS in crashing. It crashes ten times a day, and often just because you gave it a menacing look. If you are new to Unreal Editing, I'd strongly recommend you learn to save your level, Matinee scene, etc after every step. This will save you the frustration of repeating steps after that fateful misstep causes UnrealEd to cry like a little girl and crash.

Saving constantly is a good habit to get into regardless of what you are doing with UnrealEd. Also, anger management counseling versus computer programs is another good outlet.



Creating Insert Box

 

Your first step before doing any work on the level you will use for your Machinima/Matinee scene is to create an InsertBox. This box is useful for inserting actors into your level in later steps.

To create an InsertBox AFTER starting a new level and BEFORE doing anything else:

  1. Click the Cube button (Fig. 1) to change the red brush to a, well, cube.

    Figure 1



    Cube button


  2. Click the Subtract button (Fig. 2) to subtract a cube out of your level (do not move the red brush before doing this!)

    Figure 2



    Subtract button


Result: Your InsertBox is complete. If you have trouble later inserting PlayerStarts and xPawns into the level, you should be able to insert PlayerStarts and xPawns inside your InsertBox in the Top 2-D View just fine (this deals with a wacky bug dealing with inserting actors that I'm not going to get into here, just trust me when I say it works).

You may then grab and drag these actors to wherever you like in your level. This InsertBox will come in handy if you run into the problems addressed by Insert xPawn Troubleshooting.



Creating Your Movie Set (Level)

  Content pending... in the meantime, go here.


Adding an xPawn to Your Level

 

All characters in your UT2003 Machinima movie will be created using xPawns. To add an xPawn to a level:

  1. Open the Actor Classes browser by clicking View > Show Actor Class Browser.

  2. Expand the Actor Classes properties by clicking the + until you've found Actor > Pawn > UnrealPawn > xPawn.

  3. Click xPawn (xPawn will be highlighted).

  4. Close the Actor Classes browser.

  5. Move your mouse cursor to your Top 2-D Window and right-click on the Top 2-D View Window in the part of the level where you would like to add the xPawn.

  6. Select Add xPawn here (if this option doesn't appear when you right-click, repeat the previous steps... you probably didn't get xPawn selected).


Result: An xPawn will be inserted into your level at the point in the 2-D View Window specified by your mouse cursor. If the xPawn does not appear, see Insert Actor Troubleshooting.


General Note: If any of the changes you make below don't seem to show up in the editor, try clicking the Rebuild All (Fig. 3) button. This will usually catch the editor up on your latest work.

Figure 3



Rebuild All button


Setting up xPawns

 

You will be using xPawns for every scripted actor in your Machinima sequence. xPawns are basically programmable actors that will play out your scene for the Matinee camera. xPawns can be used for everything from player models to floating cameras to talking beachballs (and there is nothing quite as interesting in a movie as a talking beachball!)

Advanced Note: Contrary to the instructions listed below, you don't HAVE to close the xPawn Properties window after each edit you make to save the edit... I merely tell you to do that because this tutorial goes step by step on changing the various properties of the xPawn, which are all across the board. Seeing the results of these changes one by one instead of all at once makes them easier to learn. Once you know what you are doing, feel free to do all of this at once and marvel at your ingenuity.

    Changing Movement

 

By default, the xPawn you insert will be set to PHYS_None. This means he just sorta floats there with his arms spread out and won't really do anything until you shoot him, in which case he yells 'Ow' and bleeds. Though you can change this to PHYS_Walking via his ScriptedSequence, it's best to start him walking in the first place… this avoids an awkward ‘jump’ when the scene starts.

To change the movement type for the xPawn:

  1. Select the xPawn in any 2-D View Window (it should change color to show it has been selected).

  2. Double-click the xPawn to bring up the xPawn Properties window.

  3. Expand the Movement property by clicking on the +. You should see many different properties.

  4. Select the Movement > Physics property (Physics will be highlighted) then click the drop-down arrow. A list of all available physics types will display.

  5. Select PHYS_Walking, PHYS_Running, or whatever is appropriate to your xPawn (PHYS_Flying, for instance, might be appropriate for a hovering camera in your scene... or a talking beachball). See the Scripted Sequence Actions tutorial on UDN for explanations of all Physics types.

  6. Close the xPawn Properties window.

Result: Now your xPawn is ready to move! Our next step is to change him from that ugly Juggernaut model (after all, who wants to watch a Machinima feature with nothing but male Juggernauts? Well, besides Martha Stewart, and we all know the kind of wack stuff she's into).

    Changing Mesh

 

By default, the xPawn you insert will be the main Juggernaut model. If you don’t want to use the main Juggernaut model (does he kiss his mother with those lips?) you’ll need to change the xPawn to the type of actor you want in your movie.

To change the mesh for the xPawn:

  1. Select the xPawn in any 2-D View Window (it should change color to show it has been selected).

  2. Double-click the xPawn to bring up the xPawn Properties window.

  3. Expand the Display property by clicking on the +. You should see many different properties.

  4. Open the Animations browser by clicking View > Show Animation Browser from the main menu.

  5. Click the Open Animation Package button (Fig. 4) on the Animation Browser (a list of all available meshes (in .ukx format) will display in the Open Animated Mesh Package dialogue).


    Figure 4



    Open Animation Package button


  6. Select the .ukx mesh for the xPawn you want to create in the Animations browser (e.g. HumanMaleA.ukx) and click Open. The mesh you selected will now display in the Animations browser (use the Animations browser to browse through the various models in the package... HumanMale, for instance, contains multiple meshes).

  7. Click off the Animations browser (leave it open) and return to the xPawn Properties window.

  8. Select the Display > Mesh property (Mesh will be highlighted in bold).

  9. A Use button should now be visible on the Mesh property. Click the Use button or die!

  10. Close the xPawn Properties window.

Result: The MercMaleA mesh (or whatever mesh you selected in the Animations browser) should replace that ugly Juggernaut. Now we've set our xPawn up with a new and much better looking mesh. But wait! We're still not done. Our mesh looks like a Van Gogh painting! What the Sam Hill is going on?

    Changing Skins

 

Now that we’ve got our new xPawn mesh changed to the model we wanted, you’d think we’d be done… but we’re not! You see, UnrealEd hasn’t yet changed the skin on the mesh… our new mesh is still using the Juggernaut skin! This is more than a bit odd looking, so now we’ll need to change the skin as well.

To change the skin for the xPawn:

  1. Select the xPawn in any 2-D View Window (it should change color to show it has been selected).

  2. Double-click the xPawn to bring up the xPawn Properties window.

  3. Expand the Display property by clicking on the +. You should see many different properties.

  4. Expand the Display > Skins property by clicking on the +. You should see two properties, 0 and 1.

  5. Open the Textures browser by clicking View > Show Texture Browser from the main menu.

  6. Click the Open Package button (Fig. 5) on the Textures browser (a list of all available texture packages (.utx files) will display in the Open Texture Package window).

    Figure 5



    Open Package button


  7. Select the PlayerSkins.utx package (or whatever custom .utx package you have added with your player skins) and click Open.

  8. Scroll through the Textures browser until you find the skin you want to use for your xPawn (if you used the MercMaleA mesh, any of the MercMale* skins should look dapper).

  9. Click on the skin you want to apply to your xPawn (it should be highlighted within the Textures browser).

  10. Click off the Textures browser (leave it open) and return to the xPawn Properties window.

  11. Select the Display > Skins > 0 property and 0 will be highlighted (0 corrosponds to the ‘body’ skin for the xPawn).

  12. A Use button should now be visible on the 0 property. Click the Use button or die!

  13. The MercMale* body skin (or whatever skin you selected in the Textures browser) willreplace the misplaced Juggernaut skin.

  14. Repeat these steps for the player head by selecting a Head skin from the Textures browser, and selecting Display > Skins > 1 instead of 0 in the latter steps (1 corrosponds to the ‘head’ skin for the xPawn).

  15. Close the xPawn Properties window.

Result: Your xPawn should now look as you wish. Does your xPawn look better now? You should be able to see the changes reflected in game (if not, click the Rebuild All button or pray to the Tiki Gods, depending on your religious preference).


    Changing Sounds

 

This step won't bite you in the ass if you don't do it, but is a good thing to do for a professional quality production. It’s a bit easier than selecting meshes and skins because you don’t have to open a browser to do it.

To select xPawn sounds:

  1. Select the xPawn in any 2-D View Window (it should change color to show it has been selected).

  2. Double-click the xPawn to bring up the xPawn Properties window.

  3. Expand the Sounds property (not Sound property, which is something else entirely) by clicking on the +. You should see many different properties.

  4. Select the Sounds > SoundGroupClass property, then click the property's drop-down arrow. A list of all available sound packs will display.

  5. Select the xMercMaleSoundGroup soundpack (or whatever soundpack is most appropriate to your xPawn... I prefer xTalkingBeachballSoundGroup myself).

  6. Close the xPawn Properties window.

Result: Your xPawn will now make fitting sounds in game when beaten, shot or yelled at. Feel free to beat, shoot or yell at your xPawn to test this.

    Naming your xPawn

 

Next to last, you need to give your xPawn a name. This name is supposedly referenced by UnrealEd when one pawn uses another as a LookTarget, though I haven’t yet gotten that to work.

To set the name for your xPawn:

  1. Select the xPawn in any 2-D View Window (it should change color to show it has been selected).

  2. Double-click the xPawn to bring up the xPawn Properties window.

  3. Expand the Events property by clicking on the +. You should see many different properties.

  4. Select the Events > Tag property, then enter the name for your xPawn (e.g. SpaceMarine, AlienPimp, ElvisImpersonator).

  5. Close the xPawn Properties window.

Result: Your xPawn is now named appropriately, though as I’ve said, I haven’t found out what good this does within the engine. I’m probably doing something wrong when specifying xPawns as LookTargets for other xPawns... either that, or I've smoked far too much crack.

    Assigning your xPawn to an ScriptedSequence

 

The last step! Your final edit is to assign the xPawn to the ScriptedSequence that will be running its actions. This ScriptedSequence determines what the xPawn does during your Machinima movie (without an ScriptedSequence, your xPawn will just stand in your level breathing and contemplating the meaning of life).

To set the ScriptedSequence for your xPawn:

  1. Select the xPawn in the 2-D View Window (it should change color to show it has been selected).

  2. Double-click the xPawn to bring up the xPawn Properties window.

  3. Expand the AI property by clicking on the +. You should see many different properties.

    The following step is more important than your firstborn child.

  4. Select the AI > AIScriptTag property, then enter the name for the ScriptedSequence that will boss the xPawn around.

    Okay, I was exaggerating a bit, but it *is* still a fairly important step.

  5. Close the xPawn Properties window.

Result: A blue line will appear in the 2-D View Windows connecting your xPawn to its governing ScriptedSequence. Considering you are probably reading this tutorial sequentially, I bet you haven't even created an ScriptedSequence yet. Regardless, if you *had* previously created an ScriptedSequence, you would see a blue lineconnecting it to your xPawn. If you have created an ScriptedSequence and you don’t see the blue line, edit the Event > Tag field of your ScriptedSequence and make sure is set to the same name you entered in the xPawn's AI > AIScriptTag property (alternately, it's possible you could have smoked too much crack).

    Summary

 

That’s it! You’ve got an xPawn linked to an ScriptedSequence in your level all ready to be guided around! When this tutorial is next updated, we’ll be talking about making your xPawn move by entering commands in its ScriptedSequence... but in the meantime, you can check out Hugh Macdonald’s already available tutorials on the subject.

Insert Actor Troubleshooting

 

If you try to insert a PlayerStart, xPawn or other actor into your level and it doesn’t appear, it could be because UnrealEd is doing its wacky actor spawning bug. This happens because UnrealEd tries to insert PlayerStarts and xPawns at a certain Z height in the level, and if your level brush is above or below this height, it will yell at you that there is no space to insert the Actor (even though it is obvious to all people who are not an UnrealEd.exe that there is).

To check if this is the case, open the Log by clicking View > Log after your Insert xPawn attempt failed. If you see an error in the log stating Actor doesn't fit there (couldn't spawn it) then UnrealEd is f’in with you. The easiest solution to this (without mucking with your now complex set) is to insert the xPawn or PlayerStart in your InsertBox (which you created earlier) and then select and move the Actor to the appropriate location (see, I told ya' that thing would come in handy).

Completely Unrelated Note:Given how much UnrealEd seems to crash while messing with this stuff, I'd again advise you to save after each step. If UnrealEd wasn't an executable, it would end a hard day of crashing with a Mike's Hard Lemonade.



Creating ScriptedSequences for xPawns

  Most (if not all) xPawns featured in a movie will need to be assigned to an ScriptedSequence if you want them to actually do anything (the exceptions are static xPawns, such as bystanders seen briefly in a scene who don’t move). To add an ScriptedSequence to your level:
  1. Open the Actor Classes browser by clicking View > Show Actor Class Browser.

  2. Expand the Actor Classes properties by clicking the + until you've found Actor > Keypoint > AIScript > Scripted Sequence.

  3. Click Scripted Sequence (Scripted Sequence will be highlighted).

  4. Close the Actor Classes browser.

  5. Move your mouse cursor to your Top 2-D Window and right-click on the Top 2-D View Window in the part of the level where you would like to add the ScriptedSequence.

  6. Select Add ScriptedSequence here (if this option doesn't appear when you right-click, repeat the previous steps... you probably didn't get ScriptedSequence selected).
Result: An ScriptedSequence will be inserted into your level at the point in the 2-D View Window specified by your mouse cursor. If the ScriptedSequence does not appear, see Insert Actor Troubleshooting.



General Note: If any of the changes you make below don't seem to show up in the editor, try clicking the Rebuild All (Fig. 3) button. This will usually catch the editor up on your latest work.

Figure 3



Rebuild All button


Setting up ScriptedSequences

 

ScriptedSequences are a series of scripted events that tell the xPawns in your level how to act while you film them. Generally, you’ll need to assign all xPawns to an ScriptedSequence before running your level. You can even use ScriptedSequences to call other ScriptedSequences as the Matinee scene progresses.

An xPawn without an ScriptedSequence to control it is little more than a stationary breathing dummy (useful for scenes with lots of passive background characters or taking cool screenshots of player models in game, but little else).

    Setting the xPawn as an AIController

 

Your first step in setting up an ScriptedSequence is to set the ScriptedSequence to designate its controlled xPawn as an AIController. Although you may use ScriptedSequences to control other types of AI (such as Bots) the AIController type is best for general Machinima purposes (future updates to this tutorial may deal with other AIController types, such as using Bots to stage deathmatch sequences).

Wack Ass Note:Hugh MacDonald pointed out that the ScriptedController is actually a better choice than the AIController, though I think both work. Hugh seems to know what he's talking about, so if you have trouble getting your AIController to do things, you might try experimenting with a ScriptedController instead... I'll try to play with this this weekend and figure out which is better.

Update 10/20/02:I've run into nothing but trouble when using a ScriptedController... the thing doesn't seem to want to do what I say and goes into a seizure whenever it finishes walking to a PathNode. I'd suggest sticking with AIController instead (this was probably something that changed during the journey from specifications to reality).

To set the ScriptedSequence to designate its controlled xPawn as an AIController:

  1. Select the ScriptedSequence in any 2-D View Window (it should change color to show it has been selected).

  2. Double-click the ScriptedSequence to bring up the ScriptedSequence Properties window.

  3. Expand the AIScript property by clicking on the +. You should see many different properties.

  4. Select the AIScript > ControllerClass property (ControllerClass will be highlighted) then click the drop-down arrow. A list of all available Controller Classes will display.

  5. Select AIController from the drop-down list.

  6. Close the ScriptedSequence Properties window.

Result: Now your ScriptedSequence will designate its controlled xPawn as an AIController, however, there is no real visual change to represent this. There will be, however, when you’ve given your ScriptedSequence a name (otherwise, you’ll have no way to link it to your xPawn)!

    Naming your ScriptedSequence and Attaching to an xPawn

 

Your final step in setting up an ScriptedSequence is to give the ScriptedSequence a name. This is what you will enter in the AI > AIScriptTag property for your xPawns (and what will tell the xPawn to follow this specific script). Double back to Assigning your xPawn to an ScriptedSequence if you don’t know what the fudge I’m talking about.

To set the name for an ScriptedSequence:

  1. Select the ScriptedSequence in any 2-D View Window (it should change color to show it has been selected).

  2. Double-click the ScriptedSequence to bring up the ScriptedSequence Properties window.

  3. Expand the Events property by clicking on the +. You should see several different properties.

  4. Select the Events > Tag property (Tag will be highlighted) then enter the name for your ScriptedSequence (e.g. HallwayWalk, MimeShoot, SquareDancinWithTruckerBob)

  5. Close the ScriptedSequence Properties window.

Result: Now that your ScriptedSequence has a name, you shouldn’t have any problem attaching the ScriptedSequence to the xPawn you created earlier in this tutorial. (Again, double back if you haven’t done that yet). After you successfully assign your xPawn to the ScriptedSequence, a blue line should connect your ScriptedSequence to your xPawn.

At last, your xPawn is attached to an ScriptedSequence and ready to be bossed around. It’s time for the fun part… getting our xPawn to actually DO things!

Scripting xPawn Actions via ScriptedSequence

 

Before delving too deeply into this section, I’d invite you to check out the excellent Scripted Sequence Actions tutorial on UDN. It has a fairly complete explanation of what scripting commands you can assign to the average xPawn, although there are a few inaccuracies (likely due to bugs and build updates) and how to add them. Instead of re-listing each type of ScriptedSequence action in this tutorial, I’m just going to tell you how to add script commands, give you a few specific cases of how they work, and continue to add updates addressing bugs and inaccuracies in the Scripted Sequence Actions tutorial.

    Making your xPawn Walk via ScriptedSequence

 

To give an xPawn marching orders via an ScriptedSequence:

  1. Select the ScriptedSequence in any 2-D View Window (it should change color to show it has been selected).

  2. Double-click the ScriptedSequence to bring up the ScriptedSequence Properties window.

  3. Expand the AIScript property by clicking on the +. You should see two different properties, ControllerClass and Actions.

  4. Expand AIScript > Actions. This will initially have only one property, the 0 property (this is the first blank line in your ScriptedSequence).

  5. Click the AIScript > Actions > 0 property (0 will be highlighted).

  6. An Add button should now be visible on the AIScript > Actions  row. Click the Add button or die!

  7. The 0 row will expand and a new property, AIScript > Actions > 0 > ACTION_ChangeWeapon will be visible (that’s the default script action). Click the drop-down arrow by ACTION_ChangeWeapon (a list of all available ScriptedSequence types will display).

    Wack Ass Note: Multiple people running UED 3.0 under Windows ME have reported a buggy drop-down box when they attempt the step above... basically, instead of seeing the ACTION_ChangeWeapon item and having a drop-down list to work from, all they see is a black line. Because this problemoccurs with ScriptedSequences that are proven to work (e.g. the scripts from 'Sucker') I've had no choice but to conclude it is an error caused by some combination of OS, hardware and software. Just wanted ya'll to know that if you ARE seeing a black line, you aren't doing anything wrong here... UED is just b0rked.

    10/22/02 - THIS PROBLEM IS FIXED! Go to ScriptedSequences under Windows ME for details.

  8. Because we want our xPawn to walk, select ACTION_MovetoPoint from the drop-down list (also, check out the Scripted Sequence Actions tutorial for more on what each scripted action does).

    Wack Ass Note: Even though you’ve selected the ACTION_MovetoPoint action, it hasn’t actually been applied yet… even if a scripted action doesn’t have additional variables, you will still need to ‘lock in’ the action before your script will use it -- see below.

  9. To lock in the ACTION_MovetoPoint action, you’ll need to click the New button that has appeared on the AIScript > 0 > Actions > ACTION_MovetoPoint line. Click the New button or die!

  10. The AIScript > Actions > 0 > ACTION_MovetoPoint property is now locked in to the 0 property and has one additional thing you need to set, a drop-down box that asks you to enter the name of the PathNode to walk to.

    Wack Ass Note:What, I need ANOTHER actor? That’s right, kiddies, you now need to add a PathNode before proceeding further. After adding a few PathNodes, come back to this step and proceed.

  11. Enter the Tag (name) for the first PathNode you’d like your xPawn to walk to. Make sure this name is correct (there’s no Use button for this, so whether or not your xPawn follows your instructions will greatly depend on your skill in avoiding typos… also, I believe this is case-sensitive, so check your caps if it doesn’t work).

  12. The AIScript > Actions > 0 line will close up, but if you expand it again you’ll see that your ACTION_MovetoPoint action has been added, referencing the appropriate PathNode.

The next time you click the Add button at the top of the ScriptedSequence sequence (see step 5) another ScriptedSequence line will be added, this time creating the AIScript > Actions > 1 property.

Wack Ass Note: You can change the name of the PathNode the xPawn will move to, but CANNOT change the MovetoPoint action itself. After a scripted command is locked into a property line (e.g. 0, 1, 2, etc) it cannot be changed, only deleted and replaced. Bummer.

Result: You’ve now added your first command to the ScriptedSequence controlling your xPawn, telling it where to move. See how easy that was? You can now add as many additional ACTION_MovetoPoint commands to your ScriptedSequence as you like, provided you have enough PathNodes to go around. You can send your  xPawn scurrying all over creation if that’s what floats your little boat!

Wack Ass Note: If you want help timing your Matinee scene to follow the movements of your xPawns, go check out Timing xPawns to Move with Matinee Scenes.

We’ve done enough editing, so lets see how this looks in the actual game. Providing you didn’t screw anything up, you should now be able to run your level in Unreal Tournament 2003 and see your little creation walk around. Viola! Your xPawn walks to the point(s) you specified! (if it doesn’t, see Troubleshooting xPawn Movement).

    Summary

  That was a fairly easy tutorial, now wasn’t it? I don’t see any need at this point to go into this type of detail for many other Scripted Actions, because the Scripted Sequence Actions tutorial covers them nicely (it just doesn’t tell you how to get started, e.g. creating an xPawn, creating an ScriptedSequence, and getting them to play together). Once you know the basics, the tutorial serves nicely.

Wack Ass Note: Future updates will include specific undocumented uses for various Scripted Actions as I discover them, as well as inaccuracies and corrections to the Scripted Sequence Actions tutorial that I may happen across in my own endeavors.

    ScriptedSequences Under Windows ME

 

Users running UED under Windows ME may have problems when attempting to edit the AIScript lines of a ScriptedSequence. Basically, instead of seeing a drop-down box when they click AIScript > Action > 0, they see nothing but a thin black line. The workaround for this is as follows:

  1. Click the AIScript > Actions > 0 property (0 will be highlighted).
  2. Use the left arrow key and right arrow keys to scroll through the list of ACTION_* choices step by step.

Unfortunately this is the only way to access ACTION_* choices in UED on most computers running Windows ME, however, it does work! I'll update the moment Epic actually bothers to fix this bug, but in the meantime, at least you ME people can continue work.

Adding Pathnodes to your Level

  First, you’ll need to add a few PathNodes to your level, and name these PathNodes. To add a PathNode to your level:
  1. Open the Actor Classes browser by clicking View > Show Actor Class Browser.

  2. Expand the Actor Classes properties by clicking the + until you've found Actor > NavigationPoint > Pathnode.

  3. Click Pathnode (Pathnode will be highlighted).

  4. Close the Actor Classes browser.

  5. Move your mouse cursor to your Top 2-D Window and right-click on the Top 2-D View Window in the part of the level where you would like to add the PathNode (preferably, you’ll want to add this near the PathNode near the ground of your level in the same room where you placed your xPawn).

    Note: I haven’t tested what happens if you put PathNodes for a Walking xPawn above the Z height where it can walk, so if you decide to try that wackiness yourself, don’t blame me if it doesn’t work. Just be a sport and stick your PathNode near the ground.

  6. Select Add Pathnode here (if this option doesn't appear when you right-click, repeat the previous steps... you probably didn't get Pathnode selected).

Result: A PathNode (represented by a little fruit of some sort) will be inserted into your level at the point in the 2-D View Window specified by your mouse cursor. If the PathNode does not appear, see Insert Actor Troubleshooting. (BTW, am I the only one who thinks they should have used a hunk of cheese to represent PathNodes instead of a generic produce product?)





    Naming the Pathnode

 

Because you will often have multiple PathNodes in your level, it helps to give each one a sequential name corresponding to the sequence it is used in.

For instance, if the ScriptedSequence HallwayWalk for an xPawn named Charlie references six PathNodes, I’d probably call each PathNode CharlieHallwayWalk1, CharlieHallwayWalk2, etc. This may seem like a lot of typing, but with the Duplicate option it’s actually pretty easy.

It sure as hell beats getting confused two weeks into production as to what PathNode applies where.

To assign a name to a PathNode:

  1. Select the PathNode in any 2-D View Window (it should change color to show it has been selected).

  2. Double-click the PathNode to bring up the PathNode Properties window.

  3. Expand the Events property by clicking on the +. You should see many different properties.

  4. Click the Events > Tag property and then enter the name for the PathNode (e.g. CharlieSquareDancesWithTruckerBob1).

  5. Close the Pathnode Properties window.

Result: Your PathNode is now ripped and ready to be referenced by your ScriptedSequence. Before going back to muck with the ScriptedSequence, however, duplicate your PathNode a few times (right-click the PathNode and select Duplicate), position your PathNodes in a path in your room, and edit each duplicated PathNode's Events > Tag property to change it to CharlieSquareDancesWithTruckerBob2, CharlieSquareDancesWithTruckerBob3, etc... see, you're only changing one character each time).

TroubleShooting xPawn Movement

 

Okay, we all know why you’re here… your xPawn didn’t walk around when you ran your level. Here’s a few possible things to do to fix this:

Still not working? Maybe you screwed up. Maybe I screwed up. Maybe the world is just screwed up, and you have to deal with it. We’re none of us perfect! The world isn’t perfect! The world is INSANE! Barney the Purple Dinosaur will eat your children’s brains! Adam West is Go

[Editor’s Note: The ranting, raving technical writer who typed this atrocious statement has been sacked, incinerated, and replaced with a dancing monkey. Please direct any further questions about why your xPawn will not walk to the dancing monkey. Thank you for your attention.]



Timing xPawns to Move with Matinee Scenes

 

Because the AIPaths you use to direct your xPawns within a Matinee scene run independently of the Matinee scene (and because there is no hint in the preview window of where the xPawns will move... you can only see xPawns move in the actual game) I've found that it helps me to get my Matinee scene closer to the actual xPawn movement if I know how far the average xPawn will move in a set time period. Basically, I have to 'guess' where the xPawn is going to be as the scene progresses and set my Matinee scene up to film it as it moves.

Although this can be accomplished by trial and error (set up a part of the scene, run it, adjust camera until it follows pawn, run it again) you can get a lot closer to your finished shot by estimating the position of the xPawn using some simple math.

Walking xPawn Time

 

When told to walk via the ACTION_Walk command in its ScriptedSequence, an xPawn will walk 256 units in about 3 seconds (actually 2.8, but who's counting?). This is useful for matching the InterpolationPoints and speed of your Matinee scene to the PathNodes of your xPawn... basically, you'll know that a walking xPawn set to ACTION_MoveToPoint will travel from its start point to a PathNode 256 units away in about 3 seconds. So, if you want your camera to stay on the xPawn in a relatively static position (e.g. floating down the hall while following a walking xPawn) you'll probably want to set your Interpolation points about 256 units apart as well and set the duration of the Matinee scene to 3 seconds. Here's a quick (and estimated) breakdown that you can expand on your own using your budding math skills:

  • Walking xPawn takes .7 (estimate 1.0) seconds to move 64 units.
  • Walking xPawn takes 1.4 (estimate 1.5) seconds to move 128 units.
  • Walking xPawn takes 2.8 (estimate 3.0) seconds to move 256 units.
  • Walking xPawn takes 5.6 (estimate 6.0) seconds to move 512 units.
By doing the math, you should be able to anticipate your xPawn's position a bit better and get the initial setup of your Matinee scene much closer to actually filming the xPawn. Needless to say if you add ACTION_WaitforTimer commands, you'll need to add those into the equation as well.

Running xPawn Time

 

When told to run via the ACTION_Run command in its ScriptedSequence, an xPawn will run 256 units in about 1.5 seconds (this is much closer to the actual 1.5... I think it's 1.45 something). See the explanation on walking xPawn timing above. Here's a quick (and estimated) breakdown that you can use when anticipating xPawn movement (again, use your math skills or if all else fails, a calculator, to add to this if necessary).

  • Running xPawn takes .36 (estimate 0.35) seconds to move 64 units.
  • Running xPawn takes 0.73 (estimate 0.75) seconds to move 128 units.
  • Running xPawn takes 1.45 (estimate 1.5) seconds to move 256 units.
  • Running xPawn takes 2.9 (estimate 3.0) seconds to move 512 units.

I believe the physics for PHYS_Flying xPawn is the same as PHYS_Running, but I still need to test this. For now, however, I think you can consider the PHYS_Running speed the default speed for all physics except ACTION_Walk.



Creating a Matinee Scene

  Content pending... in the meantime, go here. (Thanks Warren Marshall)


Starting Levels, Matinee Scenes, and xPawns Simultaneously

  Content pending


Reverse Engineering a Finished UT2003 Movie

 

I've finished a test UT2003 Machinima Film called 'Sucker' which uses all the techniques that will eventually be discussed in this tutorial. If you are sick of waiting for me to update the tutorial, go ahead and download the movie and figure out for yourself how stuff was done.

This movie was purposely made as simple as possible (no more than two xPawns, etc) because I wanted to make it easy to trace what was done in all cases, and also because I didn't know nearly enough at the time to make something more complex.

'Sucker' is a work in progress and will continually be updated as I learn more and better methods for creating UT2003 Machinima. It is not what I can guarantee as 'best practices' for creating UT2003 Machinima, but should work in a pinch. Good luck and enjoy!

Download 'Sucker' a UT2003 Machinima Test Short Film

 

Download Sucker ver 1.1 (right-click and choose Save Target As...)

Latest Updates to 'Sucker'

 

  • 10/08/02 (1.1) - Replaced InterpolationPoints used for ScriptedSequence paths with PathNodes (thanks Hugh MacDonald)

  • 10/06/02 (1.0) - Sucker 1.0 Released (and there was much rejoicing)

Tutorial Version Changes Log

 
  • 10/22/02 - Added a fix for that annoying glitch with selecting ACTION_* choices in a ScriptedSequence! The joy of Windows ME users is palpable.

  • 10/20/02 - Timing xPawn movement portion of tutorial added, along with update to the AIController vs ScriptedController controversy (use AIControllers). Next update will focus on various common set ups in UT2003 Movies (e.g.setting an xPawn to look around while walking, setting an xPawn to fire at another xPawn, setting an xPawn to play an animation or sound... you know the drill). Finally, added a NEW!!! tag to sections of the tutorial that have been updated this time around.. this will help people track what's been changed since the last revision.

  • 10/10/02 - ScriptedSequences portion of tutorial added, along with formatting revamp of steps and bullets (added lines between to make them a bit easier to scan). Also added graphics for xPawn, ScriptedSequence, and PathNode.

  • 10/08/02 - First version of tutorial posted for public view.