Difference between revisions of "Talk:World Data Files"

From The Ghar Station Wiki
Jump to: navigation, search
(Created page with "== Terrain chunks == Terrain in RIFT is split into "chunks". Each chunk is represented by a 256x256 mesh stored as a NIF file. The chunks are stored in the Asset Files...")
 
(editing the stupid talk page and not the real page)
 
Line 1: Line 1:
== Terrain chunks ==
 
  
Terrain in RIFT is split into "chunks". Each chunk is represented by a 256x256 mesh stored as a [[NIF]] file.
 
 
The chunks are stored in the [[Asset Files]] and the name can be generated using the following template:
 
 
Terrain chunks have two types, a far LOD and a close LOD version.
 
 
<nowiki>%s_terrain_%d_%d_%s.nif</nowiki>
 
 
Where the parameters are:
 
* World name
 
* integer X co-ordinate
 
* integer Y co-ordinate
 
* type of the terrain. For close terrain, this should be '''"split"''', for far it should be '''"lod_split"'''.
 
 
 
The X/Y co-ordinates are 256 aligned, and you can find out the available chunks by searching from 0 to some large value in 256 increments. Eg:
 
 
* '''world_terrain_0_0_split.nif'''
 
* '''world_terrain_256_0_split.nif'''
 
 
== World Objects ==
 
 
The static world objects are stored within CDR files. These files are in [[DAT Format]] and are stored as binary serialized data.
 
The filename is similar to the terrain chunks above except without the LOD and have a CDR extension. This means that each chunk of terrain also has a corresponding CDR file.
 
 
*'''world_terrain_0_0.cdr'''
 
 
The initial class within the CDR file is '''107''' and in general looks something like this:
 
 
class _107:
 
    _600[] elements;
 
    byte[] data;
 
    _108[] elements;
 
 
Where '''_600''' and '''_108''' refer to "classes".
 
The unknown '''data''' appears to be occlusion related and is of no use to us.
 
 
== class 600 ==
 
 
  class _600:
 
      int ID;
 
      string objectName;
 
      // array of objects, generally like so:
 
      array {_602, _603, _601, _826}
 
 
== class 602 ==
 
 
This class appears to contain a single integer which is key to an entry in Dataset 623 within [[telara.db]]
 
 
== class 603 ==
 
 
This class contains a reference that links the object to it's NIF and [[HKX]] data, as well it's position, rotation and scale within the world
 
 
  class _603:
 
      int ref;
 
      array of floats { posX, posY, posZ }
 
      array of floats { quaternion.x, quaternion.y, quaternion.z, quaternion.w }
 
      int ref2;
 
      array of floats { pos2X, pos2Y, pos2Z }
 
      float scale
 
 
Keep in mind that due to the way the deserialization protocol works ( see [[DAT Format]] ) in that it skips empty members, that some classes or members may not exist.
 

Latest revision as of 14:30, 13 April 2017