ZLZ Age Importer


On occasion, it may be useful to import ages (made by Cyan or others) into Blender from PRP or AGE files. Importing an age allows you to use Cyan's assets into your own Ages; become familiar with how Ages are constructed; or even work on an Age for which you don't have the BLEND file.

This is where the Zero-Length-Zenith importer ("ZLZ" for short) comes in.

Keep in mind: imported Ages cannot be immediately re-exported. There will be some manual fixing to do. Also, assets you import are still owned by either Cyan, or the person who made the Age. You are however totally allowed to reuse Cyan's assets in your own Ages running on Uru's engine.

Furthermore, neither MagiQuest Online nor HexIsle data will import correctly using ZLZ - you will need to convert their files using Drizzle first, then run ZLZ on the result. Crowthistle on the other hand can be imported as-is without converting it first.


ZLZ requires the Korman plug-in. Make sure you install it before installing ZLZ.

Then, download the ZLZ zip file, and extract its contents. Browse to %APPDATA%\Blender Foundation\Blender\<version number>\scripts\addons, and inside it, paste the zero_length_zenith folder (which contains __init__.py, etc). Alternatively, you can instead install it in C:\Program Files\Blender Foundation\Blender\2.79\scripts\addons. Whichever you prefer, as long as it's not both.

Now, in Blender, go to the User Preferences panel (Ctrl+Alt+U), switch to the Add-ons tab. Search "zero", and activate the plugin. Remember to click "Save User Settings".

While you're on this tab, you may want to edit the "MOUL source textures" path. If you have cloned the MOUL assets Git repository, you may point it to the location of the /moul-assets/sources/textures/tga folder. This allows ZLZ to load the higher-quality original textures instead of the lower-quality ones from the PRPs. Note that this is entirely optional, so if you have no idea what repositories/Git are, you may skip this for simplicity.


Importing an Age or PRP file

This is rather straightfoward. Once the plugin is installed and enabled, select File → Import → ZLZ Uru Importer. You can now select the .age or .prp file you want to import.

Note that if Uru is installed in the "C:\Program Files" folder, you will need to either run Blender as administrator, or copy the AGE, FNI and PRP files you want to import to another folder with write permissions (such as your Documents folder). Otherwise you will run into a "Permission Denied" error, as the importer needs to extract a few files to that location.

The import option File → Import → ZLZ texture extractor is also available. This batch extracts ALL the textures from Uru's DAT folder, which may be useful in some cases.

What to expect from the results

As previously mentioned, ZLZ doesn't import all there is in the PRPs, because of how vastly different Blender/Korman are compared to Plasma. If you really intend to re-export the Age, it might be useful to learn how to use PrpShop (available when you install PlasmaShop). PrpShop is not for the faint of heart as it allows you to dig into the complex PRP format, but can help you figure out what ZLZ fails to import.

Also, here is a small list of things that are worth knowing about the importer:

  • The currently active Blender scene will display the whole Age. But all "pages" (=PRP files) are also duplicated on other Blender scenes (mostly just for convenience).
  • Objects are sorted on various layers depending on their type. Visual objects are generally on the first layer, colliders on the second, regions on the third, and so on.
  • ZLZ will do its best to mimic Plasma materials, however there are some cases where it's simply impossible to do properly. In this case, it will recolor the incorrect material so it's easier to identify:
    • Purple materials means some layer combination failed to import (or ZLZ didn't understand it)
    • Yellow materials means a layer has a rotation component, which means a UV channel needs to be rotated in order for its texture to show up correctly. The rotation amount is stored as a custom property at the end of the Texture panel in the Property Editor.
    • Cyan materials are a combination of purple and yellow materials.
    • Dark green materials means the material itself simply couldn't be found, and may be located in another PRP.

Video tutorial

Calum Traveler made a video which, among other things, shows how to use ZLZ to import an Age.

Reporting bugs

Feel free to report bugs or discuss the plugin in the forum or on the dedicated thread.


ZLZ has a Git repo on Gitlab, if you're interested.

Older stuff

Previously, Age importing was done using the PyPRP Age Importer. It should be considered obsolete, as ZLZ is now vastly superior.