Spriter Pro offers the ability to add and several gameplay related types of data to your animations, with the
ability to change their values or settings at any time throughout the animation. These values, if numerical
can even tween smoothly from one keyframe to the next. If this sounds confusing so far, don’t worry,
We’ll go over the different data types and an example use one by one.
Adding Variables to an Animation (Pro Only)
Spriter Pro User’s Manual version 1.4
Example: Imagine you were making a game in which there were animated devices on screen that would
display specific letters or words, and cycle through, changing the word or letter they display over time,
on a loop. The player can click on the device while its displaying that specific letter or word in order to
input that specific letter or word to the game, perhaps to solve a puzzle or answer a question.
Of course you could just check the specific times along the timeline in Spriter where each letter or word
is displayed and hard-code those time intervals into your game engine to represent each character...but
not only is this tedious and unintuitive, it would mean if you changed the timing of your animation
you’d need to check and replace all your hard-coded time numbers in the game engine which represent
each letter or word. Luckily, With Spriter pro you can work in a much more intuitive and flexible
manner. Here’s how:
1) Expand your timeline panel upward to reveal the timelines for each specific object. If you scroll to the
very bottom of all timelines you’ll see a timeline titled “meta data” Double click in the meta data timeline
exactly where the first letter or word is visible and should now be clickable to the player. This will bring up
a dialogue which you will use to create and edit your “current word” variable. Type in the name you’d like
for your variable in the find/create variable box at the top-left of the dialogue, then click the “create
variable” box.
VARIABLES: Variables can be string (text), floats (numbers with decimal points), or integers (whole
numbers). You can give variables any name you’d like, and even give them a default value to start off
with. Variables are a way to have your Spriter animations tell your game engine all kinds of information
that can change aspects of gameplay, visual que’s for the user etc.
Text Variables: Sometimes text is more useful or easy to understand than numbers, and can either
communicate a string to your game engine, or directly to the player.
2) This will bring up a second dialogue box which will allow you to set the type (we want text), and the
default value. If the animation starts on a specific word or letter you can set that as the default if you’d like.
In this example we’ll assume the animated device is displaying the letter “A” by default. Once you’ve
entered your starting word or letter, (if there is no starting word or letter, just leave the default blank.) click
“create variable”.
3) You’ll now see your variable in the variable list in the “Edit MetaData” dialogue box. Click on the
“active in key” checkbox and this will create a keyframe in the metadata timeline for this new variable. Now
you can doubleclick on the “current value” box and type in the word or letter that the device animation is
currently displaying. Once you’ve finished typing the letter or word, press enter and then close the dialogue
box via the red X close icon at the top right of the window. Don’t worry, your changes will be automatically
saved.
4) Now you should double click later on in the timeline, when the animation is either showing no letter or
word, or has changed to a new letter or word. This will bring the “Edit MetaData” dialogue back up. Now
reselct the variable you’ve already made by left clicking on it’s name, and then check the “active in key”
checkbox again. Now you can double click in the “current value” box again and enther the new text value
for the new letter or word that’s being displayed by the animation.
5) Once you’ve repeated step 4 for the entire animation so that all visible letters have a corresponding text
value set in the metadata for that portion of the timeline, then save your Spriter project.
In the game engine itself, once this Spriter file is being read and displayed, the logic of the game engine
would be something like:
Is the player clicking on the Spriter object displaying the device animation?
If yes, then set the text value of the letter or word to the current value of the “current word”
variable from the metadata.
Then you’d have the game react accordingly depending on whether or not the word or letter the player
clicked on was the appropriate answer.
INTEGER AND FLOAT VARIABLES work exactly the same, except they are useful when you need to
communicate changing numerical data to your game engine, depending on the current time of the currently
playing animation. One cool bonus to numerical variables is that they automatically tween between each of
their keyframes in the metadata timeline if the numerical value is different on each of the key frames. Don’t
forget, with things that tween, you can right click and hold on their specific key frames in the timeline and
choose the type of tweening you’d like to use, including no tweening at all. (instant)
PER OBJECT METADATA: In the previous example we created a variable in the metadata for the entire
animation. This is useful if the data you wish to create is relative to the timing of the entire animation, but
there’s a better option for when you want to create and communicate value which should related directly to
specific objects within the animation.
We’ll use collision rectangles as an example:
Assigning Numeric Data to a collision rectangle: As you might already know, you can place as many
distinct collision rectangles as you’d like at any given point along the time line of an animation. Their size,
shape, and angle can tween between their key frames. Each Collision rectangle can have a different name.
This alone offers some pretty awesome control of game play related data right within Spriter, but Spriter
takes it much further than that....
EXAMPLE: In this example we’ll be adding a variable to a collision rectangle to control the amount of
damage it would inflict when it collides with enemies within a game.
1) If you click on the little “+”icon to the right of the name of any objects timeline in the time line palette it
will expand to reveal the metadata timeline for that specific object. This works exactly like the metadata
we’ve created the text variable for earlier, but now this creates variables specifically for that particular
object!
2) In our example we have a punching animation for a fighting game, with a collision rectangle to designate
the part of the animation that should do damage to an enemy character to the game if the rectangle overlaps
the enemy. We’ve named this rectangle “AttackBox”. Just as in the previous example for the text variable
lets double click in the meta data timeline and add a variable, called “damage”, and decide if its type os
going to be float or integer. For most game types integer would be fine. Lets leave its default value blank,
and set its current value to 10. Don’t forget to make sure its set to “active in key”.
3) Now we’ll do the same thing, when the punch is at its apex (when it would do the most damage on
impact) and well double click at that spot further along in the timeline so we can set the “current value” to a
higher number. So lets check the “active in key” box, then double click the “current value” box and then set
it to 20.
In your game’s engine, the logic would be something like this:
Upon overlap of player Damage Collision box and an enemy.
AND the enemy is in a state where it can take damage.
THEN make the enemy play his taking damage animation.
AND temporarily set the enemy’s state so it can no longer take damage. AND subtract the
current value of the Variable :Damage” from the Collision Rectangle called “Damage” from the
hitpoints of that specific enemy.
As you can see, Spriter makes creating, editing and tweaking game play related data, and synchronizing it
perfectly with each animation very easy and intuitive. In this example, not only have we included the hit
strength of a punch right into its collision rectangle, but we even made the number tween and change
depending on how much damage that punch in motion would inflict if it collided with an enemy at that
specific millisecond!
Be sure to read the next section: “Adding “Tags” to an Animation”, because Tags are the other, super
powerful and flexible half of the example logic I provided above for the collision box delivering the damage
ot the enemy. Specifically the portion:“AND the enemy is in a state where it can take damage.”
Tags are Spriters easy and intuitive way to designate what “state” your entity or character is in at any
moment along the time line of each animation.