AI-generated documentation
These docs were generated with the help of AI and may contain inaccuracies. If something looks wrong, please open a ticket in our Discord server and we will get it corrected.
Substance Painter Addon
The Phlanka DayZ Exporter is a Substance Painter plugin that exports your painted textures in the
formats DayZ expects, and optionally generates the
.rvmat
material file and a
config.cpp
class definition — all from a single dialog inside Substance Painter.
Everything the plugin produces lands in a folder of your choice. You walk away with ready-to-use DayZ texture files and, if you want, the supporting material and config files as well — no manual channel packing or file renaming required. Full UDIM / UV tile support means multi-tile meshes export each tile separately with correct filenames automatically.
Installation
The plugin is delivered as a .zip file.
You do not need an installer — just extract the folder and place it in the right location.
-
1
Download the zip
Download the plugin zip from your Phlanka dashboard.
-
2
Extract the zip
Extract the zip file. You will get a single folder called
Phlanka_DayZ. Do not rename this folder — Substance Painter loads the plugin by that exact name. -
3
Copy the folder to the plugins directory
Move or copy the
Phlanka_DayZfolder into your Substance Painter plugins directory:Platform Plugins folder path Windows C:\Users\YourName\Documents\Adobe\Adobe Substance 3D Painter\python\plugins\ macOS /Users/YourName/Documents/Adobe/Adobe Substance 3D Painter/python/plugins/ If the
pluginsfolder does not exist yet, create it manually. The final structure should look like:python/
plugins/
Phlanka_DayZ/
__init__.py
custom_export.py
... -
4
Launch Substance Painter
Start (or restart) Substance Painter. The plugin loads automatically on startup — no manual enable step is required. You will see a DayZ Export menu appear in the top menu bar.
-
5
Activate your license
Open any project, click DayZ Export → DayZ Export Options, then go to the About tab to enter and activate your license key.
Do not rename the folder
The folder must be named exactly Phlanka_DayZ.
Renaming it will prevent Substance Painter from loading the plugin.
Getting Started
Once the plugin is installed and your license is activated, open any Substance Painter project and follow these steps.
- 1 Paint and bake your textures as normal inside Substance Painter.
- 2 In the top menu bar, click DayZ Export to reveal the plugin menu.
- 3 Click DayZ Export Options to open the main export dialog.
- 4 Start on the Texture Sets tab — choose which tiles to export and fill in the hidden selection names.
- 5 Move through the remaining tabs as needed, then click Export at the bottom.
The dialog has six tabs — click any to jump to that section:
Texture Sets
Select which UV tiles to export and set hidden selection names per tile.
Export
Set output path, resolution and which texture types to export.
RVMAT Settings
Configure and generate the .rvmat material file.
Config Settings
Generate a config.cpp class definition.
Materials Library
Browse and apply pre-made DayZ materials.
About
License info, version number, and language selection.
No project open?
If no Substance Painter project is loaded when you open the dialog, most controls will be
disabled and a notice will appear asking you to open a project first. Load your
.spp
file, then re-open the dialog.
Texture Sets Tab
The first tab in the dialog. This is where you control which texture sets and UV tiles are exported, and where you set the hidden selection names and image base names for each tile. You will use this tab on every export.
Select All / Deselect All
Two buttons appear at the top of the tab, above all texture set groups. They check or uncheck every tile across all texture sets in one click — useful when you have many sets and want to quickly enable or disable everything before making individual adjustments.
Texture sets that have multiple UDIM tiles also get their own per-group Select All / Deselect All buttons inside the group box, so you can control each set independently.
Texture Set Groups
Each texture set in your Substance Painter project appears as its own labelled group box. Inside each group, every UV tile is shown as its own row with three columns:
| Column | What it does |
|---|---|
| Tile | A checkbox labelled with the UDIM number (e.g. 1001, 1002). Uncheck a tile to skip it entirely — no textures are exported for it and it is not included in the config. |
| Hidden Selection Name | The name of the hidden selection on your 3D model that this tile corresponds to. This value goes into the hiddenSelections[] array in config.cpp. No spaces or special characters. Required when Config Generation is enabled. |
| Image Base Name (optional) | The first part of the exported filename. If left empty, the hidden selection name is used instead. For example, if you enter sword_blade, the colour texture will be named sword_blade_CO.png. |
Single-tile vs UDIM texture sets
Texture sets without UDIM tiles show a single row labelled
1001.
Texture sets with multiple UDIM tiles show one row per tile
(1001,
1002,
1003, …).
Each tile is exported independently — you can choose to export only specific tiles by
unchecking the others.
What hidden selections do
Hidden selections are named regions defined on your 3D model's geometry in Object Builder or Blender.
The hiddenSelections[]
array in config.cpp
lists them, and
hiddenSelectionsTextures[] /
hiddenSelectionsMaterials[]
map each one to a texture path and an RVMAT path. The plugin fills all three arrays automatically
from the names you enter here and the files that are exported.
The name you enter must exactly match the selection name defined in your model. A mismatch means the texture will not be applied in-game.
Export Tab
The second tab in the dialog. Controls where files are saved, how large they are, and which texture types are produced.
Export Preset Bar
Sits at the top of the dialog (above the tabs). Lets you save and restore your entire export configuration so you do not have to re-enter the same settings for each project. See Export Presets for full details.
Lists all saved export presets by name. Select one to instantly load its settings.
Saves your current output path, resolution, texture checkboxes, and SMDI channel mapping as a named preset.
Removes the currently selected preset after a confirmation prompt.
Output Location
Shows the currently selected export folder. All textures, RVMAT files, and config.cpp are saved into this single folder.
Opens your OS folder browser. Navigate to your target folder and click OK.
CustomExports
in the same directory as your open .spp file.
Output Resolution
A dropdown that sets the pixel dimensions of every exported texture. All textures are always square.
| Resolution | When to use |
|---|---|
| 1024 | Small props, items held in hand. |
| 2048 | Most DayZ assets. Good balance of detail and file size. |
| 4096 | High-detail assets, large clothing or vehicles. |
| 8192 | Maximum detail. Very large files — use sparingly. |
Texture Type Checkboxes
One checkbox per texture type. Only ticked types are exported.
Always ticked by default. Exports the base colour texture.
Exports the composite specular/metallic/glossiness texture. Has a Customise button — see SMDI Channels.
Exports the normal map in DirectX format.
Exports the ambient occlusion composite.
Exports the emissive map. Only exports if an Emissive channel exists in the texture set — see Texture Types.
Export Button
The large button at the bottom of the dialog. Starts the export process and shows a progress bar as each tile is processed. Before starting, the plugin validates that all required fields are filled in — a dialog describes anything that needs correcting.
Texture Types
DayZ uses multiple texture maps to build up the final appearance of a surface in-game. Each is a separate PNG file. Tick the corresponding checkbox on the Export tab to include it in the export.
The base colour of the surface. Reads all three colour channels (R, G, B) directly from Substance Painter's Base Color document channel. Every DayZ asset needs a CO texture.
Base Color channel
RGB (full colour)
PNG, 8-bit
Encodes surface detail without adding extra geometry. DayZ uses the DirectX convention. The plugin automatically uses Substance Painter's built-in DirectX normal map output — you do not need to flip the green channel manually.
Generated Normal (DirectX)
RGB
PNG, 8-bit
A composite texture where each colour channel carries different surface data. Default channel layout:
| Channel | Default source | What it controls in DayZ |
|---|---|---|
| R | White (solid fill) | Specular intensity |
| G | Metallic (greyscale) | Metallic value |
| B | Glossiness (generated) | Surface smoothness |
All three channels can be changed. See SMDI Channel Customisation.
Configurable per-channel
RGB (independent)
PNG, 8-bit
Carries ambient occlusion data — the subtle darkening in crevices and tight corners. The Green channel holds the AO data; Red and Blue are filled with solid white. You need a baked or painted AO channel in your texture set for this to be useful.
AO (greyscale)
White (solid fill)
PNG, 8-bit
Used for surfaces that emit their own light — indicator lights, glowing elements. Where the EM texture is bright, the surface will glow in-game even in complete darkness.
If no Emissive channel exists in the texture set, the export is silently skipped for that
tile and a message is printed to the log. When EM is exported, the plugin automatically sets
the emissive multiplier in the RVMAT to 1,1,1,1;
when not exported it is set to 0,0,0,0.
Emissive channel
RGB (full colour)
PNG, 8-bit
File Naming
File names are driven per tile from the Texture Sets tab. There is no longer a global prefix — instead each tile has its own Image Base Name field.
| Part | Where it comes from |
|---|---|
| {BaseName} | The Image Base Name field for this tile in the Texture Sets tab. If left empty, the Hidden Selection Name for that tile is used instead. |
| {UDIM} | The UDIM tile number (e.g. 1001, 1002). Only included for texture sets that have multiple UV tiles. Single-tile sets omit this part. |
| {TYPE} | The texture type: CO, NOHQ, SMDI, AS, or EM. |
Single-tile: {BaseName}_{TYPE}.png
Multi-tile: {BaseName}_{UDIM}_{TYPE}.png
Worked example — single tile
Image Base Name: sword_blade
sword_blade_CO.png
sword_blade_NOHQ.png
sword_blade_SMDI.png
sword_blade.rvmat
Worked example — UDIM tiles
Image Base Name: table_body · Tiles: 1001, 1002, 1003
table_body_1001_CO.png
table_body_1001_NOHQ.png
table_body_1002_CO.png
table_body_1002_NOHQ.png
table_body_1003_CO.png
table_body_1003_NOHQ.png
config.cpp
All files land in the same output folder. The config.cpp is a single file regardless of how many tiles exist — it references all checked tiles inside its hidden selections arrays.
SMDI Channel Customisation
The SMDI texture packs three independent data sources into a single image. By default the channels are set to R = White, G = Metallic, B = Glossiness — but you can change any of them.
Opening the Customise Dialog
On the Export tab, tick the SMDI checkbox. A small Customise link button appears immediately to its right. Click it to open the SMDI Channel Configuration dialog.
Inside the SMDI Dialog
Three rows — one per channel (R, G, B), each with a dropdown listing every available source. Your choices are saved automatically and used on the next export.
Restores all three channels to R = White, G = Metallic, B = Glossiness.
| Option name | What it reads | Notes |
|---|---|---|
| White | Solid white fill (255 across the full channel) | Default for R. Channel will be completely white. |
| Black | Solid black fill (0 across the full channel) | Effectively disables the channel. |
| Roughness | Roughness channel (greyscale) | Higher values = rougher / less glossy. |
| Metallic | Metallic channel (greyscale) | Default for G. |
| Specular | Specular channel (greyscale) | Falls back to a generated virtual specular if no painted channel exists. |
| Specular Level | Specular Level channel (greyscale) | Controls overall specular response level. |
| Glossiness | Generated Glossiness map (greyscale) | Default for B. Computed from roughness data. |
| Glossiness² | Generated Glossiness² map (greyscale) | Same source as Glossiness but with a different contrast curve. |
Automatic fallback behaviour
When a chosen painted channel does not exist in the texture set, the plugin automatically falls back to the closest generated virtual equivalent. A message is printed to the log explaining what fallback was used.
RVMAT Settings
The third tab. Controls the generation of the
.rvmat
material file. When enabled, one RVMAT file is generated per tile and saved into the output folder.
Generate RVMAT — Checkbox
The master switch. When unticked, no RVMAT file is produced.
RVMAT Preset Bar
Saves and restores RVMAT-specific values (ambient, diffuse, specular, specular power, Fresnel). Useful if you work with different material types (fabric, metal, wood) that need different settings.
Ambient (R / G / B)
Default: 0.8 · 0.8 · 0.8
Controls the ambient light colour the material receives. Leave at default for most assets.
Diffuse (R / G / B)
Default: 0.8 · 0.8 · 0.8
Influences how much scene lighting the surface absorbs and re-emits as diffuse. The default neutral grey works for most assets.
Specular (R / G / B)
Default: 0.3 · 0.3 · 0.3
Specular highlight colour. Higher for metal-like materials, lower for matte surfaces.
Specular Power
Default: 25
Controls how sharp or spread out the specular highlight is. Low values = large soft highlight (rough surfaces). High values = tiny hard highlight (polished metal).
Fresnel
Default: #(ai,64,64,1)fresnel(1.1,0.3)
The Fresnel shader expression. Controls rim reflection at glancing angles. The default values (1.1, 0.3) suit most DayZ assets.
How texture paths get into the RVMAT
The plugin uses a template and replaces placeholders at export time. Paths to NOHQ, SMDI, AS, and EM textures are written in automatically. If a texture was not exported, that slot falls back to a DayZ-compatible placeholder colour so the RVMAT is always valid.
.rvmat file directly.
Config Generation
The fourth tab. Optionally generates a
config.cpp
file — a DayZ class definition that wires your item's textures and material into the game.
Hidden selection names are set in the Texture Sets tab
per tile; this tab handles the class details and required addons.
Generate Config — Checkbox
The master switch. When unticked, no config.cpp is produced.
Config Preset Bar
Saves and restores config-specific values: class name, base class name, display name, and description.
Config Type
e.g. CfgVehicles
A dropdown. Sets the top-level class name in the config: CfgVehicles (characters, clothing, wearables), CfgWeapons (weapons and attachments), or CfgMagazines (ammunition).
Class Name
e.g. DayZ_MySword
The unique internal identifier for your item. Used as the class name in the config and in CfgPatches. No spaces or special characters.
Base Class Name
e.g. Clothing
The DayZ class your item inherits from. Must be a valid class that exists in the base game or a mod dependency. No spaces.
Display Name
e.g. My Sword
The human-readable name shown to players in-game. Spaces are allowed.
Description
e.g. A sharp blade
The short description shown in the item's info card. Spaces are allowed.
Required Addons
A dynamic list of addon names that go into the
requiredAddons[]
array inside CfgPatches.
Defaults to DZ_Data
which is required by all DayZ mods.
Type an addon name (e.g. DZ_Characters) and click Add to append it to the list. Duplicates are ignored.
Each addon row has its own Remove button. Click it to delete that entry from the list.
"DZ_Data",
"DZ_Characters"
};
Config output format
The generated config.cpp
uses multi-line formatting for all arrays so they are easy to read and edit:
"camo1",
"camo2"
};
hiddenSelectionsTextures[] = {
"path\to\camo1_CO.paa",
"path\to\camo2_CO.paa"
};
hiddenSelectionsMaterials[] = {
"path\to\camo1.rvmat",
"path\to\camo2.rvmat"
};
The arrays are populated automatically from the checked tiles in the Texture Sets tab. Unchecked tiles are excluded entirely.
Materials Library
The fifth tab — also available as a standalone dockable panel via DayZ Export → Materials Library. Browse, preview, and apply pre-made DayZ-ready materials directly to your active texture set without building them from scratch.
A valid and activated Phlanka license is required to use the Materials Library.
Search Box
Type any part of a material name to instantly filter the list in real time. Clear the field to show all materials again.
Category Dropdown
Filters by category (Fabrics, Metals, Wood, Concrete, etc.). Works together with the search box — both filters are applied simultaneously.
Recently Used Section
Shows thumbnails of recently applied materials at the top of the list. Persists between sessions.
Material List
The main scrollable list of available materials, each shown as a named thumbnail icon.
Opens a large preview dialog with the material name, category, and full-size preview image.
Applies the material directly to the active texture set. Use Substance Painter's undo if needed — this cannot be undone through the plugin.
Refresh Button
Re-downloads the material catalogue from the Phlanka server. Use this if new materials are not appearing in the list yet.
Apply to Active Texture Set Button
An alternative to double-clicking — select a material and click this button to apply it.
About Tab
The sixth and final tab. Contains license information, the plugin version, language settings, and material cache management.
License Information
Language Dropdown
Change the language of all plugin UI text. Available: English, Chinese (Simplified), Chinese (Traditional), French, German, Spanish, and Russian.
Clear Material Cache Button
Removes locally cached material thumbnails. Use this if icons look incorrect or if you want to force a fresh download on the next library Refresh.
Export Presets
Presets save your current settings and let you reload them instantly for future projects. There are three independent preset systems stored locally alongside the plugin.
Export Presets
Saves: output path, resolution, all texture checkboxes (CO, SMDI, NOHQ, AS, EM), and the SMDI channel mapping.
RVMAT Presets
Saves: ambient RGB, diffuse RGB, specular RGB, specular power, and the Fresnel expression.
Config Presets
Saves: config type, class name, base class name, display name, and description.
Saving a preset
- 1. Configure all the settings the way you want them.
- 2. Click the Save Preset button on the relevant tab.
- 3. Type a name for the preset and confirm.
- 4. The preset is saved and immediately appears in the dropdown.
Loading a preset
Select the preset from the dropdown on the relevant tab. All saved values are immediately applied. You can then adjust individual fields without affecting the saved preset.
Deleting a preset
Select the preset and click Delete Preset. A confirmation dialog appears. Deleted presets cannot be recovered.
Tips & Troubleshooting
Common issues and how to resolve them.
Nothing was exported — no files appeared in the output folder
Check that at least one tile is checked in the Texture Sets tab and that at least one texture type checkbox is ticked on the Export tab. Confirm the output folder is accessible. The Substance Painter output window will contain a log message explaining what failed.
Hidden selection names are not appearing in config.cpp
Hidden selection names are set in the Texture Sets tab — one per tile. Make sure the Generate Config checkbox is ticked and that every checked tile has a hidden selection name filled in. If any field is empty a validation warning appears before export.
Exported filenames are not what I expected
File names are driven by the Image Base Name field for each tile in the Texture Sets tab. If that field is empty, the hidden selection name is used instead. For multi-tile (UDIM) sets the UDIM number is automatically inserted between the base name and the type suffix. See File Naming.
Only one CO file was exported for a UDIM set — I expected one per tile
Each tile must be checked in the Texture Sets tab. Use the Select All button inside the texture set group to check all tiles at once, then re-export.
The SMDI texture looks wrong — unexpected colours or brightness
Click the Customise button next to the SMDI checkbox and verify the source assigned to each channel. Check the Substance Painter output window — the plugin logs exactly which source was used and any automatic fallbacks. See SMDI Channel Customisation.
The RVMAT file is missing texture paths, or paths are wrong
The RVMAT is completely regenerated on every export. Unticked texture types fall back to DayZ placeholder values — they do not carry over paths from a previous export. Tick all needed texture types and re-export. See RVMAT Settings.
The EM texture was not exported — the EM file is missing
An Emissive channel must exist in the texture set. In Substance Painter, open the texture set settings, add an Emissive channel, paint your emissive areas, then export again with EM ticked. See Texture Types → EM.
I edited the .rvmat file manually and my changes were lost on re-export
The RVMAT is always overwritten. Save your values through the RVMAT Settings tab as an RVMAT preset before re-exporting.
The dialog opened but most controls are disabled
No Substance Painter project is open. Open your .spp file and re-open the dialog.
Materials are not appearing in the Materials Library
Click Refresh in the Materials Library tab to re-download the catalogue. If materials still do not appear, verify your license on the About tab and check your internet connection.
Material icons look corrupted or show as blank squares
Go to the About tab, click Clear Material Cache, then return to the Materials Library and click Refresh to force a full re-download.