Difference between revisions of "Object Format"

From VCMI Project Wiki
Jump to: navigation, search
(Replaced content with "{{Template:MovedToWebpage|https://vcmi.eu/modders/Map_Object_Format/}}")
 
(17 intermediate revisions by 3 users not shown)
Line 1: Line 1:
==Description==
+
{{Template:MovedToWebpage|https://vcmi.eu/modders/Map_Object_Format/}}
Work-in-progress draft, not implemented in code
 
 
 
Full object consists from 3 parts:
 
* Object group - set of objects that have similar behavior and share same identifier in H3 (towns, heroes, mines, etc)
 
* Object type - object with fixed behavior but without fixed appearance. Multiple objects types may share same group
 
* Object template - defines appearance of an object - image used to display it, its size & blockmap. These entries only describe templates that will be used when object is placed via map editor or generated by the game. When new object is created its starting appearance will be copied from template
 
== Object group format ==
 
<syntaxhighlight lang="javascript">
 
 
 
{
 
"myCoolObjectGroup":
 
{
 
//numeric ID, mandatory for h3/wog objects, shall be unique if not defined
 
//used only for H3 objects, mods can not be used by mods
 
"id":123,
 
 
 
//Mandatory for new objects,
 
// human readable name, localized
 
//default for original objects from "OBJNAMES.TXT"
 
"name": "My cool object",
 
 
 
//defines C++/script class name that handles behavior of this object
 
"handler" : "CGMine",
 
 
 
"types" : {
 
<list of object types, see below>
 
}
 
}
 
 
 
  ]
 
}
 
</syntaxhighlight>
 
== Object type format ==
 
<syntaxhighlight lang="javascript">
 
 
 
{
 
"myCoolObject":
 
{
 
//numeric sub ID, mandatory for h3/wog objects, shall be unique if not defined
 
//used only for H3 objects, mods can not be used by mods
 
"id":123,
 
 
 
// parameters that will be passed over to class that controls behavior of the object
 
"parameters" : {
 
"producedResources" : "gold",
 
"producedValue" : 1000
 
},
 
 
 
"templates" : {
 
<templates description, see below>
 
}
 
}
 
 
 
  ]
 
}
 
</syntaxhighlight>
 
== Object template format ==
 
<syntaxhighlight lang="javascript">
 
{
 
"myCoolObjectTemplate" :
 
{
 
// resource ID  of animation, relative to SPRITES directory (def file or json file)
 
"animation":"DEFNAME.def",
 
 
 
// directions from which hero can visit this object.
 
// "+" means that object can be visited from that direction, or "-" othervice
 
// if central symbol is "+" then object is visitable by standing on it (most of buildings)
 
// if central symbol is "-" then object is visitable only from adjacent tiles (most of pickable objects)
 
// TODO: maybe replace with "modes"?
 
// building (all but top),
 
// pathway (building that can be passed from top, like garrisons)
 
// pickables (visitable from all sides)
 
// decorations (not visitable)
 
"visitableFrom" : [
 
"---",
 
"+++",
 
"+++"
 
],
 
 
 
// passability of the object
 
// 0=not visible, passable
 
// V=visible, passable
 
// B=blocked, visible
 
// H=hidden - blocked, not visible tile
 
// A=activable, visible, passable depending on visitableFrom field
 
// T=trigger - visiting the tile will trigger the object, tile is not visible (e.g. event)
 
//top and left leading zeros are optional and in fact ignored
 
//bottom, right corner of mask = bottom right corner of animation frame
 
//animation can not be larger than size of mask
 
"mask":[
 
"00000000",
 
"00000000",
 
"00000000",
 
"0000VVVV",
 
"0000HBBB",
 
"0000HHAT"
 
],
 
 
 
// optional; default or if explicitly set to null: all terrains except rock
 
// allowed terrain types to place object too. Affects also RMG.
 
// Note that map editor will still allow to place object on other terrains
 
"allowedTerrains":["dirt", "sand"],
 
 
 
// TODO, optional; default: all terrains except rock
 
// tags from object type are always present (???)
 
// List of tags that can be used to locate object in map editor
 
"tags":["dirt", "sand", "mine"],
 
 
 
//zindex, defines order in which objects on same tile will be blit. optional, default is 0
 
//NOTE: legacy overlay objects has zindex = -1.000.000
 
"zIndex": 0
 
}
 
]}
 
</syntaxhighlight>
 
{{Modding}}
 

Latest revision as of 16:18, 16 July 2024

Logo256.png    Page moved to VCMI-Homepage