Unreal (.zip)
Awaken imports Unreal projects from a .zip, decoding static-mesh geometry and albedo textures and - when the pack ships .umap levels - the actual scene layout. This is the youngest of the three engine importers, so this page is explicit about what works and what does not yet.
What Awaken reads
An Unreal .zip is recognised by a .uproject file. Awaken scans the archive for .uasset packages (identified by their package magic) and sorts them by folder convention:
- Meshes - assets under a
Meshes/folder, orSM_-prefixed assets. - Textures - assets under a
Textures/folder. - Materials - assets under a
Materials/folder.
Unreal's binary .uasset/.umap formats are decoded directly (the StaticMesh geometry lives in a block-compressed MeshDescription bulk section). No Unreal Engine is involved.
What imports today
Static meshes
StaticMesh geometry decodes to positions and UVs; normals are recomputed. Each decoded mesh is registered and welded like any other import. Not every StaticMesh decodes - the import report tells you how many succeeded (for example, "decoded 47/52 StaticMeshes (the rest are placeholders)"), and undecodable meshes are listed individually with a reason.
Materials and textures
Albedo textures (Texture2D) are extracted to PNG. Unreal stores texture source as BGRA, so the red and blue channels are swapped back on decode. Normal, roughness, metallic, mask, and similar maps are skipped - albedo only.
Each material is mapped to its real albedo texture by reading the material's own texture imports (name heuristics fail for tiling surfaces, so the import list is authoritative). If a material's texture can't be resolved, Awaken falls back to the material's name stem, then to the pack's main atlas, and finally to untextured grey - a wrong texture is never guessed.
Scene layout
When the pack ships .umap levels (the *_BuiltData lighting caches are skipped), Awaken reads each StaticMeshActor's mesh reference and world transform, plus the level's lights, and reconstructs the scene. The first level that ships a post-process grade or sky light drives the Render Settings. If no level produces placements, Awaken falls back to a grid of every decoded mesh so you can still see them.
Lights and post-FX
Directional and point lights import, with their intensities remapped from Unreal's lux/candela ranges onto Awaken's, and point range taken from the attenuation radius. A PostProcessVolume grade (exposure, contrast, saturation, vignette, bloom, colour filter) and a SkyLight (ambient intensity and tint) map onto the render settings.
Coordinate conversion
Unreal is Z-up, left-handed, and measured in centimetres; Awaken is Y-up, right-handed, and metric. Mesh vertices swap Y and Z and scale by 0.01. Actor placements use the matching maps so they line up with their geometry:
| Quantity | Unreal → Awaken |
|---|---|
| Position | (x, z, y) × 0.01 |
| Scale | (x, z, y) |
| Rotation | (x, z, y, −w) |
Not supported yet
Be aware of these gaps before importing an Unreal pack:
- No cameras - camera actors are not imported.
- No colliders - no collision shapes come across; you'll author physics in Awaken.
- No prefabs or instance grouping - actors are flattened into the scene; there's no prefab-per-model as with Unity/Godot.
- One material per mesh - no per-instance material overrides (re-skins).
- Albedo only - colour and the albedo map, no other PBR maps.
- Partial mesh decode - some StaticMeshes may import as placeholders.
Because of these gaps, an Unreal import is best treated as a way to get geometry and rough layout into Awaken, then finish materials, physics, and organisation in the editor.
📸 Screenshot - save as img/import-unreal-result.png
An imported Unreal level in the Awaken viewport, with the Console showing the import report (decoded mesh count and any placeholders).
See also
- Importing Assets - the pipeline and support matrix
- The Import Dialog - choosing files and the texture cap
- Colliders on import - what physics data survives (none, for Unreal)
- Console - where the import report appears
- Physics Overview - authoring colliders after import