Converted Content Specification
All content of the game is hidden behind multiple formats and a layer of compression (for more information, read FEZ Content Formats), which makes them very hard to access for modders. In order to work around this, FEZRepacker was created to allow an easy conversion between these proprietary formats and more user-friendly ones. Additionally, Repacker is included as part of HAT mod loader, allowing the game to directly access the content without having to convert it back to its own format, giving us a seamless modding experience.
This specification explains a general approach of content conversion and a structure of converted assets. To get more detailed information about the specific asset format, consult the specific format reference.
File bundles
Some asset types are converted to multiple files - for example, Art Objects are converted into a PNG, OBJ and JSON to store texture, model and properties respectively. Additionally, some of the types use common formats like JSON. In order to allow easy identification of asset type through converted file, as well as grouping of files belonging to the same asset, a concept of file bundles was introduced.
Repacker uses multiple extensions in a file name to identify a file. For instance, a file bellao.fezao.png
has a primary extension .png
which allows common softwares to easily identify it as an image file, and secondary extension of fezao
which allows Repacker to identify it as a part of FEZ's Art Object asset. File bundles are a set of multiple files sharing common name and secondary extension. In the process of deconversion, Repacker bundles them together and converts them into a single content object that can be read by the game.
Asset formats
All formats have been chosen to represent their in-game counterparts as accurately as possible. However, there are some differences, which are specified in details in the specifications of given format.
Here's a list of all 13 asset types handled by FEZ and file types Repacker associates them with:
XNB content type name | Main purpose | Conversion format |
---|---|---|
Texture2D | Sprites and textures | PNG images |
AnimatedTexture | Animated textures | GIF animation |
ArtObject | 3D models of art objects | Custom .fezao file bundle |
TrileSet | Texture and models of level blocks (triles) | Custom .fezts file bundle |
SpriteFont | Bitmap font | Custon .fezfont file bundle |
Dictionary[String,Dictionary[String,String]] | Language texts | .fezdata.json JSON file |
Level | Level data | .fezlvl.json JSON file |
MapTree | World map data | .fezmap.json JSON file |
NpcMetadata | NPC behaviour information | .feznpc.json JSON file |
Sky | Skybox structure | .fezsky.json JSON file |
TrackedSong | Song information | .fezsong.json JSON file |
Effect | Binary XNA effect file container | Binary FNA effect file |
SoundEffect | WAV sound effect container | WAV sound file |