====== ArmA 3 Terrain Separate Data\Layers into Smaller PBOs ====== **How to separate your large ArmA 3 terrain Data\Layers PBO into individual PBO files.** First read the [[arma2:terrain:separate-data-layers|ArmA 2 version of separate terrain data layers]] for some background understanding, there are some details which we don't need to repeat. We take the single WRP addon dir and separate it to following: WRP (it remains as is), Data, Layers (RVMATs) and Layers_00 (PAA) through how many numbers you have, however this tutorial uses 00 to 08 range. ====== _run_Separate_WRP_Dir.bat ====== This batch file does all the heavy lifting when separating your terrain addon directory. In our example we use "pmc" as our mod / group tag and "pmc_iraq_baghdad" as our addon name. Put this bat into "pmc\pmc_iraq_baghdad\Source\" directory. You only need to edit "set MODTAG=" for mod / group tag and "set TERRAIN=" to replace our terrain name with yours, rest of the batch file is OK. **_run_Separate_WRP_Dir.bat:** @echo off set MODTAG=pmc set TERRAIN=pmc_iraq_baghdad rem back out of Source and terrain directorys cd ..\.. rem create data\ for whatever data stuff you got md %TERRAIN%_data echo %MODTAG%\%TERRAIN%_data >%TERRAIN%_data\$PBOPREFIX$ echo class CfgPatches{class %TERRAIN%_data{units[] = {};weapons[] = {};requiredVersion = 1;requiredAddons[] = {};};}; >%TERRAIN%_data\config.cpp rem create layers\ for RVMATs md %TERRAIN%_data_layers echo %MODTAG%\%TERRAIN%_data_layers >%TERRAIN%_data_layers\$PBOPREFIX$ echo class CfgPatches{class %TERRAIN%_data_layers{units[] = {};weapons[] = {};requiredVersion = 1;requiredAddons[] = {};};}; >%TERRAIN%_data_layers\config.cpp rem move RVMATs move %TERRAIN%\data\layers\*.rvmat %TERRAIN%_data_layers\ rem create actual satellite tile PAA directorys md %TERRAIN%_data_layers_00 md %TERRAIN%_data_layers_01 md %TERRAIN%_data_layers_02 md %TERRAIN%_data_layers_03 md %TERRAIN%_data_layers_04 md %TERRAIN%_data_layers_05 md %TERRAIN%_data_layers_06 md %TERRAIN%_data_layers_07 md %TERRAIN%_data_layers_08 echo %MODTAG%\%TERRAIN%_data_layers_00 >%TERRAIN%_data_layers_00\$PBOPREFIX$ echo %MODTAG%\%TERRAIN%_data_layers_01 >%TERRAIN%_data_layers_01\$PBOPREFIX$ echo %MODTAG%\%TERRAIN%_data_layers_02 >%TERRAIN%_data_layers_02\$PBOPREFIX$ echo %MODTAG%\%TERRAIN%_data_layers_03 >%TERRAIN%_data_layers_03\$PBOPREFIX$ echo %MODTAG%\%TERRAIN%_data_layers_04 >%TERRAIN%_data_layers_04\$PBOPREFIX$ echo %MODTAG%\%TERRAIN%_data_layers_05 >%TERRAIN%_data_layers_05\$PBOPREFIX$ echo %MODTAG%\%TERRAIN%_data_layers_06 >%TERRAIN%_data_layers_06\$PBOPREFIX$ echo %MODTAG%\%TERRAIN%_data_layers_07 >%TERRAIN%_data_layers_07\$PBOPREFIX$ echo %MODTAG%\%TERRAIN%_data_layers_08 >%TERRAIN%_data_layers_08\$PBOPREFIX$ echo class CfgPatches{class %TERRAIN%_data_layers_00{units[] = {};weapons[] = {};requiredVersion = 1;requiredAddons[] = {};};}; >%TERRAIN%_data_layers_00\config.cpp echo class CfgPatches{class %TERRAIN%_data_layers_01{units[] = {};weapons[] = {};requiredVersion = 1;requiredAddons[] = {};};}; >%TERRAIN%_data_layers_01\config.cpp echo class CfgPatches{class %TERRAIN%_data_layers_02{units[] = {};weapons[] = {};requiredVersion = 1;requiredAddons[] = {};};}; >%TERRAIN%_data_layers_02\config.cpp echo class CfgPatches{class %TERRAIN%_data_layers_03{units[] = {};weapons[] = {};requiredVersion = 1;requiredAddons[] = {};};}; >%TERRAIN%_data_layers_03\config.cpp echo class CfgPatches{class %TERRAIN%_data_layers_04{units[] = {};weapons[] = {};requiredVersion = 1;requiredAddons[] = {};};}; >%TERRAIN%_data_layers_04\config.cpp echo class CfgPatches{class %TERRAIN%_data_layers_05{units[] = {};weapons[] = {};requiredVersion = 1;requiredAddons[] = {};};}; >%TERRAIN%_data_layers_05\config.cpp echo class CfgPatches{class %TERRAIN%_data_layers_06{units[] = {};weapons[] = {};requiredVersion = 1;requiredAddons[] = {};};}; >%TERRAIN%_data_layers_06\config.cpp echo class CfgPatches{class %TERRAIN%_data_layers_07{units[] = {};weapons[] = {};requiredVersion = 1;requiredAddons[] = {};};}; >%TERRAIN%_data_layers_07\config.cpp echo class CfgPatches{class %TERRAIN%_data_layers_08{units[] = {};weapons[] = {};requiredVersion = 1;requiredAddons[] = {};};}; >%TERRAIN%_data_layers_08\config.cpp rem move the actual satellite tile PAA files... move %TERRAIN%\data\layers\s_00?_?*.paa %TERRAIN%_data_layers_00\ move %TERRAIN%\data\layers\m_00?_?*.paa %TERRAIN%_data_layers_00\ move %TERRAIN%\data\layers\s_01?_?*.paa %TERRAIN%_data_layers_01\ move %TERRAIN%\data\layers\m_01?_?*.paa %TERRAIN%_data_layers_01\ move %TERRAIN%\data\layers\s_02?_?*.paa %TERRAIN%_data_layers_02\ move %TERRAIN%\data\layers\m_02?_?*.paa %TERRAIN%_data_layers_02\ move %TERRAIN%\data\layers\s_03?_?*.paa %TERRAIN%_data_layers_03\ move %TERRAIN%\data\layers\m_03?_?*.paa %TERRAIN%_data_layers_03\ move %TERRAIN%\data\layers\s_04?_?*.paa %TERRAIN%_data_layers_04\ move %TERRAIN%\data\layers\m_04?_?*.paa %TERRAIN%_data_layers_04\ move %TERRAIN%\data\layers\s_05?_?*.paa %TERRAIN%_data_layers_05\ move %TERRAIN%\data\layers\m_05?_?*.paa %TERRAIN%_data_layers_05\ move %TERRAIN%\data\layers\s_06?_?*.paa %TERRAIN%_data_layers_06\ move %TERRAIN%\data\layers\m_06?_?*.paa %TERRAIN%_data_layers_06\ move %TERRAIN%\data\layers\s_07?_?*.paa %TERRAIN%_data_layers_07\ move %TERRAIN%\data\layers\m_07?_?*.paa %TERRAIN%_data_layers_07\ move %TERRAIN%\data\layers\s_08?_?*.paa %TERRAIN%_data_layers_08\ move %TERRAIN%\data\layers\m_08?_?*.paa %TERRAIN%_data_layers_08\ rem delete existing layers\ dir including the remaining now obsolete .PNG files rd /q /s %TERRAIN%\data\layers\ pause exit ====== MoveObject RVMATs ====== You must fix the paths in layers RVMAT files, use [[arma3:tools:mikero-tools|Mikero Tools]] MoveObject for this task. See how to use [[arma3:batch-file-examples#rvmat_files|MoveObject for RVMATs in batch file]]. Put these bat files into pmc_iraq_baghdad_data_layers\ directory. Here is our example replacement text file, you obviously need to make your own using paths to your terrain (both mod tag and addon name). RVMAT **_MASTER_paths.txt:** pmc\pmc_iraq_baghdad\data\layers\s_00 pmc\pmc_iraq_baghdad_data_layers_00\s_00 pmc\pmc_iraq_baghdad\data\layers\m_00 pmc\pmc_iraq_baghdad_data_layers_00\m_00 pmc\pmc_iraq_baghdad\data\layers\s_01 pmc\pmc_iraq_baghdad_data_layers_01\s_01 pmc\pmc_iraq_baghdad\data\layers\m_01 pmc\pmc_iraq_baghdad_data_layers_01\m_01 pmc\pmc_iraq_baghdad\data\layers\s_02 pmc\pmc_iraq_baghdad_data_layers_02\s_02 pmc\pmc_iraq_baghdad\data\layers\m_02 pmc\pmc_iraq_baghdad_data_layers_02\m_02 pmc\pmc_iraq_baghdad\data\layers\s_03 pmc\pmc_iraq_baghdad_data_layers_03\s_03 pmc\pmc_iraq_baghdad\data\layers\m_03 pmc\pmc_iraq_baghdad_data_layers_03\m_03 pmc\pmc_iraq_baghdad\data\layers\s_04 pmc\pmc_iraq_baghdad_data_layers_04\s_04 pmc\pmc_iraq_baghdad\data\layers\m_04 pmc\pmc_iraq_baghdad_data_layers_04\m_04 pmc\pmc_iraq_baghdad\data\layers\s_05 pmc\pmc_iraq_baghdad_data_layers_05\s_05 pmc\pmc_iraq_baghdad\data\layers\m_05 pmc\pmc_iraq_baghdad_data_layers_05\m_05 pmc\pmc_iraq_baghdad\data\layers\s_06 pmc\pmc_iraq_baghdad_data_layers_06\s_06 pmc\pmc_iraq_baghdad\data\layers\m_06 pmc\pmc_iraq_baghdad_data_layers_06\m_06 pmc\pmc_iraq_baghdad\data\layers\s_07 pmc\pmc_iraq_baghdad_data_layers_07\s_07 pmc\pmc_iraq_baghdad\data\layers\m_07 pmc\pmc_iraq_baghdad_data_layers_07\m_07 pmc\pmc_iraq_baghdad\data\layers\s_08 pmc\pmc_iraq_baghdad_data_layers_08\s_08 pmc\pmc_iraq_baghdad\data\layers\m_08 pmc\pmc_iraq_baghdad_data_layers_08\m_08 Then just run _run_update_rvmat_list.bat and _run_moveobject.bat files to mass change paths into all your RVMAT files. ====== MoveObject WRP ====== WRP needs its RVMAT paths changed because we moved RVMATs to a new directory / addon. It is basically the same as what we did for individual RVMAT files, see [[arma3:batch-file-examples#wrp_files|MoveObject for WRP in batch file]] for file name details. WRP **_MASTER_paths.txt:** pmc\pmc_iraq_baghdad\data\layers pmc\pmc_iraq_baghdad_data_layers If you forget to change RVMAT paths in WRP file, then none of the above works. ====== Re-Generating Layers ====== In the future when you have ran through this tutorial once, have WRP dir separated / split all nicely and then you need to generate layers again... you have to delete the existing directories created by this bat file. It //might// work that you just let it overwrite dirs / files, but it is best to just delete the existing **_data**, **_data_layers** and all **_data_layers_0X** directories. So store the MoveObject RVMAT batch files in your pmc_iraq_baghdad\Source\ directory for safe keeping from any deletion. ====== Buldozer ====== In this separated / split setup terrain builder + buldozer cannot find the RVMAT files, it attempts to find them from pmc_iraq_baghdad\data\layers\ directory, but instead they have been moved to pmc_iraq_baghdad_data_layers\ dir. You can easily fix this by making a symlink "layers" directory into pmc_iraq_baghdad\data\ directory. **_run_create_layers_symlink.bat:** rem do this on WRP\data\ dir mklink /J layers C:\armawork\PMC\pmc_iraq_baghdad_data_layers **Warning: You must delete this "layers" symlink before pboProject binarizing & packing your terrain!** if you do not, then pboproject will try to copy the rvmat's into p:\temp\ and its going to be a real mess. Howto delete symlink: del layers You cannot really change the path from terrain builder project settings, because it defaults to \data\layers\ directory, so you cant set it to any dir which would match pmc_iraq_baghdad_data_layers\ heh. ====== Reference Altis PBOs ====== Reference from bis Altis terrain. **PBO file names:**\\ map_altis\\ map_altis_data\\ map_altis_data_layers\\ map_altis_data_layers_00_00\\ map_altis_data_layers_00_01\\ map_altis_data_layers_01_00\\ map_altis_data_layers_01_01 ^ PBO ^ $PBOPREFIX$ ^ CfgPatches ^ Contents ^ | map_altis| a3\map_altis | A3_Map_Altis | WRP | | map_altis_data | a3\map_altis\data | A3_Map_Altis_Data | Skybox textures, picturemap UI stuff | | map_altis_data_layers | a3\map_altis\data\layers | A3_Map_Altis_Data_Layers | RVMATs | | map_altis_data_layers_00_00 | a3\map_altis\data\layers\00_00 | n/a | Textures |