Demo Editing and Videos - The end-to-end guide.
Section 1 Recording a demofile.
Not only the most logical start to the guide this is most surely the shortest and easiest.
At its most simple, just type:
/demorecord [demo name]
within the game. This will start to record a demo to the client_demos folder under your City of Heroes game directory. One nice thing is that the filename format for demo files is [demo name].cohdemo, so they stick out like a dogs willy when youre trying to find them later. To stop the demo recording, simply type:
/demostop
within the game. Zoning will also stop a demo recording, so be aware that at the bare minimum youll need a separate demo file for each new zone (or mission) that your finished product will consist of.
TIP: A real nice idea is to actually /bind [choose a start key] demorecord demo and /bind [choose a stop key] demostop. As youll see in later sections, you may spend a lot of time collecting camera or actor positions, or grabbing an emote that an NPC is doing etc, and its a lot faster to quickly record it to demo.cohdemo rather than keep having to type it out.
Not only that its actually very useful to be able to Quickdraw-McGraw a demo recording perhaps someone in your team is about to do something amazingly impressive (or amazingly stupid) that you want to capture for posterity. Or maybe you are getting griefed or are having trouble with another player. Its a lot easier to get screenshots or investigate exactly who was doing what to whom and where in a demofile post mortem.
Remember that each time you use the start-recording key though, itll overwrite the demo.cohdemo, so if its something that you want to keep, simply pop to Windows Explorer and rename the demo to a more permanent (and descriptive) name before using the start recording key in the game again.
Yii...
Section 2 Playing back a demofile.
Slightly out of phase I suppose after all, well probably be wanting to EDIT the demos before playing them back of course but the first thing we should check is that we have what we want in the demo weve just recorded.
Plus, youll be playing back demos again and again and again as you edit them, to check that your changes are working as intended, take it from me!
Now unfortunately, playing back demos isnt as simple as just typing something in-game. To play back a recorded demo, you have to launch the City of Heroes client, with a switch that tells it to generate the screen content from a demo file (instead of connecting to the City of Heroes servers).
The official method is to create a shortcut to the Cityofheroes.exe file, with a parameter of demoplay [demoname]. For instance a shortcut to:
C:\Program Files\City of Heroes\CityOfHeroes.exe demoplay demo.cohdemo
This would play the demo file called demo.cohdemo. Notice that City of Heroes automatically looks for demos within the client_demos folder. In fact, you should keep all your demos under this folder (or a subordinate folder) in order for them to play.
If the demo file is okay, the game engine will launch in its familiar way, but rather than asking for an account name and password etc, it will launch straight into loading the zone that the scene is in, and will play the scene, looping back to the beginning each time, until you press Escape.
TIP: An easier method of launching demo files, is to download and install Zloths Demo Launcher. This is an excellent program that allows you to launch a demo file with just a single click. Its main advantage over the traditional method is that you dont need to keep editing the shortcut when you want to play different demo files. Dont do as I kept doing though and double-clicking the Launch button (through force of habit). Youll end up with the game playing two demos at once!
TIP: Not so much of a tip, but something to be aware of. Certain zones (more specifically, Peregrine Island) seem to have broken objects in them. When playing the game, the fact that the game engine isnt happy about something is hidden from us, but when playing a demo, we get to see the error messages. Unfortunately they are not at all exciting and just mean that you have to click OK to them several times whenever you are playing a demo that is set in PI etc.
Yii...
Section 3 Understanding a demo file.
Before we can jump in and start editing things, we should first understand what is going on in a demo file. Well also try to get the general things out of the way before moving on to specifics.
Section 3a The Basics.
Column One Time. The first thing to understand about the demofile is that it is organised in a completely chronological way, with time deltas down the first (leftmost) column. By deltas we simply mean that each number in that first column represents how much time should pass after the previous line before that line is executed. So we normally see in a demo file a whole bunch of zeroes in that first column at the start this is the demo file setting up the scene. Once numbers start to appear, then the clock is running and things start to happen. Timings in this column are in milliseconds so a line that starts with 1000 will happen one second after the previous line. It seems normal (on my system at least) that the normal tick in a game is around 33.
Column Two Object ID. Things within a scene follow a very specific pattern:
They are created
'Stuff' may happen with them
They are deleted (deleting them happens less often in short scenes and in fact isnt all that important when editing demo files).
When an object is created, it is given a number. From that point on, for anything that happens to that object, only the number is needed. We will look at the creation and manipulation of things in more detail in the following sections all that is needed at this time is to realise that the second column refers to the object number.
One special object number that you will see throughout a demo file is CAM. As is fairly obvious, this refers to the camera itself.
Column Three Command. Immediately following the object ID (or CAM) is a command which specifies what is happening to the object. At the start of a file, what is happening is that the object is being defined (what it is, what it looks like etc). Later in the demo file, the commands will normally be either moving the object around (POS and PYR) or making it do things (MOV etc).
Column(s) Four onwards Variables. After the command comes the variables for that command. These will be discussed separately below.
Section 3b Commands.
As mentioned in the previous section, the third column contains the command that is being applied to the object.
At the very start of a demo file, three important commands start to set the scene:
Version This looks like it should identify the version of the game, however it is always 2, even the release of a major patch (such as I4, which changed the way character models were defined drastically) doesnt change it.
Map This defines the zone (or mission tileset) that should be loaded.
Time This is a simple 0-23.99 value as to the time of day. Useful to change a scene to take place at night, day, dawn or dusk etc.
Directly following the above commands, objects are then placed in the scene (and then manipulated). The main commands that will appear throughout the rest of the demo file that we are interested in are as follows:
NEW Identifies the ID as a new object. Without this, anything that happens to the object ID later in the file might as well not be there. So its actually a nice way of removing something from a demo that you dont want there just delete the NEW command.
Any text after the NEW command defines what the Name of the object is, and is used in different ways depending on the type of object. If the object is a player, then we see the name displayed above their head when we play the demo file (in orange, confusingly!). If the object is an NPC, then we dont see the name (unless we are actually in the game, and mouse-over them something we cant do when playing back a demo). Alternatively, it might be a door, in which case the name appears as Dr.
NPC Identifies that the object is an NPC. This is only to define how it looks it doesnt affect how it subsequently acts YOU do that!
COSTUME If the object isnt an NPC, then its a player, and this line starts to define how the hero looks.
PARTSNAME Following the COSTUME command, several PARTSNAME commands define the details of the costume, from what it consists of, to its colours etc.
POS Position on the map. This is given in a X Z Y (east/west, up/down, north/south) format. Unfortunately its not the easiest thing to work with on paper (i.e. working out if I want to move something two paces left, from the perspective of the camera, what the POS should change to) for instance, going North makes the Y component actually decrease!.
PYR PitchYawRoll. This describes the orientation of the object. The most common aspect that changes within the same is the Yaw component (as objects turn around etc). Its also not very easy at all to manually work out what the numbers should be as not only are they expressed in Radians, but they are different for objects and for the camera. See MasterMarbles excellent guide and explanation for more details.
TIP: If you love working with maths, you might have a lot of fun working out how to manually manipulate the numbers (there was a fantastic bit in Hype Won where mobs were being spun around, its not until you look at this from a demo editors perspective that you realise just how technically clever that scene was). Its a LOT easier and quicker though to simply capture positions and orientations from within the game. The start/stop /binds mentioned earlier are ideal for this. Simply position yourself in the game where you want your object to be, quickly capture a second or so of demorecord, and copy the numbers from the resultant demo.cohdemo file.
MOV Movement. This basically animates the object, and includes what you and I would recognise as emotes (bow, dance, sit etc) to the motions a character goes through when using powers, to how inanimate objects move (such as doors swinging open etc).
FX Effects. Much like the creation of an object, an FX command creates an effect. Effects range from actual One Shot animations (blasts, heals, holds etc) to Maintained FX such as the glow from Hasten or SuperSpeed or Instant Healing etc.
The FX command should normally be immediately followed by FXSCALE, ORIGIN and TARGET commands. Whilst the FXSCALE and ORIGIN commands cannot be altered for our purposes, the TARGET command is important as it defines what the FX is targeted on. So for instance a snipe will be animated from the object that defines it, to the object that is mentioned in its TARGET command. An effect such as Hasten will have a TARGET of the object that it is running on.
FLOAT Float a message. Ill mention this here, even though for a film, you will very probably not want to use these. The FLOAT command floats text above either a target (damage, or Recharging etc) or floats something in the middle of the screen (Mission Complete or Enhancement Found etc). Its important to know about them, so you know what to remove when youre making your video-ready demo file.
Lastly (and very very very much not leastly), the Player command identifies an object as being, you guessed it, the role of the player within the scene. This is actually very important. Firstly, the player will automatically not have their name displayed over their heads. Secondly, and by far the more importantly, the location of the Player is has a direct effect on what the game engine will animate on the screen. In exactly the same way as we see scenery and characters pop into view as we get closer to them as we fly/jump/run around in the game, the game engine will only bother rendering things within a scene if the Player is close enough to see them. So for instance, you may spend hours setting up a complex scene taking place at Portal Corporation in Peregrine Island, placing the actors and the camera etc if the player is stood at the ferry, or has not been defined at all, when you run the demo none of them will appear on the screen and youll just get an empty room!
The above commands will be examined in more detail in the following sections, where we will see their use within a demofile.
Section 3c Object Creation.
Creating new objects basically falls into two categories creating immobile objects and NPCs and creating players. The reason for the difference is that the details for immobile objects and NPCs are coded into the game, whereas a player has to be defined with respect to his/her costume, height, build etc.
Lets look at an object/NPC first.
0 34 NEW Dr
0 34 NPC Door_Right_City_01
0 34 POS -1304 -34 952
0 34 PYR 0 3.141593 0
0 34 MOV READY
After reading the last section, you should be able to understand what is going on here quite easily.
Firstly, all the lines are read one after another with no delay (because the time column is all zeroes).
Secondly, we can see that it is defining a NEW object, which is a Door (we know that just from seeing the Dr).
Thirdly, its an NPC, which looks like a Door_Right_City_01.
Fourthly, we can see its position and orientation being set up.
And finally, we can see it being moved into Ready position (something which doesnt matter much to a door, but everything has a Ready position).
Here is a car:
0 1042 NEW ""
0 1042 NPC Car_Sport24
0 1042 POS -1784 -42.5 256.659149
0 1042 PYR 0 -0.000374 0
0 1042 MOV READY
And a Police Drone:
0 3054 NEW "Police Drone"
0 3054 NPC Police_Drone_Guard
0 3054 POS -1664.140625 -10 650.21875
0 3054 PYR 0 3.141593 0
0 3054 MOV READY
If its not an NPC, then as previously mentioned, a lot more effort needs to go into defining the appearance of the object:
0 2 Player
0 2 NEW Prestidigitator
0 2 COSTUME 0 9bb2ff 3.846154 -0.650000 0.000000 0.000000 -0.680000 -0.590000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0 2 PARTSNAME Tight tights Sharp ff0000 000000
0 2 PARTSNAME Tight tights Peak ff0000 000000
0 2 PARTSNAME Standard skin_glowing_eyes_01a skin_glowing_eyes_01b ff0000 000000
0 2 PARTSNAME Smooth tights Sharp ff0000 000000
0 2 PARTSNAME Smooth tights Sharp ff0000 000000
0 2 PARTSNAME None None None 000000 000000
0 2 PARTSNAME Style_03 Style_01a Style_01b 000000 000000
0 2 PARTSNAME None None None 00cc78 000000
0 2 PARTSNAME None None None 00000000 00000000
0 2 PARTSNAME Tight base Star_10 000000 ff0000
0 2 PARTSNAME None None None 000000 000000
0 2 PARTSNAME None None None 00cc78 000000
0 2 PARTSNAME None None None 00cc78 000000
0 2 PARTSNAME None None None 00000000 00000000
0 2 PARTSNAME None None None 00cc78 000000
0 2 PARTSNAME Half Cape_Top_01 None 000000 cc0100
0 2 PARTSNAME None None None 00000000 00000000
0 2 PARTSNAME None Cape_01 Cape_Peak 000000 cc0100 000000 990002 capes/CapeLongMale.fx
0 2 PARTSNAME None None None 00000000 00000000
0 2 PARTSNAME None None None 00000000 00000000
0 2 PARTSNAME None None None 00000000 00000000
0 2 PARTSNAME None None None 00000000 00000000
0 2 PARTSNAME None None None 00000000 00000000
0 2 PARTSNAME None None None 00000000 00000000
0 2 POS 667.559998 464.049133 -3203.53125
0 2 PYR -0 2.390253 0
0 2 FX Maintained 1759344 GENERICCONTINUING/BUFFENDCONTINUING.FX 0
0 2 FXSCALE 10.000000 10
0 2 ORIGIN ENT 0 0
0 2 TARGET ENT 2 0
Firstly, this object is the player (see previous section for how important that is to the scene). Secondly, we can see that directly after the appearance, position and orientation of the player has been defined, an FX has been placed on them (its their own ID in the TARGET command) in fact its the Conserve Power visual effect.
Understanding how new objects are created make it very easy to create new objects within a planned scene, remove objects that were already there, or (easiest) replace the appearance of one object with another. Try changing the NPC [whatever] command for something within your scene to NPC Model_Statesman and see what happens. Replacing a non-NPC is almost as easy just cut and paste the details of one hero over the top of the definition of another within the demo file (being careful to change the Object ID numbers of the newly pasted hero to the ones of the original, so the new hero does everything the old one did as the rest of the demofile is read).
Section 3d Object Manipulation.
This section will basically revolve around the MOV and FX set of commands and is focussed on manipulating a static object. Actually moving an object around will be covered in the next section.
The MOV command is by far the most simple and yet versatile of the commands. At its simplest level, it basically makes the object perform an animation. As the entire game is made up of objects being moved around the map and emoting things as they do so, the MOV command obviously makes up a huge part of the equation.
MOV is a simple command as it takes only one argument the action that the object needs to do. If a door opens, its a MOV. If a character crosses their arms, its a MOV. If an NPC getting mugged falls over, its a MOV. Even walking into and out of a door is a MOV.
Below are some examples of MOVs.
0 3102 MOV AFK_NEWSPAPER
0 3176 MOV READY_2HIPS
0 3257 MOV READY_LOOK
Also, some animations have several parts. For instance a jump is made up of a:
MOV HOPPRE
MOV HOPAPEX
MOV JUMPPOST
There are literally hundreds and hundreds of MOVs that are used in the game and so I wont attempt to list them here. Instead, the best thing to do, is if you know what it is you want to do, then use your funky demorecord button from Section 1 to capture someone or something in the game doing it.
The same follows for the FX command. If you want to animate someone throwing a boulder, then find a player (or an NPC!) in the game thats doing it. Youll easily see the MOV and the FX commands that make up the attack when object 386 throws a boulder at object 20:
0 386 MOV SHORTTOSS
0 386 FX OneShot 3397479 POWERS/EARTHCONTROL/HURLBOLDERLARGE.FX 0
0 386 FXSCALE 10.000000 10
0 386 ORIGIN ENT 0 0
0 386 TARGET ENT 20 0
Section 3e Moving Objects Around
Once the scene is set up and the objects defined, the majority of the remaining lines within a recorded demo file pertain to moving things about (Id estimate about 95% of it!) as players and NPCs walk, run, jump, get knocked around etc.
This is very tricky to do manually. Not least because as previously mentioned, the variables that get passed to the POS and PYR commands arent easy to compute but also because its very difficult to manually manipulate the movement, orientation of an object and keep it in sync with its associated animation (running or walking for instance). If you get it even slightly wrong then youll get lots of 'moonwalking'.
Again, seeing as were trying to turn out a top-notch video here, without busting a blood vessel in the process, you should instead turn to the record in-game and then customise approach. Youll see how this works when we start looking at some tricks when actually capturing shots in the following section.
Yii...
Section 4 The Camera
As previously mentioned, the camera is treated just like an object in the game, but with a special CAM designation. The main problem to be addressed when manipulating a demo file for use in a video is that the camera a) is bound to the player and b) moves around all over the place with the player (which is something you dont normally want for the finished video product).
The following sub-sections detail my sneaky secret tricks to use when trying to get various camera shots. It is important to realise that they increase in complexity.
Section 4a A Straight Shot centred on the Player
This would be the simplest a shot where the actor is the only person (or the only person of interest) in the scene.
Simply get in-game and stand your player where you want the actor to stand. Then use the camera pan keys to pan the camera around to the angle that you want perhaps showing the characters face, or maybe to the side of the character.
Hit your demorecord and demostop buttons, and thats the difficult part over!
Simply then edit the demofile to change the players appearance into whomever you want the actor to be. You may have also had the character doing stuff (fighting, or doing emotes etc), but its also just as easy to add emotes post production of course.
Section 4b A Straight Shot not centred on the Player
Almost as easy, requiring only one additional step.
Firstly set the shot up as before. Perhaps this time though, the character is talking to (or firing at!) someone else, so once you have set up and captured the scene, take a second very short capture, using the player as a marker for the camera (making sure you safely saved or renamed the first capture of course!).
The easiest way of doing this is to zoom the camera into first person mode, so that the player eyes are the camera. Then position the player/camera so that you can see the scene as you want it on the screen, albeit now the scene is empty. Take your snapshot and then extract the CAM POS and PYR from the demofile and substitute the numbers into the CAM POS and PYR of the original.
I personally got into the habit of quickly taking two demorecords when setting up a shot like this, calling one fromsoneotherplanet.cohdemo and the other fromsomeotherplanetcampos.cohdemo. I could easily come back later and finish constructing the scene later.
TIP: If your character moved about at all when you were capturing the original scene, there will be CAM commands throughout the rest of the file which will jump the camera from the fixed position we recorded in the second demo file as soon as they start to happen.
TIP: A real easy way of sorting this out is to do a global replace with your text editor (its CTRL+H in most of them) and replace CAM with ### (notice the spaces at either side thats just to make sure that were only going to be affecting the camera with the replace). That will effectively kill all the lines which affect the camera as the demo engine will just ignore them as it doesnt understand what object ### is. You can then place the camera at the very top of the file (perhaps straight under the Time statement) with the copied POS and PYR lines from your second demo record, and voila, you have your fixed camera while the rest of the scene runs about and moves etc.
Section 4c A Stationary Pan Shot
Here, we make the transition from a single camera position and orientation that is used throughout the shot, to needing several lines (actually, youll be surprised how many) which change the orientation of the camera.
If you really really wanted to, this would probably be the easiest shot to work out manually using mathematics. Only PYR lines are needed here as the camera stays in the same place, but pans (or yaws in demospeak!) around. Id recommend setting up a starting angle and using MS Excel to produce a range of values to yaw the camera around.
Infinitely easier is to once again use the game. Zoom the camera in until you are in first person mode, and then simply demorecord yourself turning round. You can even include looking up and down (pitch) as part of the pan.
But now we run into the problem with using this method. Because something is actually moving (the player!), then the CAM commands in the demofile will be interspersed with the PYR commands for the character as they swing round together. But thats okay, we dont care that theres a character stood there we cant actually see them (as their eyes are the camera). And if we were really bothered by it, we could just remove the NEW command for that character. So leave those lines there - we can happily ignore them.
The tricky thing to this type of shot is actually a) Putting something into it or b) Putting the shot into an existing scene. Because of the chronological organisation of the demo file, any actor movements/emotes etc would have to be inserted amongst the commands for the camera pan (and would also have to have a timing of 0 so that the pan isnt paused when the command is reached).
Fortunately, this type of shot is normally going to be a pan through a static scene, or of the city skyline etc, so you hopefully shouldnt need to insert thing into the middle of it. But you havnt escaped, you will most likely still have to broach that problem as we look at the next few shots.
Section 4d A Dolly Shot
Im no filmmaker in real life, so apologies in advance if any of my terminology in this guide is wrong. What I have in my head when I think of a dolly shot, is where the camera is fixed on an apparatus that has wheels on, and is pushed through or past a scene.
This would actually work remarkably similar to the last (stationary pan) shot, in that you should utilise a camera character in the game, demorecord the shot, and then either insert the actions for the scene inbetween the camera commands (easier) or insert the camera movements in between the commands for an existing scene (much harder).
Section 4e A Tracking Shot
This would be where the camera is stationary, but remains pointed at an object as the object moves.
Again, I would recommend inserting the tracked object in between the lines for the camera, playing the demo to see how it looks, editing the way the tracked object is inserted (the place its inserted for instance) based on the results, and repeating.
The demo file format really does not lend itself to easy manipulation of the camera in this way and so I imagine that it would take several dozen edits like above before you even start to get the sort of finished scene you would like.
Section 4f A Tracking Dolly Shot
So were adding the terms together now this would be where the camera is both in motion through the scene, and is also tracking an (an either stationary or moving) object.
This is by far the most visually impressive shot, but is also the most difficult. As we know before we even start work on a shot like this, the finished demo file will be stuffed full of CAM POS and CAM PYR commands, interspersed with whatever POS, PYR, MOV and FX commands that are making up the scene.
Again, the easiest way of capturing the CAM commands is to use a camera character to capture live in-game footage, preferably one with Hover and a really steady hand and a non-sticky mouse! You'll also need one or more friends as the 'actors', to move around and play out the scene etc. Remember when doing this that it's easy to add the emotes, powers, costume changes etc after the scene has been 'shot'.
Yii...
Section 5 Turning it into a Video!
There are no doubt a number of ways to skin this particular cat all I can mention is the methods and tools that I used.
The first thing youll need to do is to capture footage into a format that you can use in something other than the City of Heroes demo player.
Next, if you are attempting to create a finished product which consists of several clips, you will be need a program to organise the clips, and hopefully put in some extra effects such as fades and titles etc.
Section 5a Capturing the Footage
By far the most popular program to use to capture footage is a program called Fraps. You can work just fine with the trial shareware version, although if you want to get rid of the banner at the top of captured clips, or you have any individual scenes that are more than 30 seconds long, you will need to shell out the $30 or so for the full version (which is very much worth is in my opinion).
Simply set your edited and tweaked demo file playing, and at the appropriate moment, press F9 (or whatever you have set your Fraps capture key to) to start/stop the recording.
TIP: Depending on what type of video you are recording, you can turn off the capturing of sound from the game from within the Fraps options.
TIP: If your scene is somewhere within the streets of Paragon City, the demo engine will automatically display the floating text for that location when you launch it (just like when you enter a zone in the game, and it floats up Atlas Park or The Gish etc.). You probably dont want this on your captured clip, so just wait for the second time round of the demo the location is only displayed once when you first launch it.
TIP: Timings If you are going to be using fades etc once you start to put the clips together, you should allow a few seconds either side of a clip so that the clip editing program has something to fade up/fade down with. You can easily do this by just making sure that there is a nice healthy (5000 or so) delay before the last line of the demo file (if youre too efficient with your demo file editing, itll loop back to the beginning at the very instant the last thing in the scene happens!). Also, if you are intending on doing the capture on the second or later loops, you may want to add a delay in the demo file before the scene starts moving (i.e. after the scene is set up and everything is placed etc but before the first action happens) to give any FX (such as snow storm etc) from the previous loop time to dissipate.
Section 5b Working with the Footage
There are several programs available, such as Ulead, Microsoft Movie Maker, Pinnacle Studio etc which will allow you to organise your captured clips and transition between them etc. The one I use is Adobe Premiere 1.5, which at about $600 to buy you would expect does just about everything imaginable. Depending on how fast you work, you can actually get the editing done using just the trial version ('Real World' was done with the trial), although once the trial is over, its horribly hard to get working again.
Most video editing programs also allow the creation of simple titles but for something more special (such as the Operatives intro and end titles) you can use a program like Adobe After Effects, which just scare the willies out of me in their complexity and functionality.
No matter which video editing tool you use, you should hopefully find that all you need to do now is import or drag your captured clips next to each other, crop them a bit, perhaps put in some transitions (dissolves etc) and titles, add a soundtrack (perhaps from an mp3) and then export the finished movie to a suitable format.
Exporting can either be straightforward (you just accept the default options) or incredibly involved (you try for something more bespoke). I never realised just how many settings went into creating a movie file until I did this myself (were all just used to double-clicking them and it appearing on the screen). Of all the myriad of settings, Id suggest that the most important is the format (.avi, .mpg, .mov etc), the size (320x240 etc) the framerate (23fps etc) and the bitrate (1024, 2048 etc). These will have the greatest effect on the finished product unfortunately, tweaking any of them means that you need to render the whole video to see the result.
The rendering process. Unless you have a fully tricked-up ping-pong-tiddly machine, youll need a cup of tea to enjoy while the video editing tool turns all the captured and cropped clips into the one big video.
Then post it to the boards and let us all see!
Yii...
Appendix A Character Models, MOV Emotes and FX.
In case you really want to have a dance with Statesman etc (did you notice him in the Real World video? ), here is a quick run-down of the major character models used in the game. Remember, if you see a particular NPC or Hero in-game that you want to use, getting their appearance settings is as easy as snapshotting them with a quick /demorecord.
Statesman - Model_Statesman
Agent Six - Model_AgentSix
Ghost Falcon -Model_GhostFalcon
Babbage - Giant_Sprocket
Dr. Vahzilok - Vahzilok_01
Mark IV - Model_MarkIV
Serafina - Model_Serafina
Requiem - 5thRequiem
Sunstorm - Model_Sunstorm
Maestro - Council_Maestro
Positron - Model_Positron
Numina - Model_Numina
For a very much more comprehensive list - check out Scuzzbopper's truly truly excellent site.
TIP: If you want to get an NPC, particularly if its a pedestrian, then mouse-over them to get their name at the time you take the recording itll make it a lot easier to find them in the resultant demo file, especially if its a busy one.
As Ive already mentioned, there are FAR too many emotes in the game to list them all in this guide. Again, the best thing to do if you want to use a particular one is go out searching for someone doing it (or someone who can do it on request!) and snap them with a quick /demorecord.
Again, Scuzzbopper has just about every MOV conceivable covered on his site, but here are a few that were used in 'Real World' to get you started though
Explain - ARGUE_REASON
Thumbs Up - EMOTE_THUMBSUP
Moment of Glory - GLORY
Clap - CLAPPING
Point - EMOTE_POINT
Silly Dance - D_MONKEY
Shrug - EMOTE_WHAT
Arms Out - EMOTE_WELCOME
To get FX, i'd reccomend the 'find someone with that power and snapshot them using it' approach
Yii...
Appendix B How Did I Do It?
Hopefully you have seen the Real World video by now if not, then have a peek at the media section of www.trimmers.org. In order to finish off this guide and bring everything together, I thought I would give a run-down of the scenes used in that video and the methods used to capture them. Shhh, don't tell anyone! :P
(Note - It may give you an idea of just how intimately involved in the project and the corresponding demo files you get when putting together a video, to know that I typed out the whole of the below explanations, from memory, without even having to watch 'Real World' one more time or refer to the .cohdemo files that were used etc...)
Titles
Produced in Adobe After Effects
Intro Shots
Just three Straight Shots of well-known areas of the game. Minimal editing to remove distracting heroes within the shot and to set the time of day etc.
I wonder what its like to be a rainmaker
A Dolly shot of the entrance to Operatives HQ (location secret!). I captured the camera commands myself using a character with Hover. I also had someone log out and log in right next to that door to get the entry, and replaced their appearance with that of Operative Slate. I had to do a fair bit of tweaking to the entrance so that Slates feet looked natural (i.e. werent sunken into rock etc) and to speed up the door animation (they stay open for a LONG time naturally!). Add the camera pan and the entrance together, and put in some emotes with the right timings and the scene is almost done. The last thing to do was to insert a Freezing Rain FX at the camera position at the appropriate time.
Id store it in boxes
Another example of capturing the scene first as the CAM. I used hover to get the (empty) scene from the perspective of the camera (it took several attempts), and then went and stood in the right place next to the box to get the position for Slate. I then edited the camera demo file and inserted Slate in the correct position as a new object. I had previously got a Storm controller in the SG to demo some powers for me, so I knew which MOV and FX commands made up the Summon Stormcloud and inserted them where they would fit in with the song (Slate looks like a Y for the word Yellow etc)
And you could come and see them
Bit clever this (if I say so myself). When I was getting Slates position next to the box, I swung the camera around (using the cameralook key in-game) so that a point emote would point straight at the camera. I then took a demorecord capture of me swinging round to the right. I then just had to take the very last CAM POS from the resultant file to get the position the camera had to change into from the previous shot, and also had all the PYR commands needed to make Slate swing round. I manually added the point and nod emotes (to fit in with the music) and finished the scene with another thundercloud summon, as before, but using the coordinates previously used for the CAM POS as the POS for the FX, so the camera got shrouded in smoke.
I wonder what its like to be a Superhero
Easiest shot of all. I tried a bunch of times to get a nice tracking pan (whilst zooming in), but they all looked like a dogs dinner. So I ended up with a simple shot, both hero and camera captured in the same demo file. Just needed to change the hero into Slate and change the time of day.
I wonder where Id go if I could fly around downtown
If you tried to do this one mathematically, youd still be scratching your head (the camera is following a sinusoidal path through the air whilst also tracking the flying hero!). Instead, I simply set the hero flying, put the camera into mouse look and then started to swing the camera around them at the right point (so that the huge statue in the middle of Steel Canyon wouldnt be shown). The demo file was then edited to substitute Slate.
From some other planet, Id get this funky high
Both swinging shots here worked exactly the same as the flying pan, but this time the subject was stationary.
And boy Id bet my friends would all be stunned
AoE stun a bunch of Hellions (or were they Skulls), replace the NEW commands for the NPCs for ones that set them as other Operatives and placed Slate in the middle doing an emote at the right time. Had to edit a HUGE amount to replace the right mobs (there must have been six or seven groups of mobs within range in that area of Perez, you can imagine how many NEW NPC commands that meant there were in the captured demofile.
Straight up!...
I actually had the real Operative Slate use gale on those Skulls I was stood behind him (off camera) with my tank having taunted a whole bunch of groups and herded them up so theyd run almost into Slate (if hed have agrod them, theyd have stopped short to fire their pistols etc). I then trimmed any mobs that were missed by the gale from the demo file and placed the camera in the best position.
If I was someone else
Some more genuine footage of Slate tangling with some Malta. We all hate Malta. I just adjusted the footage in the video editing program so they fell over kinda in time to the music.
I wish the real world, would just stop bothering me
I had my flying hero gank a bunch of mobs with hostages in Atlas Park, making sure to stay in the air so that the hostages couldnt get to me. I then landed and faced in the right direction so they ran up in front of me to do the thank you. Once that was done I did another quick demo record to get an aerial camera position that would capture the whole scene and edited the original demo to take out all the CAMs (used the ### replace technique), place the new CAM in the right place, Substitute me for Slate, and have Slate start off with a newspaper and then do the No emote at the right time.
And you
etc
Couple of very simple Straight shots centred on the player Again, zoomed the camera to where the character would /em point straight at it and then swung them round while demorecording. Just needed to add the point emote in post production, make all the CAM commands into ### (I dont want the camera to swing round with the player), and move the final ### POS and PYR commands to the very start of the file and restore them to CAM.
I wonder what its like to be the head honcho
High dreams indeed! the leader of the Operatives is Operative White! (currently MIA though). This involved a lot of editing of the demo file firstly to capture the camera track and pan, then to place all the Operatives, and then to put everyones emotes in.
Id send out an order
Simple shot, Slate is still in position and is doing the emotes (carefully timed when placing the clip in the finished video so that it was in time to the music).
2nd Chorus
The dance! I had already worked out the timings for the various lines in the dance this version, I did demofiles of Slate doing it (in its entirety) at several interesting locations and then used the video editing software to fade between them. That rock in the Shadow Shard doesnt half look like a willy.
Please dont change
A straight shot not centred on player. Captured three positions, one for Slate, one for Operative Mist, and one for camera. Then just placed the actors in their spots and had Operative Mist perform the change into Nova form while Slate did the No emote (I had my own Kheldian go Nova in a demorecord to see what the commands were would you believe its just an FX?).
Please dont change
#2
Similar to last shot, but this time I had captured the PYRs for the Slate actor to turn round and then back again. I added the emotes afterwards. (Note: One of the other servers still has Trimmer Babe, the blonde character model with huge gazoongas that I quickly whistled up to get a demorecord of, logged out in Outbreak. I can arrange an introduction for the right donation of inf.
Bridge
One of the best shots imho of the video, and ironically one of the ones that required the least demo editing! I just hovered around Slate in-game while he wailed on some Nemesis. Just goes to show eh? (Only thing I put in was about 15 copies of a Freezing Rain FX, to make it really pour down).
Chorus #3
Straight shot really simple demo file (as there is no movement or turning etc), just the emotes at the right timings for the music. To capture the positions for the Operatives, I just stood in each one briefly, hit the demorecord and demostop buttons and extracted the POS and PYR from the temp demo.cohdemo (same for the camera position). Also put in the easter egg of Statesy himself having a dance and a clap on the roof of the building.
Credits
Actually used Adobe Premiere itself to create and insert them.
Ghost Falcon!
I just let myself be pushed by someone while I stood at GF, found the moment of contact in the demo file and spliced in the MOV and FX I had captured earlier from punching a (very surprised) Skull in Steel Canyon. I then had the pedestrian do the falling down emote from when you interrupt a bagsnatch and coupled it with a few POS commands that reversed their path (so theyd be really knocked back)
End Titles
Done with Adobe After Effects.
Yii...
A couple of tip addendums:
instead of popping out to windows to rename demo files, make a bind like this:
/bind <key> "beginchat /demorecord "
Then you hit that key, type a quick name like 1, 2, etc. and you don't have to switch out and rename to avoid overwriting.
You could also make it "beginchat /demorecord demo" so that you would always have a prefix of demo on your recordings, or you could hit your key then enter to quickly record to demo.cohdemo.
You could also bind multiple keys to "demorecord demo1", "demorecord demo2" etc.
For playback you could create a file association for .cohdemo in Windows to get it to do the right thing when you double click (or right click and select something).
From an Explorer window select Tools->Folder Options, then select the File Types tab.
Hit the New button, and put in cohdemo as the extension.
With the newly created COHDEMO association selected, hit the Advanced button (this opens the Edit File Type dialog).
In that dialog you can specify a nicer name for the type in that top text box (ie. "CoH Demo File"), you can also specify multiple actions. The first one will be the default action, which is what happens when you double click on the file. You can also change the default after you specify a couple actions. Non-default actions appear at the top of the context menu when you right click on the file.
Checking the "Always show extension" box could be helpful too.
I'd recommend at least two actions, one to play the demo, and one to edit it. If you record demos on Test of features that don't yet exist on live, a third action to play the demo using the test client would be nice. The New button opens a New Action dialog for this.
In that New Action Dialog, the "Action:" text box is for the name of the action and the "Application used..." text box is for the command line to perform it. Here's some sample actions/applications:
Action => Application
Play demo => C:\Program Files\City of Heroes\CityOfHeroes.exe demoplay "%1"
Play demo on test => C:\Program Files\cohtest\CityOfHeroes.exe demoplay "%1"
Edit demo => C:\WINDOWS\NOTEPAD.EXE "%1"
Windows takes the %1 in all those and replaces it with the file name of the file you double clicked or right clicked. The quotation marks are needed just in case of spaces in the path or file name. The paths to the applications will of course need to match what you have on your system. Also, if you have a preferred text editor, substitute the path to that for the notepad above.
Excellent guide, Majik! As another useful command you may want:
floatdmg -- Causes damage and healing numbers or arbitrary messages to briefly float above a character's head. The first argument is the reference of the character to float over. The second is the amount of damage to float: positive numbers float red damage numbers, negative numbers float green healing numbers. If the second argument is zero, the message in the third argument will be floated. Otherwise, the third argument should be the empty string. This is normally used for heal/damage numbers and messages like "Critical!", but it can definitely be used for other messages as well. (See All Star's Go. Hunt. Kill Skuls. The Movie. for examples of how to use this.)
On a side note, if you want to use some automated tools to help you edit demo files, check out this thread where I'm in the process of building a demo editor. It's still not quite feature complete, but it will allow you to do things like cut out the middle of a demo file, time-shift and location-shift actions, automatic PYR command generation (so characters will face forward on custom movement paths or moving cameras will track moving objects), and a few other things, too. To run it, you'll need the Java Runtime Environment v1.5 or higher (available from java.com) and the installer (available here). Check out the thread linked to above if you need more help, and feel free to post there or PM me if you have any problems, suggestions, or other comments.
Very nice, Majik.
One other tip for Section 2. Once you've created a shortcut for the first time (using the official method), you can just drag and drop any demo onto it to play them. No need to re-edit the shortcut to change the demo name or anything. It'll just play what you drop on it.
CoH Codex : Demo Models/FX/MOVs : Demo Info
Arc 111022: "Doctor Geist and the Scientific Method"
Excellent guide, sir - proving most useful!
[ QUOTE ]
A real nice idea is to actually /bind [choose a start key] demorecord demo and /bind [choose a stop key] demostop.
[/ QUOTE ]
This is a good tip; however, I would change one thing. As it is, when you press the key that starts the demorecord, it will overwrite the previous demo.cohdemo file you demorecorded, unless you rename it after each recording.
I actually don't specify the filename completely in my demorecord bind. I have it set up like so:
<font class="small">Code:[/color]<hr /><pre>/bind SHIFT+[ "show chat$$beginchat /demorecord CoH"
/bind SHIFT+] "demostop"</pre><hr />
Or, for a City of Villains character, I use CoV instead of CoH.
That way, you'll get the demorecord command with a prefix to the filename on the chat command line, and you can type something to complete it and make it unique.
For example, sometimes I'll see a cool animation. Yesterday, I saw an NPC rolling a barrel and thought, "Hey, I can use that for something, I'm sure!" I hit shift+[, which brought up demorecord CoV on my chat command line, typed Barrel to finish it and pressed enter, then hit shift+] to stop it. Now I have a file called CoVBarrel.cohdemo that I can munge to get what I want, and I was ready immediately to record another demo file without switching out to Explorer and renaming the old file if I wanted!
We've been saving Paragon City for eight and a half years. It's time to do it one more time.
(If you love this game as much as I do, please read that post.)
[ QUOTE ]
[ QUOTE ]
A real nice idea is to actually /bind [choose a start key] demorecord demo and /bind [choose a stop key] demostop.
[/ QUOTE ]
This is a good tip; however, I would change one thing. As it is, when you press the key that starts the demorecord, it will overwrite the previous demo.cohdemo file you demorecorded, unless you rename it after each recording.
I actually don't specify the filename completely in my demorecord bind. I have it set up like so:
<font class="small">Code:[/color]<hr /><pre>/bind SHIFT+[ "show chat$$beginchat /demorecord CoH"
/bind SHIFT+] "demostop"</pre><hr />
Or, for a City of Villains character, I use CoV instead of CoH.
That way, you'll get the demorecord command with a prefix to the filename on the chat command line, and you can type something to complete it and make it unique.
For example, sometimes I'll see a cool animation. Yesterday, I saw an NPC rolling a barrel and thought, "Hey, I can use that for something, I'm sure!" I hit shift+[, which brought up demorecord CoV on my chat command line, typed Barrel to finish it and pressed enter, then hit shift+] to stop it. Now I have a file called CoVBarrel.cohdemo that I can munge to get what I want, and I was ready immediately to record another demo file without switching out to Explorer and renaming the old file if I wanted!
[/ QUOTE ]
Very cool tip. Thanks.
That's not debt, those are my "fury bonus points"--Stahlkopf
MOST amazing Brute engineer goes to: Ultrawatt. His SS/Fire farm build is SMASH!
Congrats to Black Assassin! Won 100,000,000 INF for building most survivable NRG/NRG Blaster
Thanks for taking the time to write this down.
It will proof very helpful for me in the future
Don't know if this is a bug or what, but I tried to demorecord my Kheld fighting some vahz...and though the demo shows the character normally until it ENTERS Nova form...it then never changes back to humanform. I can see the humanform powers going off, but the character model stays stubbornly in Nova shape. Is this a new bug?
The Optimist says the glass is half full.
The Pessimist says the glass is half empty.
While they argue about it, the Opportunist comes along, drinks what's left, and removes all doubt. - Redwood
Alvays remember, schmot guy...any plan vere you lose you hat...is a BAD PLAN!
So you want to edit City of Heroes demo files?
Great! You can do so much with them. Anything in fact. More specifically, you can do things by editing demo files that would be fiendishly difficult, or even just straight impossible to accomplish in the game such as one-shotting Hamidon, to a single hero letting loose with powers from various ATs, to having a dance with Statesman himself.
The purpose of this document is to give as detailed a description as possible of how to edit demo files with a view to making a video. Several great examples of videos that have been constructed with demo files have already been seen on the boards - you may have seen the Operatives videos for instance and it is my intention in this document to pass on the knowledge and experience I gained when learning about editing demos when I was making the Real World video.
There have already been a couple of excellent guides to both recording/playing demos and also editing the demo files (or even creating the demos from scratch! ouch!), and so I'd like to take the opportunity at the start here to give big props to guys like Zloth and Scuzzbopper, without whom I'd still be scratching my head as to what a PYR command does. Im hoping though that this will be the first 'one-stop-shop' guide to go into the level of explanation needed to work up to creating complex scenes and also with a specific view to making a video end product.
Because this document is aimed at budding filmmakers, Ill be organising it below into appropriate sections so aside from what you would expect in a guide like this (how to record a demo, how to interpret them etc), Ill be specifically including explanations of how to best get specific camera angles or pans and how to quickly set up a scene etc.
Within each section, Ill also be sure to include any little tricks that might help you look out for where it says TIP:
Good luck, and good reading - I look forward to hopefully seeing a lot more funky videos being posted to the boards!
Yii...