Tobias Pfaff

Researcher. Game programmer. Stingray enthusiast.

Dreamfall Game Data Format

The data structure of the different Dreamfall file types was determined entirely by time consuming (especially in the case of the bundle files) reverse-engineering. Dreamview includes the most up-to-date parsers to read these files, but some of my older command line tools might be useful for modding etc..

Data organisation

Dreamfall organizes its data in .pak packages for the different scenes. The filename table is stored as a hash table, which makes direct listing nearly impossible. DreamView includes a pak file extractor class, which automatically extracts needed files in subdirectories under the Dreamfall pak-path when needed. You can also get an old version of my dreamfall extractor here (sourcecode here). Grumbel from the TLJ Forum wrote a similar extractor, ported some of my tools into C++ and integrated them into a nice GUI (DFT Toolbox). See this (rather old) thread.

Textures

The packages contain textures (.png), though they are not really png files, but mostly DirectX .dds texture files. A number of viewers (e.g. the viewer that comes with the DirectX SDK) support these files. There’s also a Photoshop plugin on the Nvidia developer pages. Some of the files (those with alpha or normal vectors/tangent data etc.) are in a proprietary binary format, similar to DXN.

Control files

Dreamfall apparently uses the commercial Shark3d as underlying graphics and game engine. Control files are used to describe configuration (/data/config), scene descriptons (/data/generated/locations/.cdr), model information (.sir), skeletal data (.skr), shaders (/art/shaders/ .sgr *.sdr), dialogues and game events. The control files (.cdr, .sir, .skr, …) use a common binary chunk file format. You can use this tool (source code) to decompile all shark3d files in the current directory to text files. For control file modding, use this graphical editor (source code), works like the Windows registry. DFT also features a decompiler/recompiler, but is are based on my old code which contains a bug in the recompiler. So DFT should be used only for decompilation. Modding (texture + control files) is discussed in this thread.

3d model data

The actual 3D data is stored in binary .bun bundle files. It contains vertex coordinates, static keyframe animation data and some metadata. Object in the bundle files do not always represent visible object, but also collision data, detection volumes etc.

Bone-based Animation data

The animation data for characters are stored in /art/…/animations/*.bpr. It consists of spline paths for bone animation. Some (rare) animations are encoded in Shark3d chunk format, the majority in a proprietary binary format, which, to make things worse, also features a nonstandard 16bit float format. :) Rotations are represented using quaternions. There are 4 coefficients (time to the power of 0 to 3) for the spline interpolation.

See also

This post has been moved here from my old blog