Difference between revisions of "Town Format"

From VCMI Project Wiki
Jump to: navigation, search
(Faction node (root entry for town configuration))
(Town node)
Line 52: Line 52:
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
{
 
{
"adventureMap" : // adventure map object animations
+
// Path to images of object on adventure map
 +
"adventureMap" :  
 
{
 
{
"village": "",
+
"village": "", // village without built fort
"castle" : "", // town with fortifications
+
"castle" : "", // town with built fort
"capitol": "" // town with both fort and capitol
+
"capitol": "" // town with capitol (usually have some additional flags)
 
},
 
},
"icons" : //icons, small and big. Built versions indicate constructed during this turn building.
+
 
 +
//icons, small and big. Built versions indicate constructed during this turn building.
 +
"icons" :
 
{
 
{
 
"small" : "",
 
"small" : "",
Line 65: Line 68:
 
"bigBuilt" : ""
 
"bigBuilt" : ""
 
},
 
},
 +
// Path to town music theme, e.g. "music/castleTheme"
 
"musicTheme" : "",
 
"musicTheme" : "",
"structures" : // Structures. Represents visible graphical objects on town screen.
+
 
 +
// List of structures which represents visible graphical objects on town screen.
 +
// See detailed description below
 +
"structures" :
 
[
 
[
 
{ ... },
 
{ ... },
Line 72: Line 79:
 
{ ... }  
 
{ ... }  
 
],
 
],
"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
+
// List of names for towns on adventure map e.g. "Dunwall", "Whitestone"
 +
// Does not have any size limitations
 +
"names" : [ "", ""],
 +
 
 +
// Background scenery for town screen, size must be 800x374
 +
"townBackground": "",
 +
 
 +
// Small scenery for window in mage guild screen
 +
"guildWindow": "",
 +
 
 +
// Building icons for town hall
 +
"buildingsIcons": "HALLCSTL.DEF",  
 +
 
 +
// Background image for town hall window
 +
"hallBackground": "",
  
"hallBackground": "", // Background image for town hall window
+
// List of buildings available in each slot of town hall window
"hallSlots": // list of buildings available in each slot of town hall window
+
// As in most cases there is no hard limit on number of columns, rows
 +
// or items in any of them, but size of gui is limited to 5 rows and 4 columns
 +
"hallSlots":
 
[
 
[
 
[ [ 10, 11, 12, 13 ], [ 7, 8, 9 ], [ 5, 22 ], [ 16 ] ],
 
[ [ 10, 11, 12, 13 ], [ 7, 8, 9 ], [ 5, 22 ], [ 16 ] ],
Line 87: Line 107:
 
[ [ 34, 41 ], [ 35, 42 ], [ 36, 43 ] ]
 
[ [ 34, 41 ], [ 35, 42 ], [ 36, 43 ] ]
 
],
 
],
"creatures" : [ [0, 1], [2, 3] ], // List of creatures available on each tier
+
// List of creatures available on each tier. Number of creatures on each tier
 +
// is not hardcoded but it should matchto number of dwelling for each level.
 +
// For example structure below would need buildings with these id's:
 +
// first tier: 30 and 37, second tier: 31, third tier: 32, 39, 46
 +
"creatures" :
 +
[
 +
["centaur", "captainCentaur"],
 +
["dwarf"],
 +
["elf", "grandElf", "sharpshooter"],
 +
...
 +
],
  
"buildings" : // Buildings, objects in town that affect available options
+
// Buildings, objects in town that affect mechanics. See detailed description below
 +
"buildings" :
 
[
 
[
 
{ ... },
 
{ ... },
Line 95: Line 126:
 
{ ... }  
 
{ ... }  
 
],
 
],
 +
// Description of siege screen, see below
 
"siege" : { ... },
 
"siege" : { ... },
  
// Entries that should be replaced with autodetection
+
// TODO: Entries below should be replaced with autodetection
 +
 
 +
// Which tiers in this town have creature hordes. Set to -1 to disable horde(s)
 +
"horde" : [ 2, -1 ],
 +
 
 +
// Resource produced by resource silo, if not set silo will produce wood + ore
 +
"primaryResource" : "gems",
 +
 
 +
// maximum level of mage guild
 +
"mageGuild" : 4,
  
"horde" : [ 2, -1 ], // Which tiers in this town have creature hordes
+
// war machine produced in town
"primaryResource" : 127, // Resource produced by resource silo, 127 = wood + ore
+
"warMachine" : "ballista"
"mageGuild" : 4, // maximum level of mages guild
 
"warMachine" : 4 // war machine produced in town
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>

Revision as of 20:38, 14 December 2012

Current version of town description format.

Current config structure

Faction node (root entry for town configuration)

// Unique faction identifier. Should be unique.
"myTown" :
{
	// Main part of town description, see below
	// Optional but it should be present for playable faction
	"town" : { ... },

	// Native terrain for this town. See config/terrains.json for identifiers
	"nativeTerrain" : "grass",

	// Localizable town name, e.g. "Rampart"
	"name" : "", 

	// Faction alignment. Can be good, neutral (default) or evil.
	"alignment" : "",

	// Backgrounds for creature screen, two versions: 120px-height and 130-px height
	"creatureBackground"
	{
		// Paths to background images
		"120px" : "",
		"130px" : ""
	}

	// Town puzzle map
	"puzzleMap" :
	{
		// Prefix for image names, e.g. "PUZCAS" for name "PUZCAS12.png"
		"prefix" : "", 
		// List of map pieces. First image will have name <prefix>00, second - <prefix>01 and so on
		"pieces" :
		[
			{
				// Position of image on screen
				"x" : 0
				"y" : 0

				//indicates order in which this image will be opened
				"index" : 0 
			},
			...
		]
	]
}

Town node

{
	// Path to images of object on adventure map
	"adventureMap" : 
	{
		"village": "", // village without built fort
		"castle" : "", // town with built fort
		"capitol": ""  // town with capitol (usually have some additional flags)
	},

	//icons, small and big. Built versions indicate constructed during this turn building.
	"icons" : 
	{
		"small" : "",
		"smallBuilt" : "",
		"big" : "",
		"bigBuilt" : ""
	},
	// Path to town music theme, e.g. "music/castleTheme"
	"musicTheme" : "",

	// List of structures which represents visible graphical objects on town screen.
	// See detailed description below
	"structures" : 
	[
		{ ... },
		  ...
		{ ... } 
	],

	// List of names for towns on adventure map e.g. "Dunwall", "Whitestone"
	// Does not have any size limitations
	"names" : [ "", ""],

	// Background scenery for town screen, size must be 800x374
	"townBackground": "",

	// Small scenery for window in mage guild screen
	"guildWindow": "", 

	// Building icons for town hall
	"buildingsIcons": "HALLCSTL.DEF", 

	// Background image for town hall window
	"hallBackground": "",

	// List of buildings available in each slot of town hall window
	// As in most cases there is no hard limit on number of columns, rows
	// or items in any of them, but size of gui is limited to 5 rows and 4 columns
	"hallSlots": 
	[
		[ [ 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 ] ]
	],
	// List of creatures available on each tier. Number of creatures on each tier
	// is not hardcoded but it should matchto number of dwelling for each level.
	// For example structure below would need buildings with these id's:
	// first tier: 30 and 37, second tier: 31, third tier: 32, 39, 46
	"creatures" :
	[
		["centaur", "captainCentaur"],
		["dwarf"],
		["elf", "grandElf", "sharpshooter"],
		...
	 ],

	// Buildings, objects in town that affect mechanics. See detailed description below
	"buildings" : 
	[
		{ ... },
		  ...
		{ ... } 
	],
	// Description of siege screen, see below
	"siege" : { ... },

	// TODO: Entries below should be replaced with autodetection

	// Which tiers in this town have creature hordes. Set to -1 to disable horde(s)
	"horde" : [ 2, -1 ], 

	// Resource produced by resource silo, if not set silo will produce wood + ore
	"primaryResource" : "gems", 

	// maximum level of mage guild
	"mageGuild" : 4,

	// war machine produced in town
	"warMachine" : "ballista"
}

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
}