Balshor's Demo Wizards


Balshor

 

Posted

I've found Balshor's Demo Editor to be an incredibly useful tool that I think will be even better once I get the hang of the many built-in wizards. The trouble is that I can't determine what some of them are for, and he hasn't completed his Help file. Can anyone help me complete this list? Balshor, are you out there?

Interpolation Wizard - Balshor explained this in his "Jumping on a Truck" post. I guess you enter the character or CAM's starting and ending points, and some other info, and it outputs the necessary string of MOV commands.

Smart Cut Wizard - deletes a desired range of lines without deleting the important ones that shouldn't be touched.

Costume Import/Export Wizard - lets you take a character's appearance and use it to replace that of another character (in the same demo or another). "Costume" in this case includes body type, face, height, etc.

Fix Ghosts Wizard - I don't know what ghosts are, but this fixes them.

Generate PYR from POS -

Generate PYR/POS from formula -

Large File Filter Wizard -

Extract Movement Path -

CAM Movement Wizard - The Wizard converts all CAM PYR commands to standard coordinates and back. You see, the Y in PYR works differently for CAM and for characters. I guess this lets you copy a camera's movements for a character, or vice versa.

Command Stripping Wizard - Removes player names, chat messages, etc. from demo.

POS Analysis Wizard - This shows the maximum and minimum of the XZY coordinates. Either it's the physical limits of the zone, or it shows how far the characters in this demo have strayed from the origin. I don't know which.

Dummy Player Wizard - I suspect this has something to do with me.

Embedded Feedback Wizard - I think this lets a character of your choice recite the timecode of the movie repeatedly. Good for editing.

Vanity Demo Creator - This creates a movie of the character of your choice, standing on Ms.Victory's platform while the camera rotates around it.


 

Posted

Here's a basic rundown of the ones you don't have a description for.

The wizards infrastructure was intended to be an easy way to add new functionality to the program without having to mess around with the UI too much. I originally designed the editor to be easily extensible with wizards with the intention of eventually releasing the API so others could write their own wizards. The functionality is there, but I decided that the amount of work required to document and explain the code sufficiently to the few other people who could and would write wizards would be larger than the amount of work necessary for me to just to write wizards for them.

So, if any of you have requests for new wizards, feel free to make them. Requests will be filled based entirely by my comparison of their feasibility and difficulty with my interest level and free time.

Fix Ghosts Wizard

Occasionally, demos have orphaned lines in them that can cause mobs to hang around after they're supposed to be gone. They're called "ghosts" because this usually happens when the player defeats a mob and it fails to despawn correctly in the demo. This wizard fixes that.

Generate PYR from POS

This wizard can create PYR commands in two different ways.

First, it can point the object in the direction of motion. This is useful if you've generated a movement path and just want the character or camera to point forward. You can also use the offsets to adjust the angle of the object, so you can make the camera (for example) constantly point 45 degrees right of the movement path.

Second, it can point the object at another one. I've found this most useful for aiming the camera at the player, although you can also use it to make characters face one another. The offsets here allow you to always face a point with a certain displacement of the target, so you can (for example) always aim at a place five feet to the west of the target. The most useful offset here is the option to auto-calculate the Z offset from the character's height, which will attempt to aim the camera at the head of a character instead of the feet (where the POS commands reference). Note that this only works for characters
with COSTUME commands. I think the button assumes a height of six feet for NPCs, but it may just do nothing for them.

Generate PYR/POS from formula

Allows you to generate PYR or POS commands via parametric formulas. If you have no idea what that means, stick to the interpolation wizard. If you do know parametric formulas, this should be fairly straightforward to use.

Large File Filter Wizard

Huge demos are kind of awkward to work with in my editor, as it's not terribly efficient with memory and such. (AFAIK, it doesn't leak memory, but it has a few redundant representations of things to make manipulating the demo commands easier.) This wizard basically allows you to define a set of filters, then extracts the corresponding commands from a demo file without loading the whole thing into memory. I use this to do things like pull all the player costumes out of multi-hour-long Hami raid demos.

POS Analysis Wizard

This shows the maximum and minimum of the XZY coordinates of the POS commands in the demo. (Not the zone -- there aren't any physical limits on the zone. There was a thread a while back about some players who, on a whim, flew out a hole in the map and tried to fly to the sun. GMs caught them before they made it.) I use this to get a feel for how large the action is. For example, if I want a camera rotating around a battle, I'll export the relevant commands for the characters in the battle into a new demo, use this to find the min and max of their XZY positions, then create a circle that encompasses all of them.

Dummy Player Wizard

The client only renders things within a certain distance of whatever character is marked with the "Player" command in the demo. This creates an invisible NPC that has the same position of the camera and designates it as the player. This is basically just a hack to simulate making the camera itself the player.


 

Posted

Excellent list. I was playing with the tool and was having some issues working it.

Now all you need to add is a self contained preview loader where you can move objects and characters around in 3d


[IMG]http://i7.photobucket.com/albums/y263/parker_daoc/CoH/layoutcopy.png[/IMG]
[url=http://justicecorps.guildportal.com/Guild.aspx?GuildID=337077&TabID=2821537]Justice Corps[/url] on Virtue Server! ... @Strongwall

 

Posted

[ QUOTE ]
Now all you need to add is a self contained preview loader where you can move objects and characters around in 3d...

[/ QUOTE ]
We got one of those - it's called City of Heroes. It's kinda hacky but it works OK for some stuff.

Those stupid ghosts (I call'm zombies) drove me to enough distraction that I put a way to fix them right in the demo launcher.


 

Posted

[ QUOTE ]
Now all you need to add is a self contained preview loader where you can move objects and characters around in 3d

[/ QUOTE ]

You know, I was actually planning to do something like this before I realized that I don't actually know anything about using 3d computer graphics.

If you have any issues working with the editor, please feel free to PM me.


 

Posted

Thanks for the prompt response! But could you elaborate on the Extract Movement Path Wizard? I"m guessing it lets you copy a character's path through space. Does it let you apply it to another character?

More importantly, does it let you move the path to a new location - for instance, if your character is running on a Skyway highway, can you use this to have him run on a different road on a lower level?


 

Posted

Ahh, sorry...missed that one:

Extract Movement Path

This wizard helps you record movement in-game and easily transfer it to a new demo. It works by using self-tells; you'll need a "start" tell and an "end" tell. Log on to the game, start recording a demo, send yourself the "start" tell, move around, then send yourself the "end" tell. Load the resulting demo in the editor, and this wizard will automatically extract the movement between your "start" and "end" tells.

So, let's say that you want to create a demo of four heroes traveling from point A to point B, and we want them to have slightly different movement paths so it looks like they're moving naturally and not in formation. We'll create a few macros:

/macro 1start "tell $name, EMPW start1"
/macro 1end "tell $name, EMPW end1"
/macro 2start "tell $name, EMPW start2"
/macro 2end "tell $name, EMPW end2"
/macro 3start "tell $name, EMPW start3"
/macro 3end "tell $name, EMPW end3"
/macro 4start "tell $name, EMPW start4"
/macro 4end "tell $name, EMPW end4"

Now, go to point A and start recording a demo. Hit the 1start macro, move to point B, and hit the 1end macro. Move back to point A and repeat for the other 3 pairs of macros. Stop recording and load the demo in the editor. Run the "Extract Movement Path" wizard four times, putting the appropriate start and end tells in each time. Each time you run the wizard, it will extract the appropriate POS and PYR commands, using the "start" and "end" tells to figure out where to start and end and which character is the player.

It's a bit unwieldy, as it really should allow you to use only a single start and end tell to grab all four paths at once, but it was the first wizard I wrote and I hadn't quite thought the whole thing through. If I ever need to mass-extract a lot of movement paths from a demo, I'll probably rewrite it to work a bit easier.


 

Posted

Thanks again. I guess if the four heroes really want take "slightly different paths", then they have to have different Points A and B, right?

Also, if the destination demo is in a different zone that the original demo, must I must use "Translate POS" to position the paths to their new location?


 

Posted

"Translate POS" just adds the offsets to every single visible (ie, ignores lines that are filtered out) POS command. You use it when your movement path isn't correctly positioned in the zone.

For example, let's say that you have a hero running north along the road that's on the west side of City Hall Park in AP. You want to make him run north along the road that's on the east side of City Hall Park in AP. To do this, you want to add some offset to every one of the hero's POS commands. "Translate POS" will do this for you.

If you're moving a list of POS commands from one zone to another, it's highly unlikely that they're exactly where you want them in the new zone. So, you'll need to use "Translate POS" to move them all.



The "Extract Movement Path" wizard just automates the process of using tells to figure out when the motion you care about starts and stops. It's basically just the following procedure:

(1) Filter for chat messages. Record the times. Remove the filters.
(2) Display only the POS and PYR commands between those times.
(3) Extract the visible commands.


 

Posted

[ QUOTE ]
So, if any of you have requests for new wizards, feel free to make them.

[/ QUOTE ]

Okay, how a version of Translate POS that uses an absolute start or ending location rather than an offset? And you could enter either the beginning direction of motion.

To use your example above, take the motion of your character running north on the park road, have him run instead the east-west road, headed west. You'd extract the motion, enter a starting location, and enter some kind of Yaw coordinate that means "westbound", or pick a location somewhere west of him that he will run towards. (whichever is easiest for you to code.)

Also - or instead - what if you could enter a reference instead of a direction, so he runs towards the specified character? If you set the CAM as the reference, the character will run towards the camera. Cool, huh?


 

Posted

[ QUOTE ]
[ QUOTE ]
So, if any of you have requests for new wizards, feel free to make them.

[/ QUOTE ]

Okay, how a version of Translate POS that uses an absolute start or ending location rather than an offset? And you could enter either the beginning direction of motion.

To use your example above, take the motion of your character running north on the park road, have him run instead the east-west road, headed west. You'd extract the motion, enter a starting location, and enter some kind of Yaw coordinate that means "westbound", or pick a location somewhere west of him that he will run towards. (whichever is easiest for you to code.)

Also - or instead - what if you could enter a reference instead of a direction, so he runs towards the specified character? If you set the CAM as the reference, the character will run towards the camera. Cool, huh?

[/ QUOTE ]

Expanding "Translate POS" to "Affine Transformations of POS" (which is basically what you describe) is fairly straightforward. The "Running Towards a Certain Character" should be doable with the right input parameters -- I'd need to think a bit about how exactly to do that.

I'm in the midst of a big project right now, but I'll see if I can fit in some programming time in the next few weeks.


 

Posted

Just don't call it "Affine Transformations". I tutor geometry and even I don't know what that means.

Also, could you give the Embedded Feedback Wizard the ability to track the characters' POS and/or PYR in addition to the timecode?


 

Posted

I'll put it on the list.