Jump to content
Sign in to follow this  
olke

HOW FAST MAKE DAYZ TERRAIN AND FOREST. ( VWE GROUP STEP BY STEP TUTORIAL )

Recommended Posts

HOW FAST MAKE DAYZ TERRAIN AND FOREST.

(VWE GROUP STEP BY STEP TUTORIAL)

karta_co.jpg.b72ce8d6a9d08fb0283cdc08e95

( The tourist map of the selected area (the vicinity of the Chernobyl NPP) was obtained using the SAS planet after manual positioning with SATA QGIS. The part used in the tutorial is highlighted with a black square. )

STEP 1. Downloading and setup

// Bohemian topic about making map on Arma 3 you need read this!
https://forums.bohemia.net/forums/topic/224613-qgis-game-terrain-tools/

// links for latest version QGIS you need setup it for terrain making
https://qgis.org/en/site/

// links for latest qis-game-terrains version
https://gitlab.com/Adanteh/qgis-game-terrains/-/wikis/home

// need register for hightmap loading in qgis-game-terrain-tools
https://urs.earthdata.nasa.gov//users/new

// soft for generation forest on qgis mask
https://www.armaholic.com/page.php?id=10508

//V3 to TB Objectlist Converter 
https://forums.bohemia.net/forums/topic/226269-tools-utilities-compilation-list-for-arma3/

You must also configure the P: drive and install and configure Dayz tools on your computer. You need to make sure your terrain builder and bulldozer is working properly.

STEP 2. Creating project folders:

You must create folder path for project

vwe\zone\worlds\cherno01\ce
vwe\zone\worlds\cherno01\data
vwe\zone\worlds\cherno01\navmesh
vwe\zone\worlds\cherno01\source
vwe\zone\worlds\cherno01\world

in folder source you must copy MapLegend.png and create layers.cfg ( For example using standart layers.cfg and del not used surface*/

Spoiler

 


// vwe\zone\worlds\cherno01\source\Layers.cfg listing
class Layers {
    class cp_tiled {
        material = "DZ\surfaces\data\terrain\cp_concrete1.rvmat";
    };
    class cp_rock {
        material = "DZ\surfaces\data\terrain\cp_rock.rvmat";
    };
    class cp_gravel {
        material = "DZ\surfaces\data\terrain\cp_gravel.rvmat";
    };
    class cp_concrete1 {
        material = "DZ\surfaces\data\terrain\cp_concrete1.rvmat";
    };
    class cp_concrete2 {
        material = "DZ\surfaces\data\terrain\cp_concrete2.rvmat";
    };
    class cp_broadleaf_dense1 {
        material = "DZ\surfaces\data\terrain\cp_broadleaf_dense1.rvmat";
    };
    class cp_broadleaf_dense2 {
        material = "DZ\surfaces\data\terrain\cp_broadleaf_dense2.rvmat";
    };
    class cp_broadleaf_sparse1 {
        material = "DZ\surfaces\data\terrain\cp_broadleaf_sparse1.rvmat";
    };
    class cp_broadleaf_sparse2 {
        material = "DZ\surfaces\data\terrain\cp_broadleaf_sparse2.rvmat";
    };
    class cp_conifer_common1 {
        material = "DZ\surfaces\data\terrain\cp_conifer_common1.rvmat";
    };
    class cp_conifer_common2 {
        material = "DZ\surfaces\data\terrain\cp_conifer_common2.rvmat";
    };
    class cp_conifer_moss1 {
        material = "DZ\surfaces\data\terrain\cp_conifer_moss1.rvmat";
    };
    class cp_conifer_moss2 {
        material = "DZ\surfaces\data\terrain\cp_conifer_moss2.rvmat";
    };
    class cp_grass_tall {
        material = "DZ\surfaces\data\terrain\cp_grass_tall.rvmat";
    };
    class cp_grass {
        material = "DZ\surfaces\data\terrain\cp_grass.rvmat";
    };
    class cp_dirt {
        material = "DZ\surfaces\data\terrain\cp_dirt.rvmat";
    };
};

class Legend {
    picture="vwe\zone\worlds\cherno01\source\mapLegend.png"; // path for you mapLegend.png
    class Colors {
        cp_broadleaf_sparse2[] = {{106, 8, 167}};// birch forest surface
        cp_conifer_common1[] = {{0,94,26}};// coniferous forest surface
        cp_grass_tall[]={{126,62,6}}; // field surface
        cp_grass[]={{128,197,46}}; // grass surface 
        cp_dirt[]={{193,114,170}}; // mud surface
    };
};

//

 

in folder world you must create config.cpp for example using simple edit standart config.cpp for me

Spoiler

 

.


// listing tutorial vwe\zone\worlds\cherno01\world\config.cpp 

enum {
    destructengine = 2,
    destructdefault = 6,
    destructwreck = 7,
    destructtree = 3,
    destructtent = 4,
    destructno = 0,
    destructman = 5,
    destructbuilding = 1
};

class CfgPatches
{
    class VWE_Zone_Worlds_Cherno01_World
    {
        units[] = {};
        weapons[] = {};
        requiredVersion = 0.1;
        requiredAddons[] = {"DZ_Data","DZ_Surfaces","DZ_Worlds_Chernarusplus_World"};
    };
};
class CfgWorlds
{
    class CAWorld;
    class cherno_01: CAWorld
    {
    //    cutscenes[] = {"terribleIntro"};
        description = "Chernobyl world";
        worldName = "vwe\zone\worlds\cherno01\world\cherno_01.wrp";
//        ceFiles = "vwe\zone\worlds\cherno01\ce"; // не удалять
        class Navmesh
        {
            navmeshName = "\vwe\zone\worlds\cherno01\navmesh\navmesh.nm";
            filterIsolatedIslandsOnLoad = 1;
            visualiseOffset = 0.0;
            class GenParams
            {
                tileWidth = 50.0;
                cellSize1 = 0.25;
                cellSize2 = 0.1;
                cellSize3 = 0.1;
                filterIsolatedIslands = 1;
                seedPosition[] = {7500,0,7500};
                class Agent
                {
                    diameter = 0.6;
                    standHeight = 1.5;
                    crouchHeight = 1.0;
                    proneHeight = 0.5;
                    maxStepHeight = 0.45;
                    maxSlope = 60.0;
                };
                class Links
                {
                    class ZedJump387_050
                    {
                        jumpLength = 1.5;
                        jumpHeight = 0.5;
                        minCenterHeight = 0.3;
                        jumpDropdownMin = 0.5;
                        jumpDropdownMax = -0.5;
                        areaType = "jump0";
                        flags[] = {"jumpOver"};
                        color = 1727987712;
                    };
                    class ZedJump388_050
                    {
                        jumpLength = 1.5;
                        jumpHeight = 0.5;
                        minCenterHeight = -0.5;
                        jumpDropdownMin = 0.5;
                        jumpDropdownMax = -0.5;
                        areaType = "jump0";
                        flags[] = {"jumpOver"};
                        color = 1725781248;
                    };
                    class ZedJump387_110
                    {
                        jumpLength = 3.9;
                        jumpHeight = 1.1;
                        minCenterHeight = 0.5;
                        jumpDropdownMin = 0.5;
                        jumpDropdownMax = -0.5;
                        areaType = "jump0";
                        flags[] = {"jumpOver"};
                        color = 1711308800;
                    };
                    class ZedJump420_160
                    {
                        jumpLength = 4.0;
                        jumpHeight = 1.6;
                        minCenterHeight = 1.1;
                        jumpDropdownMin = 0.5;
                        jumpDropdownMax = -0.5;
                        areaType = "jump0";
                        flags[] = {"jumpOver"};
                        color = 1711276287;
                    };
                    class ZedJump265_210
                    {
                        jumpLength = 2.45;
                        jumpHeight = 2.5;
                        minCenterHeight = 1.8;
                        jumpDropdownMin = 0.5;
                        jumpDropdownMax = -0.5;
                        areaType = "jump0";
                        flags[] = {"climb"};
                        color = 1720975571;
                    };
                    class Fence50_110deer
                    {
                        typeId = 100;
                        jumpLength = 8.0;
                        jumpHeight = 1.1;
                        minCenterHeight = 0.5;
                        jumpDropdownMin = 1.0;
                        jumpDropdownMax = -1.0;
                        areaType = "jump2";
                        flags[] = {"jumpOver"};
                        color = 1722460927;
                    };
                    class Fence110_160deer
                    {
                        typeId = 101;
                        jumpLength = 8.0;
                        jumpHeight = 1.6;
                        minCenterHeight = 1.1;
                        jumpDropdownMin = 1.0;
                        jumpDropdownMax = -1.0;
                        areaType = "jump3";
                        flags[] = {"jumpOver"};
                        color = 1713700856;
                    };
                    class Fence50_110hen
                    {
                        typeId = 110;
                        jumpLength = 4.0;
                        jumpHeight = 1.1;
                        minCenterHeight = 0.5;
                        jumpDropdownMin = 0.5;
                        jumpDropdownMax = -0.5;
                        areaType = "jump4";
                        flags[] = {"jumpOver"};
                        color = -22016;
                    };
                    class Fence110_160hen
                    {
                        typeId = 111;
                        jumpLength = 4.0;
                        jumpHeight = 1.6;
                        minCenterHeight = 1.1;
                        jumpDropdownMin = 0.5;
                        jumpDropdownMax = -0.5;
                        areaType = "jump4";
                        flags[] = {"jumpOver"};
                        color = -22016;
                    };
                };
            };
        };
        longitude = -169.6248931362142;
        latitude = -56.59234871497246;
        class OutsideTerrain
        {
            satellite = "DZ\worlds\chernarusplus\data\outside_sat_co.paa";
            enableTerrainSynth = 0;
            class Layers
            {
                class Layer0
                {
                    nopx = "DZ\surfaces\data\terrain\cp_grass_nopx.paa";
                    texture = "DZ\surfaces\data\terrain\cp_grass_ca.paa";
                };
            };
        };
        class Grid
        {
            offsetX = 0;
            offsetY = 0;
            class Zoom1
            {
                zoomMax = 0.15;
                format = "XY";
                formatX = "000";
                formatY = "000";
                stepX = 100;
                stepY = 100;
            };
            class Zoom2
            {
                zoomMax = 0.85;
                format = "XY";
                formatX = "00";
                formatY = "00";
                stepX = 1000;
                stepY = 1000;
            };
            class Zoom3
            {
                zoomMax = 1e+030;
                format = "XY";
                formatX = "0";
                formatY = "0";
                stepX = 10000;
                stepY = 10000;
            };
        };
        startTime = "9:20";
        startDate = "11/10/2017";
        centerPosition[] = {7100,7750,300};
        ilsPosition[] = {};
        ilsDirection[] = {};
        ilsTaxiIn[] = {};
        ilsTaxiOff[] = {};
        drawTaxiway = 1;
        minTreesInForestSquare = 3;
        minRocksInRockSquare = 5;
        soundMapAttenCoef = 0.01;

        // 2D map item params
        mapDisplayNameKey = "#STR_CfgVehicles_ChernarusMap0";
        mapDescriptionKey = "#STR_CfgVehicles_ChernarusMap1";
        mapTextureClosed = "dz\gear\navigation\data\map_chernarus_co.paa";
        mapTextureOpened = "vwe\zone\worlds\cherno01\data\karta_co.paa";
        mapTextureLegend = "vwe\zone\worlds\cherno01\data\karta_side_co.paa";
        userMapPath = "dz\gear\navigation\data\usermap";

        class SoundMapValues
        {
            treehard = 0.03;
            treesoft = 0.03;
            bushhard = 0.0;
            bushsoft = 0.0;
            forest = 1.0;
            house = 0.3;
            church = 0.5;
        };
        class Sounds
        {
            sounds[] = {};
        };
        clutterGrid = 1.0;
        clutterDist = 125;
        noDetailDist = 40;
        fullDetailDist = 15;
        midDetailTexture = "DZ\worlds\chernarusplus\data\middle_sat_mco.paa";
        terrainNormalTexture = "vwe\zone\worlds\cherno01\data\global_nohq.paa";
        class UsedTerrainMaterials
        {
            material0 = "DZ\surfaces\data\terrain\cp_broadleaf_dense1.rvmat";
            material1 = "DZ\surfaces\data\terrain\cp_broadleaf_dense2.rvmat";
            material2 = "DZ\surfaces\data\terrain\cp_broadleaf_sparse1.rvmat";
            material3 = "DZ\surfaces\data\terrain\cp_broadleaf_sparse2.rvmat";
            material4 = "DZ\surfaces\data\terrain\cp_concrete1.rvmat";
            material5 = "DZ\surfaces\data\terrain\cp_concrete2.rvmat";
            material6 = "DZ\surfaces\data\terrain\cp_conifer_common1.rvmat";
            material7 = "DZ\surfaces\data\terrain\cp_conifer_common2.rvmat";
            material8 = "DZ\surfaces\data\terrain\cp_conifer_moss1.rvmat";
            material9 = "DZ\surfaces\data\terrain\cp_conifer_moss2.rvmat";
            material10 = "DZ\surfaces\data\terrain\cp_dirt.rvmat";
            material11 = "DZ\surfaces\data\terrain\cp_grass.rvmat";
            material12 = "DZ\surfaces\data\terrain\cp_grass_tall.rvmat";
            material13 = "DZ\surfaces\data\terrain\cp_gravel.rvmat";
            material14 = "DZ\surfaces\data\terrain\cp_rock.rvmat";
        };
        
        class Names {};
        
        class Ambient
        {
            class BigInsects
            {
                radius = 20;
                cost = "(5 - (2 * houses)) * (1 - night) * (1 - rain) * (1 - sea) * (1 - windy)";
                class Species{};
            };
            class BigInsectsAquatic
            {
                radius = 20;
                cost = "(3 * sea) * (1 - night) * (1 - rain) * (1 - windy)";
                class Species{};
            };
            class SmallInsects
            {
                radius = 3;
                cost = "(12 - 8 * hills) * (1 - night) * (1 - rain) * (1 - sea) * (1 - windy)";
                class Species{};
            };
            class NightInsects
            {
                radius = 3;
                cost = "(9 - 8 * hills) * night * (1 - rain) * (1 - sea) * (1 - windy)";
                class Species{};
            };
            class WindClutter
            {
                radius = 10;
                cost = "((20 - 5 * rain) * (3 * (windy factor [0.2, 0.5]))) * (1 - sea)";
                class Species
                {
                    class FxWindGrass1
                    {
                        probability = "0.4 - 0.2 * hills - 0.2 * trees";
                        cost = 1;
                    };
                    class FxWindGrass2
                    {
                        probability = "0.4 - 0.2 * hills - 0.2 * trees";
                        cost = 1;
                    };
                    class FxWindRock1
                    {
                        probability = "0.4 * hills";
                        cost = 1;
                    };
                    class FxCrWindLeaf1
                    {
                        probability = "0.2 * trees";
                        cost = 1;
                    };
                    class FxCrWindLeaf2
                    {
                        probability = "0.1 * trees + 0.2";
                        cost = 1;
                    };
                    class FxCrWindLeaf3
                    {
                        probability = "0.1 * trees";
                        cost = 1;
                    };
                };
            };
            class NoWindClutter
            {
                radius = 15;
                cost = 8;
                class Species
                {
                    class FxWindPollen1
                    {
                        probability = 1;
                        cost = 1;
                    };
                    class FxCrWindLeaf1
                    {
                        probability = "0.2 * trees";
                        cost = 1;
                    };
                    class FxCrWindLeaf2
                    {
                        probability = "0.1 * trees + 0.2";
                        cost = 1;
                    };
                    class FxCrWindLeaf3
                    {
                        probability = "0.1 * trees";
                        cost = 1;
                    };
                };
            };
        };
    };
};

/* class CfgMissions
{
    class Cutscenes
    {
        class terribleIntro
        {
            directory = "vwe\zone\worlds\cherno01\data\scenes\intro.ChernarusPlus";
        };
    };
};
*/

//

 

STEP 3 Generation terrain in QGIS I write process work in QGIS on shot video

 

As a result, you have an excellent sata map, a detailed map mask and all the parameters needed for Terrain Builder as a text file.
 

Spoiler

 

// gtt_export.txt listing

[## Export settings ##]
scaling enabled = False
tiling enabled = False
tile resolution = 4096
real terrain size (m) = 7680

[## Terrain Details ##]
grid size = 1024 x 1024
cell size (m) = 7.5
terrain size (m) = 7680
satmap size (px) = 7680 x 7680
resolution (m/px) = 1.0

[## Arma config entries ##]
longitude = 29.805315242117018
latitude = -51.38195358011948
mapsize = 7680
mapzone = 35

[## Surface entries ##]
road = (193, 114, 170)  #c172aa
concrete = (249, 44, 212)  #f92cd4
water = (91, 137, 223)  #5b89df
grass = (80, 148, 55)  #509437
field = (128, 197, 46)  #80c52e
forest = (0, 94, 26)  #005e1a
dirt = (126, 62, 6)  #7e3e06
sand = (203, 190, 0)  #cbbe00

 

for forest generation i using tools 

// soft for generation forest on qgis mask
https://www.armaholic.com/page.php?id=10508

//V3 to TB Objectlist Converter for convert result for terrain builder
https://forums.bohemia.net/forums/topic/226269-tools-utilities-compilation-list-for-arma3/

after, i import forest in terrain builder as object ... PROFIT 

STEP 4. For view you result you need create project folder and binarize you map.

Create folder P:\missions\EmptyMission.cherno_01\and file P:\missions\EmptyMission.cherno_01\init.c

Spoiler

 


void main()
{
	int year = 2019;
	int month = 6;
	int day = 15;
	int hour = 12; 
	int minute = 0;
	GetGame().GetWorld().SetDate(year, month, day, hour, minute);
	
//	CreateFreeCamera();
	
	CreateManPlayer();
	Spawn_OffroadHatchback();
}

void CreateFreeCamera()
{
	vector atlPos = "3440 20 3367";// X,Z,Y
	DayZSpectator camera = DayZSpectator.Cast(GetGame().CreateObject("DayZSpectator", atlPos, true)); //"FreeDebugCamera"

	if (camera)
	{
		camera.SetActive(true);				
		vector camMat[4];
		camera.GetTransform(camMat);
		camMat[3] = Vector(atlPos[0], atlPos[1] + GetGame().SurfaceY(atlPos[0], atlPos[2]), atlPos[2]);
		camera.SetTransform(camMat);
	}
}

void CreateManPlayer()
{
	vector atlPos = "3440 0 3367";
	Entity playerEnt = GetGame().CreatePlayer( NULL, GetGame().CreateRandomPlayer(), atlPos, 0, "NONE");
	PlayerBase player = PlayerBase.Cast(playerEnt);
	
	if (player) {
		player.GetInventory().CreateInInventory("GorkaEJacket_Summer");
		player.GetInventory().CreateInInventory("GorkaPants_Summer");
		player.GetInventory().CreateInInventory("CombatBoots_Green");
		player.GetInventory().CreateInInventory("AliceBag_Camo");

		EntityAI itemEnt;
		for (int i = 0; i < 3; i++)
		{
			player.GetInventory().CreateInInventory("Mag_AKM_30Rnd");
		}
		itemEnt = player.GetInventory().CreateInInventory("AKM");
		player.SetQuickBarEntityShortcut(itemEnt, 0);
		itemEnt.GetInventory().CreateAttachment("AK_WoodBttstck");
		itemEnt.GetInventory().CreateAttachment("AK_WoodHndgrd");
		itemEnt.GetInventory().CreateAttachment("AK_Suppressor");

		for (i = 0; i < 3; i++)
		{
			player.GetInventory().CreateInInventory("RGD5Grenade");
		}

		player.GetInventory().CreateInInventory("HuntingKnife");
		player.GetInventory().CreateInInventory("Compass");
		player.GetInventory().CreateInInventory("FlattenMap");	
		player.GetInventory().CreateInInventory("Battery9V");
		player.GetInventory().CreateInInventory("Flashlight");
		
		GetGame().SelectPlayer(NULL, player);
	}
}

void Spawn_OffroadHatchback()
{
	vector pos = "3450 0 3367";
	pos[1] = pos[1] + GetGame().SurfaceY(pos[0], pos[2]);
	EntityAI ent = EntityAI.Cast(GetGame().CreateObject( "OffroadHatchback", pos, false ));
	ent.OnDebugSpawn();
	ent.PlaceOnSurface();	
}

//

 

Creat P:\missions\EmptyMission.cherno_01\EmptyMissionChernobyl.cmd for loading you misison

set DAYZ=C:\Program Files (x86)\Steam\steamapps\common\DayZ
set MODS=D:\DayzMods\vwe_zone_worlds\chernobyl
set MISSION=P:\missions\EmptyMission.cherno_01
set PROFILE_PATH=C:\Users\olke\AppData\Local\DayZ
del /Q "%PROFILE_PATH%\*.log"
del /Q "%PROFILE_PATH%\*.RPT"
del /Q "%PROFILE_PATH%\*.mdmp"

cd /D "%DAYZ%"
DayZ_x64.exe "-mod=%MODS%" "-mission=%MISSION%" -window -x=1600 -y=900

(my mod folder place on D drive)

google drive link on map tutorial arhive (config.cpp, layer.cfg, qgis generated file for you)

https://drive.google.com/file/d/1ai6eGQ34xf63PLtuYl9gfXUznMw9OiPI/view?usp=sharing

Profit:

 

Use of the map of this tutorial is only permitted for training purposes. The attached archive contains a map of the real area obtained using SAS Planet and QGIS programs and is not intended for commercial use.

 

 

Edited by olke
  • Thanks 1

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×