Item DefinitionIDE Sections:
|
Item definition files, usually identified by the file extension .ide
, are used to declare many different aspects for the map system or to specify special behaviour rules for one of the aspects.
Overview
The files are in plain text format so it can be opened with any text editor (like Notepad). The files are split up into several sections. There is no order on how you arrange the sections and sections do not need to appear in the file. Line comments are indicated by the character #
(number sign) and empty lines are allowed. They can be placed anywhere in the file. The game reads up to a maximum of 256 characters for each line and ignores the rest if the line is longer. Each section starts with a section identifier (usually four characters long, e.g. objs
, tobj
, etc.) indicating how the content of the section gets interpreted by the game. The identifier is followed by the definition entries. Each entry takes up one line and follows a specific format which are described in the articles handling the sections in detail below. The end of any section is indicated by the terminating string end
. Both the section identifier and terminating string are case sensitive. Lines within sections are always formatted in the same way differing only in the number of parameters describing the semantical content of the line. Data in each entry are usually separated by the character ,
(comma) but can be separated by
(space). Extra tabs and spaces anywhere in the beginning of the line, between data, or after the data are omitted by the game and can be used to improve readability for human eyes. The games' parser uses an invariant culture to parse numerical values and strings, which means strings are ASCII encrypted and the decimal separator is .
(period).
Example
# line comment
objs
# default style in objs section
200, ind_land101, pjs, 1, 127, 0
# valid style
200 ind_land101 pjs 1 127 0 # unread data
end
Format
The following table contains all known sections in the item definition. The supported games column lists games that support the sections but it doesn't necessarily means they're functional in the games.
Section
|
Supported games
|
Description
|
objs |
|
Defines simple objects. They can be placed into the world through the inst section of the item placement files.
|
tobj |
|
Defines time objects. The section functions similarly to objs but has two additional parameters defining the in-game time range the object can get rendered. These objects can be placed into the world through the inst section of the item placement files.
|
hier |
|
Defines clump objects for use in cutscenes.
|
cars |
|
Defines vehicle objects.
|
peds |
|
Defines pedestrian objects (random NPC's).
|
path |
|
Adds path nodes to defined objects. This section is unstable in Vice City.
|
2dfx |
|
Adds particle effects and simple ped behaviors to defined objects.
|
weap |
|
Defines weapon objects.
|
anim |
|
Defines animated objects. The section functions similarly to objs but has one additional parameter indicating an IFP or WAD animation file to assign an animation to the object. These objects can be placed into the world through the inst section of the item placement files.
|
txdp |
|
Used to virtually extend texture dictionaries.
|
tanm |
|
Used to combine tobj and anim sections. Those objects get placed inside the inst section of the WPL.
|
tree |
|
This section is not functional.
|
vnod |
|
–
|
link |
|
–
|
mlo |
|
Used to create interiors. This section does also contain information about portals (previous enex connections) and dimensions of the interior which influences certain aspects, like the weather, for example. All objects are placed relative to an offset placed using mlo+ inside the IPL or WPL file.
|
amat |
|
This is Audio Materials. Possible Used to make a sound effect at the model. Usually used for dynamic objects.
|
lodm |
|
This section is not functional.
|
agrps |
|
–
|
hand |
VC Xbox/Mobile |
–
|
IDE Flags
Flags are used in order to specify the behaviour of objects. They are interpreted as signed 32-bit integer values where each bit describes a boolean value of a different aspect.
GTA III
Bits |
Dec |
Hex |
Name |
Description |
Examples
|
0 |
1 |
0x1 |
- |
Cull model if player doesn't look at it? Read, but ignored. |
Fences
|
1 |
2[1] |
0x2 |
DO_NOT_FADE |
Do not fade the object when it is being loaded into or out of view. |
Some lampposts
|
2 |
4[1] |
0x4 |
DRAW_LAST |
Model is transparent. Render this object after all opaque objects, allowing transparencies of other objects to be visible through this object. |
Trees
|
3 |
8 |
0x8 |
ADDITIVE |
Render with additive blending. Previous flag must be enabled too. |
|
4 |
16[1] |
0x10 |
IS_SUBWAY |
Model is a tunnel, i.e. set the object as invisible unless the player enters cull zone flag 128. This flag works only with static models. |
Tunnels, some dynamic objects
|
5 |
32 |
0x20 |
IGNORE_LIGHTING |
Don't use static lighting, we want dynamic if it's possible. |
Some lampposts and trafficlights
|
6 |
64[1] |
0x40 |
NO_ZBUFFER_WRITE |
Model is a shadow. Disable writing to z-buffer when rendering it, allowing transparencies of other objects, shadows, and lights to be visible through this object. Not implemented in the PS2 version. |
Shadow
|
GTA Vice City
Bits |
Dec |
Hex |
Name |
Description |
Examples
|
0 |
1 |
0x1 |
IS_ROAD |
Identifies objects to draw "wet reflections" on them. |
Roads
|
1 |
2 |
0x2 |
DO_NOT_FADE |
Do not fade the object when it is being loaded into or out of view. |
Some night objects, North Point Mall
|
2 |
4 |
0x4 |
DRAW_LAST |
Model is transparent. Render this object after all opaque objects, allowing transparencies of other objects to be visible through this object. |
Fencse, trees
|
3 |
8 |
0x8 |
ADDITIVE |
Render with additive blending. Previous flag will be enabled automatically. |
Night windows
|
4 |
16 |
0x10 |
- |
Read, but not used. |
_dy, _dt objects
|
5 |
32 |
0x20 |
IGNORE_LIGHTING |
Don't use static lighting, we want dynamic if it's possible. |
Interior objects
|
6 |
64 |
0x40 |
NO_ZBUFFER_WRITE |
Model is a shadow. Disable writing to z-buffer when rendering it, allowing transparencies of other objects, shadows, and lights to be visible through this object. |
Tree shadows
|
7 |
128 |
0x80 |
DONT_RECEIVE_SHADOWS |
Do not draw shadows on this object. |
Small objects, pickups, lamps, trees
|
8 |
256 |
0x100 |
IGNORE_DRAW_DISTANCE |
Ignore draw distance for this object (sets its "level" (island id) to 0). |
LOD models, North Bridge
|
9 |
512 |
0x200 |
IS_GLASS_TYPE_1 |
Breakable glass type 1: glass object changes its textures when breaking. |
Small windows
|
10 |
1024 |
0x400 |
IS_GLASS_TYPE_2 |
Breakable glass type 2: glass object doesn't change its textures when breaking. |
Large windows
|
Reference table
Bits |
Dec |
Hex |
Name |
Model info flag |
Ref address |
Ref description
|
0 |
1 |
0x1 |
IS_ROAD |
0x04 |
0x4CA1D7 |
CRenderer::RenderRoads()
if (CModelInfo::GetModelInfo(entity->m_nModelIndex)->m_nFlags & IS_ROAD)
entity->Render();
|
1 |
2 |
0x2 |
DO_NOT_FADE |
0x20 |
0x4C7E03 |
CRenderer::ShouldModelBeStreamed(CEntity *,CVector const&)
if (model->m_nFlags & DO_NOT_FADE) {
if (distance >= model->GetLargestLodDistance() + 30.0f)
return true;
}
else if ( distance >= model->GetLargestLodDistance() + 50.0f)
return true;
|
2 |
4 |
0x4 |
DRAW_LAST |
0x40 |
0x56F4F3 |
CSimpleModelInfo::SetupBigBuilding(int,int)
if (model->m_nFlags & DRAW_LAST) {
model->m_nFlags &= ~DRAW_LAST;
dbgprint("%s was draw last\n", model->m_szName);
}
|
3 |
8 |
0x8 |
ADDITIVE |
0x80 |
0x582590 |
CVisibilityPlugins::RenderFadingAtomic(RpAtomic *,float)
if (model->m_nFlags & ADDITIVE)
RwRenderStateSet(rwRENDERSTATEDESTBLEND, rwBLENDONE);
|
4 |
16 |
0x10 |
- |
0x100 |
- |
-
|
5 |
32 |
0x20 |
IGNORE_LIGHTING |
0x200 |
0x56F7C4 |
CSimpleModelInfo::SetAtomic(int,RpAtomic *)
if (model->m_nFlags & IGNORE_LIGHTING)
atomic->geometry->flags &= ~rpGEOMETRYLIGHT;
|
6 |
64 |
0x40 |
NO_ZBUFFER_WRITE |
0x400 |
0x581390 |
CVisibilityPlugins::RenderFadingEntities(CLinkList<CVisibilityPlugins::AlphaObjectInfo> &)
if (model->m_nType == MODEL_INFO_SIMPLE && model->m_nFlags & NO_ZBUFFER_WRITE)
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, FALSE);
|
7 |
128 |
0x80 |
DONT_RECEIVE_SHADOWS |
0x800 |
0x48AF21 |
CFileLoader::LoadObjectInstance(char const*)
if (model->m_nFlags & DONT_RECEIVE_SHADOWS)
entity->m_nFlags.bDontCastShadowsOn = true;
|
8 |
256 |
0x100 |
IGNORE_DRAW_DISTANCE |
0x1000 |
0x487CDE |
CEntity::SetupBigBuilding()
if (model->m_afLodDistances[0] > 2500.0f || model->m_nFlags & IGNORE_DRAW_DISTANCE)
entity->m_nLevel = 0;
|
9 |
512 |
0x200 |
IS_GLASS_TYPE_1 |
0x2000 |
0x488CCD |
CEntity::PreRender(), probably in-lined CModelInfo::IsGlassModel(int) @0x488CAA
bool CModelInfo::IsGlassModel(int modelId) {
CBaseModelInfo *model = CModelInfo::GetModelInfo(modelId);
if (model->m_nType == MODEL_INFO_SIMPLE || model->m_nType == MODEL_INFO_TIME) {
CSimpleModelInfo *simpleModel = reinterpret_cast<CSimpleModelInfo *>(model);
return simpleModel->m_nFlags & IS_GLASS_TYPE_1 || simpleModel->m_nFlags & IS_GLASS_TYPE_2;
}
return false;
}
|
10 |
1024 |
0x400 |
IS_GLASS_TYPE_2 |
0x4000 |
0x488CE7 |
CEntity::PreRender()
if (CModelInfo::IsGlassModel(modelId)) {
if (!(CModelInfo::GetModelInfo(modelId)->m_nFlags & IS_GLASS_TYPE_2) ) {
CGlass::AskForObjectToBeRenderedInGlass(entity);
entity->m_nFlags.bIsVisible = false;
}
}
|
GTA San Andreas
Bits |
Dec |
Hex |
Name |
Description |
Examples
|
0 |
1 |
0x1 |
IS_ROAD |
This model is a road. |
Roads
|
1 |
2 |
0x2 |
- |
Not read, but present in IDE files. |
|
2 |
4 |
0x4 |
DRAW_LAST |
Model is transparent. Render this object after all opaque objects, allowing transparencies of other objects to be visible through this object. |
Fences, trees
|
3 |
8 |
0x8 |
ADDITIVE |
Render with additive blending. Previous flag will be enabled automatically. |
Night windows
|
4 |
16 |
0x10 |
- |
Not read, not present in IDE files. |
-
|
5 |
32 |
0x20 |
|
Works only with animated objects ('anim' section in IDE). |
Doors
|
6 |
64 |
0x40 |
NO_ZBUFFER_WRITE |
Disable writing to z-buffer when rendering this model, allowing transparencies of other objects, shadows, and lights to be visible through this object. |
Shadows, lights
|
7 |
128 |
0x80 |
DONT_RECEIVE_SHADOWS |
Do not draw shadows on this object. |
Small objects, pickups, lamps, trees
|
8 |
256 |
0x100 |
- |
Not read, not present in IDE files. |
-
|
9 |
512 |
0x200 |
IS_GLASS_TYPE_1 |
Breakable glass type 1 (additional parameters defined inside the object.dat file, otherwise there is no effect) |
Small windows
|
10 |
1024 |
0x400 |
IS_GLASS_TYPE_2 |
Breakable glass type 2: object first cracks on a strong collision, then it breaks (does also require object.dat registration). |
Large windows
|
12 |
4096 |
0x1000 |
IS_DAMAGABLE |
Model with ok/dam states. |
Vehicle upgrades, barriers
|
13 |
8192 |
0x2000 |
IS_TREE |
Trees and some plants. These objects move on wind. |
Trees, some plants
|
14 |
16384 |
0x4000 |
IS_PALM |
Palms. These objects move on wind. |
Palms
|
15 |
32768 |
0x8000 |
DOES_NOT_COLLIDE_WITH_FLYER |
Does not collide with flyer (plane or heli). |
Trees, street lights, traffic lights, road signs, telegraph pole
|
16 |
65536 |
0x10000 |
- |
Not read, but present in IDE files. |
Explosive things
|
17 |
131072 |
0x20000 |
- |
Not read, but present in IDE files. |
chopcop_ models
|
18 |
262144 |
0x40000 |
- |
Not read, but present in IDE files. |
pleasure-DL.dff
|
19 |
524288 |
0x80000 |
|
Unused special object type. Read, but not present in IDE files. |
-
|
20 |
1048576 |
0x100000 |
IS_TAG |
This model is a tag. Object will switch from mesh 2 to mesh 1 after getting sprayed by the player. |
Tags
|
22 |
4194304 |
0x400000 |
IS_BREAKABLE_STATUE |
Object with this model can't be used as cover, i.e. peds won't try to cover behind this object. |
Statue parts in atrium
|
Difference between GTA III and GTA IV engines
GTA IV not only uses different formats to the previous games, it also does not use IDs to identify objects anymore. While GTA III era games use an ID as an index inside an array of definitions, GTA IV uses the hashes of the model name as a key inside a hash table. For more information about this see Map System.
Tools
See also
References
External links