Custom Demo Creation Guide
As 1 of the few that has asked of you to provide some of your wisdom. I have only 1 thing to say..........
TY TY TY TY TY TY TY TY TY TY etc etc etc etc........
Now I have a lil more direction. Zloth's info is very informative. Yet you helped put some icing to the cake. Now lets see what I can come up with.........
OK Actors to the set......We start rolling in 5.........Can we get someone from Make-Up over here......
ACTION.
Master, oh Great and wise Master. I can't wait to try out some of this.
Owl of Night
And now the adventures of Slab the First! Watch as he pitch, yaws, and rolls his way around Paragon City! W00t!!
[ QUOTE ]
This is counter-intuitive to what we learned in school, but Cryptic designed it this way for their convenience.
[/ QUOTE ]
I think the same system gets used in-game with the /loc command. Chances are good that Lord Recluse corrupted the coordinate system in order to confuse heroes trying to use this command. He's quite the naughty spider person.
So that's the secret of Yaw! Gotta go put that in my FAQ now.
Neat idea for the sounds, too! You might make the player you use super small just to keep it out of the way.
Incidently, Zloth and Marbles, I PMed you both about hosting your materials and utilities at coh.warcry. Though since I have you both here, if you are interested in that drop us a line at cohcmt@warcry.com
-Sagittary, lead community manager (coh.warcry.com)
Woohoo. Great guide Mister Marbles.
Best ever. I mean it.
OMG. Really freaking good. Yes.
There you happy now?
Experiment No18.
"demodata.txt", the file with all the NPC models, Effects, and Animations, has been updated.
VIRTUE
Mister Marbles - Ice/Rad Controller
Glass Titan - Elec/En Blapper
Miss Marbles - Inv/Fire Tanker
Chef Jinglemerry - Spines/DA Scrapper
Blood Envy - WP/DB Tanker
Velvette - WS
My Custom Demos
I also maintain a short demo model name list just for the major NPCs, monsters, and AVs I've been able to gather: here
CoH Codex : Demo Models/FX/MOVs : Demo Info
Arc 111022: "Doctor Geist and the Scientific Method"
I would like to add, that NPCs can also be designated as the PLAYER. One especially useful NPC is NPC Puddle, which is basically a NPC that has no form and casts no shadow. This null character can be used for many useful things, like a target for powers, a camera man, or as stand-in to tweak the alignment of bubble text (just make it talk instead of the actual character and position him around the same position after tweaking of course).
I don't seem to have a demos folder and what format do I save it as?
Hi Spirit_Beast.
To create the folder, go into the place where you installed the City of Heroes game. Usually, this is...
My Computer -> C: -> Program Files -> City of Heroes
Modify that sequence depending on where you installed your game.
Once inside, click: File -> New -> Folder
A new folder will appear, and you can type in the name for it. Type in the following exactly:
client_demos
Then hit [ENTER]. That's it. You should have just created a new folder named "client_demos". Your in-game recorded demos will be stored in here, and you should put all the demos that you download, into this folder, as well.
VIRTUE
Mister Marbles - Ice/Rad Controller
Glass Titan - Elec/En Blapper
Miss Marbles - Inv/Fire Tanker
Chef Jinglemerry - Spines/DA Scrapper
Blood Envy - WP/DB Tanker
Velvette - WS
My Custom Demos
Hey all.
Please be ware that in Issue 3, recorded demo files aren't recording characters correctly. Zloth has written up the technical details about it, and I feel that it is appropriate to point you in that direction because he was the author of the guide to the demo file's format, while I authored the guide to create your own custom demos.
Zloth's update is here.
In any event, should you decide to record your own custom demo, just make sure you include your character's "size".
Please feel free to post any questions or concerns you might have, right here or as a private message to me.
VIRTUE
Mister Marbles - Ice/Rad Controller
Glass Titan - Elec/En Blapper
Miss Marbles - Inv/Fire Tanker
Chef Jinglemerry - Spines/DA Scrapper
Blood Envy - WP/DB Tanker
Velvette - WS
My Custom Demos
As I replied to Zloth's post, I'm sure those extra lines are place holders for the new size sliders to be released with issue #4. It is unlikely it will be changed back, though further changes may yet be forthcomming.
I'm thinking the demo output routine is trying to spit out the slider values and they just aren't there. If that's true, we are looking at six more sliders. (Or maybe replacing the athletic/muscular slider with seven sliders?)
what are the commands for using powers?
[ QUOTE ]
what are the commands for using powers?
[/ QUOTE ]
That is a very large subject to deal with. It covers a wide variety of combinations which all have to be covered to make it look good.
Are you asking about powers which only affect the user? Are instant? Are persistent? Powers which affect a single target or multiple targets? With or without special effects? With reactionary animations?
As you can see from that very short series of questions there are a lot of possibilities which can be covered with such a seemingly simple question.
For example, for a simple Martial Arts Crane Kick to hit its target and send it flying takes a multitude of commands and variables. To begin with, our player model (#2) needs to make the animation for the Crane Kick:
0 2 MOV MA_IRONKICK
435 milliseconds later (at least in the combat demo I am using as a reference; there are additional events which happen before this which total up to a time of 435 milliseconds) the damage can be shown to float over the target model:
106 2 floatdmg 77 157 ""
0 2 floatdmg 77 157 ""
0 2 floatdmg 77 0 CRITICAL
65 milliseconds later the special effect of the hit takes place:
7 77 FX OneShot 234 POWERS/MARTIALARTS/MACRANEKICKHITS.FX 0
0 77 FXSCALE 10.000000 10
0 77 ORIGIN ENT 0 0
0 77 TARGET ENT 2 0
There is a lot of data involved with just this one effect. In the first line after the time delay and the model ID number the command that a special effect is taking place is given with FX. The type of special effect is then listed. In this case, the special effect of the Crane Kick only takes place once. The special effect is then given an individual ID number which only relates to special effects. The location of the special effect to use is then referenced. I am currently unsure of the relevance of the trailing operand at the end of the command line. (0 in the above case.)
The special effect is then scaled to the model with the second line.
The third line makes a reference to the origin of the special effect. Normally this is the model that will be having the special effect placed on it.
The final line indicates which model ID number placed the special effect on the target model.
With that all in place the model has to react to the hit. To begin with, it starts moving 51 milliseconds later:
51 77 POS -1326.809326 7.49375 92.121872
This location is away from the model that performed the Crane Kick and up from the "floor" of the map.
17 milliseconds after the movement, the model reacts to getting hit:
17 77 MOV KHF
The exact intention of the KHF move is a mystery. I prefer to think it stands for KnockbackHitFly since it fits both the move name and the body positioning of the animation. It is also handy for any animation where the model has to go flying backwards from Knockback of other types.
The victim of the kick continues to fly through the air:
42 77 POS -1325.771851 7.83125 90.771873
52 77 POS -1324.734375 7.96875 89.421875
70 77 POS -1323.521851 7.98125 87.896873
The model in this example has reached the top of the arc from flying backwards and has to react accordingly and start falling downwards while flying backwards out of control:
63 77 MOV KHF_APEX
0 77 POS -1322.309326 7.59375 86.371872
70 77 POS -1321.146851 6.60625 84.896873
71 77 POS -1319.984375 5.21875 83.421875
58 77 POS -1319.134399 3.50625 82.290627
51 77 POS -1318.484375 2.59375 81.359375
58 77 POS -1318.034424 2.43125 80.878128
59 77 POS -1317.984375 2.46875 80.796875
And finally impact with the ground:
64 77 MOV KHF_IMPACT
51 77 POS -1317.895264 2.484375 80.773438
59 77 POS -1317.90625 2.5 80.75
And all of that is just from one hit on one Target that doesn't last, doesn't have to stop affecting the Target, and has no special effects showing from the Origin!! All in the space of less than a second and a half!!
Using powers in your demos is a very detailed and lengthy process. In most cases it is best to get a demo in game of the actual powers being used. You can then look at the demo to determine the effects they cause, when they start, when they stop, movement/rotation involved, and reaction times.
I finally got my board account to work.
Anyways, very very nice thread here ! You seem to have covered the majority, well at least everything you need to know about making and editing demos. I especially like the big text file of effects and models, but I really (really) like how animations are included as well ! (I find it more difficult (especially as a blaster) to spend time finding a certain enemy, wait for him to do his attack, survive, and then dig through the demofile to find it)
I have one tip that I found very helpful when I try to make dynamic movies, but it's fairly simple and saves a lot of time.
This will work if you have good friends in-game, especially if you're lucky enough to have one that you can communicate with via phone.
Basically you get you and your friend's character to act out a scene then you can replace your models with other characters such as NPCs. An example where this saves time is if your friend has fly or superjump, simply position the two of you close together, start recording, and have him fly/jump back. In a few moments you can add animations, FX and you can make it look like Requiem just knocked you precisely down 2 flights of stairs, and you can land exactly where you want -- no having to hassle with coordinates or deal with enemies running around as poor actors.
Knowing how to create powers from scratch is a very good idea. In fact, once I get back into demomaking all it will be is my friend and I jumping around Willams Square; attacks, poses and everything else will be added in afterwards. Sure, people will look at us funny, but they will be spliced out.
Another thing I love to do is mix and match animations and effects. If done improperly it might look cheesy sometimes.. but I mean come on.. what's this 'Tremor' stuff!? More like Whirling Mallet!
Criticals! Dang it, I forgot about those so my demo edit program is ignoring them. Thanks for the reminder, All_Star!
[ QUOTE ]
Criticals! Dang it, I forgot about those so my demo edit program is ignoring them. Thanks for the reminder, All_Star!
[/ QUOTE ]
I didn't want to clutter up the (ahem) simple anwser to the powers question with some additional information so I did not post the following from my own notes (added onto from Cumulo's, Zloth's and Marble's notes) and experimentation...
CHANGE!! (2005-02-15)
16 2 floatdmg 88 179 ""
0 2 floatdmg 88 179 ""
0 2 floatdmg 88 0 CRITICAL
0 2 floatdmg 88 0 KA-POW!!
Part one is the millsecond delay
Part two is the ID number of Origin of the damage. Model #2 in this example.
Part three is the command to float text over the target's head.
Part four is the model ID number of the Target that will have text floating over it's head. Model #88 in this example.
Part five is the numeric value to generate a character string in RED or in GREEN. Red text is generated by using positive values. Green text is generated by using negative values. (-1 or below) Using a zero will generate no number and is best used in combination with the sixth operand.
Part six is the character string to be generated over a model's head. If Part five has a non-zero value, no text will be generated; the number will be displayed instead. For numeric values to be displayed the sixth operand should be a null string (or ). For text to be displayed the string to be displayed is entered without quotes. In the above example the word CRITICAL will be displayed.
In the above example the following will be generated over the Target's head:
179
179
CRITICAL
KA-POW!!
It is about as close as you can get to the campy Batman TV Show-like FX of BIFF!! BASH!! and BOFF!!
Although, it is also handy for a BAMF! when used with AE Darkness powers and a 333 Model_ID# POS X Z Y combination to emulate a certian teleporting character who shall remain nameless for legal reasons.
The 1/3 of a second delay is usually long enough for the human eye to register that something happened and let the mind fill in the blanks before moving the Model. Alternately, a NPC_PuddleNoCollision model could be used at the Model's location with the Darkness FX and floatdmg taking place on it before destruction. (Hit one of the Model Lists to get actual Model Name.)
Like coding, modeling, and animation, there are many roads to Rome. How you get there is your choice.
Take out floatdmg from my demos?
NEVER!!
Edit: Not in my notes since I know it off the top of my head but others may want to know beforehand...
Text strings used as the sixth operand will always appear over the target's head in RED. Even a -0 as the fifth variable will not make the outputted text string found in the sixth variable green.
[ QUOTE ]
Total awesomeness that I love you for.
[/ QUOTE ]
Whoa! Totally awesome! I love you!
Random scribbles from latest experimentation in no particular order: <ul type="square">[*]The space character is the string delimiter. Variable 6 cannot have a space as part of the character string.
KA-POW != KA POW[*]TODO: Test Underline character for use in Variable 6 and visual FX in display mode.[*]TODO: Test zero character as 5th variable and use numerical value as 6th variable[*]floatdmg is billboarded at a fixed distance z-depth from CAM location. Modifying CAM location or FX origin point does not effect display size of floatdmg.[/list]
What if someone whacked up a little beauty of a 'scripter' so that the bulk of the minutae is done in chunks? Sorta like object-oriented code, if you will. You save a 'draft' to work from, and a 'finished' to run. (It might help to also be able to 'drop' actors/effects into the scripter using a loaded library. Especially for custom models.)
Just a little idea.
You can have spaces in strings if you put quotes around it. So
NEW All Star
would not work, you would have to use
NEW "All Star"
If you put quotes around something that doesn't need it, no harm is done other than making the demo slightly larger. (Haven't confirmed this in awhile, though.)
[ QUOTE ]
You can have spaces in strings if you put quotes around it...
[/ QUOTE ]
It has been a while since I did a command line parser. Forgot about the usual rule of swapping the delimiter to the next quote character encountered to specify a character string assignment.
Have to mod my notes then, but the final product will be something to the effect of:
Part six is the character string to be generated over a model's head. If Part five has a non-zero value, no text will be generated; the number will be displayed instead. For numeric values to be displayed the sixth operand should be a null string (or ). For text to be displayed the string to be displayed is entered without quotes if a single word; enclosed with quote characters if spaces are to be part of the character string (ie., "TWO WORDS"). In the above example the word CRITICAL will be displayed.
Has been tested...
4 3152 floatdmg 3201 -0 "BANG BANG"
... results in ...
BANG BANG
Thanks for catching my oversight, Zloth.
[ QUOTE ]
What if someone whacked up a little beauty of a 'scripter' so that the bulk of the minutae is done in chunks? Sorta like object-oriented code, if you will. You save a 'draft' to work from, and a 'finished' to run. (It might help to also be able to 'drop' actors/effects into the scripter using a loaded library. Especially for custom models.)
[/ QUOTE ]
Love the idea, but I am sooo not writing the code for it.
Debug? Sure.
But between demo editing, html for my SG pages, Real Life, and a certian addictive online game, by the time I got anything done we'd be at Issue 53!
The database work for the builder would be a huge undertaking. Once you start throwing powers and special FX into the mix, the timing can really go out of whack.
I have noticed that the demo files deal with each model/FX in sequence which makes life a little easier to design a singly linked list to deal with the expansion and shrinkage of the object list on the fly and just going through it head to tail updating as needed. Tagging non-One Shot FX for notification of when to end them would be a slight problem if the demo being made was allowed to be hand edited since the timing could be offset by anything a person added in with a non-standard timestamp. I'm not dealing with it.
Hiya.
I've been asked by a few people to write a guide on editing/creating a custom demo, so here it is. Most of the things I do, I discovered how by playing around with recorded demos by myself, and then applying Zloth's Demo File Format FAQ for technicalities (more on this later). Also, this is the first guide I have ever written. If you encounter any unclarities or outright incorrectness, please either private-message me or respond in here. At the same time, I welcome any questions or queries you might have.
Without further ado, let's begin!
THE BASIC STUFF
Before we even take a look at what demos are, we need to know where City of Heroes puts them! Remember those months ago when you installed the game? Did you put it inside your C drive, in the "Program Files" folder? If that is the case, then your demo directory should be:
c:\program files\city of heroes\client_demos
Note the '_' character between the words "client" and "demos" -- that is necessarily exactly the way it should be, due to how Cryptic Studios made the game. (If you're savvy enough to install the game elsewhere, you would be able to make modifications as necessary.) This is really important, because if you can't find where city of Heroes goes looking for these demos, there's no way you would be able to playback recorded/created demos.
Now. The first thing you need to know about City of Heroes' recorded demos is that they're nothing but text! In jargon, we call this "script". You can very intuitively liken this to a movie script, which lists when which actor should say what, where s/he should stand, how to enter/leave, and so on.
CoH demos are, in fact, very similar, which makes it easy to edit once you understand how the whole thing works. The demo script provides the instructions, the timing, and which characters are present. This set of instructions is then looked at by the City of Heros game itself, which provides us with the characters, props, settings, costumes, and what have you, and acts them out according to your script.
With me so far? Good.
A SIMPLE DEMO
In my personal experience, I've found that the best way to learn to do something is to actually do it. So let us continue by getting our hands dirty and actually create something. Yes, you! Even you can do it! And I'll show you exactly how to create your very own simple custom demo, from scratch.
The demo we're about to create will have three actors in it. The three are: my main character Mister Marbles, Ms. Liberty, and a Vahzilok Abomination called Slab the First. They will be placed at the foot of the Atlas statue, and would be dancing to my boombox.
1) Get your pen and paper!
Click on Start, choose Run, and type in "notepad" without the quotes. Click Ok. A blank notepad window should appear. You now have a blank demo script on your computer screen. I find Notepad to be the simplest way to edit demos. You can use any other text editor that you choose.
2) When and where would you like to set your demo?
Type (or just copy-paste) these lines into the top of your new script:
1 0 Version 2
0 0 Map maps/City_Zones/City_01_01/City_01_01.txt
0 0 Time 9
Script Analysis:
The first line should never be changed. If you alter it, it'd be safe to assume that your demo won't work as intended, if at all.
The second line tells City of Heroes to load that particular zone. In this case, it's Atlas Park.
The third line tells City of Heroes to begin your demo at 9 hours past midnight, or 9 am.
3) Where do you want to put the camera?
Add these two lines into your script:
0 CAM POS 97 33 -290
0 CAM PYR 0.2 0 0
Script Analysis:
Hmm... "CAM"... that looks like it might be "camera", doesn't it? Well, it is! The first line positions the CAM, and the second line orients it so that it points in the right direction.
4) Who are the actors?
Our first actor is "Mister Marbles", who is also my main hero. Add the following lines to your new script:
0 1 NEW "Mister Marbles"
0 1 PLAYER
0 1 COSTUME 4 000000 -33 1
0 1 PARTSNAME Baggy Cargo_01 None 1f0b00 ffffff
0 1 PARTSNAME Armored Armor_Medieval_01 None 1f0b00 ffffff
0 1 PARTSNAME Standard skin_glowing_eyes_01a skin_glowing_eyes_01b ffffff ffffff
0 1 PARTSNAME Smooth Tech_Banded_01 None 1f0b00 ffffff
0 1 PARTSNAME Pants_Baggy Pants Shoe_color 1f0b00 ffffff
0 1 PARTSNAME Tech_05 tech_02a tech_02b 1f0b00 ffffff
0 1 PARTSNAME Hood_01 Hood None 1f0b00 ffffff
0 1 PARTSNAME None None None 1f0b00 ffffff
0 1 PARTSNAME None None None 1f0b00 ffffff
0 1 PARTSNAME Armored base M 1f0b00 ffffff
0 1 PARTSNAME Smooth spiked_01a spiked_01b 1f0b00 ffffff
0 1 PARTSNAME None None None 1f0b00 ffffff
0 1 PARTSNAME None None None 1f0b00 ffffff
0 1 PARTSNAME Mask_01 Reaver None 1f0b00 ffffff
0 1 PARTSNAME None None None 1f0b00 ffffff
0 1 PARTSNAME None None None 1f0b00 ffffff
0 1 PARTSNAME None None None 1f0b00 ffffff
0 1 PARTSNAME None None None 1f0b00 ffffff
0 1 PARTSNAME None None None 1f0b00 ffffff
0 1 POS 97 27.5 -300
0 1 PYR 0 0 0
0 1 MOV PLACEBOOMBOX
Script Analysis:
Up to now, we've seen one or two numbers at the start of every line. What they mean is very simple. The first number is timing. This tells the instruction to be followed at a certain amount of time after the previous one. The time is in milliseconds. Putting in a '0' will cause the instruction to be followed at the same time as the previous one.
The second number is the object/character/NPC/whatever's ID. Just like many of us have a social security number, this ID number identifies the object. We see that "Mister Marbles" has the ID number of '1'. The camera's ID is always just 'CAM'.
The second line, "0 1 PLAYER", tells City of Heroes that Mister Marbles is the main playing character in the demo. Usually when you record demos, the player is your own character that you were playing at the time you recorded the demo.
After that, we tell Mister Marbles what to wear.
The final three lines for Mister Marbles position him ('POS'), orients him ('PYR'), and tells him to make a move ('MOV'); which, in this case, is to show off his boombox!
The next actor in our script is Ms. Liberty. Add these lines into the script:
0 2 NEW "Ms. Liberty"
0 2 NPC Model_MsLiberty
0 2 POS 94 27.5 -300
0 2 PYR 0 0 0
0 2 MOV D_BLOCK
Script Analysis:
The first line creates the actor Ms. Liberty. We've assigned the ID number of '2' to her. The decision can be arbitrary, as long as it's a whole number, i.e. no decimals.
The second line... whoa, wait a second, aren't we supposed to tell Ms. Liberty what to wear, here? Like we did above with Mister Marbles? Unfortunately, no, we can not (un)dress Ms. Liberty however much we would like to. NPC models were created by Cryptic Studios, and can not be altered.
The last three lines, again, positions and orients Ms. Liberty, and tells her to act out a movement. In this case, we are telling her to dance with her arms up, waving her fists as if cheering.
Our final actor is Slab the First, the Abomination. Add these lines to your script:
0 3 NEW "Abomination"
0 3 NPC Slab_01
0 3 POS 100 27.5 -300
0 3 PYR 0 0 0
0 3 MOV D_MONKEY
Script Analysis:
Slab the First (see where his name comes from, now? -- second line!) has the object ID of '3'. We position him, tell him to face whichever way, and make him dance the monkey!!
5) What actions follow?
Since we're not trying to be too fancy and just want to get a feel for creating your own custom demo, we'll end the demo here. Add the following final line into your demo:
10000 1 MOV READY
Script Analysis:
Remember that the first number is for timing, in milliseconds? This line executes 10 seconds (or 10,000 milliseconds) after the previous one, which was us telling Slab the First to dance the monkey.
In this line we're telling Mister Marbles (ID number '1') to act out the move ('MOV') called "READY". This is nothing but your character standing straight.
The reason for this line is to just make the demo last longer. We could've done without this line, but you wouldn't be able to really see any actions, since everything executes at the same time (timing values are all '0')!
Unless you're making a very simple demo (like this one), this section isn't usually this short. It can be megabytes (and bigger) in length, with many movements, effects, object creation and destruction, and any number of other things.
6) Save your demo!
Click File, choose Save, and save it inside your City of Heroes -> client_demos folder! Save the file as "dancing_trio.cohdemo", without the quotes. Make sure you do not save it as a text (.txt) file!
7) Let's watch your demo!
Depending on where you installed your City of Heroes game (we've discussed this earlier), to playback your demo, click Start, choose Run, and type in:
"c:\program files\city of heroes\cityofheroes" -demoplay dancing_trio
Do not leave out the quotes!
A DEEPER LOOK...
Wow, that was pretty cool, wasn't it? Now that you understand the structure of demo files a little better, go ahead and take a look at Zloth's Demo File Format FAQ for the commands that can be used in the game, how to use them, and what they mean. It is a really well-written guide and I couldn't have put it better than he did.
You actually now possess all the tools and basic skills you need to create your very own customized City of Heroes demo! Here are some slightly more advanced notes to help you further.
Position, Orientation, and the Coordinate System
In CoH, positioning is done by a three-dimensional coordinate system. However, contrary to high school/college algebra, the system is not (x,y,z) but (x,z,y)! Keep that in mind when you create your demos and try to position your actors/props.
Going North in CoH decreases your y-coordinate, and going East decreases your x-coordinate. This is counter-intuitive to what we learned in school, but Cryptic designed it this way for their convenience.
To orient the character or camera, use the PYR command. PYR stands for Pitch, Yaw, and Roll.
Pitch - points your nose down if you give it a positive value.
Yaw - points your or actor left or right.
Roll - tilts, so you can look at things sideways if you wish.
The angles for PYR are represented in radians. In a full circle, there are 2*pi radians. For ACTORS, the Yaw value for North is pi (or 3.14), and South is 0. Facing South, if an ACTOR turns toward East towards North, the Yaw value goes from 0 to -pi. If the ACTOR faces South and turns towards West towards North, the Yaw value goes from 0 to pi. For the mathematically disinclined, this means that pi and -pi in radians are the same -- 180-degree angle.
For CAMERAS, however, the story is a bit different. For cameras, the Yaw for North is 0, South is pi (or -pi), East is pi/2, and West is -pi/2. Pitch and Roll are the same for cameras as for actors.
Using a Cameraman
As you create demos, you might notice that sounds are a bit strange. If your main hero is an actor standing far away from the camera, you might hear sounds that you shouldn't be here, given the position of the camera. This is where the cameraman comes in handy.
This is done simply by creating a character who is the main PLAYER, and position him at the same x- and y-coordinates as the camera, but about 5 ft above the camera in the z-coordinate. This makes the cameraman invisible, and the demo would play all the sounds that would logically be "heard" at the camera's location.
Additional Models, Movements, and Effects
I'm maintaining a list of all discovered NPC models, movements, and effects in the game. The list can be found here. The list is constantly being updated, and can be quite large. You can help contribute to the list by sending me your recorded (unaltered) demos! Just private message me.
Miscellaneous
<ul type="square">[*]Demos can be any length, from really short (like the one we created), to several megabytes (and beyond) in length.[*]In every demo, recorded or custom-made, the first three script commands must be present, namely: the version, the map, and the time of day.[*]Objects (NPCs, props, players) do not have to be created in any order. They can be created and destroyed as you wish.[*]For lengthy character movement across terrain, like running or jumping/falling, you might want to either record it in the game first, or generate it somehow. I use MATLAB, because I'm most familiar with it.[/list]
THAT'S IT!
For convenience, a copy of the demo we created can be found here. This is how the demo should look like.
Also, feel free to check out the custom demos I've created:<ul type="square">[*]First Annual Rock-Paper-Scissors Tournament![*]Rough Party[/list]I also highly recommend Zloth's demo launcher. His demo editing tool is really good for removing a bunch of one type of lines from your demo, or deleting an entire object, or some such repetitive task.<ul type="square">[*]Zloth's Demo Launcher[*]Zloth's Demo Editor[/list]Happy demo creating! Hope you found this guide useful! Please feel free to post your questions, concerns, feedback, and/or corrections here, or PM me with them!
VIRTUE
Mister Marbles - Ice/Rad Controller
Glass Titan - Elec/En Blapper
Miss Marbles - Inv/Fire Tanker
Chef Jinglemerry - Spines/DA Scrapper
Blood Envy - WP/DB Tanker
Velvette - WS
My Custom Demos