MetaHarper Show Tools – Creating Accurate Animation / Choreography Timelines

TABLE OF CONTENTS

  1. Overview
    1. How does MST Choreography Work?
    2. Major Features
    3. Vocabulary / Terms
  2. Example Event Timeline with Simple Chat Messages
    1. Structure of a Timeline
    2. Timeline Steps
    3. Running the Timeline with Simple Chat Messages
  3. Example Event Timeline with Avatar Animations
    1. What You Need for Animations in your Timeline
    2. Defining MST Movers to use with Animations
    3. Loading animations
    4. Avatars on MST Movers
    5. Running the Timeline with Animations
    6. Precaching
  4. Example Event Timeline with Scripted Cameras
    1. What you Need for Cameras in your Timeline
    2. Timeline Steps
    3. Running the Timeline with Scripted Cameras
    4. Returning Camera Control at the End
  5. Example Event Timeline with Rezzing tricks
    1. Preparation for MST Rezzing
    2. Timeline Steps with Rezzing/Derezzing
    3. Running the Timeline with Rezzing Tricks
  6. How to Stop and Reset Timelines
    1. How to Stop a Timeline in Progress
    2. How to Reset MST Mover positions from the Eventlist
    3. How to Clear Camera Control from the Eventlist
    4. How to Stop a Timeline and Derez Props Quickly
  7. Tips for Good Timeline Performance
    1. Avoid too many simultaneous commands, especially chat commands
    2. Remove documentation commands
  8. Advanced Timelines – Offset Time
    1. What is Offset Time
    2. When is Offset Time Useful
    3. How to Convert  Absolute Time to and from Offset Time
  9. Advanced Timelines – Event Groups
    1. Why Groups are Useful
    2. How to run Groups Independently
  10. Advanced Timelines- How to Debug Timeline Commands.
    1. Check Messages
    2. Enable Debug Mode
  11. Advanced Timelines – Play Timeline Immediately on Stagerez.
  12. Advanced Animations – Animation Overlays
  13. Additonal Eventlist Commands
    1. Curtain Control
    2. Triggering one Timeline from Another Timeline
    3. Sending Link Messages
    4. Listing Event Groups
    5. Outfit Change Commands
    6. Show Active Animation Permissions
    7. Load Another Eventlist Notecard

1. Overview

1.a  How does MST Choreography Work?

The MST Performance Engine can perform choreography in SL and compatible regions.  It can trigger particular avatar animations, avatar and object movement, scripted camera effects, rezzing and derezzing objects, curtains, animation caching, and anything that can be one via an in-region chat command.

Each of the above types of events can be triggered in a particular order and at a very precise moment in time, as defined in the MST Performance Engine’s “~EVENTLIST” notecard.

The MST Performance Engine supports running an entire show, as well as running individual pieces of a show on-demand.

1.b  Major Features

A brief list of features include:

  • Timing of events are highly accurate and will not slip with sim lag or sim time dilation.
  • Can manage very long performances with hundreds of commands
  • Animation control for large numbers of avatars
  • Manages both MST mover group as well as animation and event groups.
  • All timelines may be stopped and started via chat commands, making them easy to integrate into other HUDs and tools.
  • You can whitelist your friends to allow them to play or stop different event sequences, including using them for rehearsals.
  • Events can run even with the owner is offline.
  • Timing can be written as both an absolute chronology (seconds since the start), or as relative to the last action. (seconds since the last step)
  • You can define movement groups and event groups from a single location.
  • Combines movement, animation, chat, and other controls in a unified, single timeline.

1.c  Vocabulary / Terms

MST Choreography is configured by editing the “~EVENTLIST” notecard in the MST Performance Engine.

Inside this notecard, a series of steps that happen in a certain defined times is called the timeline.

Timeline steps can be organized into groups within the ~EVENTLIST notecard. These groups can then be run either independently of each other, or simultaneously. A group of steps that can be run independently is called an event group.

Click the below image to see these where these elements are in the ~EVENTLIST notecard.

eventlist_elements


2.  Example Event Timeline with Simple Chat Messages

2.a  Structure of a Timeline

Your first timeline will trigger simple nearby chat messages spaced a few seconds apart. To start, open up the ~EVENTLIST notecard in your MST Performance Egnine and paste following lines the end:

@group dancers1
dancers1=
0|SAY:0:Event Group dancers1 is starting up! This is an example of a 10-second long timeline with timed (or choreographed) chat messages
5|SAY:0:Dancers1 says Hello! It's been 5 seconds since we started the Event Group dancer1 timeline
10.5|SHOUT:0:Dancers1 has been running for 10.5 seconds. Please wait 5 more seconds before it completes...
15.5|SAY:0:Dancers1 is now finished, this is the last command in the Dancers1 event group

There are three important elements in the above timeline. The first is the “group definition” which names a particular event group. There always must be at least one line like this. The group definition line here is “@group dancers1” and it tells MST that you will be using an event group called “dancers1”.  You can name your group anything, but it should a single word with no spaces, commas, “:” or “|” characters.

The second important element is the “start of an event group timeline”. This is the second line, the one which says “dancers1=” . This line should only contain the name of a event group you have previously defined, followed by “=”, and nothing else. This line signifies that all lines after it will be commands to execute when that event group is run.

The last, and longest section, is the “event group timeline steps”. These are all the lines that start with numbers, directly after the start of the event group timeline above. In our example, these are lines 3-6 that start with 0,3,5,and 10 respectively.

2.b  Timeline Steps

Timeline steps have a very specific format. First they start with a number, which represents that number of seconds to wait before this line should run. A “0” means “run this line immediately as soon as the event group starts.”. Next, there is  “|” character, and lastly there is a capitalized COMMAND. In our example the commands are SAY and SHOUT, which correspond to either speaking or shouting in nearby chat. Depending on the command, more text may be needed on each line. The SAY and SHOUT commands, for example, require you to specify the channel number (0 is the visible, public nearby chat channel), and the text to speak.

2.c  Running the Timeline with Simple Chat Messages

You’re now ready to test your first simple event group. Save the ~EVENTLIST notecard, wait until you see the message in localchat: “Adding timeline for group dancers1”. Then, click the MST Performance Engine, and choose “play show”.

Alternatively, you can use the chat command “/8 playshow” if you are in chat distance.

This command tells the MST Performance Engine to start playing all event groups. You should see the following lines appear in your nearby chat:

[11:33:45] MetaHarper Show Tools 5.3.8 (basic): Event Group dancers1 is starting up! This is an example of a 15.5-second long timeline with timed (or choreographed) chat messages
[11:33:50] MetaHarper Show Tools 5.3.8 (basic): Dancers1 says Hello! It’s been 5 seconds since we started the Event Group dancer1 timeline
[11:33:55] MetaHarper Show Tools 5.3.8 (basic) shouts: Dancers1 has been running for 10.5 seconds. Please wait 5 more seconds before it completes…
[11:34:00] MetaHarper Show Tools 5.3.8 (basic): Dancers1 is now finished, this is the last command in the Dancers1 event group

I’ve included timestamps in the above chat messages so you can verify the timing matches the times specified in the ~EVENTLIST notecard timeline steps.


3. Example Event Timeline with Avatar Animations

In the previous section we showed how to use the MST Performance Engine to run a timeline with chat commands. While this is useful for showing the general concepts, most people will want to use the MST Performance Engine to run a timeline with avatar animations, not just chat. Running avatar animations requires a little more setup. This section will show you what you need to get started and offer you an example.

3.a What You Need

To use avatar animations with the MST Performance Engine, your MST Performance Engine should be configured to use a nearby MST centerpoint, and all avatars to be animated must be sitting on an MST Mover. At a later point it will be possible to manage animations for avatars that don’t sit on an MST mover, but this i s not yet possible today. Before you start, rez one MST mover for each avatar you wish to choreograph animations with the performance engine. Rename each mover to something unqiue, and make sure that the hovertext on each mover shows the correct unique name. If it doesn’t, pick it up and rez it again, or reset its scripts.

You must also copy all animations you use into the MST Performance Engine’s Inventory ahead of time.

In this example we assume that you are using an MST mover you have named “leadDancer” and an animations named “opening_pose”, “ballet1”, “ballet2”, and “closing_bow”. You should change these to the name of your own MST mover and your own animations.

To start, open up the ~EVENTLIST notecard in your MST Performance Engine and paste following lines at the end:

@group dancers1|leadDancer
dancers1=
0|SAY:0:Event Group dancers1 is starting up! This is an example of a 35-second long timeline with choreographed animations.
0.2|SAY:0:You should be sitting on an MST mover.
5|SAY:0:Now you're running the starting animation
5|ANIM:opening_pose
10|SAY:0:Now you're running the 2nd animation
10|ANIM:ballet1
20|SAY:0:Now you're running the 3rd animation
20|ANIM:ballet2
30|SAY:0:Now you're running the last animation
30|ANIM:closing_bow
35|SAY:0:Finished
35|CLEARANIM

The above timeline should look a little familiar compared to the earlier chat example. You can see the event group definition line, the event group start, and the command steps. There are some new animation-specific twists that will be described below. For now, customize the example above to use your own animation names, the name of a mover you have rezzed out, and then save the ~EVENTLIST notecard.

TIP #1:  A lot of people ask how do know how long various animations and dancers take, in seconds. There is no consistent way to find out. You can hope that the author of the animation included this information in the name or the description field of the animation. You can also check the animation timing database here: http://sldancequeens.blogspot.com/p/blog-page_28.html . If all else fails, you can click your animations, click “play” and time how long it takes to do a complete loop with a stopwatch

TIP #2: You might ask if you are supposed to type each animation line by hand into this timeline when composing your own choreography. The answer is that you can but there are more natural, faster ways. See the documentation section on the MST Designer HUD for a more visual, intuitive way to create an animation sequence that will then print out a timeline sequence for you for copy-pasting.

3.b Defining MST Movers to use with Animations

When using the MST Performance Engine to animate avatars, you MUST include the names of all MST movers that run those animations in the group definition line. For the example above, you’ll see the group definition line says “@group dancers1|leadDancer”  After the name of the group there is a “|” character, and then the name of the MST mover that will be used to run animations. If more than one MST mover should run the animations in this group, then separate them with spaces such as “@group dancers1|firstDancer,secondDancer”.

Note: If you have specified an animation group in your MST mover’s “~MOVELIST” notecard, you should make sure it is the same as the name used in your group definition line, ie “dancers1” in the example above.

3.c Loading animations

Any animations you use with the “ANIM” command must be copied into the inventory of the MST Performance Engine. If you don’t do this, you’ll get an error when you run the timeline.

Make sure you copy all animations used in your example animation timeline above into the MST Performance Engine now.

3.d Avatars on MST Movers

Before you run an event group with animations, the MST Movers mentioned in the group definition line (“leadDancer” in the example above) should have avatars sitting on them. When an avatar sits on one these movers, they should received TWO permission dialogs. The first dialog will ask to attach a “synchoop” device as normal. The second dialog will be from the MST performance engine asking to take animation control.

It is very important that the avatar who sits on an MST mover receives this animation permission dialog and they hit the accept button on this dialog. When this is done correctly, the avatar sitting on the MST mover will receive a message that fast animations are now enabled, and their feet will do a 1second “shuffle” motion. If you don’t see this message or don’t see the shuffle motion, stand up and sit again, and make sure you accept both permission dialogs. If you do not receive both dialogs, make sure that your MST centerpoint, MST performance engine, and MST mover are all present and using the same VENUE name in their individual configuration notecards, and insure that the MST mover name is used in at least one of the MST Performance Engine groups, with correctly capitalized spelling.

3.e Running the Timeline with Animations

When all avatars to be animated are sitting on the appropriate MST movers, and have accepted the animation permission dialog, you’re ready to start the event timeline.

Start thetimeline by clicking the MST Performance Engine and selecting “play show”.

Alternatively, you can use the chat command “/8 playshow” if you are in chat distance.

3.f Precaching

When running animations, the SL server must download each animation to everyone who is viewing it, such as your audience. Sometimes this can take a noticable amount of time, such as 1-15 seconds, depending on the length of the animation, sim performance, and connection bandwidth of particular audience members. During this time the animating avatar will appear to “freeze”, while they wait for the animation to finish downloading.

This is generally unwanted behavior during performances. To avoid this freezing, one normally runs through all the animations needed within the audience’s draw distance, and in their cone of vision, but behind something like a wall, before the show starts.

MetaHarper Show Tools supports this ‘precaching” of animations. To precache, have at least one avatar on any MST mover associated with that act, and either click the MST Performance Engine and choose “precache”, or use the chat command “/8 precache”


4.  Example Event Timeline with Scripted Cameras

4.a  What you Need for Cameras in your Timeline

Before you start using scripted commands in your timeline, you should have set up a nearby MST centerpoint and configured MST Camera views as described in the documentation here.

If the MST centerpoint or furniture is NOT owned by yourself, you may need to use the “stagerez” or “center” commands with your MST Performance Engine before startng your camera-enabled act. You can also use the equivalent chat commands “/8 center” or “/8 stagerez yourActName” where “yourActName” is whatever you had put in the ~PACKLIST notecard after NAME=.

You should also have enough camera-enabled furniture set up for your audience to sit on. You can use the MST THeater seat as-is for seating, or you can create your own theater seats.

If you create your own seats, make sure your furniture uses a poseball-less pose positioning system (AVSitter(tm) is popular and tested to be compatible). Then, copy the “~camSeat1”, “~seatConfig”, and “~camSeatManager” scripts from the MST Theater seat into your custom furniture. Make sure that “~seatConfig” notecard sets the VENUE name to your centerpoint, and has an ALLOW= line specifying the UUID of the centerpoint owner, if this is someone other than yourself. Finally, if your custom furniture can seat more than one avatar at a time, add an additional “~camSeat*” script for each additional avatar that can sit on that same piece of furniture. For example, if you have a 3-person sofa, add scripts “~camSeat2” and “~camSeat3” in addition to “~camSeat1”.  These additional ~camSeat Scripts can be found in a box called “more sitters” in your MST inventory folder.

Plan a message to let your audience know that your performance uses scripted cameras. Let them know they will need to sit down in order for the camera effects to work, and that they may wish to reset any viewer camera customization by pressing “control-9”. Let them know that they can “break out” of the camera control at any time by using the viewer camera controls, and can also get back to the scripted camera view at any time by pressing the “Escape” key.

This message can be spoken in audio, or written in text, or rezzed in a friendly texture with instructions, or all three.

4.b  Timeline Steps

Below is an example of an ~EVENTLIST notecard that uses scripted camera commands. It assumes you have already set up Camera Views named “Camera1″,”Camera2”, “Camera3” in the ~CAMERAS notecard as described in the earlier Camera documentation.

@group cameras1
cameras1=
0|SAY:0:Event Group cameras1 is starting up! This is an example of a 53-second long timeline with choreographed cameras.
0.2|SAY:0:You should be sitting on an MST mover, MST theater seat, or using the MST Camera HUD.
2|SAY:0:Now we're moving to Camera1 view
2|SETCAM Camera1
5|SAY:0:Now we're fading out to black..
5|CAMFADEOUT
10|SAY:0:Now we're fading back in.
20|CAMFADEIN
30|SAY:0:Now we're panning to Camera2, slowly
30|SETCAM Camera2 200
45|SAY:0:Now we're panning to Camera3, quickly
45|SETCAM Camera3 50
50|SAY:0:We're finished! Clearing camera control in 3 more seconds.
53|CLEARCAM

4.c  Running the Timeline with Scripted Cameras

When all avatars that wish to see the scripted Cameras sequence are sitting on MST-enabled furniture, you’re ready to start the event timeline.

Start the timeline by clicking the MST Performance Engine and selecting “play show”.

Alternatively, you can use the chat command “/8 playshow” if you are in chat distance.

Hit the “escape key” on your keyboard a few times before the performance starts.

4.d  Returning Camera Control at the End

You may have noticed that the last line of the example timeline contains the “CLEARCAM” command. This is very important, so your last camera view doesn’t stay active longer than it is supposed to.

You may also send this command manually with the command “/8 clearcam” within 20m of your MST Performance Engine.


5.  Example Event Timeline with Rezzing tricks

5.a  Preparation for MST Rezzing

You should make sure that your MST Performance Engine has space around it to rez props, and that you’ve configured at least one prop as described in the documentation here.

You will wish to make sure that your property has enough free prims available to support rezzing. How many you need depends on which props you have loaded.

If you have an MST Centerpoint set up, you may wish to center your MST Performance engine (click on it and choose “center”, or use the “/8 center” chat command). If your MST Performance Engine is in a small-box form, you should expand it with the unbox or stagerez commands first.

5.b  Timeline Steps with Rezzing/Derezzing

Below is an example of an ~EVENTLIST notecard that uses commands to rez and derez individual objects. It assumes you have already set up prop objects, (in this case, the props are named prop1, prop2, prop3)  in the ~PACKLIST notecard as described in the earlier rezzing documentation.

@group rezexample1
rezexample1=
0|SAY:0:Event Group rezexample is starting up! This is an example of a 12-second long timeline that demonstrates 
0.2|SAY:0:rezzing and derezzing individual objects from your MST Performance Engine
2|SAY:0:Now we're rezzing a prop named "prop1"
2|REZ prop1
5|SAY:0:Now we're rezzing two props, "prop1" and "prop2"
5|REZ prop1 | prop2
10|SAY:0:Now we're de-rezzing all three of the above props
10|DEREZ prop1 | prop2 | prop3
12|SAY:0:We're finished!

Note: This example shows how to rez individual named objects. You may also bulk-rez and bulk-derez an entire large scene outside of the EVENTLIST timeline, using the MST Performance Engine’s “stagerez” commands as described in the rezzing documentation.

5.c  Running the Timeline with Rezzing Tricks

When all all the props you are using with the “REZ” steps exist in the MST Performance Engine’s inventory, and they have lines in the ~PACKLIST notecard, you will be ready to run your example timeline with rez commands.

Start the timeline by clicking the MST Performance Engine and selecting “play show”. Alternatively, you can use the chat command “/8 playshow” if you are in chat distance.


6.  How to Stop and Reset Timelines.

6.a  How to Stop a Timeline in Progress

Often you will want to stop a timeline before it gets to the end for one reason for other. You can stop an timeline that is playing by either clicking the MST Performance Engine and choosing “reset show” or by using the chat command “/8 resetshow” within 20m of the MST Performance Engine. When you run this command all movers, animations, and timeline processing will stop and return to their starting positions.

6.b  How to Reset MST Mover positions from the Eventlist

You may use the above “resetshow” command to stop ALL MST Movers and return them to their starting positions.You can also use the “RESET” command step from wthin a timeline. Sometimes this is uses as one of the very first timeline steps in order to ensure that MST movers are in position and ready.

You can also talk to the movers directly as described in the MST Movement documentation using chat commands within the timeline. For example, to stop a particular MST mover named “leaddancer” after 30 seconds, you could use the line

30|SHOUT:8:stopmove leadDancer

6.c  How to Clear Camera Control from the Eventlist

You can use the “CLEARCAM” command within a timeline to disable scripted camera control. Typically this is done at the end of an act that uses scriped cameras.

6.d  How to Stop the timeline and Derez the entire scene from the Eventlist

You can use the “STOP” command within a timeline as a shortcut for situations where you want to quickly clear the stage. This command will stop all MST movers and also derez all props. It’s typically used as a the last step of a timeline.


7.  Tips for Good Timeline Performance

7.a  Avoid too many simultaneous commands, especially chat commands

The MST Performance Engine ~EVENTLIST notecard allows you to run multiple commands at the same time. For example, a timeline that starts more than one command at exactly “3.0” seconds after it starts is valid:

3.0|SAY:0:This command will be run 3 seconds after the timeline starts
3.0|SAY:0:And so will this one

Similarly, if you have different event groups defined, and start them all at the same time (default behavior for start show), multiple commands will run at the same time without a problem. For example:

@group1
group1=
3.0|SAY: This command will be run 3 seconds after group1 starts

@group2
group2=
3.0|SAY: This command will be run 3 seconds after group2 starts

However, one thing to keep in mind is that there’s a limit to how many commands you can run “simultaneously”, and some commands are faster than others. In particular, chat commands (SAY, WHISPER, SHOUT, REGIONSAY) execute slowly on an SL simulator. Avoid running more than 3-4 at the same exact time. If you attempt to use too many chat messages at once, they can either be delayed or lost altogether.

7.b  Remove Documentation Lines

The first 70 or so lines of the “~EVENTLIST” notecard in the MST Performance Engine start with “###” and ignored. These lines contain documentation for your convenience. If you no longer need these lines (for example, after your act is done) you can delete all the lines that start with “#” and this will make your notecard load faster.

Note, this does not improve the performance of your timeline once it is running, it only makes it load faster after you click “save” in the notecard.


8.  Advanced Timelines – Offset Time

8.a  What is Offset Time?

Normally your timeline steps have a number a the front, representing seconds that must elapse since the start of the timeline to before that step should execute. This is called absolute time. Here’s a quick example:

@group dancers1
dancers1=
0|SAY:0:This shows as soon as the dancers1 event group starts
5.0|SAY:0:This shows 5 seconds after the dancers1 event group starts
10.0|SAY:0:This shows 10 seconds after the dancers1 event group starts
11.0|SAY:0:Dancers1 event group is finished.

There is another way to specify timings. instead of specifying seconds from the start of the event group, you can instead specify seconds since the previous step. When you specify “seconds since the previous step” you add a “+” in front of the line and this is called offset time. You can write any timeline in either offset time or absolute time, whichever is more convenient. Here’s an example of the same exact timeline above, written with offset time.

@group dancers1
dancers1=
0|SAY:0:This shows as soon as the dancers1 event group starts
+5.0|SAY:0:This shows 5 seconds after the dancers1 event group starts
+5.0|SAY:0:This shows 10 seconds after the dancers1 event group starts
+1.0|SAY:0:Dancers1 event group is finished.

8.b  When is Offset Time Useful?

You may ask yourself why you would want to use offset time instead of absolute time. Absolute time is easier for most situations, but there is one particular scenario where it is suboptimal. If you have a timeline and you want to *insert* some new content into it, either at the beginning or middle, if you use absolute time you have to change every single line timing after your change to account for your inserted content. If you use offset time, you do not need to change *any* lines except for the ones you insert new.

So, adding new content into an existing timeline is much easier with offset time.

8.c  How to Convert Absolute Time to and from Offset Time

Luckily you do not have to choose one time scheme or the other. You can freely convert back and forth, or even use a mix of both formats in the same timeline. You can change your timeline to whatever format is best for the changes you wish to make

You can convert your timeline by running “/8 printevents yourEventGroupName” followed by either “abs” or “offset”. For example, if our ~EVENTLIST notecard contains a group named “dancers1” we can run “/8 printevents dancers1 abs” to show that group in absolute time format. We could also run “/8 printevents dancers1 offset” to show that group in offset time format.

The printout from these commands can be pasted into your EVENTLIST notecard, replacing whatever was there before for that group.


9. Advanced Timelines – Event Groups

9.a  Why Are Groups Useful?

You have have noticed in the timeline examples that we organize timeline steps into different event groups. Typically this is done for convenience, so that you can create a dance routine for say, Bob, that lasts five minutes, and then another dance routing for Eve, which lasts five minute. Then, you can can put both of these five minute routines into the same show, in two different event groups, which is an easy cut-and-paste operation. You don’t need to merge them together by hand, the MST Performance Engine will do this for you. In the below example, we have two groups. When you run the entire timeline with “playshow” as usual, they will be blended together.

@group bob|bobmover
bob=
0|SAY:0:Group bob is starting.
5|SAY:0:Bob has been running for 5 seconds
10|SAY:0:Bob has finished.

@group eve|evemover
eve=
0|SAY:0:Group eve is now starting
3|SAY:0:Eve has been running for 3 seconds
8|SAY:0:Eve has been running for 8 seconds
11|SAY:0:Even has finished.

This automatic blending together of event groups into a unified timeline can also be used for your own style of organization. Some people like to put special effects or emotes in their own event group, for example.

9.b How to run Groups Individually

Sometimes you do not want to automatically blend all the event groups together and start them at the same time, like the playshow command does. Sometimes you want to run each group independently, for example if each group represents a different short act, and you’d like to run them one after another with free-form intermissions in between them. Or, perhaps you have an event that has three possible endings and you want to choose which one to use while the show is running.

Whatever the reason, it is easy to run an event group in isolation. Instead of using the “playshow” command, you use the chat command “/8 run yourGroupName”. In our example above, we could run group “bob” by itself by “/8 run bob” or group “eve” by itself with “/8 run eve”.


10. Advanced Timelines- How to Debug timeline commands.

Check your Messages

If your timelines are not behaving as expected, the first thing to check is your localchat messages that show up whenever you save the ~EVENTLIST notecard. Make sure you see a message like “Adding timeline for group yourGroupName” for each group name you defined. If you don’t see this message, carefully check to make sure that you have specified both the group definition and group start lines with no syntax errors. If you can’t find what might be wrong, try replacing what you have with one of the example timelines at the beginning of this document, and then slowly modifying it. Pay very careful attention to any errors you may see in your nearby chat window after you resave a notecard or “reset scripts”. If you aren’t seeing any messages at all “reset scripts” in your MST Performance Engine.

Try turning on debugging

You can enable “Debug Mode” for the MST Timeline by clicking the MST performance engine, clicking the “more show” button, and then choosing “debug”. You can also enable it by using the chat command “/8 debug”

When in debug mode, each command the MST tries to run will be printed in your nearby chat, when it tries to run it. This can help you see more easily if your timing is as you expect, or if your commands might be mistyped in some way.

Make sure to turn OFF debugging before you use your MST Performance Engine in a show. To turn off debugging, click the performance engine, choose “more show” and then click “nodebug”, or use the chat command “/8 nodebug”


11. Advanced Timelines- Play Timeline Immediately on Stagerez

If you use an event group named “onrez” it will behave in a special way. This event group will execute IMMEDIATELY after you use the “stagerez” command with your MST Performance Engine. This can be useful for setting some pre-show  preparation commands, such as enabling cameras, showing your audience  a custom curtain banner, or sending welcome or informational chat. An example of this is below

@group onrez|
onrez=
0|SAY:0:This command is in the onrez group and will run immediately when you use stagerez with this MST Performance Engine.

For more information about stagerez, see the rezzing documentation


12. Advanced Timelines- Animation Overlays

There are some times where you want to play one animation on top of another, without the previous animation stopping. For example, you may want to play a guitar-playing animation that will take over the avatar’s arm movements, while their legs continue to perform a shuffle dance.

To overlay an animation on top of an existing one, without stopping the previous animations, use the OVERLAYANIM command. For example:

0|ANIM:shuffle_dance1
5|OVERLAYANIM:guitar_play1
20|OVERLAYSTOP:guitar_play1

In the example above, shuffle_dance1 will continue to animate the avatar’s legs, while guitar_play1 will animate their arms into a guitar playing loop. You have to stop overlay animations yourself. You can do this with the “OVERLAYSTOP” command as shown above.

With clever combinations of OVERLAYANIM and OVERLAYSTOP you can do some clever things, such as make a dance animation appear to start somewhere in the middle of it’s sequence instead of at the beginning, by removing an overlay, exposing the underlying animation.

Overlay animations are subject to the their “animation priority”. The higher the priority order animations take precedence over lower priority animations. Most priorities are level 4 or level 3. It’s advised to test your overlay behavior manually first, by clicking the animations directly in your inventory and choosing “play in world” to determine if they can overlay on top of each other as you expect.


13. Additional Eventlist-related Commands

13.a  Curtain Control

If your performance area has a curtain that can be opened and closed via chat commands you can use MST Performance Engine to open and close at the appropriate times in your act.

First, check with the owner of the centerpoint you will be using that they have set the CURTAIN_OPEN and CURTAIN_CLOSE lines inside the MST centerpoint’s VENUE_CONFIGURATION file to chat commands that can open and close their curtain systems.

Then, use the CURTAINOPEN or CURTAINCLOSE step commands in your timeline as needed. For example, you may wish to put the following line at the end of your act:

+10|CURTAINCLOSE

The advantage of using these commands is that you can move your act to different venues, which might use different curtains with different chat commands, and you won’t have to change your act. The MST Performance Engine will read get the correct curtain chat command from the MST Centerpoint at the venue.

A free, resizable, performance-grade stage curtain is included in the MST package for your convenience.

13.b Triggering one Timeline from Another Timeline

It is not currently possible to have timeline start another timeline, within the same MST Performance engine. This may be in a future release– if you would like this feature let me know.

As an alternative, you can have two more more MST Performance Engines active in the same area, and have one trigger events in the other with the “/8 run eventGroupName” chat command. Note that this will only trigger events in another MST Performance Engine — The performance engine can not hear  its own chat commands.

13.c Sending Link Messages

If you’re a scripter in LSL and wish to have your the MST Performance Engine trigger your own scripts via linked messages, you can use the LINK command. The format is “LINK: <linknumber>:<integer>:<string>:<keystring>  ” Here’s an example below:

0|LINK: -1:50000:someString:someKey

Note: avoid using integers between 1000 and 9999. These link message integers are used by MST Performance Engine internally.

13.d  Listing Available Event Groups in your Timeline

You can get a list of the available timelines by clicking the rezzer and selecting “<more SHOW>” then “listevents”.

If you cannot click the rezzer, you may also enter the chat command “/8 listevents”.

13.e Outfit Changes

If performers are using the MST Outfitter HUD, you can use some built in eventist commands to gain extra security and avoid crosstalk with other stages.

OUTFITADD:folderName
OUTFITREMOVE:folderName
OUTFITGROUPADD:groupName,folderName
OUTFITGROUPREMOVE:groupName,folderName

When using these commands you do not need to specify a channel – it will be automatically detected from the MST Centerppoint. For best results the centerpoint should be version 5.4.1 or newer.

These commands are otherwise similar to the chat commands used by the MST Outfitter. “groupName” can be either an avatar legacy name like “Arrehn Resident” or a name that is defined in the MST outfitter notecard after GROUPS= .

13.f Show Active Animation Permissions

It can sometimes be useful to see or validate which avatars have successfully given your MST performance engine permission to run their animations. Typically these will be avatars sitting on MST movers. To see which avatars have successful granted animation permission to your performance engine, use the following command:

/8 permslist

13.g Load Another Eventlist Notecard

The ~EVENTLIST notecard will lost a large number of events. In practice we have run shows up to 40 minutes long on a single notecard. However, a more complicated or longer show may consume too much memory and fail to load.

If this happens, you can use multiple MST performance engines, or alternatively you can take a small break during your performance to load a new set of events from a different notecard. You can do this with the command: /8 loadevents <notecard_name>. For example:  /8 loadevents ~EVENTLIST_2

When you use this command, the new notecard will load and this will take a number of seconds, depending on length. It fully replaces all groups and events from the original notecard.

END