Tutorial: Creating a core-data Mod (Not a Map, just a Mod :)

First, make sure you’ve read the Intro Tutorial (https://forums.unrealengine.com/showthread.php?75357-Tutorial-Getting-Started-with-the-ARK-Dev-Kit!) and understand the Cooking & Upload process described there – now, onwards!

Note: we now have a video tutorial that goes through this process!

With ARK Dev Kit v185, we’ve added the capability for core data mods, that can override the core game data and load any other map you want (usually TheIsland). This tutorial will go over how to set one up and briefly touch on what you can do with them (which is nearly anything :slight_smile:

First, please make sure you get & install the latest ARK Dev Kit Engine DLL’s from GitHub, and the latest ARK Dev Kit content (v185) from Steam.

Then, with the Dev Kit, open up this Mod Map, which we’ve included as an example (it’s really just a shell to cook the data):

In that map, open the properties for that level’s WorldSettings: see how the value for “Primal Game Data Override” points to “Blueprint’/Game/Mods/GenericMod/PrimalGameData_BP_GenericMod.PrimalGameData_BP_GenericMod’”? This level is really just a stub to contain the data and cook it; the WorldSettings “Force Load Map” Property (set to TheIsland) tells this stub level to actually load TheIsland instead!

You can edit “Blueprint’/Game/Mods/GenericMod/PrimalGameData_BP_GenericMod.PrimalGameData_BP_GenericMod’” to have anything you want!

The only thing to remember is that you shouldn’t modify any EXISTING game classes directly, anything that’s outside of the Mod directory should remain read-only. Instead if you want to change any classes values, you should SUBCLASS them and move the subclass into the "Mods\GenericMod" folder to ensure it gets cooked, and then reference that (or add a completely new asset there).

This enables you to effectively override all of the core game data, including the blueprint class used for DefaultGameMode (which you can create as a subclass of Blueprint’/Game/PrimalEarth/CoreBlueprints/TestGameMode.TestGameMode’, or just use the one we’ve already subclassed at Blueprint’/Game/Mods/GenericMod/TestGameMode_GenericMod.TestGameMode_GenericMod’) – thus enabling you to completely alter the gamemode of TheIsland as you wish, including the PlayerPawn that it spawns, the PlayerController, the HUD and all associated UI’s, etc! Just remember: use blueprint subclasses or blueprint duplicates and put your new Blueprint Assets into the Mod folder – don’t modify the original classes because they WON’T be cooked into your mod!

Furthermore, here are a few special arrays that are fairly self explanatory that will allow you to override specific aspects of TheIsland’s world without having to cook a new map:

**In the "Blueprint’/Game/Mods/GenericMod/PrimalGameData_BP_GenericMod.PrimalGameData_BP_GenericMod’:
**Remap NPC: any “From” NPC class will instead be changed into a “To” NPC class. This lets you spawn, for example, your new SUPER Raptors instead of regular Raptors, if you wish. Or Brontos instead of Dilos.
Remap Supply Crates: This is important if you want custom items to be dropped via Supply Crates. Subclass or Duplicate to create new Supply Crates (put them in the Mod folder), and then remap the existing supply crates to instead use the new ones!
Remap Resource Components: Subclass or Duplicate the Harvesting Components, and then they’ll use yours instead of the original ones. Useful if you want custom resources or resource harvesting values.
Remap NPC Spawn Entries: Remap the NPC Spawn Entry objects to new ones for totally custom spawn values across The Island!

In the "Blueprint’/Game/Mods/GenericMod/PrimalGameData_BP_GenericMod.PrimalGameData_BP_GenericMod’:
(Quick path to overriding various aspects of the Engrams/Item Drops if you do not wish to create an new set of Engram classes – can be faster , for example, if you just want to limit Engrams to make a primitive-tier mod)
Exclude Item Indices: will ignore dropping the items matching these indices
Override Engram Entries: will let you override the costs, visibility, and levels of the different engrams
Dino Spawn Weight Multipliers: if you want to quickly alter the weight of various dino spawn probabilities

Note you can also just override the WorldSettings’ “Primal Game Data Override” on any ModMap as well, if you actually want a custom core data on your own map. You don’t need to use the “Force Load Map Name”, that’s just if you want to explicitly have a coredata-only mod that actually runs ‘TheIsland’ map.

And remember, dedicated servers can use your mod with the following process (we’ll try to streamline this as we proceed):

So as you can see now, thee GenericMod is actually that Primitive-Tier mod! Specifically the GameData blueprint sets it to use a Custom GameMode, and the custom GameMode overrides the Engram levels and what Engrams & Items are dropped (you’ll likely want to reset the modified values out of the Blueprint’/Game/Mods/GenericMod/TestGameMode_GenericMod.TestGameMode_GenericMod’ if you intend to use this as an example and want more than the primitive-tier items :).

That is just the tip of the iceberg – as described above you can override essentially every aspect of the game via the GameData, the sky is pretty much the limit depending on how far you want to take it :slight_smile:

Soon we’ll post more info on how to use blueprint logic to make even more customized game modes, such as competitive team modes. For now, go forth, mod, and see how far you can take ARK into whole new realms of gameplay – you have a vast hungry audience waiting to play your content :slight_smile:

Got it, done it. I also made new level, copied blueprints by hand, linked them up to my world and when I click play I crash :smiley: HELP Meeeee :- )

Ok for nobss like me, u need to add PostProcess stuff in to there too so ur game wont crash…

#vote sticky :slight_smile:

stickied :slight_smile: Happy Adventuring

To test it, what you’d want to do is open TheIsland, set the Primal Game Data Override, and the PIE. That works fine for me – what is your exact process?

A step by step video tutorial would be great, i hope that will be showcased on the Twitch stream today.

How long does the upload process usually take? Mine just keeps hanging forever at “Loading Steam API…OK.”

Should only take a few moments, it’s surprising that it’d hang for any significant length of time – can you try shutting down your Steam Client before you run the Dev Kit?

Trying that right now, but it doesn’t look like its making a difference. I had warnings during the cooking, maybe thats why? I’m very confused on how to cook out a custom version of TheIsland PLUS custom game mechanic mods right now, and not sure how that would work. I’ve read the whole post and still am quite confused as to how I would go about this

If you want a custom version of TheIsland AND new mechanics, then what you’re gonna wanna do is move all the contents of Maps\TheIslandSubmaps (I think you can just move the whole directory) into the Mods\YourMod folder, and in the WorldSettings of TheIsland.umap, set a subclass of the PrimalGameData (which you should put in Mods\YourMod) into the “Primal Game Data Override” property. Then cook your Mod, with the map TheIsland in the “Maps to cook” textbox. It’ll be a verrrry long cook because TheIsland is quite huge, but it should eventually finish. Anyhow, the Steam Upload should give more output than that either way, so it’s very strange that it would hang for some reason. We’ll see if we can reproduce that.

However, consider what is it about TheIsland that you want to change necessarily, would it really require recooking TheIsland itself? For example, if you just want farmable Cannabis seeds, those could be droppable or harvestable via additions to the PrimalGameData Override, and not actually require modifying/recooking TheIsland itself?

Thank you, this helps me out tremendously! I can’t get over how much support you guys are giving to your customer base, I feel like we are being pampered here! :smiley:

Well let me ask you this about the recooking aspect; I had to manually paint in the cannabis plants onto each sublevel, so therefore wouldn’t I need to cook out each of those sublevels? Correct me if I am wrong please, I might be missing something.

Also, I have a firewall on my router and port 27015 forwarded for steam, could that be the issue why its not uploading and just hanging there? In addition to that, I am also running a dedi server of Ark on port 27017 (doubt that would be the problem).

Hmm odd. Can I get a copy of your SinestrosRealmMod.vdf?

New error this time after shortening the description (thats what fixed the other error it looks like, either that or removing " from the description/changelog)

Ah Sinsarisinestro, unfortunately your cooked map exceeds Steam’s current Workshop Item Limit of 500 MB :frowning:

We’ll see if they can raise it to 2GB for our needs, but until then, your best bet may be to try to achieve your goals through a PrimalGameData Mod, or use a reduced version of the map…

Hopefully Valve will help us with this soon :slight_smile:


Hm alright. Not sure how I would use a reduced version of the map. Gonna brainstorm I guess! Thanks for the help, and could we get a sticky/announcement when steam raises the file size cap? Please and thank you.

If it will help I can contact steam and pester them about raising it too :stuck_out_tongue:

I’m trying to create a mod that tweaks the construction costs for craftable items, I’ve tried to make the changes quite a few different ways and none have been successful for me so far.

I have my mod set up in its own folder underneath the Mods directory, and have copied all of the GenericMod files over into my new folder. For my test case, I copied the PrimalItemStructure_ThatchWall item into my folder via various methods (including right click and create blueprint based off of this to create a child item, which to me seems the proper way to do it). I tweak the crafting costs to craft the thatch wall in the “Base Crafting Resource Requirements” section, save and compile the blueprint. Nothing shows up in game.

My next attempt was I added an engram blueprint override so that the engram points to my new overridden thatch wall using the PrimalGameData_BP blueprint and that hasn’t worked either.

I’m able to “see” and play my mod in the game without any problems, but none of the changes I’ve tried to make have been showing up in game at all.

Where am I goofing up?

You would need to find the blueprint for EACH item you want to make the changes of material cost for and then do so on each one from my understanding. Ex: Thatch Door, just find the blueprint for it, duplicate it & rename it accordingly, and look under required crafting mats or something like that and then find the correct variables and make the desired changes.

Hi, I think the modfied classes are not referenced in the (dummy) map, they are only referenced in the sub maps of “TheIsland”. So they were not cooked and not served. I got the same problem, i try to overwrite some classes, but as long as they are not referenced in the map the cooking process will not touch them. By now i did not find a way or better i do not want to include “TheIsland” Map in my Mod :slight_smile:

Alright so I need to reference playercharacterstatus_BP, it is referenced my playerpawntest, which is referenced by testgamemode, referenced by map so all good once I have the child BPs set up and eveything’s referencing each other. Major problems is there isn’t a nice little choose your file drop box in playerpawntest referencing playercharacterstatus_bp in the default tab. playercharacterstatus_bp is mentioned in the component tab of playerpawntest, but I cannot rename it, delete it, move it or replace it with my child BP in anyway. So how do I reference my child playercharacterstatus_BP from playerpawntest?

Does anyone know how to increase the harvest amount of individual resources? I’m currently remapping the resourcecomponent_wood to my copy of it. I don’t know if I’m editing the wrong values or need to edit another blueprint, but I just want to increase the amount of wood you get when harvesting trees.