One of the most powerful and easy tools people use to control what can happen any any given time in
their game is called a “state machine”. In a nutshell, a state machine is the part of a game engine that
follows the games logic and decides what can happen in any given situation depending on the “state” of
the objects involved. In the previous chapter “Adding Variables to an Animation” I used the example of a
player character’s punching animation.
Ideally when a game engine checks the collisions of things, such as the player with an enemy, it
simultaneously checks to see if the enemy is currently in a state where it should be able to take damage
etc. The tricky part is, depending on the design of any given game, a character/entity might be able to be
in several states at once. Spriter Pro can help you perfectly designate, organize and “stack” any number of
state possibilities per entity, per animation, per millisecond.Adding Tags to an Animation Spriter Pro
User’s Manual version 1.0 Quickstart Sprites Bones Animating Character Maps Index
EXAMPLE: In this example we have an enemy character with three animations: idle, getting hit, and
blocking (guarding). The first animation we’ll add a tag to is “idle”.
Adding Tags to an Animation (Pro Only)
Spriter Pro User’s Manual version 1.4
1) Choose the Idle animation, expand the time line palette upward to reveal the individual object
timelines, and then scroll to the very bottom so we can edit the metadata timeline for the entire
animation. Doubleclick on the metadate timeline right at the very beginning (zero milliseconds).
2) This will bring up the “Edit MetaData” dialogue box. This time, instead of creating a variable, type in a
name in the “Add Tag” box and press enter. In this example I’m creating a Tag called “Vulnerable”. Once
you press enter, you should see the tag you just created in the “Available Tags” column.
3) Now check the ”key Tags” checkbox toward the middle right of the dialogue and then drag the name o the
Tag you just created from the “Available Tags” Collumn to the “Active Tags” column. Not only have you
created the Tag, but you’ve also told Spriter that starting at the beginning of the animation, this Tag is
active...in other words, from the start of this animation, one of the states of this entity is
“vulnerable”!...meaning, it can get hit and take damage from the player.
4) Now lets go to the “getting hit” animation.
The tricky part of a characters getting hit animation in a game is (depending on the game) the enemy getting
hit should no longer be vulnerable to new damage until after the getting hit animation is finished playing, or,
should not be vulnerable to additional damage until at least a certain amount of the getting hit animation has
played. This allows for instances like the ability to repeatedly hit enemies with a sequence of attacks in a
fighting game etc.
For this example, we’re going to make the enemy impervious to other damage for the first half second of his
getting hit animation, and then once again vulnerable to attacks after that initial half second.
Go to the mid-way point of the Meta Data timeline for the entire animation (the very bottom of the timeline
palette) and double click to bring up the “Edit MetaData” dialogue. You should see the “Vulnerable” Tag
already in the “Available Tags” column. No need to recreate it. Tags are automatically universal throughout
the Entity you create them for.
Drag the “Vulnerable” Tag from the “Available Tags” column to the “Active Tags” column, making sure the
“key tags” checkbox is checked (on).
Finally, use the “current time” box at the very bottom-left of the “Edit MetaData” dialogue in order to
navigate back to the very beginning of the timeline (zero) and then make sure the “Vulnerable” Tag is in the
“Available Tags” and not the “Active Tags” column. Now the enemy’s “Vulnerable” Tag (or state in this
case) should be invulnerable for the first half of the getting hit animation and vulnerable for the second half
of the animation.
5) For the Blocking animation we would follow the same steps as above... in this case, for the first fraction
of a second, the enemy character does not yet have his guard up and should therefore have the “Vulnerable“
Tag active, and then from that point on in the animation should not be vulnerable...in other words, make sure
from that point on in the metadata timeline that the “Vulnerable” Tag is in the “Available Tags” column and
not in the “Active Tags” column.