Asset Extension

When Force imports assets, it also stores additional data about the asset, such as what import settings Force should use to import the asset, and where the asset is used throughout your project. Below is a description of how this process works (Also i want to say i do similar Asset System as Unity does):

  • When Force imports an asset, it first generates a special Handle (unique identifier) for it so that it is unique. We will talk about uniqueness and these subtleties later.

  • Then, when the Handle has been attached to the asset, Force creates a special hidden extension file (.ext) in which additional information about the imported asset is stored.

  • The asset is being loaded and finish import.

When you change or delete or perform some operation with an asset, Force will re-import it. When Force re-import asset you can see that on top of editor taskbar or in Status Bar.

Handle (Unique Asset Handle's)

Force periodically checks the Assets folder and checks if there have been any changes there. When you add a new file or folder to the Assets folder, Force notices this and if he didn't know anything about this asset, then he will import it.

And if it is a new asset, Force generates a unique identifier for it. At the moment it is a 64 bit binary number. These identifiers are not displayed in the editor.

Asset Handle Rules

This chapter for advanced users.

  • All assets should not have identical AssetHandle, because that break asset and made unusable another with same AssetHandle.

    • Problem: Basically you never can get second asset with same AssetHandle. And problem is that, when Force Asset Manager search assets, it search it by Handle. And AssetHandle is Unique Identifier of that asset, so when Asset Manager finds the first asset with this AssetHandle, it just gets its back, and made actions with it. But what if we want second asset with this AssetHandle, because it has different path on disk or type? This never gonna happen, because we already find the asset by AssetHandle and get it back, and we can never get to second version of itself. Only if write overcomplicated code that not be making any seans at all plus will slow that asset system. In other words its just break the assets and actually definition of AssetHandle in general.

  • Asset physical file and .ext file should always be placed in one folder. If not this asset be will broken and Force just reimport or delete it.

Conclusion: In no case do not duplicate or copy assets from other projects if they have the same AssetHandle!

Extension Files

This picture shows roughly how Force imports assets, namely creates .ext files for regular files and folders. Asset extension files are hidden in the Assets Browser and OS Explorer and you can't see them, but you can enable the display of hidden system files in your OS.

Importing assets structure

However, these .ext files are not visible in the Browser because they are hidden by default. To make them visible, open the Preferences -> Editor -> Hide Asset Extensions Files setting and enable it.

As i said early (section 2) when Force creates a .ext file for an asset, it writes the asset’s UID inside the .ext file and stores the .ext file in the same location as the asset file.

The .ext files contain the unique AssetHandle assigned to the asset, and values for all the import options you see in the Inspector window when you select an asset in your Assets Browser. For example, for a Texture, this includes the Texture Type, Wrap Mode, Filter Mode and import options.

Asset .ext file description

Importers

Also now Force have for each group of assets a Importer. Importer describes how asset will be imported depends on its type. For example a TextureImporter will be used for images with (.png, .jpeg, .jpg formats) and contains data relative to that texture. At this moment Force has a few importers:

  • Default Importer (used for Folders, Scripts, and simple files).

  • Audio Importer (used for Audio related assets)

  • Texture Importer (used for Image related assets)

  • Prefab Importer (used for Prefab related assets)

  • Preset Importer (used for Presets related assets)

  • TrueTypeFont Importer (used for True-Type fonts assets)

Extension files and Physical asset files

If you move or rename an asset within Force own Browser, Force also automatically moves or renames the corresponding .ext file. However, if you move or rename an asset outside of Force (that is, in Windows Explorer), you must move or rename the .ext file to match. Otherwise you break the asset.

If an asset loses its physical file (for example you delete it physical file outside the Force, but forgot to delete its .ext file) Force marks this asset as broken and just delete it entirely (i.e is .ext file, if it was exist), and also from Global Assets Database and you will not longer have access to it. Because asset witch lose its physical file, lose all its functionality. Only for folder assets Force generates new empty folder.

If an asset loses its extension file (for example, if you move or rename the asset outside of Force, but don’t move or rename the corresponding .ext file), any reference to that asset is broken in your project. In this situation, Force notices that the asset does not have a corresponding extension file, generates a new one for the moved/renamed asset as if it is a brand new asset. So in that case your asset will be reimported with new AssetHandle.

From 0.4.0 and 2025.b1, Force not longer contain any break asset, for example if we lose .ext file, asset will be reimported, or if we lose its physical file, asset will be deleted completely.

Last updated