i needed this the other day and it was buried in the forum archives,
(and hard to find)
it deserves a copy here.
B.
Quote Originally Posted by GilJaysmith
----


Each model used on a map is named in the .jjm file and the appropriate version is loaded from the models directory, depending on the architecture in effect when the map's loaded.

Static (unanimated) models have a .3xx file which is the 3D model, a .txx file which is the list of textures they use, and one or more .lbm files which are the textures in question. On winter maps the textures from the winter directory are used if there are any.

Animated models have a directory rather than a .3xx file; in the directory there is a .3xx for each resting stage and a .a3x file for each animation (with a .atx file for the animation textures). Each model should have one more .3xx file than .atx file.

Each model may also have a .txt file which defines some of its properties. (If there's no .txt file it gets default properties.) The properties may vary per architecture.

The properties include:

Name - this is the text label for the model's name; if there isn't one then we just use the model's filename as the label

HeightType - this determines how the model is drawn relative to the ground

ObstacleType - this is whether the model counts as a physical obstacle - some (like shrubs) don't, some are circles, some are rectangles (the default)

IsWall - if present then the model is a wall and counts for building castles

Gate - position of a gate in the model - is yes or no depending on whether it starts open or closed, is yes or no depending on whether it'll close when no-one is using it

ConstrainRotation - determines how you can rotate the model - a full circle is 16384 and the number is some divisor of this, e.g. 2048 means you can rotate it to eight positions

Weapons - how many weapons the model can fire, and of what type

WeaponOrigin - each such entry defines the position of a weapon relative to the model's origin, and its angle

staticscale
animscale - these scale the model on the map

sfx - these entries trigger sounds for various events

breach - this is how big a breach you'll get, and where, if a wall is destroyed

noshade - indicates the model isn't shadowed

noshadow - indicates the model casts no shadow

nodesert - indicates the model will vanish if used on a desert map

There may be some others which I forget, but those are the most important ones.

The different-properties-per-architecture didn't really work as intended; in fact the whole terrain / architecture thing was less successful than we'd hoped. The idea, as you can imagine, was to design a map once, with models, and then to be able to give it a variety of appearances by switching terrain tilesets and changing models such as 'tree' so that an ornate Western-style tree would look like a palm tree if used in an Islamic setting.

The only other thing about models is the modeldamage.txt file. This determines how many hit points each model has and how easy it is to inflict damage. The file is mostly self-explanatory thanks to heavy commenting.

Although they aren't included in the checksum which permits or forbids joining a network game, the various model .txt files and modeldamage.txt *must* be the same on everyone's machines, and if a model is used on a map then it should be the same on everyone's machine. Not long before release, I wasted a day on an out-of-sync bug which turned out to be caused by an arrow tower which, because of different file versions, was firing more arrows on one machine and killing more men on one of the machines. Grrrr...
----


We accidentally had an arrow-firing forest during testing because someone had copied the arrow tower's text file for the tree model. Watch out for those Ents...
----


There are some models which show damaged walls. These are only for decoration, and can't be destroyed without modding the game data.
The other wall models, as far as I remember, should be destructible.

You can see which ones are indestructible by just putting one of each on the map and then playing a custom battle and seeing which ones your artillery can target and knock down.
You'll need to be the attacker as only the attacker can target models on a map; they're assumed to belong to the defender.
----

Gil ~