Difference between revisions of "AnimationWML"

From The Battle for Wesnoth Wiki
 
(fixed formatting)
Line 12: Line 12:
 
and flipped horizontally when the unit attacks southwards.
 
and flipped horizontally when the unit attacks southwards.
  
All times (see ''begin//, ''end//, ''time'')
+
All times (see ''begin'', ''end'', ''time'')
 
are measured in milliseconds, or 1000ths of seconds.
 
are measured in milliseconds, or 1000ths of seconds.
 
Unit movement is automatically animated based on these times;
 
Unit movement is automatically animated based on these times;
Line 22: Line 22:
 
In WML animations are made using the '''[frame]''' tag.
 
In WML animations are made using the '''[frame]''' tag.
 
It describes one frame of an animation.
 
It describes one frame of an animation.
The following keys are recognized for [frame]:
+
The following keys are recognized for '''[frame]''':
 
* ''begin'' when to start displaying this frame
 
* ''begin'' when to start displaying this frame
 
* ''end'' when to stop displaying this frame
 
* ''end'' when to stop displaying this frame
 
* ''image'' the image to display during this frame to represent the unit
 
* ''image'' the image to display during this frame to represent the unit
* ''halo'' comma separated list of halo images to be displayed around the unit.
+
* ''halo'' comma separated list of halo images to be displayed around the unit. These images will be given equal amounts of time, based on the time between ''begin'' and ''end''. It is recommended that you allow for at least 50 time units per image; i.e. ''end'' - ''beginning'' > 50 * number of halos. ''halo'' is generally used only for long-range attack animations (both [frame] and [missile_frame]).
These images will be given equal amounts of time,
+
* ''halo_x'',''halo_y'' pixel offset between the center of the ''halo'' images and the center of the unit.
based on the time between ''begin'' and ''end''.
 
It is recommended that you allow for at least 50 time units per image;
 
i.e. ''end'' - ''beginning'' > 50 * number of halos.
 
''halo'' is generally used only for long-range attack animations
 
(both [frame] and [missile_frame]).
 
* ''halo_x//,//halo_y'' pixel offset between the center of the ''halo'' images
 
and the center of the unit.
 
  
The following display key/tags are recognized for [unit]:
+
The following display key/tags are recognized for '''[unit]''':
* ''image'' the unit image displayed on the main map when the unit is resting,
+
* ''image'' the unit image displayed on the main map when the unit is resting, and on the status table when the unit is selected. Also the default for all other unit images.
  and on the status table when the unit is selected.
+
* ''profile'' the image displayed when the unit is talking. See [message], [[InterfaceActionsWML]].
  Also the default for all other unit images.
 
* ''profile'' the image displayed when the unit is talking.
 
  See [message], [[InterfaceActionsWML]].
 
 
* ''image_moving'' the image displayed while the unit is moving.
 
* ''image_moving'' the image displayed while the unit is moving.
* ''image_long'' the image displayed while the unit is using a
+
* ''image_long'' the image displayed while the unit is using a long-range (ranged) attack (can be overloaded; see '''[frame]''', '''[attack]''').
  long-range (ranged) attack (can be overloaded; see '''[frame]||, ||[attack]''').
+
* ''image_short'' the image displayed while the unit is using a short-range (melee) attack (can be overloaded; see '''[frame]''', '''[attack]''').
* ''image_short'' the image displayed while the unit is using a
+
* ''image_leading'',''image_healing'' the images displayed for this unit while using the 'leadership', 'heals', or 'cures' ability, if present. See also [[AbilitiesWML]].
  short-range (melee) attack (can be overloaded; see '''[frame]||, ||[attack]''').
 
* ''image_leading//,//image_healing'' the images displayed for this unit
 
  while using the 'leadership', 'heals', or 'cures' ability, if present.
 
  See also [[AbilitiesWML]].
 
 
* '''[teleport_anim]''' describes an animation for when this unit teleports.
 
* '''[teleport_anim]''' describes an animation for when this unit teleports.
** '''[frame]|| see ||[frame]''' above.
+
** '''[frame]''' see '''[frame]''' above. The frames before time 0 are displayed at the original location; the ones after are displayed at the new location.
  The frames before time 0 are displayed at the original location;
+
* ''image_defensive'' default for ''image_defensive_long'' and ''image_defensive_short''.
  the ones after are displayed at the new location.
+
* ''image_defensive_long'' default image when the unit is defending against a long-range attack. See '''[defend]'''.
* ''image_defensive'' default for
+
* ''image_defensive_short'' default image when the unit is defending against a short-range attack. See '''[defend]'''.
  ''image_defensive_long'' and ''image_defensive_short''.
+
* '''[defend]''' describes an animation for when this unit defends. Multiple [defend]s tags can be used.
* ''image_defensive_long'' default image when the unit is
+
** ''range'' if this key is present, the attack must be at this range in order for the animation to trigger. Values 'short', 'long'.
  defending against a long-range attack. See '''[defend]'''.
+
** ''hits'' if this key is present, the attack must either hit('yes') or miss('no') in order for this animation to trigger.
* ''image_defensive_short'' default image when the unit is
+
** '''[frame]''' defense animation. See '''[frame]''' above.
  defending against a short-range attack. See '''[defend]'''.
 
* '''[defend]''' describes an animation for when this unit defends.
 
  Multiple [defend]s tags can be used.
 
** ''range'' if this key is present, the attack must be at this range
 
    in order for the animation to trigger. Values 'short', 'long'.
 
** ''hits'' if this key is present, the attack must either
 
  hit('yes') or miss('no') in order for this animation to trigger.
 
** '''[frame]''' defense animation.
 
    See '''[frame]''' above.
 
 
* ''get_hit_sound'' the sound played (at time=0) when this unit is hit.
 
* ''get_hit_sound'' the sound played (at time=0) when this unit is hit.
 
* ''die_sound'' the sound played (at time=0) when the unit dies.
 
* ''die_sound'' the sound played (at time=0) when the unit dies.
* '''[death]''' describes an animation for when this unit is killed.
+
* '''[death]''' describes an animation for when this unit is killed. Times before 0 are not allowed for this animation; the first frame's begin time will be displayed immediately following the unit's defense animation, regardless of whether it is before or after 0.
  Times before 0 are not allowed for this animation;
+
** '''[frame]''' death animation. See '''[frame]''' above.
  the first frame's begin time will be displayed
 
  immediately following the unit's defense animation,
 
  regardless of whether it is before or after 0.
 
** '''[frame]''' death animation.
 
    See '''[frame]''' above.
 
  
The following display tags are recognized for [attack]:
+
The following display tags are recognized for '''[attack]''':
* '''[frame]''' unit's attack animation.
+
* '''[frame]''' unit's attack animation. For melee attacks ('''range=short'''), this animation is moved toward the enemy; otherwise it is stationary. See '''[frame]''' above for syntax.
For melee attacks ('''range=short'''), this animation is moved toward the enemy;
+
* '''[missile_frame]''' missile's animation during the attack. Only valid for ranged attacks ('''range=long''').
otherwise it is stationary. See '''[frame]''' above for syntax.
+
** ''begin'',''end'',''halo'',''halo_x'',''halo_y'' same as in '''[frame]''' above.
* '''[missile_frame]''' missile's animation during the attack.
 
Only valid for ranged attacks ('''range=long''').
 
** ''begin//,//end//,//halo//,//halo_x//,//halo_y'' same as in '''[frame]''' above.
 
 
** ''image'' the image to display when the unit is attacking orthogonally.
 
** ''image'' the image to display when the unit is attacking orthogonally.
 
** ''image_diagonal'' the image to display if the unit is attacking diagonally.
 
** ''image_diagonal'' the image to display if the unit is attacking diagonally.
Line 96: Line 65:
 
* [[UnitWML]]
 
* [[UnitWML]]
 
* [[ReferenceWML]]
 
* [[ReferenceWML]]
 

Revision as of 21:07, 8 November 2005

Animation and sound

Several key/tags of the [unit] and [attack] tags do not affect gameplay, but are available to control the way units and their attacks will be animated and heard.

All images assume that units are facing right; when units are facing left the images will be reversed. If a unit is attacking north or south then an "orthogonal" image may be displayed for the unit's missile (see [missile_frame]). The input file is displayed when the unit is attacking northwards, and flipped horizontally when the unit attacks southwards.

All times (see begin, end, time) are measured in milliseconds, or 1000ths of seconds. Unit movement is automatically animated based on these times; the attacking unit or missile begins in the center of the hex at the lowest begin time, then slides continuously to the center of the defender's hex, which it reaches at time=0. If the attack is short-range, the unit will then slide continuously back onto its own hex until the highest end time.

In WML animations are made using the [frame] tag. It describes one frame of an animation. The following keys are recognized for [frame]:

  • begin when to start displaying this frame
  • end when to stop displaying this frame
  • image the image to display during this frame to represent the unit
  • halo comma separated list of halo images to be displayed around the unit. These images will be given equal amounts of time, based on the time between begin and end. It is recommended that you allow for at least 50 time units per image; i.e. end - beginning > 50 * number of halos. halo is generally used only for long-range attack animations (both [frame] and [missile_frame]).
  • halo_x,halo_y pixel offset between the center of the halo images and the center of the unit.

The following display key/tags are recognized for [unit]:

  • image the unit image displayed on the main map when the unit is resting, and on the status table when the unit is selected. Also the default for all other unit images.
  • profile the image displayed when the unit is talking. See [message], InterfaceActionsWML.
  • image_moving the image displayed while the unit is moving.
  • image_long the image displayed while the unit is using a long-range (ranged) attack (can be overloaded; see [frame], [attack]).
  • image_short the image displayed while the unit is using a short-range (melee) attack (can be overloaded; see [frame], [attack]).
  • image_leading,image_healing the images displayed for this unit while using the 'leadership', 'heals', or 'cures' ability, if present. See also AbilitiesWML.
  • [teleport_anim] describes an animation for when this unit teleports.
    • [frame] see [frame] above. The frames before time 0 are displayed at the original location; the ones after are displayed at the new location.
  • image_defensive default for image_defensive_long and image_defensive_short.
  • image_defensive_long default image when the unit is defending against a long-range attack. See [defend].
  • image_defensive_short default image when the unit is defending against a short-range attack. See [defend].
  • [defend] describes an animation for when this unit defends. Multiple [defend]s tags can be used.
    • range if this key is present, the attack must be at this range in order for the animation to trigger. Values 'short', 'long'.
    • hits if this key is present, the attack must either hit('yes') or miss('no') in order for this animation to trigger.
    • [frame] defense animation. See [frame] above.
  • get_hit_sound the sound played (at time=0) when this unit is hit.
  • die_sound the sound played (at time=0) when the unit dies.
  • [death] describes an animation for when this unit is killed. Times before 0 are not allowed for this animation; the first frame's begin time will be displayed immediately following the unit's defense animation, regardless of whether it is before or after 0.
    • [frame] death animation. See [frame] above.

The following display tags are recognized for [attack]:

  • [frame] unit's attack animation. For melee attacks (range=short), this animation is moved toward the enemy; otherwise it is stationary. See [frame] above for syntax.
  • [missile_frame] missile's animation during the attack. Only valid for ranged attacks (range=long).
    • begin,end,halo,halo_x,halo_y same as in [frame] above.
    • image the image to display when the unit is attacking orthogonally.
    • image_diagonal the image to display if the unit is attacking diagonally.
  • [sound] describes a sound to play during the attack
    • sound the sound to play if the attack hits
    • sound_miss the sound to play if the attack misses
    • time when to start playing the sound

See Also