Home » , , , , , » How to Create Your Very Own Procedurally Generated ARK/Map in Ark Survival: Evolved

How to Create Your Very Own Procedurally Generated ARK/Map in Ark Survival: Evolved


How To Configure your first PGARK

Launch the game, goto Play Local ARK: Survival Evolved, select "Create New Procedurally Generated ARK" in the upper-left of the Host UI, and then you can play around with all the different PGARK settings to construct an ARK to your liking. Give it unique ARK name in the lower-right, and click Host. After a long wait (this will be further optimized shortly), you'll be on your new ARK! The procedural ARK data is cached to disk so subsequent loads of it are much faster (in Saved\GenerateMapCache, which you can delete if you ever wish to clear up disk space or force regenerate the procedural data in case it becomes corrupted). You can delete existing saved Procedurally Generated ARK's (by name) in the Host UI. Furthermore, you can save multiple PGARK configurations in the Create New Procedural ARK UI, if you wish to retain them for later tweaking or to create multiple unique saved ARK's from the same configuration.

Here's a really rough guide to some of the PGARK settings you can edit in the UI:

VARIABLE
PURPOSE
VISIBLE ON UI AS...
ErosionIterations
Number of droplets which are used to simulate erosion
Erosion Iterations
GrassDensity
Density of foliage in the grasslands biome
Grasslands Grass Density
IslandBorderCurveExp
The exponent used in the curve to smoothly interpolate between island and water floor
Island Border Curve
JungleBiomeStart
The height value at which the jungle biome start
Jungle Biome Start
JungleGrassDensity
Foliage density in the Jungle biome
Jungle Grass Density
JungleTreeDensity
Trees & rocks density in the jungle biome
Jungle Tree Density
LandscapeRadius
The radius of the landscape, outside of this radius it is water (to avoid cutting the landscape by the terrain border)
Landscape Radius
MapSeed
The seed used in the noise & random functions
Map Seed
MaxSawnPointHeight
The maximum height of land for a spawn point to be created
Max Sawn Point Height
Mountain Height
A multiplier for mountain height
Mountain Height
MountainBiomeStart
The height value at which the mountain biome starts
Mountain Biome Start
MountainGrassDensity
Foliage density in the mountain biome
Mountain Grass Density
Mountains Frequency
The frequency of the noise used to generate mountains
Mountain Frequency
Mountains Slope
How hard the transition is from land to mountain, the higher the value the smoother the transition (from 0 to 2)
Mountain Slope
MountainsTreeDensity
Density of trees and rocks in the mountain biome
Mountain Tree Density
North/South/East/West
Regions 1, 2, 3


OceanFloorLevel
The height value for the ocean floor (from -1 to WaterLevel)
Ocean Flool Level
RedWoodGrassDensity
Foliage density in the Redwood biome
Redwood Grass Density
RedWoodTreeDensity
Density of trees and rocks in the redwood biome
Redwood Tree Density
RWBiomeSize
The radius of the Redwood biome (from 0 to 1)
Redwood Biome Size
RWForestBiomeLocation
The location of the redwood biome (X,Y from 0 to 1)
Redwood Biome Location
Shore Slope
How hard the transition is from water floor to shore, the higher the value the smoother the transition (from 0 to 2)
Shore Slope



ShoreTreeDensity
Foliage density in the shore biome
Shore Tree Density
SnowBiomeLocation
The location of the snow biome (X,Y from 0 to 1)
Snow Biome Location
SnowBiomeSize
The radius of the snow biome (from 0 to 1)
Snow Biome Size
SnowGrassDensity
Foliage density in the snow biome
Snow Grass Density
SnowMountainGrassDensity
Foliage density in the snow mountain biome
Snow Mountain Grass Density
SnowMountainsTreeDensity
Density of trees and rocks in the snow mountain biome
Snow Mountains Tree Density
SnowShoreTreeDensity
Density of trees and rocks in the snow shore biome
Snow Shore Tree Density
SnowTreeDensity
Density of trees and rocks in the snow biome
Snow Tree Density
TerrainScaleMultiplier
X,Y,Z to scale the whole terrain
Terrain Scale Multiplier
TreeDensity
Density of trees and rocks in the grasslands biome
Grasslands Tree Density
Turbulence Power
The power of the turbulence function used to randomly perturb the coordinates input to the noise function, to add some realism to the noise
Tubulence Power
UnderwaterObjectsDensity
Object density in the underwater biome
Underwater Objects Density
Water Frequency
The frequency of the noise function used to generate land/water
Water Frequency
WaterLevel
The height value for the water surface, from (Ocean Floor level to 1)
Water Level
ShorelineStartOffset
The distance from the water that the shoreline begins. Raise this for a shore that goes farther up to the land.

ShorelineThickness
The overall width of the shore. Raise this along with ShorelineStartOffset to get a thicker, larger shore.


Hosting a Dedicated Server on PGARK

The actual PGARK configuration is stored in your \Saved\Config\Windows (or WindowsServer or LinuxServer etc)\Game.ini file, here: 

[/Script/ShooterGame.ShooterGameMode]
PGMapName=YourPGARK1
PGTerrainPropertiesString=MapSeed=412;LandscapeRadius=1.2;Water Frequency=11;Mountains Frequency=11;Mountains Slope=1.4;MountainsHeight=1.3;Turbulence Power=0.0125;Shore Slope=1.0;WaterLevel=-0.72;GrassDensity=1.0;JungleGrassDensity=0.02;ErosionIterations=200000;OceanFloorLevel=-1.0;SnowBiomeSize=0.3;RWBiomeSize=0.11;MountainBiomeStart=-0.55;MountainsTreeDensity=0.01;JungleBiomeStart=-0.65;IslandBorderCurveExp=4.0;MaxSawnPointHeight=0.1;SnowGrassDensity=0.25;MountainGrassDensity=0.05;SnowMountainGrassDensity=0.15;UnderwaterObjectsDensity=0.5;SnowMountainsTreeDensity=0.01;TreeDensity=0.003;JungleTreeDensity=0.66;RedWoodTreeDensity=0.35;SnowTreeDensity=1.0;RedwoodGrassDensity=0.1;ShoreTreeDensity=0.05;SnowShoreTreeDensity=0.025;DeepWaterBiomesDepth=-0.24;InlandWaterObjectsDensity=0.5;ShorelineStartOffset=0.04;ShorelineThickness=0.0045;TerrainScaleMultiplier=(X=1.0f,Y=1.0f,Z=1.0f);SnowBiomeLocation=(X=0.2f,Y=0.2f);RWForestBiomeLocation=(X=0.5f,Y=0.5f);NorthRegion1Start=(X=0.25f,Y=0.0f);NorthRegion1End=(X=0.416f,Y=0.5f);NorthRegion2Start=(X=0.416f,Y=0.0f);NorthRegion2End=(X=0.582f,Y=0.5f);NorthRegion3Start=(X=0.582f,Y=0.0f);NorthRegion3End=(X=0.75f,Y=0.0f);SouthRegion1Start=(X=0.25f,Y=0.5f);SouthRegion1End=(X=0.416f,Y=1.0f);SouthRegion2Start=(X=0.416f,Y=0.5f);SouthRegion2End=(X=0.582f,Y=1.0f);SouthRegion3Start=(X=0.582f,Y=0.5f);SouthRegion3End=(X=0.75f,Y=1.0f);EastRegion1Start=(X=0.75f,Y=0.0f);EastRegion1End=(X=1.0f,Y=0.333f);EastRegion2Start=(X=0.75f,Y=0.333f);EastRegion2End=(X=1.0f,Y=0.666f);EastRegion3Start=(X=0.75f,Y=0.666f);EastRegion3End=(X=1.0f,Y=1.0f);WestRegion1Start=(X=0.0f,Y=0.0f);WestRegion1End=(X=0.25f,Y=0.333f);WestRegion2Start=(X=0.0f,Y=0.333f);WestRegion2End=(X=0.25f,Y=0.666f);WestRegion3Start=(X=0.0f,Y=0.666f);WestRegion3End=(X=0.25f,Y=1.0f)

After you configure an ARK to your liking in singleplayer mode, copy the values to your dedicated server's Game.ini file, and then host the server on the map called "PGARK" (ala "ShooterGameServer.exe PGARK?listen". The server will automatically load whatever PGMapName you have set. So if you want to do a different Procedural ARK, change the PGMapName value to "YourPGARK2" and you'll get a different savedata for that. You can revert back to any previous PGMapName to load the data of a previously saved PGARK. Note that if you have no existing save data for the PGMapName, it will use the PGTerrainPropertiesString to create the new ARK. But after you have save data for a PGMapName, the INI's PGTerrainPropertiesString will not take effect when loading that save data -- instead, it will use whatever procedural settings are contained within the PGMapName's existing savedata. In other words, to try out a new PGTerrainPropertiesString configuration, you either would need to delete your PGMapName's savedata, or use a different PGMapName.

To get a PGARK configuration that you like, we recommend experimenting in singleplayer through the in-game UI, and then once you have settings you're happy with, copy the PGTerrainPropertiesString from your Windows\Game.ini into your dedicated server's WindowsServer\Game.ini (into the [/Script/ShooterGame.ShooterGameMode] section as described above). Then, as long as you're hosting a new PGMapName, those settings will take effect just as they were in your singleplayer game! You can also easily share good PGARK configurations by sharing that string with other server hosts, just copy the text of PGTerrainPropertiesString to them, and they can put it in their own INI. Share your best PGTerrainPropertiesString settings on the Forum! Hosts can put the PGTerrainPropertiesString value into PGLastUsedSettings as well, which will then become visible to the in-game UI for further custom tweaking/iteration.

New System: Overriding/Modifying Map Spawners via INI

There's a powerful new INI-driven system to override, add, or substract all NPC spawners within the ARK. In particular you can use this to adjust the spawners of a PGARK to your precise liking. Here are some examples of how it works:

Add these INI values, as many as you want, into your Game.ini's [/Script/ShooterGame.ShooterGameMode] section. 

For example, this will REMOVE Trikes and Sauropod entries from the PGARK's Grassland Spawner, and it will remove Trikes and Ptero's from the PGARK's Jungle Spawner (you could then do a ConfigAddNPCSpawnEntriesContainer afterwards, to add them back in with different rates, if desired):

ConfigSubtractNPCSpawnEntriesContainer=(NPCSpawnEntriesContainerClassString="DinoSpawnEntriesGrassland_PGM_C",NPCSpawnEntries=( (NPCsToSpawnStrings=("Trike_Character_BP_C")),(NPCsToSpawnStrings=("Sauropod_Character_BP_C")) ), NPCSpawnLimits=( (NPCClassString="Trike_Character_BP_C"),(NPCClassString="Sauropod_Character_BP_C") )  )

ConfigSubtractNPCSpawnEntriesContainer=(NPCSpawnEntriesContainerClassString="DinoSpawnEntriesJungle_PGM_C",NPCSpawnEntries=( (NPCsToSpawnStrings=("Trike_Character_BP_C")),(NPCsToSpawnStrings=("Ptero_Character_BP_C")) ), NPCSpawnLimits=( (NPCClassString="Trike_Character_BP_C"),(NPCClassString="Ptero_Character_BP_C") )  )

This will ADD a Giganotosaurus Spawner to the PGARK's beach spawner, but limiting it to only 1 Giga per spawner (via the NPCSpawnLimits):

ConfigAddNPCSpawnEntriesContainer=(NPCSpawnEntriesContainerClassString="DinoSpawnEntriesBeach_PGM_C",NPCSpawnEntries=( (AnEntryName="GigaSpawner",EntryWeight=1000.0,NPCsToSpawnStrings=("Gigant_Character_BP_C"))), NPCSpawnLimits=( (NPCClassString="Gigant_Character_BP_C",MaxPercentageOfDesiredNumToAllow=0.01) )  )

This will OVERRIDE the PGARK's beach spawner to spawn NOTHING but Gigas and Rexes in equal weights and limits... OUCH!

ConfigOverrideNPCSpawnEntriesContainer=(NPCSpawnEntriesContainerClassString="DinoSpawnEntriesGrassland_PGM_C",NPCSpawnEntries=( (AnEntryName="GigaSpawner",EntryWeight=1.0,NPCsToSpawnStrings=("Gigant_Character_BP_C"))    ,   (AnEntryName="RexSpawner",EntryWeight=1.0,NPCsToSpawnStrings=("Rex_Character_BP_C"))    ),    NPCSpawnLimits=( (NPCClassString="Gigant_Character_BP_C",MaxPercentageOfDesiredNumToAllow=0.5) ,  (NPCClassString="Rex_Character_BP_C",MaxPercentageOfDesiredNumToAllow=0.5)  )  )

Using this technique, you can modify all of the spawners of any map. It will even take Mod creature class names, as long as you know their short (summonable) class names!

Here's a list of all the spawner class names on TheIsland, TheCenter, ScorchedEarth, and PGARK for your handy reference:

PGARK
DinoSpawnEntries_InlandWater_PGM_C
DinoSpawnEntries_TheDeepwater_PGM_C
DinoSpawnEntries_TheOcean_PGM_C
DinoSpawnEntriesBeach_PGM_C
DinoSpawnEntriesGrassland_PGM_C
DinoSpawnEntriesJungle_PGM_C
DinoSpawnEntriesMountain_PGM_C
DinoSpawnEntriesSnow_PGM_C
DinoSpawnEntriesSnowMountain_PGM_C
DinoSpawnEntriesSnowShoreline_PGM_C
DinoSpawnEntriesSwamp_PGM_C
DinoSpawnEntriesRedwoodsPGM_C

TheIsland
DinoSpawnEntries_Beavers_C
DinoSpawnEntries_DarkWater_C
DinoSpawnEntries_DarkWater_Mosa_C
DinoSpawnEntries_DarkWaterAngler_C
DinoSpawnEntries_DeepWater_C
DinoSpawnEntries_InlandWater_C
DinoSpawnEntries_Ocean_C
DinoSpawnEntriesRedwoods_C
DinoSpawnEntries_RedwoodWater_C
DinoSpawnEntries_ShallowWater_C
DinoSpawnEntries_SwampWater_C
DinoSpawnEntriesArcha_C
DinoSpawnEntriesBeach_C
DinoSpawnEntriesCave1_C
DinoSpawnEntriesCave2_C
DinoSpawnEntriesCave2-LowSpiderScorp_C
DinoSpawnEntriesCave3_C
DinoSpawnEntriesCave5_C
DinoSpawnEntriesCave5_Tough_C
DinoSpawnEntriesCave7-Fliers_C
DinoSpawnEntriesCaveIceWater_C
DinoSpawnEntriesCaveLava_C
DinoSpawnEntriesCaveWater_C
DinoSpawnEntriesDamiensAtoll_C
DinoSpawnEntriesGigant_C
DinoSpawnEntriesGrassland_C
DinoSpawnEntriesIceCave_C
DinoSpawnEntriesJungle_C
DinoSpawnEntriesMonsterIsland_C
DinoSpawnEntriesMountain_C
DinoSpawnEntriesPelican_C
DinoSpawnEntriesPenguins_C
DinoSpawnEntriesQuetz_C
DinoSpawnEntriesSnow_C
DinoSpawnEntriesSwamp_C
DinoSpawnEntriesSwampCave_C
DinoSpawnEntriesSwampCaveWater_C
DinoSpawnEntriesTinyCave_C
DinoSpawnEntriesTitano_C
DinoSpawnEntriesWater_C

TheCenter (which also uses many TheIsland spawners)
CustomAnglerSpawner_C
CustomPenguinSpawner_C
DunkEurSpawn_C
GrasslandsUnderArea_WaterSpawn_C
IceCave_Spawner_C
IceCaveWater_Spawner_C
Lava_Spawn_C
Lava_Upper_Spawn_C
LavaBeach_Spawn_C
LavaWater_Spawn_C
MiniCaveBearSpawner_C
SnowGrasslands_Spawn_C
SnowGrasslandsUnderArea_Spawn_C
SnowyLake_Mosa_C
SnowyMountain_Spawn_C
SpiderCaveSpawner_C
UnderwaterCaveSpawn_C
DinoSpawnEntries_OceanUnderworld_C

Scorched Earth
SE_DinoSpawnEntries_DeathWorm_C
SE_DinoSpawnEntries_RexSolo_C
SE_DinoSpawnEntriesBadlands_C
SE_DinoSpawnEntriesCanyonCave_C
SE_DinoSpawnEntriesCanyons_C
SE_DinoSpawnEntriesDunes_C
SE_DinoSpawnEntriesEZMode_C
SE_DinoSpawnEntriesGreenDesert_C
SE_DinoSpawnEntriesMountain_C
SE_DinoSpawnEntriesMountainCave_C
SE_DinoSpawnEntriesOasis_C
SE_DinoSpawnEntriesRuinsCave_C
SE_DinoSpawnEntriesRuinsCaveNoGolem_C
SE_DinoSpawnEntriesSandworm_C
SE_DinoSpawnEntriesWater_C
SE_DinoSpawnEntriesWyvern_C
SE_DinoSpawnEntriesWyvernTrench_C

Procedural Generator Modding Guide

The Procedural ARK Generation is nearly 100% Blueprint-driven, so it is super moddable (and the Generator Blueprints used can be overriden by any Mod!). We have no doubt that enterprising modders will be able to create even better algorithms and logic paths than us, for more lifelike and detailed procedural ARK's. Here are the first details about how to get involved with creating a unique Procedural Generator Mod in the ARK Dev Kit: 
https://forums.unrealengine.com/showthread.php?90664-9-28-ARK-Dev-Kit-v247-8-has-been-posted-to-the-Epic-Launcher!