Jump to content

Quickie Procedurally Generated ARKs How-To Guide


Jeremy Stieglitz
 Share

Recommended Posts

  • Administrator

Gonna be a bit of a rapid info dump on how Procedurally Generated ARK's (PGARK's) currently works -- will continue to flesh this out as I get more time over the weekend. Bear in mind the system is early and will be rapidly advancing, so if you use Procedurally Generated ARKs, there's always a possibility of losing your save data when the algorithms are further modified!

Without further ado, here we go! 

How To Configure your first PGARK

Launch the game, goto Play Local ARK, 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!

And here's an example of a very simple one!
http://steamcommunity.com/sharedfiles/filedetails/?id=785098977

 

Bonus video tutorial by ThickFreedom:

Link to comment
Share on other sites

  • Replies 258
  • Created
  • Last Reply

Top Posters In This Topic

17 minutes ago, Jeremy Stieglitz said:

Gonna be a bit of a rapid info dump on how Procedurally Generated ARK's (PGARK's) currently works -- will continue to flesh this out as I get more time over the weekend. Bear in mind the system is early and will be rapidly advancing, so if you use Procedurally Generated ARKs, there's always a possibility of losing your save data when the algorithms are further modified!

Without further ado, here we go! 

 

How To Configure your first PGARK

 

Hosting a Dedicated Server on PGARK

 

New System: Overriding/Modifying Map Spawners via INI

 

Are this suppose to be a link or something? It doesn't really explain much.

Link to comment
Share on other sites

Just now, NikouT said:

I am very positive we can use this map generated for singleplayer by copy-pasting it to map folder of the game itself.

You still need the launch options, map name and stuff(I suspect that to be the name you select while generating). Although it should be possible to do the generation on the server side. You also sort of need the location to put it into on the server as that might be different from the single player

Link to comment
Share on other sites

Guest BubbaCrawfish

Chances are he's still typing out the details, Just chill...

Although the big thing here is, prepare to lose whatever you put in there, so don't take vital stuff across yet.

Link to comment
Share on other sites

Guest BubbaCrawfish
1 minute ago, zeluz said:

ow did you do it for a dedicated server?Ive looked in all my server tools and cant find it anywhere

No, he's talking of singleplayer more likely.

Link to comment
Share on other sites

  • Mystalias pinned this topic
  • Chris locked this topic
  • Jen unpinned this topic
Guest
This topic is now closed to further replies.
 Share


×
×
  • Create New...