|
|
Line 1: |
Line 1: |
− | VCMI allows overriding HoMM3 .def files with .json replacement. Compared to .def this format allows:
| + | {{Template:MovedToWebpage|https://vcmi.eu/modders/Animation_Format/}} |
− | * Overriding individual frames from json file (e.g. icons)
| |
− | * Modern graphics formats (targa, png - all formats supported by VCMI image loader)
| |
− | * Does not requires any special tools - all you need is text editor and images.
| |
− | =Format description=
| |
− | <syntaxhighlight lang="javascript">
| |
− | {
| |
− | // Base path of all images in animation. Optional.
| |
− | // Can be used to avoid using long path to images
| |
− | "basepath" : "path/to/images/directory/",
| |
− | | |
− | // List of sequiences / groups in animation
| |
− | // This will replace original group with specified list of files
| |
− | // even if original animation is longer
| |
− | "sequences" :
| |
− | [
| |
− | {
| |
− | // Index of group, zero-based
| |
− | "group" : 1,
| |
− | | |
− | // List of files in this group
| |
− | "frames" :
| |
− | [
| |
− | "frame1.png",
| |
− | "frame2.png"
| |
− | ...
| |
− | ]
| |
− | },
| |
− | ...
| |
− | ],
| |
− | | |
− | // Allow overriding individual frames in file
| |
− | "images" :
| |
− | [
| |
− | {
| |
− | // Group of this image. Optional, default = 0
| |
− | "group" : 0,
| |
− | | |
− | // Imdex of the image in group
| |
− | "frame" : 0,
| |
− | | |
− | // Filename for this frame
| |
− | "file" : "filename.png"
| |
− | }.
| |
− | ...
| |
− | ]
| |
− | | |
− | }
| |
− | </syntaxhighlight>
| |
− | =Creature animation groups=
| |
− | Animation for creatures consist from multiple groups, with each group representing specific one animation.
| |
− | VCMI uses groups as follows:
| |
− | | |
− | '''Basic animations'''
| |
− | * [0] Movement: Used for creature movement
| |
− | * [1] Mouse over: Used for random idle movements and when mouse is moved on the creature
| |
− | * [2] Idle: Basic animation that plays continuously when stack is not acting
| |
− | * [3] Hitted: Animation that plays whenever stack is hit
| |
− | * [4] Defence: Alternative animation that plays when stack is defending and was hit in melee
| |
− | * [5] Death: Animation that plays when stack dies
| |
− | * [6] Death (ranged): Alternative animation, plays when stack is killed by ranged attack
| |
− | | |
− | '''Rotation animations'''
| |
− | | |
− | * [7] Turn left: Animation for rotating stack, only contains first part of animation, with stack turning towards viewer
| |
− | * [8] Turn right: Second part of animation for rotating stack
| |
− | * [9] (unused in vcmi, present in H3 files)
| |
− | * [10] (unused in vcmi, present in H3 files)
| |
− | | |
− | '''Melee attack animations'''
| |
− | | |
− | * [11] Attack (up): Attacking animation, stack facing upwards
| |
− | * [12] Attack (front): Attacking animation, stack facing front
| |
− | * [13] Attack (down): Attacking animation, stack facing downwards
| |
− | | |
− | '''Ranged attack animations'''
| |
− | | |
− | * [14] Shooting (up): Ranged attack animation, stack facing upwards
| |
− | * [15] Shooting (front): Ranged attack animation, stack facing front
| |
− | * [16] Shooting (down): Ranged attack animation, stack facing downwards
| |
− | | |
− | '''Special animations'''
| |
− | | |
− | * [17] Special (up): Special animation, used if dedicated cast or group attack animations were not found
| |
− | * [18] Special (front): Special animation, used if dedicated cast or group attack animations were not found
| |
− | * [19] Special (down): Special animation, used if dedicated cast or group attack animations were not found
| |
− | | |
− | '''Additional H3 animations'''
| |
− | | |
− | * [20] Movement start: Animation that plays before movement animation starts.
| |
− | * [21] Movement end: Animation that plays after movement animation ends.
| |
− | | |
− | '''Additional VCMI animations'''
| |
− | | |
− | * [22] [VCMI 1.0] Dead: Animation that plays when creature is dead. If not present, will consist from last frame from "Death" group
| |
− | * [23] [VCMI 1.0] Dead (ranged): Animation that plays when creature is dead after ranged attack. If not present, will consist from last frame from "Death (ranged)" group
| |
− | * [24] [VCMI 1.2] Resurrection: Animation that plays when creature is resurrected. If not present, will consist from reversed version of "Death" animation
| |
− | | |
− | '''Spellcasting animations'''
| |
− | | |
− | * [30] [VCMI 1.2] Cast (up): Used when creature casts spell facing upwards
| |
− | * [31] [VCMI 1.2] Cast (front): Used when creature casts spell facing front
| |
− | * [32] [VCMI 1.2] Cast (down): Used when creature casts spell facing downwards
| |
− | | |
− | '''Group attack animations'''
| |
− | | |
− | * [40] [VCMI 1.2] Group Attack (up): Used when creature attacks multiple target, with primary target facing up (Dragon Breath attack, or creatures like Hydra)
| |
− | * [41] [VCMI 1.2] Group Attack (front): Used when creature attacks multiple target, with primary target facing front (Dragon Breath attack, or creatures like Hydra)
| |
− | * [42] [VCMI 1.2] Group Attack (down): Used when creature attacks multiple target, with primary target facing downwards (Dragon Breath attack, or creatures like Hydra)
| |
− | | |
− | =Proposed format extensions=
| |
− | == Void format ==
| |
− | * vcmi client {{todo}}
| |
− | * map editor {{done}}
| |
− | Json header may be omitted. In such case a single frame will be loaded from same resource ID.
| |
− | Resource id should have no extension, image must be in SPRITES/ virtual directory.
| |
− | | |
− | == Texture atlas format ==
| |
− | '''TODO'''
| |
− | * arbitrary texture coordinates
| |
− | * margins
| |
− | * grid-like layout
| |
− | | |
− | === Texture atlas format ===
| |
− | | |
− | <syntaxhighlight lang="javascript">
| |
− | {
| |
− | // Base path of all images in animation. Optional.
| |
− | // Can be used to avoid using long path to images
| |
− | // If a path is a filename is is treated as single texture atlas
| |
− | "basepath" : "path/to/images/atlas/bitmap.png",
| |
− | | |
− | // List of sequences / groups in animation
| |
− | "sequences" :
| |
− | [
| |
− | {
| |
− | // Index of group, zero-based
| |
− | "group" : 1,
| |
− | | |
− | // List of files in this group
| |
− | "frames" :
| |
− | [
| |
− | {"x":0, "y":0, "w": 64, "h": 64},
| |
− | {"x":64, "y":0, "w": 64, "h": 64}
| |
− | ...
| |
− | ]
| |
− | },
| |
− | ...
| |
− | ]
| |
− | }
| |
− | </syntaxhighlight>
| |
− | | |
− | === Texture atlas grid format ===
| |
− | | |
− | * vcmi client {{todo}}
| |
− | * map editor {{todo}}
| |
− | | |
− | <syntaxhighlight lang="javascript">
| |
− | {
| |
− | // filename is is treated as single texture atlas
| |
− | "basepath" : "path/to/images/atlas/bitmap.png",
| |
− |
| |
− | //optional, atlas is a grid with same size images
| |
− | //located left to right, top to bottom
| |
− | //[columns, rows]
| |
− | //default [1,1]
| |
− | "gridCols":3,
| |
− | "gridRows":3,
| |
− | | |
− | // List of sequences / groups in animation
| |
− | // sequence index -> images count in sequence
| |
− | "sequences" :
| |
− | [
| |
− | 1,3,5
| |
− | ]
| |
− | }
| |
− | </syntaxhighlight>
| |
− | | |
− | | |
− | {{Modding}}
| |