Difference between revisions of "File tree"
(→Complete file tree of MM2 virtual file system (aud is not filled in yet)) |
m (→Sky dome definition) |
||
(23 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | The | + | __NOTOC__ |
+ | The AR files of MM2 make up a common file tree, the files are extracted to a, shared, virtual file system when needed. The structure of this file system is as follows: | ||
==Structure== | ==Structure== | ||
<div class="FolderTree"> | <div class="FolderTree"> | ||
Line 9: | Line 10: | ||
===Animated objects=== | ===Animated objects=== | ||
<p> | <p> | ||
+ | The ''anim'' folder holds definitions of the animated objects | ||
+ | of MM2. These are the pedestrians. | ||
</p> | </p> | ||
</div> | </div> | ||
Line 16: | Line 19: | ||
====Animation sequence==== | ====Animation sequence==== | ||
<p> | <p> | ||
+ | Each [[Pedestrian animations|animation sequence]], | ||
+ | associated with a state, is made up by a number of key | ||
+ | frames. Each key frame has several parameters that should be | ||
+ | applied to each bone in the skeleton. By moving the | ||
+ | skeleton, the entire model will move. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS">*.csv | <li class="FolderTree-File-JS">*.csv | ||
Line 23: | Line 31: | ||
====Animation state model==== | ====Animation state model==== | ||
<p> | <p> | ||
+ | The animation of a pedestrian is based on a | ||
+ | [[Pedestrian state models|state model]]. A pedestrian is | ||
+ | always in a specific state and each state is connected to an | ||
+ | animation sequence. For example, if the pedestrian is in the | ||
+ | state "WALK", the animation named pedanim_womwalk.anim is | ||
+ | looping over and over again. When something happens, the | ||
+ | pedestrian might make a transition from one state to another. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS">*.rays | <li class="FolderTree-File-JS">*.rays | ||
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
+ | |||
====Unknown: rays==== | ====Unknown: rays==== | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS">*.shaders | <li class="FolderTree-File-JS">*.shaders | ||
Line 37: | Line 53: | ||
====Shader definitions==== | ====Shader definitions==== | ||
<p> | <p> | ||
+ | The [[PKG#Shaders|shaders]] are defined in exactly the same | ||
+ | way as for PKG objects. The pedmodel_*.shaders files follow | ||
+ | the specification of the PKGFileData in the [[PKG]] file | ||
+ | format. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS">*.skel | <li class="FolderTree-File-JS">*.skel | ||
Line 44: | Line 64: | ||
====Skeleton==== | ====Skeleton==== | ||
<p> | <p> | ||
+ | All the parts of a pedestrian model are bound to a | ||
+ | [[Pedestrian skeleton|skeleton]]. | ||
+ | A skeleton is constructed by a number of bones that are | ||
+ | attached with joints. In MM2 the skeletons are defined using | ||
+ | a tree structure. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS">*.mod | <li class="FolderTree-File-JS">*.mod | ||
Line 51: | Line 76: | ||
====Geometry model==== | ====Geometry model==== | ||
<p> | <p> | ||
+ | The [[Pedestrian model|pedmodel_*.mod]] files define the | ||
+ | actual 3D model of a pedestrian. It defines vertices, some | ||
+ | material attributes and the surfaces of the model. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
</ul> | </ul> | ||
Line 58: | Line 86: | ||
<li class="FolderTree-Open">aud | <li class="FolderTree-Open">aud | ||
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
+ | |||
===Audio files=== | ===Audio files=== | ||
<p> | <p> | ||
− | |||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
<ul> | <ul> | ||
</ul> | </ul> | ||
Line 68: | Line 96: | ||
<li class="FolderTree-Open">bound | <li class="FolderTree-Open">bound | ||
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
+ | |||
===Object boundaries=== | ===Object boundaries=== | ||
<p> | <p> | ||
+ | MM2 use three file types for collision detection and material properties on regular PKG objects, [[BND]], [[BBND]] and [[TER]]. | ||
+ | |||
+ | It is not clear when to pick .bbnd/.ter over .bnd, but some indications imply that objects placed with INST typically uses the binary formats. | ||
</p> | </p> | ||
</div> | </div> | ||
<ul> | <ul> | ||
+ | <li class="FolderTree-File-JS">*.bnd | ||
+ | <div class="FolderTree-Content"> | ||
+ | ====ASCII bound==== | ||
+ | <p> | ||
+ | Simple, ASCII-based file format defined [[BND|here]]. | ||
+ | </p> | ||
+ | </div><table></table> | ||
+ | </li> | ||
<li class="FolderTree-File-JS">*.bbnd | <li class="FolderTree-File-JS">*.bbnd | ||
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
====Binary bound==== | ====Binary bound==== | ||
<p> | <p> | ||
+ | Binary version of the ASCII-based format, defined [[BBND|here]]. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
− | <li class="FolderTree-File-JS">*. | + | <li class="FolderTree-File-JS">*.ter |
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
− | ==== | + | ====Terrain bound==== |
<p> | <p> | ||
+ | Unknown format, defined [[TER|here]]. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
</ul> | </ul> | ||
Line 91: | Line 133: | ||
<li class="FolderTree-Open">city | <li class="FolderTree-Open">city | ||
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
+ | |||
===City definitions=== | ===City definitions=== | ||
<p> | <p> | ||
+ | Each MM2 city has a number of files defining the actual city, its geometry, monuments, traffic flows and so on. Many of the files that controls these things are stored in the ''city'' folder. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
<ul> | <ul> | ||
<li class="FolderTree-Open"><cityname> | <li class="FolderTree-Open"><cityname> | ||
Line 105: | Line 149: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
</ul> | </ul> | ||
Line 113: | Line 157: | ||
====Decal placements==== | ====Decal placements==== | ||
<p> | <p> | ||
+ | Decals are flat images that can be placed on the ground | ||
+ | and on facades to increase the visual detail level. Decals | ||
+ | are placed using [[Pathset|pathset]] files. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS">props.pathset | <li class="FolderTree-File-JS">props.pathset | ||
Line 120: | Line 167: | ||
====Prop placements==== | ====Prop placements==== | ||
<p> | <p> | ||
+ | Props are, typically, small 3D objects like road cones, | ||
+ | park benches and similar that can be placed around the | ||
+ | city. Props are placed using [[Pathset|pathset]] files. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS">propdefs.csv | <li class="FolderTree-File-JS">propdefs.csv | ||
Line 127: | Line 177: | ||
====Roadside prop definitions==== | ====Roadside prop definitions==== | ||
<p> | <p> | ||
+ | The roads defined by the [[PSDL]] file can be | ||
+ | automatically be filled with props. This file defines | ||
+ | repetiton controls for certain props. The proprules file | ||
+ | controls which of these props are to be placed next in | ||
+ | line. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS">proprules.csv | <li class="FolderTree-File-JS">proprules.csv | ||
Line 134: | Line 189: | ||
====Roadside prop rules==== | ====Roadside prop rules==== | ||
<p> | <p> | ||
+ | The roads defined by the [[PSDL]] file can be | ||
+ | automatically be filled with props. This file defines | ||
+ | the sequencing of the prop definitions defined in the | ||
+ | propdefs file. The [[PSDL]] file selects a proprule index | ||
+ | from this file for each road. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
</ul> | </ul> | ||
Line 143: | Line 203: | ||
====Ambient control file==== | ====Ambient control file==== | ||
<p> | <p> | ||
+ | This file controls what ambients are present in this city. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><cityname>.bai | <li class="FolderTree-File-JS"><cityname>.bai | ||
Line 150: | Line 211: | ||
====Ambient path file==== | ====Ambient path file==== | ||
<p> | <p> | ||
+ | This file defines where and how the ambients may move in the | ||
+ | city. See [[BAI]] for details. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><cityname>.cpvs | <li class="FolderTree-File-JS"><cityname>.cpvs | ||
Line 157: | Line 220: | ||
====Potentially visible set definition==== | ====Potentially visible set definition==== | ||
<p> | <p> | ||
+ | MM2 uses a PVS, or potentially visible set, algorithm to | ||
+ | speed up rendering of each game frame. These files contain | ||
+ | the pre-calculated PVS tree. See [[CPVS]] for details. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><cityname>.inst | <li class="FolderTree-File-JS"><cityname>.inst | ||
Line 164: | Line 230: | ||
====Stationary objects==== | ====Stationary objects==== | ||
<p> | <p> | ||
+ | For stationary objects that require more detail than the | ||
+ | [[PSDL]] file can provide, the [[INST]] file can be used to | ||
+ | place [[PKG]] objects throughout the city. These objects | ||
+ | will not move for anything. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS">*.ldef | <li class="FolderTree-File-JS">*.ldef | ||
Line 172: | Line 242: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><cityname>.lmap | <li class="FolderTree-File-JS"><cityname>.lmap | ||
Line 179: | Line 249: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><cityname>.lt* | <li class="FolderTree-File-JS"><cityname>.lt* | ||
Line 186: | Line 256: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS">materials.csv | <li class="FolderTree-File-JS">materials.csv | ||
Line 192: | Line 262: | ||
====Material mappings==== | ====Material mappings==== | ||
<p> | <p> | ||
+ | This file simply lists what material should be used together | ||
+ | with which image map. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS">materials.mtl | <li class="FolderTree-File-JS">materials.mtl | ||
Line 199: | Line 271: | ||
====Material definitions==== | ====Material definitions==== | ||
<p> | <p> | ||
+ | Defines material properties such as friction and possible | ||
+ | particle effecs that apply to a particular type of surface. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><cityname>.psdl | <li class="FolderTree-File-JS"><cityname>.psdl | ||
Line 206: | Line 280: | ||
====City geometry==== | ====City geometry==== | ||
<p> | <p> | ||
+ | The [[PSDL]] file defines the major geometry of the city. | ||
+ | All roads and most buildings are defined with this file. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><cityname>.sky | <li class="FolderTree-File-JS"><cityname>.sky | ||
Line 213: | Line 289: | ||
====Sky dome definition==== | ====Sky dome definition==== | ||
<p> | <p> | ||
+ | Defines the name of the sky dome object and the position for | ||
+ | the center of this dome relative to the [[PSDL]]. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><cityname>.water | <li class="FolderTree-File-JS"><cityname>.water | ||
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
+ | |||
====Water of death definition==== | ====Water of death definition==== | ||
<p> | <p> | ||
+ | Defines the height of deadly water - if a vehicle goes below | ||
+ | this height it sleeps with the fishes. Possibly a list of | ||
+ | [[PSDL]] block ids can be listed for blocks that define | ||
+ | deadly water at any height. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
</ul> | </ul> | ||
Line 227: | Line 310: | ||
<li class="FolderTree-Open">geometry | <li class="FolderTree-Open">geometry | ||
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
+ | |||
===Object definitions=== | ===Object definitions=== | ||
<p> | <p> | ||
+ | The geometry of generic 3D objects are defined by PKG files. These are used for many things, from player vehicles to statues and complex facades. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
<ul> | <ul> | ||
− | <li class="FolderTree-File-JS">*. | + | <li class="FolderTree-File-JS">*.pkg |
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
− | ====Object | + | ====Object geometry==== |
<p> | <p> | ||
+ | Actual geometry is defined in these files, definition can be found [[PKG|here]]. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
− | <li class="FolderTree-File-JS">*. | + | <li class="FolderTree-File-JS">*.mtx |
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
− | ====Object | + | ====Object matrix==== |
<p> | <p> | ||
+ | Defines a transformation matrix for ''local'' parts of a [[PKG]]. Format is defined [[MTX|here]]. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
</ul> | </ul> | ||
Line 250: | Line 337: | ||
<li class="FolderTree-Open">jpg | <li class="FolderTree-Open">jpg | ||
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
+ | |||
===Game interface graphics=== | ===Game interface graphics=== | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-Open">texture | <li class="FolderTree-Open">texture | ||
Line 260: | Line 348: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
<ul> | <ul> | ||
<li class="FolderTree-File-JS">*.tex | <li class="FolderTree-File-JS">*.tex | ||
Line 266: | Line 354: | ||
====Custom image map file==== | ====Custom image map file==== | ||
<p> | <p> | ||
+ | The [[TEX]] file format is a format for storing bit mapped images. This format is made by Angel Studios for their games. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS">*.tga | <li class="FolderTree-File-JS">*.tga | ||
Line 274: | Line 363: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
</ul> | </ul> | ||
Line 283: | Line 372: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
<ul> | <ul> | ||
<li class="FolderTree-Open"><cityname> | <li class="FolderTree-Open"><cityname> | ||
Line 289: | Line 378: | ||
<li class="FolderTree-File-JS">*.aimap | <li class="FolderTree-File-JS">*.aimap | ||
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
− | ====Ambient control file==== | + | ====Ambient control file (Amateur)==== |
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS">*.aimap_p | <li class="FolderTree-File-JS">*.aimap_p | ||
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
− | ====Ambient control file | + | ====Ambient control file (Professional)==== |
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><racename>waypoints.csv | <li class="FolderTree-File-JS"><racename>waypoints.csv | ||
Line 306: | Line 395: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><racename>data.csv | <li class="FolderTree-File-JS"><racename>data.csv | ||
Line 313: | Line 402: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><eventname>.csv | <li class="FolderTree-File-JS"><eventname>.csv | ||
Line 320: | Line 409: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS">mm[blitz|circuit|crash|race]data.csv | <li class="FolderTree-File-JS">mm[blitz|circuit|crash|race]data.csv | ||
Line 327: | Line 416: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS">multicopwaypoints.csv | <li class="FolderTree-File-JS">multicopwaypoints.csv | ||
Line 334: | Line 423: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><cityname>_rewards.csv | <li class="FolderTree-File-JS"><cityname>_rewards.csv | ||
Line 341: | Line 430: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><racename>-[a|p]-<n>.opp | <li class="FolderTree-File-JS"><racename>-[a|p]-<n>.opp | ||
Line 348: | Line 437: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><racename>.pathset | <li class="FolderTree-File-JS"><racename>.pathset | ||
Line 355: | Line 444: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
</ul> | </ul> | ||
Line 363: | Line 452: | ||
<li class="FolderTree-Open">scene | <li class="FolderTree-Open">scene | ||
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
+ | |||
===Scene?=== | ===Scene?=== | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
<ul> | <ul> | ||
<li class="FolderTree-File-JS">modtypes.ini | <li class="FolderTree-File-JS">modtypes.ini | ||
Line 373: | Line 463: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
</ul> | </ul> | ||
Line 382: | Line 472: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
<ul> | <ul> | ||
<li class="FolderTree-Open">banger | <li class="FolderTree-Open">banger | ||
<ul> | <ul> | ||
− | <li class="FolderTree-File-JS"><objectname>.dgBangerData | + | <li class="FolderTree-File-JS"><objectname>[_BREAK##].dgBangerData |
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
− | ==== | + | ====Object collision properties==== |
<p> | <p> | ||
+ | Defines properties controlling [[PKG]] objects that has | ||
+ | collided with something. The format is described [[dgBangerData|here]]. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
</ul> | </ul> | ||
Line 399: | Line 491: | ||
<li class="FolderTree-File-JS"><vehiclename>[_dash].camPovCS | <li class="FolderTree-File-JS"><vehiclename>[_dash].camPovCS | ||
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
+ | |||
====Camera definitions==== | ====Camera definitions==== | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><vehiclename>_[NEAR|FAR].camTrackCS | <li class="FolderTree-File-JS"><vehiclename>_[NEAR|FAR].camTrackCS | ||
Line 409: | Line 502: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
</ul> | </ul> | ||
Line 419: | Line 512: | ||
====Particle effect definition==== | ====Particle effect definition==== | ||
<p> | <p> | ||
+ | Particle effects are used in weather, vehicle effects and collisions. The format is described [[asBirthRule|here]]. | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
</ul> | </ul> | ||
Line 428: | Line 522: | ||
<li class="FolderTree-File-JS"><vehiclename>.aiVehicleData | <li class="FolderTree-File-JS"><vehiclename>.aiVehicleData | ||
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
+ | |||
====Ambient vehicle data==== | ====Ambient vehicle data==== | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><vehiclename>.asNode | <li class="FolderTree-File-JS"><vehiclename>.asNode | ||
<div class="FolderTree-Content"> | <div class="FolderTree-Content"> | ||
− | ==== | + | ====Joystick/Wheel settings==== |
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><vehiclename>.dgTrailerJoint | <li class="FolderTree-File-JS"><vehiclename>.dgTrailerJoint | ||
Line 445: | Line 540: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><vehiclename>.vehCarDamage | <li class="FolderTree-File-JS"><vehiclename>.vehCarDamage | ||
Line 452: | Line 547: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><vehiclename>[_opp].vehCarSim | <li class="FolderTree-File-JS"><vehiclename>[_opp].vehCarSim | ||
Line 459: | Line 554: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><vehiclename>.vehGyro | <li class="FolderTree-File-JS"><vehiclename>.vehGyro | ||
Line 466: | Line 561: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><vehiclename>.vehStuck | <li class="FolderTree-File-JS"><vehiclename>.vehStuck | ||
Line 473: | Line 568: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><vehiclename>.vehTrailer | <li class="FolderTree-File-JS"><vehiclename>.vehTrailer | ||
Line 480: | Line 575: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
</ul> | </ul> | ||
Line 489: | Line 584: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><vehiclename>.asNode | <li class="FolderTree-File-JS"><vehiclename>.asNode | ||
Line 496: | Line 591: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><vehiclename>_dash.asNode | <li class="FolderTree-File-JS"><vehiclename>_dash.asNode | ||
Line 503: | Line 598: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><cityname>.cinfo | <li class="FolderTree-File-JS"><cityname>.cinfo | ||
Line 510: | Line 605: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><vehiclename>.dgTrailerJoint | <li class="FolderTree-File-JS"><vehiclename>.dgTrailerJoint | ||
Line 517: | Line 612: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><vehiclename>.info | <li class="FolderTree-File-JS"><vehiclename>.info | ||
Line 524: | Line 619: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS">menu.csv | <li class="FolderTree-File-JS">menu.csv | ||
Line 531: | Line 626: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS">widget.csv | <li class="FolderTree-File-JS">widget.csv | ||
Line 538: | Line 633: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><cityname>.mmHudMap | <li class="FolderTree-File-JS"><cityname>.mmHudMap | ||
Line 545: | Line 640: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><vehiclename>.mmMirror | <li class="FolderTree-File-JS"><vehiclename>.mmMirror | ||
Line 552: | Line 647: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><texturenamestem>.movie | <li class="FolderTree-File-JS"><texturenamestem>.movie | ||
Line 559: | Line 654: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
<li class="FolderTree-File-JS"><vehiclename>.vehTrailer | <li class="FolderTree-File-JS"><vehiclename>.vehTrailer | ||
Line 566: | Line 661: | ||
<p> | <p> | ||
</p> | </p> | ||
− | </div> | + | </div><table></table> |
</li> | </li> | ||
</ul> | </ul> |
Latest revision as of 17:09, 23 August 2016
The AR files of MM2 make up a common file tree, the files are extracted to a, shared, virtual file system when needed. The structure of this file system is as follows:
Structure
- root
- anim
Animated objects
The anim folder holds definitions of the animated objects of MM2. These are the pedestrians.
- *.anim
Animation sequence
Each animation sequence, associated with a state, is made up by a number of key frames. Each key frame has several parameters that should be applied to each bone in the skeleton. By moving the skeleton, the entire model will move.
- *.csv
Animation state model
The animation of a pedestrian is based on a state model. A pedestrian is always in a specific state and each state is connected to an animation sequence. For example, if the pedestrian is in the state "WALK", the animation named pedanim_womwalk.anim is looping over and over again. When something happens, the pedestrian might make a transition from one state to another.
- *.rays
Unknown: rays
- *.shaders
Shader definitions
The shaders are defined in exactly the same way as for PKG objects. The pedmodel_*.shaders files follow the specification of the PKGFileData in the PKG file format.
- *.skel
Skeleton
All the parts of a pedestrian model are bound to a skeleton. A skeleton is constructed by a number of bones that are attached with joints. In MM2 the skeletons are defined using a tree structure.
- *.mod
Geometry model
The pedmodel_*.mod files define the actual 3D model of a pedestrian. It defines vertices, some material attributes and the surfaces of the model.
- *.anim
- aud
Audio files
- bound
- city
City definitions
Each MM2 city has a number of files defining the actual city, its geometry, monuments, traffic flows and so on. Many of the files that controls these things are stored in the city folder.
- <cityname>
- audio_pathsets
- *.pathset
Local city sound placement
- *.pathset
- decals.pathset
Decal placements
Decals are flat images that can be placed on the ground and on facades to increase the visual detail level. Decals are placed using pathset files.
- props.pathset
Prop placements
Props are, typically, small 3D objects like road cones, park benches and similar that can be placed around the city. Props are placed using pathset files.
- propdefs.csv
Roadside prop definitions
The roads defined by the PSDL file can be automatically be filled with props. This file defines repetiton controls for certain props. The proprules file controls which of these props are to be placed next in line.
- proprules.csv
Roadside prop rules
The roads defined by the PSDL file can be automatically be filled with props. This file defines the sequencing of the prop definitions defined in the propdefs file. The PSDL file selects a proprule index from this file for each road.
- audio_pathsets
- <cityname>.aimap
Ambient control file
This file controls what ambients are present in this city.
- <cityname>.bai
Ambient path file
This file defines where and how the ambients may move in the city. See BAI for details.
- <cityname>.cpvs
Potentially visible set definition
MM2 uses a PVS, or potentially visible set, algorithm to speed up rendering of each game frame. These files contain the pre-calculated PVS tree. See CPVS for details.
- <cityname>.inst
Stationary objects
For stationary objects that require more detail than the PSDL file can provide, the INST file can be used to place PKG objects throughout the city. These objects will not move for anything.
- *.ldef
LDEF
- <cityname>.lmap
Light map definition
- <cityname>.lt*
LT
- materials.csv
Material mappings
This file simply lists what material should be used together with which image map.
- materials.mtl
Material definitions
Defines material properties such as friction and possible particle effecs that apply to a particular type of surface.
- <cityname>.psdl
City geometry
The PSDL file defines the major geometry of the city. All roads and most buildings are defined with this file.
- <cityname>.sky
Sky dome definition
Defines the name of the sky dome object and the position for the center of this dome relative to the PSDL.
- <cityname>.water
Water of death definition
Defines the height of deadly water - if a vehicle goes below this height it sleeps with the fishes. Possibly a list of PSDL block ids can be listed for blocks that define deadly water at any height.
- <cityname>
- geometry
Object definitions
The geometry of generic 3D objects are defined by PKG files. These are used for many things, from player vehicles to statues and complex facades.
- *.pkg
Object geometry
Actual geometry is defined in these files, definition can be found here.
- *.mtx
- *.pkg
- jpg
Game interface graphics
- texture
Game image maps
- *.tex
Custom image map file
The TEX file format is a format for storing bit mapped images. This format is made by Angel Studios for their games.
- *.tga
Targa image map file
- *.tex
- race
Race definitions
- <cityname>
- *.aimap
Ambient control file (Amateur)
- *.aimap_p
Ambient control file (Professional)
- <racename>waypoints.csv
Race waypoint positioning
- <racename>data.csv
Race waypoint positioning
- <eventname>.csv
Event definition
- mm[blitz|circuit|crash|race]data.csv
Race progression definitions
- multicopwaypoints.csv
Cops and robbers locations
- <cityname>_rewards.csv
Race reward definitions
- <racename>-[a|p]-<n>.opp
Opponent definitions
- <racename>.pathset
Race props
- *.aimap
- <cityname>
- scene
Scene?
- modtypes.ini
Mod types?
- modtypes.ini
- tune
Tuning information
- banger
- camera
- <vehiclename>[_dash].camPovCS
Camera definitions
- <vehiclename>_[NEAR|FAR].camTrackCS
Camera tracking definitions
- <vehiclename>[_dash].camPovCS
- effects
- <effectname>.asBirthRule
Particle effect definition
Particle effects are used in weather, vehicle effects and collisions. The format is described here.
- <effectname>.asBirthRule
- vehicle
- <vehiclename>.aiVehicleData
Ambient vehicle data
- <vehiclename>.asNode
Joystick/Wheel settings
- <vehiclename>.dgTrailerJoint
Trailer joint information
- <vehiclename>.vehCarDamage
Vehicle damage control
- <vehiclename>[_opp].vehCarSim
Vehicle tuning
- <vehiclename>.vehGyro
Vehicle stability
- <vehiclename>.vehStuck
Vehicle instability
- <vehiclename>.vehTrailer
Vehicle trailer information
- <vehiclename>.aiVehicleData
- [rain|snow].asBirthRule
Weather particle effect
- <vehiclename>.asNode
Vehicle control settings
- <vehiclename>_dash.asNode
Vehicle dashboard settings
- <cityname>.cinfo
City definitions
- <vehiclename>.dgTrailerJoint
Trailer joint settings
- <vehiclename>.info
Vehicle information
- menu.csv
- widget.csv
Game interface widgets
- <cityname>.mmHudMap
Hudmap definitions
- <vehiclename>.mmMirror
Vehicle rear view mirror definition
- <texturenamestem>.movie
Animated image sequence definition
- <vehiclename>.vehTrailer
Vehicle trailer information
- anim