Difference between revisions of "Creature Format"
From VCMI Project Wiki
Tow dragon (talk | contribs) m (double week property added) |
(Restore forum link) |
||
(9 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
+ | Schema in git: [https://github.com/vcmi/vcmi/blob/develop/config/schemas/creature.json config/schemas/creature.json] | ||
+ | |||
See thread http://forum.vcmi.eu/viewtopic.php?t=533 for discussion. | See thread http://forum.vcmi.eu/viewtopic.php?t=533 for discussion. | ||
− | |||
− | |||
− | |||
− | |||
− | + | ==Required data== | |
− | + | In order to make functional creature you also need: | |
− | + | ===Animation=== | |
− | + | * Battle animation (1 def file) | |
− | + | * Set of rendered projectiles (1 def files, shooters only) | |
− | + | * Adventure map animation (1 def file) | |
− | + | ===Images=== | |
− | + | * Small portrait for hero exchange window (1 image) | |
− | + | * Large portrait for hero window (1 image) | |
− | + | ===Sounds=== | |
− | + | * Set of sounds (up to 8 sounds) | |
− | + | ==Format== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
// camelCase unique creature identifier | // camelCase unique creature identifier | ||
Line 382: | Line 26: | ||
}, | }, | ||
"level" : 0, | "level" : 0, | ||
+ | |||
+ | // if set to true creature will not appear in-game randomly (e.g. as neutral creature) | ||
+ | "special" : true, | ||
// config name of faction. Examples: castle, rampart | // config name of faction. Examples: castle, rampart | ||
Line 442: | Line 89: | ||
"abilities" : | "abilities" : | ||
[ | [ | ||
− | Bonus Format | + | "someName1" : Bonus Format, |
+ | "someName2" : Bonus Format | ||
], | ], | ||
− | "hasDoubleWeek": true, | + | "hasDoubleWeek": true, |
"graphics" : | "graphics" : | ||
{ | { | ||
// name of file with creature battle animation | // name of file with creature battle animation | ||
− | "animation" : "" | + | "animation" : "", |
+ | // adventure map animation def | ||
+ | "map" : "", | ||
+ | // path to small icon for tooltips & hero exchange window | ||
+ | "iconSmall" : "", | ||
+ | // path to large icon, used on town screen and in hero screen | ||
+ | "iconLarge" : "", | ||
// animation parameters | // animation parameters | ||
− | // | + | |
+ | // how often creature should play idle animation | ||
"timeBetweenFidgets" : 1.00, | "timeBetweenFidgets" : 1.00, | ||
+ | // unused H3 property | ||
"troopCountLocationOffset" : 0, | "troopCountLocationOffset" : 0, | ||
− | |||
"animationTime" : | "animationTime" : | ||
{ | { | ||
+ | // movement animation time. | ||
"walk" : 1.00, | "walk" : 1.00, | ||
+ | |||
+ | // idle animation time. For H3 creatures this value is always 10 | ||
+ | "idle" : 10.00, | ||
+ | |||
+ | // ranged attack animation time. Applicable to shooting and casting animation | ||
+ | // NOTE: does NOT affects melee attacks | ||
+ | // This is H3 behaviour, for proper synchronization of attack/defense animations | ||
"attack" : 1.00, | "attack" : 1.00, | ||
+ | |||
+ | // How far flying creature should move during one "round" of movement animation | ||
+ | // This is multiplier to base value (200 pixels) | ||
"flight" : 1.00 | "flight" : 1.00 | ||
}, | }, | ||
Line 467: | Line 133: | ||
// name of file for missile | // name of file for missile | ||
"animation" : "", | "animation" : "", | ||
− | // | + | // Frame at which shooter shoots his projectile (e.g. releases arrow) |
− | " | + | "attackClimaxFrame" : 0, |
+ | |||
+ | // offsets between position of shooter and position where projectile should appear | ||
"offset" : | "offset" : | ||
{ | { | ||
Line 478: | Line 146: | ||
"lowerY" : 0 | "lowerY" : 0 | ||
}, | }, | ||
− | "frameAngles" : [] | + | // angles from which frames in .def file were rendered, -90...90 range |
+ | // Example below will work for file that contains following frames: | ||
+ | // 1) facing top, 2) facing top-right, 3)facing right, | ||
+ | // 4) facing bottom-right 5) facing bottom. | ||
+ | "frameAngles" : [ -90, -45, 0, 45, 90] | ||
} | } | ||
}, | }, | ||
Line 485: | Line 157: | ||
"sound" : | "sound" : | ||
{ | { | ||
+ | // Creature attack enemy in melee (counter-)attack | ||
"attack": "", | "attack": "", | ||
+ | // Creature in "defend mode" is attacked | ||
"defend": "", | "defend": "", | ||
+ | // Creature killed | ||
"killed": "", | "killed": "", | ||
+ | // Plays in loop during creature movement | ||
"move": "", | "move": "", | ||
+ | // Shooters only, creature shoots | ||
"shoot" : "", | "shoot" : "", | ||
+ | // Creature not in "defend mode" is under attack | ||
"wince": "", | "wince": "", | ||
− | " | + | |
− | " | + | // Creature start/end movement or teleports |
+ | "startMoving" : "", | ||
+ | "endMoving" : "" | ||
} | } | ||
} | } |
Revision as of 04:48, 3 September 2017
Schema in git: config/schemas/creature.json
See thread http://forum.vcmi.eu/viewtopic.php?t=533 for discussion.
Required data
In order to make functional creature you also need:
Animation
- Battle animation (1 def file)
- Set of rendered projectiles (1 def files, shooters only)
- Adventure map animation (1 def file)
Images
- Small portrait for hero exchange window (1 image)
- Large portrait for hero window (1 image)
Sounds
- Set of sounds (up to 8 sounds)
Format
// camelCase unique creature identifier
"creatureName" :
{
// translatable names
"name" :
{
"singular" : "Creature",
"plural" : "Creatures"
},
"level" : 0,
// if set to true creature will not appear in-game randomly (e.g. as neutral creature)
"special" : true,
// config name of faction. Examples: castle, rampart
"faction" : "",
// cost to recruit, zero values can be omitted.
"cost" :
{
"wood" : 0,
"mercury" : 0,
"ore" : 0,
"sulfur" : 0,
"crystal" : 0,
"gems" : 0,
"gold" : 0
},
// "value" of creature, used to determine for example army strength
"fightValue" : 0,
// "ai value" - how valuable this creature should be for AI
"aiValue" : 0,
// normal growth in town or external dwellings
"growth" : 0,
// growth bonus from horde building
// TODO: reconsider need of this field after configurable buildings support
"hordeGrowth" : 0,
// Creature stats in battle
"attack" : 0,
"defence" : 0,
"hitPoints" : 0,
"shots" : 0,
"speed" : 0,
"damage" :
{
"min" : 0,
"max" : 0
},
// spellpoints this creature has, how many times creature may cast its spells
"spellPoints" : 0,
// initial size of creature army on adventure map
"advMapAmount" :
{
"min" : 0,
"max" : 0
},
// Creature to which this creature can be upgraded
// Note that only one upgrade can be available from UI
"upgrades" :
[
"anotherCreature"
],
// Creature is 2-tiles in size on the battlefield
"doubleWide" : false,
// All creature abilities, using bonus format
"abilities" :
[
"someName1" : Bonus Format,
"someName2" : Bonus Format
],
"hasDoubleWeek": true,
"graphics" :
{
// name of file with creature battle animation
"animation" : "",
// adventure map animation def
"map" : "",
// path to small icon for tooltips & hero exchange window
"iconSmall" : "",
// path to large icon, used on town screen and in hero screen
"iconLarge" : "",
// animation parameters
// how often creature should play idle animation
"timeBetweenFidgets" : 1.00,
// unused H3 property
"troopCountLocationOffset" : 0,
"animationTime" :
{
// movement animation time.
"walk" : 1.00,
// idle animation time. For H3 creatures this value is always 10
"idle" : 10.00,
// ranged attack animation time. Applicable to shooting and casting animation
// NOTE: does NOT affects melee attacks
// This is H3 behaviour, for proper synchronization of attack/defense animations
"attack" : 1.00,
// How far flying creature should move during one "round" of movement animation
// This is multiplier to base value (200 pixels)
"flight" : 1.00
},
"missile" :
{
// name of file for missile
"animation" : "",
// Frame at which shooter shoots his projectile (e.g. releases arrow)
"attackClimaxFrame" : 0,
// offsets between position of shooter and position where projectile should appear
"offset" :
{
"upperX" : 0,
"upperY" : 0,
"middleX" : 0,
"middleY" : 0,
"lowerX" : 0,
"lowerY" : 0
},
// angles from which frames in .def file were rendered, -90...90 range
// Example below will work for file that contains following frames:
// 1) facing top, 2) facing top-right, 3)facing right,
// 4) facing bottom-right 5) facing bottom.
"frameAngles" : [ -90, -45, 0, 45, 90]
}
},
// names of sound files
"sound" :
{
// Creature attack enemy in melee (counter-)attack
"attack": "",
// Creature in "defend mode" is attacked
"defend": "",
// Creature killed
"killed": "",
// Plays in loop during creature movement
"move": "",
// Shooters only, creature shoots
"shoot" : "",
// Creature not in "defend mode" is under attack
"wince": "",
// Creature start/end movement or teleports
"startMoving" : "",
"endMoving" : ""
}
}
Main articles | ||
---|---|---|
Modding changelog | Modding guidelines | Mod Handler |
Formats | ||
---|---|---|
Mod file Format | ||
Town Format | Creature Format | Hero Classes Format |
Artifact Format | Animation Format | Hero Format |
Bonus Format | Object Format | Spell Format |
Work-in-progress formats | ||
---|---|---|
Building bonuses | Map format | |
Bonus Type Format | Random map template |
Outdated pages | ||
---|---|---|
Mod system proposal |