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. |
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. |
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:
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. |
Content pending... in the meantime, go here. |
All characters in your UT2003 Machinima movie will be created using xPawns. To add an xPawn to a level:
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.
|
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. |
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:
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). |
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:
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? |
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:
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). |
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:
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. |
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:
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. |
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:
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). |
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. |
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. |
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:
|
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). |
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).
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).
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)! |
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:
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! |
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. |
To give an xPawn marching orders via an ScriptedSequence:
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). |
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. |
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:
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. |
First, you’ll need to add a few PathNodes to your level, and name these
PathNodes. To add a PathNode to your level:
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?)
|
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:
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). |
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.] |
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. |
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:
|
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).
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. |
Content pending... in the meantime, go here. (Thanks Warren Marshall) |
Content pending |
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 ver 1.1 (right-click and choose Save Target As...) |
|
|