Asset Pipeline

The game will automatically build any assets that are out-of-date when it is running. Assets are built by creating run-time efficient versions which are read by the game. These alternate versions are stored in the %appdata%/FuturePerfect/build/packages directory.

The following asset types are supported:

Files in the asset directory which are not one of these types will be ignored.

The game can be setup to build the assets from the comment line like this: Game.exe -build_assets <output_path>

build_options Files

The building of most asset files can be customized by creating a build_options file. The build_options file is a SJSON file in the same directory as the asset file. The options file is named by appending .build_options to the asset file name. For example, the options file for model.fbx would be model.fbx.build_options.

The format of the build_options file depends on the asset type that it is modifying.

Fbx build_options

generate_model - a boolean specifying whether or not the FBX file should generate a corresponding .model file

generate_animations - a boolean specifying whether or not the FBX file should generate corresponding .animation files.

scale - a multiplier to applied to the model/animation's scale before exporting.

translation - an array of 3 numbers specifying the x,y, and z translation applied to the model/animation before exporting. Translation is applied after scaling and rotation.

rotation - an array of 3 numbers specifying the pitch, yaw, and roll rotations applied to the model/animation before exporting. The numbers are specified in radians. Rotation is applied before translation.

clips - an array of Clip values specifying each of the animations that will be extracted


name - a string giving the name of the clip. The name is used to generate the file name of the built animation clip

start - frame number that the animation clip starts on.

end - frame number that the animation clip ends on (the animation does not include this frame).

loop - a boolean indicating if the animation clip is intended to loop.

relative_to - frame number that the animation will be made relative to. This essential "subtracts" that frame from the animation so that at run-time it can be played back on top of another animation.

speed - a multiplier for the playback speed of the animation.

events - an array of Event values specifying named frames in the animation.


name - a string giving an identifier for the event. The name doesn't have to be unique, and multiple events with the same name can appear in an animation.

frame - frame number (relative to the first frame of the animation) that the event occurs on.

Texture build_options

normal_map - boolean indicating whether or not the texture will be used as a normal map. Normal maps are encoded in a special way for the engine, so this flag must be set for them to work properly.

compression - the compression to be applied to the texture. Valid options are default, none, dxt1, dxt3 and dxt5. If default is selected (which is the default) then the compression will be determined based on whether or not the texture is a normal map and has an alpha channel.

Implied options

If no build_options file is specified for a texture file, the build system will use different default options based on some conventions.

If the asset file name ends in _n or _normal (for example wall_n.psd) the texture is assumed to be a normal map.

The compression for the texture is automatically determined according to the rules for none in the compression field.


The asset system itself can be configured with a global builder.build_options file placed in the root of the assets directory.

excluded_patterns - an array of strings specifying MS-DOS style patterns for files to exclude from the build process. For example: excluded_patterns = [ "*_dDo.psd" ] will exclude all Photoshop files that have _dDo at the end of their name.