- Daggerfall Imaging 2
Opens and exports Daggerfall’s image files.
Textures can be easily imported at runtime, in a similar way to recent TES games, placing files (in .png format) inside StreamingAssets\Textures.
The name of the texture should be archive_record-frame.png, for example 009_1-0.png. If you aren’t familiar with daggerfall naming, the first number is the name of the package where textures are stored (ARCHIVE.XXX, ARCHIVE.009 in our example), the second number indicates this is the n texture of the archive (1 means is the second one), and the third number is the frame, used only for animated billboards. Textures for static models always have frame – 0.
You can also release optional bump maps (archive_record-frame_Normal.png, for example 009_1-0_Normal.png), and if you release textures with illuminated surfaces (like a wall with a window) you need to create emission maps (archive_record-frame_Emission.png). This is not necessary if the emission surface is the whole texture (lamps, etc.).
filename.png (ex: MAP100I0.IMG.png) in StreamingAssets\Textures\Img
Images can also packed in a single .dfmod bundle. Import a texture file (with any format) with the Unity Editor and, if required, set import options. A good choice for this kind of textures is Texture Type: GUI with mipmaps disabled. Remember to set Non Power of 2: None and, if required, enable Alpha is Transparency.
Cif and Rci
filename_record-frame.png (ex: INVE16I0.CIF_3-0.png) in StreamingAssets\Textures\CifRci
CIf and Rci can also be packed into .dfmods. Refer to instructions For Img files above and set texture type to Default or GUI, depending on texture purpose.
Images used as background in the inventory and charachter window (SCBG0*.IMG) need to be provided without the frame, as the one seen in game is the frame on the main texture for each of the two windows (INFO00I0.IMG and INVE00I0.IMG).
First Person Weapons
Weapons used by the player have several variations for different kinds of metal. Vanilla textures use a color tint to achieve this; when importing custom textures, we use entirely different images.
- metalTag, original color
- Iron, Grey
- Steel, Light grey
- Chain, Silver
- Silver, Silver
- Dwarven, Yellow
- Mithril, Blue
- Adamantium, Dark grey
- Ebony, Black
- Orcish, Green
- Daedric, Red
Ex: WEAPON04.CIF_0-0.Png for Iron –> WEAPON04.CIF_0-0_Iron.Png
Some weapons (like hands and feet) don’t have metal type variations, so they use the usual WEAPON**.CIF_Record-Frame.png
Look here for the complete list of weapons.
HUD and UI elements
Certain UI images need additional informations. These are provided using .xml files, each one with the same name as the texture file it refers to and placed in the same folder. width and height parameters affect the size on screen. Here are provided the defaults values, but it’s possible to customize them.
- HUD Compass
Crosshair.png and Crosshair.xml in StreamingAssets\Textures
Daggerfall Unity UI
It is possible to customize the window interface used to load saves, placing custom textures inside StreamingAssets\Textures.
While it is not required for swapping texture images, it is possible to use xml files to customize the labes of buttons.
- Change text color
- Remove text (to draw text on texture)
Interiors and NPCs
Texture replacement for billboards support animations (you can have as many frames as you want, even more or less than vanilla) and emission maps.
For a simple texture swap, only texture files are needed. They will have the same size as vanilla, regardless of resolution. The dowside is that they need to have the same proportions as the original textures or they’ll look stretched.
But if you want to follow the power of two rule, you can do so if you take care of telling the game how the texture should be displayed on the billboard mesh. Specifically, you need to provide an xml file with the position of the lower-left vertex on the uv map. All frames share the same file.
Tipically, you want to avoid wasting texture space, so you only need to write the x or y value and the other will be set to the default value of zero.
If you want to customize the size of the mesh you can do so with the xml file. All frames share the same file. (1:1) means the same size as vanilla, (1:2) has a double height, (0.5:1) is half as wide. If you want to customize only one of the values, you can omit the other one.
All textures from an archive (which corresponds to a climate) are placed on a 4096×4096 atlas, so the total size of yout textures must not exceed this value. If you don’t provide the entire archive, imported textures are used together with vanilla without issues.
Each enemy has its own archive, plus a death graphic. When replacing textures, remember to include all of them.
It is possible to import albedo, normal and metallicgloss maps for terrain, provided the texture array system is supported on the local platform and enabled (you can check it from the advanced settings window).
It’s important to note that all textures from an archive must be present and they must have the same resolution. For example, you can use 512×512 for albedo and 128×128 for normal, but all the albedo must be 512×512 and so on. MetallicGloss is an exception as a default map for all the missing textures will be created automatically.