# 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.

<figure><img src="/files/TID0aFVgJ5B85wtkQsIe" alt=""><figcaption><p>Importing assets structure</p></figcaption></figure>

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](#asset-uid-rules) (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.

<div align="left"><figure><img src="/files/tiBWAGEuaqbUtyJPZLho" alt=""><figcaption><p>Asset .ext file description</p></figcaption></figure></div>

### Importers

Also now **Force** have for each group of assets a **Importer. I**mporter 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**](/force/other/updates/force-0.4.0.md) 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://danil-dukhovenko.gitbook.io/force/force-editor/assets/asset-extension.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
