A work-in-progress repository containing templating and reading scripts and file examples of different filetypes used within Gameloft games.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
engines/Gameloft
README.md

README.md

Game Engines Filetypes Reverse Engineering

A work-in-progress repository containing templating and reading scripts along with file examples of different filetypes used within game engines.

Contents:

Engines

List of engines (or companies if engine name is unknown) which files are to be explored.

Filetypes

List of filetypes which are either already known, at parsing stage or planned to get parsed.

Status legend:

  • #00FF00 Known type
  • #FFBB00 File can be parsed but some fields are unknown
  • #FFFF00 Parsing in-progress
  • #FF0000 Filetype is planned for future

Gameloft Engine

Extension Description
.bar
.bdae 3D model including mesh, materials, textures, nodes, bones, SFX, animations.
.beff Visual effects that can be attached to .bdae nodes.
.bin
.dat
.ikp
.itm Contains data about different .bdae models placed on a terrain chunk. Implicitly bound with .trn by game world position.
.msk
.nav
.phy
.riff
.shw
.sfx
.trn Represents a terrain chunk of 64x64 size. Known info: heightmaps.
.wld
... ...

Templates code-style

Extension templates are mainly written using 010 Editor (any other templating application is OK as long as it allows making file-parsing scripts). While using it, a good way is to visualize parsed parts of a file even if particular byte sequence meaning is unknown to you. You should also stick to this styling even if you can parse every byte of a certain extension since there can be one file with extra information which is not handled by your template.

Color scheme used by me (and proposed for usage by any contributor) is similar to status legend at Filetypes section:

  • 0x00FF00 - known meaning of byte sequence;
  • 0x00FFFF - byte sequence usage is known but meaning is not (for example, 4-byte value can be an offset to unknown region);
  • 0xFFBB00- byte sequence contains a constant zero value across multiple file examples and has unknown meaning;
  • 0x0088FF - byte sequence contains a constant non-zero value across multiple file examples and has unknown meaning;
  • 0x0000FF - unknown meaning of byte sequence.

Keep in mind, that 010 Editor colors are written like BGR, not RGB.

Directory structure

A well-structured storage is easy to search to maintain! That's why a certain logic should be used. In our case, we can have multiple game engines use same extension but those files be of different types.

A top-level directory engines is used to contain game engines folders. Navigating to certain engine will show a list of folders with extensions supplied as folder names. In case a filetype can be of multiple versions, every version (prefixed with v) is contained as a separate folder. Inside extension folder (or its version) there must be scripts and templates folders.

Example structure:

engines/
├── Gameloft/
│   └── bdae/
│       ├── v0.0.0.779/
│       │   ├── samples
│       │   │   └── elf_low_h.bdae
│       │   ├── scripts
│       │   │   └── bdae_import.cs
│       │   └── templates
│       │   │   └── BDAE.bt
│       └── v0.0.0.946/
│           ├── samples
│           ├── scripts
│           └── templates
│               └── BDAE.bt
├── Frostbite/
└── General/