Textures

Materials

Unity Materials can be bundled directly inside a mod. The name must be archive_record-frame.mat, where archive is the index of the original TEXTURE file (TEXTURE.XXX), for example 009_1-0.mat.

Alternatively, individual textures can be imported as loose files from StreamingAssets/Textures. They must be named archive_record-frame.png for albedo and archive_record-frame_MapTag.png for others (for example 009_1-0_Normal.png) where MapTag is one of the following:

  • Normal
  • Emission
  • MetallicGloss
  • Xml files can also be used to edit Metallic and Smoothness parameters from loose files. Provide a text file named archive_record-0.xml as shown in the example below.

    <?xml version="1.0"?>
    <properties>
        <metallic>0.5</metallic>
        <smoothness>0.5</smoothness>
    </properties>

    Terrain

    The terrain shader supports albedo, normal and metallicgloss maps for terrain. There are two ways to provide terrain textures:

    • Provider a Texture2DArray asset created with Daggerfall Tools > Texture Array Creator or third party tools. The asset must include all textures of a classic archive and be named after it (i.e. XXX-TexArray).
    • Provide all 56 individual textures with a mod or loose files to generate a texture array at runtime. All textures must be included and have the same resolution and format. MetallicGloss is an exception as a default map for all the missing textures will be created automatically. If you want to support older platforms (without CopyTextureSupport.DifferentTypes) you also need to enable Read/Write flag on all textures, at the cost of higher memory usage. This flag is always enabled for loose files.

    Billboards

    Billboard textures can be imported via dfmods or loose files (StreamingAssets/Textures). In both cases textures must be named archive_record-frame.png and, when required, archive_record-frame_Emission.png. You must provide textures for all frames in a record. XML files can also be added to customize billboard material.

    Archive_Record-0.xml

    <?xml version="1.0"?>
    <info>
        <renderMode>Cutout</renderMode>
        <emission>False</emission>
        <uvX>0</uvX>
        <uvY>0</uvY>
        <scaleX>1</scaleX>
        <scaleY>1</scaleY>
    </info>

    Textures used for exteriors billboards (like animals or lights) are placed on a 4096×4096 atlas for each archive, so the total size of textures must not exceed this value. If you don’t provide the entire archive, imported textures are used together with vanilla without issues. XML files only support scale.

    Archive_Record-0.xml

    <?xml version="1.0"?>
    <info>
        <scaleX>1</scaleX>
        <scaleY>1</scaleY>
    </info>

    Mobile billboards, such as wandering npcs and enemies, requires all textures in a archive to be provided. The following xml files are supported:

    Archive.xml

    <?xml version="1.0"?>
    <info>
        <renderMode>Cutout</renderMode>
        <emission>False</emission>
    </info>

    Archive_Record-0.xml

    <?xml version="1.0"?>
    <info>
        <uvX>0</uvX>
        <uvY>0</uvY>
        <scaleX>1</scaleX>
        <scaleY>1</scaleY>
    </info>

    UI Images

    IMG and CIF/RCI replacements can be named as follow:

  • .IMG: filename.png (ex: MAP100I0.IMG.png) in StreamingAssets\Textures\Img
  • or inside a .dfmod.

  • .CIF, .RCI: filename_record-frame.png (ex: INVE16I0.CIF_3-0.png) in StreamingAssets\Textures\CifRci
  • or inside a .dfmod.

    Weapons

    Weapons with metal variations can be named WEAPON**.CIF-Record-Frame_MetalType, where MetalType is one of following tags:

    • Iron
    • Steel
    • Elven
    • Dwarven
    • Mithril
    • Adamantium
    • Ebony
    • Orcish
    • Daedric

    Inventory Items

    Inventory items with dye variations can be named Archive_Record-Frame_DyeColor, where DyeColor is one of the following tags. Items with default tint (Chain and Silver) can be named Archive_Record-Frame.

    Clothing

    • Blue
    • Grey
    • Red
    • DarkBrown
    • Purple
    • LightBrown
    • White
    • Aquamarine
    • Yellow
    • Green

    Weapon and armour

    • Iron
    • Steel
    • Elven
    • Dwarven
    • Mithril
    • Adamantium
    • Ebony
    • Orcish
    • Daedric

    Paperdoll

    Some paperdoll images require a mask, with full opacity on the alpha channel to mark masked area, and trasparency to mark non-masked area as shown in the picture. Maks must be named Name_Mask (where Name is the name of the main texture) and require Read/Write Enabled flag to be enabled if provided with a .dfmod. For more informations on paperdoll implementation see Items Part 3 – Paper Doll.

    The position on the paperdoll can be changed with an xml file, with the same name as the texture, providing a rect in pixels with the origin on the top-left corner. The original paperdoll has a resolution of 110×184, which is scaled eight times in Daggerfall Unity to achieve a resolution of 880×1472. The xml file should define the scale on which the rect is based, which allows the game to correctly convert the rect to the actual paperdoll scale, ensuring compatibility with future resolution changes.

    <?xml version="1.0"?>
    <info>
        <rect scale="8">
            <x>248</x>
            <y>0</y>
            <width>400</width>
            <height>344</height>
        </rect>
    </info>

    HUD

    Some hud images require additional xml files as shown in the examples below.

    • HUD Compass
      COMPASS.IMG.xml
    <?xml version="1.0"?>
    <info>
        <width>322</width>
        <height>14</height>
    </info>
    • COMPBOX.IMG.xml
    <?xml version="1.0"?>
    <info>
        <width>69</width>
        <height>17</height>
    </info>
    • Crosshair
      Crosshair.png and Crosshair.xml in StreamingAssets\Textures
    <?xml version="1.0"?>
    <info>
        <width>22</width>
        <height>22</height>
    </info>

    Cursor

    Cursor can be overriden with a texture provided by mod using Cursor texture type and Read/Write flag enabled. Import from loose files is not supported.

    Transport

    Horse and cart textures are, respectively, MRED00I0.CFA and MRED01I0.CFA. While the original textures can’t be exported with Daggerfall Imaging, overrides can be provided inside the CifRci folder (ex: MRED00I0.CFA_0-0.png).

    Travel Map

    High resolution overlays can be imported along with the main map texture following the naming TRAV0I00.IMG-RegionName. For example, the overlay for the Ilessan Hills region should be named TRAV0I00.IMG-Ilessan Hills.

    This is the list of region names:

    "Alik'r Desert", "Dragontail Mountains", "Glenpoint Foothills", "Daggerfall Bluffs",
    "Yeorth Burrowland", "Dwynnen", "Ravennian Forest", "Devilrock",
    "Malekna Forest", "Isle of Balfiera", "Bantha", "Dak'fron",
    "Islands in the Western Iliac Bay", "Tamarilyn Point", "Lainlyn Cliffs", "Bjoulsae River",
    "Wrothgarian Mountains", "Daggerfall", "Glenpoint", "Betony", "Sentinel", "Anticlere", "Lainlyn", "Wayrest",
    "Gen Tem High Rock village", "Gen Rai Hammerfell village", "Orsinium Area", "Skeffington Wood",
    "Hammerfell bay coast", "Hammerfell sea coast", "High Rock bay coast", "High Rock sea coast",
    "Northmoor", "Menevia", "Alcaire", "Koegria", "Bhoraine", "Kambria", "Phrygias", "Urvaius",
    "Ykalon", "Daenia", "Shalgora", "Abibon-Gora", "Kairou", "Pothago", "Myrkwasa", "Ayasofya",
    "Tigonus", "Kozanset", "Satakalaam", "Totambu", "Mournoth", "Ephesus", "Santaki", "Antiphyllos",
    "Bergama", "Gavaudon", "Tulune", "Glenumbra Moors", "Ilessan Hills", "Cybiades"