FTL file format

From Arx Libertatis Wiki
Revision as of 19:47, 7 December 2013 by Nemyax (talk | contribs) (Created page with "This format is used for game resources such as props, items and characters. The game's loader for the format is in '''graphics/data/FTL.cpp'''. The format header is '''graph...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This format is used for game resources such as props, items and characters.

The game's loader for the format is in graphics/data/FTL.cpp.

The format header is graphics/data/FTLFormat.h.

Contained Data

The FTL format contains the following data:

  • Geometry, rendering and control:
    • Vertices (including colour and normal), faces and UVs
    • Texture map names
    • Named vertex groups for specifying bone influences (only one bone per vertex is supported)
    • Action points (points of interest on the model, where things can be attached, etc.) that reference vertices to specify coordinates
    • Vertex selections for conditional geometry rendering
    • Origin coordinates specified by referencing a vertex; the reason for including this is unclear, because it's always zeroes anyway
  • Cylinder (purpose unknown)
  • Something labelled progressive data (not used in the game)
  • Clothes (not used in the game)
  • Collision spheres
  • Physics box

An FTL file has only one object, without an object hierarchy or kinematics information.

Adequacy

The format appears to have had a conflicted development history. This is evident from dead-end features and data redundancy.

It is also unnecessarily complicated in that it uses PKWARE compression (even though the game assets normally reside in compressed archives anyway) and, in its raw form, includes a checksum. Otherwise, it is easy to parse.

Lack of extensibility is a serious shortcoming: the format does not provide storage for custom data that could be interpreted by future iterations of the engine in arbitrary ways.

Use in Modding

An FTL addon for Blender is currently in development. Full support for FTL import is planned.

As regards FTL export, the team is currently undecided whether it's worth implementing. It's possible that engine support for a different format alongside legacy FTL would make more sense in the long run.