Difference between revisions of "Town Format"
From VCMI Project Wiki
(→Faction node (root entry for town configuration)) |
(→Current config structure) |
||
Line 16: | Line 16: | ||
"town" : { ... }, // optional. Should be present for playable faction | "town" : { ... }, // optional. Should be present for playable faction | ||
"nativeTerrain" : "", | "nativeTerrain" : "", | ||
+ | "name" : "", // localized town name. | ||
"alignment" : "", // faction alignment. Can be good, neutral (default) or evil. | "alignment" : "", // faction alignment. Can be good, neutral (default) or evil. | ||
"creatureBackground" | "creatureBackground" | ||
Line 61: | Line 62: | ||
{ ... } | { ... } | ||
], | ], | ||
− | " | + | "names" : [ "", ""], // list of names for towns on adventure map |
− | |||
"townBackground": "", // background scenery | "townBackground": "", // background scenery | ||
"guildWindow": "", // mage guild window | "guildWindow": "", // mage guild window | ||
Line 99: | Line 99: | ||
<pre> | <pre> | ||
{ | { | ||
+ | "shooter" : "" // shooter creature name | ||
+ | "shooterHeight" : 0, //crop height of the shooters | ||
"towers": | "towers": | ||
{ | { | ||
"top" : | "top" : | ||
{ | { | ||
− | "tower" : { "x": 0, "y": 0 | + | "tower" : { "x": 0, "y": 0}, |
− | "battlement" : { "x": 0, "y": 0 | + | "battlement" : { "x": 0, "y": 0}, |
− | "creature" : { "x": 0, "y | + | "creature" : { "x": 0, "y": 0}, |
− | |||
}, | }, | ||
"keep" : { ... }, | "keep" : { ... }, | ||
Line 113: | Line 114: | ||
"gate" : | "gate" : | ||
{ | { | ||
− | + | "gate" : { "x": 0, "y": 0}, | |
− | + | "arch" : { "x": 0, "y": 0} | |
− | |||
− | "gate" : { "x": 0, "y": 0 | ||
− | "arch" : { "x": 0, "y": 0 | ||
}, | }, | ||
"walls" : // destructible walls | "walls" : // destructible walls | ||
{ | { | ||
− | "upper" : { "x": 0, "y": 0 | + | "upper" : { "x": 0, "y": 0}, |
− | "upperMid" : { "x": 0, "y": 0 | + | "upperMid" : { "x": 0, "y": 0}, |
− | "bottomMid" : { "x": 0, "y": 0 | + | "bottomMid" : { "x": 0, "y": 0}, |
− | "bottom" : { "x": 0, "y": 0 | + | "bottom" : { "x": 0, "y": 0} |
}, | }, | ||
− | "moat" : { "x": 0, "y": 0 | + | "moat" : { "x": 0, "y": 0}, |
"static" : //static non-destructible walls | "static" : //static non-destructible walls | ||
{ | { | ||
− | "bottom" : { "x": 0, "y": 0 | + | "bottom" : { "x": 0, "y": 0}, // sections between |
− | "top" : { "x": 0, "y": 0 | + | "top" : { "x": 0, "y": 0}, // destructible walls |
− | "background" : { "x": 0, "y": 0 | + | "background" : { "x": 0, "y": 0} //topmost wall behind hero |
} | } | ||
} | } |
Revision as of 13:53, 5 October 2012
Current version of town description format.
Contents
Remaining tasks
- Remove usage of numeric ID's. Long-term goal due to heavy usage of id's in VCMI code.
- Collect any remaining hardcoded data
Split faction description from town description
Town will be split into two parts:
- faction: stores all information that can be separated from town (e.g. puzzle map, hero classes, creatures)
- town: stores only information required for town (e.g. buildings and recruitable creatures)
Current config structure
Faction node (root entry for town configuration)
{ "town" : { ... }, // optional. Should be present for playable faction "nativeTerrain" : "", "name" : "", // localized town name. "alignment" : "", // faction alignment. Can be good, neutral (default) or evil. "creatureBackground" { "120px" : "", "130px" : "" } "puzzleMap" : { "prefix" : "", // prefix for image names, e.g. "PUZCAS" for name "PUZCAS12.png" "pieces" : [ { "x" : 0 "y" : 0 "index" : 0 //when this piece will be opened } ... ] ] }
Town node
{ "adventureMap" : // adventure map object animations { "village": "", "castle" : "", // town with fortifications "capitol": "" // town with both fort and capitol }, "icons" : //icons, small and big. Built versions indicate constructed during this turn building. { "small" : "", "smallBuilt" : "", "big" : "", "bigBuilt" : "" }, "musicTheme" : "", "structures" : // Structures. Represents visible graphical objects on town screen. [ { ... }, ... { ... } ], "names" : [ "", ""], // list of names for towns on adventure map "townBackground": "", // background scenery "guildWindow": "", // mage guild window "buildingsIcons": "HALLCSTL.DEF", // Not sure what to do with this "hallBackground": "", // Background image for town hall window "hallSlots": // list of buildings available in each slot of town hall window [ [ [ 10, 11, 12, 13 ], [ 7, 8, 9 ], [ 5, 22 ], [ 16 ] ], [ [ 14, 15 ], [ 0, 1, 2, 3 ], [ 6, 17 ] ], [ [ 21 ], [ 18, 19 ] ], [ [ 30, 37 ], [ 31, 38 ], [ 32, 39 ], [ 33, 40 ] ], [ [ 34, 41 ], [ 35, 42 ], [ 36, 43 ] ] ], "creatures" : [ [0, 1], [2, 3] ], // List of creatures available on each tier "buildings" : // Buildings, objects in town that affect available options [ { ... }, ... { ... } ], "siege" : { ... }, // Entries that should be replaced with autodetection "horde" : [ 2, -1 ], // Which tiers in this town have creature hordes "primaryResource" : 127, // Resource produced by resource silo, 127 = wood + ore "mageGuild" : 4, // maximum level of mages guild "warMachine" : 4 // war machine produced in town }
Siege node
{ "shooter" : "" // shooter creature name "shooterHeight" : 0, //crop height of the shooters "towers": { "top" : { "tower" : { "x": 0, "y": 0}, "battlement" : { "x": 0, "y": 0}, "creature" : { "x": 0, "y": 0}, }, "keep" : { ... }, "bottom" : { ... } }, "gate" : { "gate" : { "x": 0, "y": 0}, "arch" : { "x": 0, "y": 0} }, "walls" : // destructible walls { "upper" : { "x": 0, "y": 0}, "upperMid" : { "x": 0, "y": 0}, "bottomMid" : { "x": 0, "y": 0}, "bottom" : { "x": 0, "y": 0} }, "moat" : { "x": 0, "y": 0}, "static" : //static non-destructible walls { "bottom" : { "x": 0, "y": 0}, // sections between "top" : { "x": 0, "y": 0}, // destructible walls "background" : { "x": 0, "y": 0} //topmost wall behind hero } }
Building node
{ "id" : 0, "name" : "", "description" : "", "upgrades" : 0, // optional, which building can be upgraded by this one "requires" : [], // building requirements "cost" : { ... }, //determine how this building can be built. Possible values are: // normal - default value. Fulfill requirements, use resources, spend one day // auto - building appears when all requirements are built // special - building can not be built manually // grail - building reqires grail to be built "mode" : "auto" }
Structure node
{ "base" : 0, // building this structure is based on. If null - structure will be present always. "animation" : "", // def file with animation "x" : 0, "y" : 0, "z" : 0, // used for blit order. Higher value places structure close to screen "border" : "", // selection highlight "area" : "" // used to detect building selection }