Getting Started

Things you will need:

  • The ARK DevKit
  • The source files for ArkFrame
  • Your brain

Obtaining the ARK DevKit

The latest stable build of the ARK DevKit can be installed via the Epic games Launcher.

It will take time, it is a large installation that essentially includes all of the raw assets of the game.

This documentation will not go into how to make mods using the ADK from a general sense, only within the context of using ArkFrame.

For starting tutorials on ARK modding please visit the Unreal Engine’s Ark: Survival Evolved sub-forums. Here you will find tutorials and entry into how to use the ADK.

Additionally after you have learned a bit about how to use the ADK you can join the Discord server to keep up to date on changes in the ADK itself. Please be mindful that this discord server is community run and managed. They have no official status with Studio Wildcard.

ARKModding Discord

Obtaining the source files for ArkFrame

The latest source files for ArkFrame can be obtained from the repository at git.arkframe.com/ArkFrameDev/ArkFrame

Download the source files into the mods folder of the ADK. It should look like the following:

_images/newProject_arkFrameSource.png

Join the ArkFrame Discord server to keep updated with changes upcoming features and ask questions.

Setting up a new ArkFrame project

To start a new ArkFrame project create a new folder in the “Mods” directory as you would any normal mod project in the ADK and add a level and a CHILD of the PrimalGameData_ArkFrame file to it. (Don’t forget to link the PGD in the level file and make sure to suffix the PGD filename with your mod name as this is best practice)

NOTE: Your new mod directory should not be stored within the ArkFrame directory or vica versa. ArkFrame mods do not include the ArkFrame source files within them

Next you will want to make a CHILD of the ArkFrame_ModData_BP, which can be found in:

/Game/Mods/ArkFrame/ObjectTypes/

Rename it with your mod suffix (As you should do with every file in your mod), and your mod directory should now look like this:

_images/newProject_firstFiles.png

Now open your PrimalGameData_BP_YourMod file and search for the Server Extra World Singleton Actor Classes and link your ArkFrame_ModData_BP_YourMod class in it like so:

_images/newProject_linkModData.png

It is recommended that you also link the ArkFrame_Manager & ArkFrame_DataState classes (The actual one in the ArkFrame source files located in /Game/Mods/ArkFrame/Core/Blueprints/ , not children or copies). This will allow for debugging in PIE.

NOTE: It is safe to leave these files linked when you go to cook and upload your mod. The Manager & DataState classes have logic in place to ensure that only one of each will exist at runtime.

_images/newProject_linkModData_AndArkFrameManagerDataState.png

Congratulations, that’s all you need to set up the necessary files for an ArkFrame mod.

Some important things to keep in mind when working with ArkFrame

  • ArkFrame does not allow for remapping of files, in fact it aims to replace our need to altogether (Though there is still some distance to go before that is actually true). As such you should not remap classes in the PGD, the nature of ArkFrame means that it really absolutely must be first in load order for users.
  • If you are adding things like new creatures, structure, items, etc you should inherit from the ArkFrame variations of these classes. * Absolute Root classes are prefixed with ArkFrame_<Classname>. Never make copies of these files, only make children. * Derived classes are suffixed with <Classname>_AFO

Working with the ArkFrame_ModData_BP

This blueprint is the core of how your mod communicates with ArkFrame and other mods. Think of it like a Registrar for your mod. Each of the following sections serves a purpose to the ArkFrame system (Or will in the future), it should be filled out in entirety and kept updated when you change parts of your mod.

_images/newProject_modDataNew.png

ModName

The ModName is one of the most important things to consider. This value should be short and unique. Don’t rely on a common name as it is used all throughout the ArkFrame system for identifying objects as being part of the same mod.

ModID

The ModID is currently not planned to be used for anything other than display purposes so it should be set to the public version of your mod.

ModDescription

This field will be used in the Mod Information just as the ModID will, primarily for display purposes.

bIsLiveEventTracingEnabled

This field should be left alone as it is used during runtime for quick lookup of your mods event tracing status

ConfigSaveClass

If this is left blank a default mod config will be generated with the basic options that ArkFrame uses for every mod; however, mod authors can create a derived BP to generate your own config options that will show up in the mod configs interface for users.

ClassRegistry

Arguably one of the most important parts of the class. Any and all classes in your mod should be listed here. This is part of the mod ownership lookup that allows ArkFrame and other mods to identify classes as part of your mod. This is an explicit array so you should list every class here.

ResourceClassDefinitions

This feature is not currently implemented but in the future it will be used in the resource dictionary. Allowing resource items to be consolidated based on type. (wood, iron, copper, clay)

AddItemToInventory

This feature is also not fully implemented, but when it is it will allow easy addition of items to any inventory during instantiation.

AdditionalHarvestResources

This array will allow you to add new harvestable resources to the game. It works on either an explicit or a query based system to define what the item(s) should be harvestable from.

AdditionalMobDrops

This also is not fully implemented yet but works much the same as the “Additional Harvest Resources” array.

KeybindDefinitions

This is where you can define new user-remappable keybind classes.

LogicExpansions

This is one of the largest features of ArkFrame. It allows you to extend any actors in the game (Thanks to the explicit naming and querying system) and react to many of the events that were only available to mod authors if they remapped classes.