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: .. image:: /images/Dev/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: .. image:: /images/Dev/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: .. image:: /images/Dev/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.* .. image:: /images/Dev/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_. **Never** make copies of these files, only make children. * Derived classes are suffixed with _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. .. image:: /images/Dev/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.