top of page

Pulse Arcana: Roleplay Classes and Magic

ARK: Survival Ascended Mod

Project Info

Supports Cross-Platform

Supports Singleplayer and Multiplayer Modes

Current Downloads 30,000+

Overview

Pulse Arcana is a mod project designed to create a customizable D&D experience within Ark: Survival Ascended. The first mod in the Pulse Arcana project, Pulse Arcana: Roleplay Classes and Magic, introduces a Roleplay Class System and an Ability system. The mod content is customizable through Google Sheets and server config files. 

Tool Used:

Ark Dev Kit (UE 4.5/5.2)

My Role

Lead Developer

As the Lead Developer, my primary responsibility is to transform general design ideas into a fully functional mod product for gamers.
I am also responsible for its ongoing maintenance, including testing, bug fixes, performance optimization, adding new features, and more.

Design Goals

The initial idea for this project was to create a real-time DnD storytelling game within ARK. Since the base game of ARK lacks role-playing elements and offers players a typical sandbox experience, our goal was to find a way to provide a unique gameplay experience within the DnD storytelling framework. To achieve this, we decided to develop a Roleplay Class System for ARK characters. As we progressed, we also decided to create an Ability System to further enhance the role-playing experience. Since this project is designed for playing DnD within ARK, all the systems should support multiplayer for both dedicated and non-dedicated servers. 

Technical Challenges

- Develop the mod to support single-player and multiplayer (dedicated and non-dedicated server) using Unreal Networking.
- Research and Study the ARK Dev Kit to gain a comprehensive understanding of the vanilla game system, base classes, and related internal functions. Leverage the vanilla code effectively for mod development.
- Design and implement systems that minimize conflicts with other community mods as much as possible.

Roleplay Class System

At the beginning, we compiled a list of 8 roleplay classes inspired by DnD, selecting those with distinct gameplay styles.
To create a unique experience for each role-play class, we began by reorganizing all ARK items and props based on each class's abilities and traits. This design shifts from a sandbox experience to a structured role-play environment means each class now has unique traits suited for specific roles, promoting better collaboration among players during the campaign. 
We then designed a Class Definition Sheet using GSheet that stores the item settings of each class. This sheet allows server admins and DMs to easily adjust the mod and create their own desired role-play class settings and game experiences, providing a flexible and customizable framework for enhanced gameplay.

RPclasses.png

Roleplay classes

In the Class Definition Sheet, we've designed a range of options to allow players to customize their roleplay class experience as much as possible. We tested and iterated the item settings and the following 4 item setting options for release: 

Level: The level at which the player can unlock this item.

GiveItem?: Whether the item is given to the player directly upon unlocking.

GiveItem Quantity: The number of items given to the player upon unlocking.

GiveItem Quality: The quality of the item given.

ClassDefinitionSheet.png

Class Definition Sheet

Implementation of Roleplay Class System

According to our design goals, the Roleplay Class System will enable players to select a specific class to play. Subsequently, the system will restrict players from using items that are not permitted by their chosen class, based on the Class Definition Sheet created by DM/Server Admins. 
Below are the key features of the Roleplay Class System and how I implemented them:

1. Enable Player to Select Roleplay Classes
To implement the class selection feature, I created a custom Player State class inherited from the ARK ShooterPlayersState class which stores the replicated roleplay class variable. I then added related functions in a custom PlayerController class, which inherits from the ARK PlayerControllerBlueprints, and integrated class selection widgets into the original ARK HUD.
For the DM/Gamesmith class, our goal is to only allow the DM player to modify the mod. To achieve this, I implemented a verification process that ensures only players who know the server password can select and play the DM/Gamesmith class.  

Menu.png
Verification.png

DM/Gamesmith Verification

Class Selection

2. Transfer Class Definition Data from Google Sheets to Player (BP_PlayerController)
We wanted to make the mod modification convenient to use for the DM/GameSmith players, so we chose the GSheet as the tool to edit the class item settings so that players can edit the Class Definition Sheet using any device anywhere. But the problem is that ARK Dev Kit didn't provide any plugins that allow the Blueprint Class to get the data from GSheet and not allow the mod developer to create and script the CPP class. 
Therefore, I used an API that can transfer data from GSheet to Unreal Blueprint by using the HTTPGetRequest and HTTPGetResponse nodes. It transforms the GSheet data as a string value and transfers it into Unreal Blueprint. Then, I will just need to process that string value into the desired data that I would use for further development.

ClassDefinitionSheet.png
Debug.png

Debug Message of Current Class Items

Class Definition Sheet

3. Sync Updated Class Definition Data to All Players in the Server

When the DM/Gamesmith updates the Class Definition Sheet, the system should synchronize these updates with all other players.
To implement this feature, I created a SaveGameObject stored on the server to hold the latest Class Definition Sheet. The reason I use SaveGameObject instead of a variable in GameMode is that it ensures the preservation of the data when the server crashes or reboots. Additionally, PlayerController connected to the server can still easily access the data in it via server RPC(Remote Procedure Call) just like getting data from GameMode.

UpdateClassItemList.png

When the DM/GameSmith player successfully retrieves the Class Definition Data from the Google Sheet, the BP_PlayerController will execute the server RPC to update the Class Definition Data of the SaveGameObject on the server. Following this, the GameSmith player controller will obtain the player list from GameMode and request all online player controllers to read the updated SaveGameObject from the server, retrieve the new Class Definition Data, and overwrite their local copies. The following demo illustrates this process in-game:

Synchronization of Class Definition Sheet

4. Item Restriction System

The Item Restriction System aims to prevent players from using items they are not permitted to use according to the Class Definition Sheet.
In the ARK base game, players need to open the inventory first, then use/equip items by right-clicking the item icon and clicking use/equip, or slotting the item to the Hotbar first, then using hotkeys to use/equip. To prevent the use of items, I researched the PrimalItem class (base class of all ARK items including armor, weapons, materials, food, etc) and went through the available internal functions in Unreal Blueprints and found the attributes and functions that could be used to build the system.
When players open the inventory UI, this system is activated and will check all items in the inventory and set the attributes of those not allowed for the player's roleplay class, preventing them from being slotted or equipped.

Additionally, the ARK PrimalItem base class allows players to slot the item by double-clicking the item icon in the inventory and there is no internal function or attributes to prevent this action which will break the Item Restriction System.
To fix this, I added functions that check slotted items and automatically return items not allowed to be used by the selected roleplay class back to the inventory.
The following video demonstrates how this system works:

Sets.png

item set ​relationship between classes

ARK base game offers more than 600 items. However, we don't expect DM/Gamesmith players to list every single item in the Class Definition Sheet (there are too many base items + mod items) but only focus on feature items designed for specific roleplay classes.
In this case, Items not listed in the Class Definition Sheet will be ignored by the Item Restriction System during inventory checks.

Ability System

We designed the Ability System to empower ARK characters with the ability to cast magic spells to enhance the gameplay experience of roleplay classes. It provides 5 types of 23 default abilities specifically designed for roleplay classes, and a mana system that supports the use of abilities for each class.

Before implementing the Ability System, we designed more than 15 different abilities for the roleplay classes, together with our design goal of this project, I have enough information on how this system should work.
I then generated the following design requirements for the Ability System:

1. This system must support Multiplayer since the abilities will frequently be used in various combat scenarios.
2. This system should be flexible for devs to create new abilities in Unreal
3. This system should have customization features that allow DM/GameSmith players to edit the attributes of abilities similar to the Class Definition Sheet

How to use Ability in ARK

An important design question before implementing the Ability System is how will the player use abilities in ARK. Unlike other RPG Ability Systems, ARK didn't provide those ability slots and keybindings for various abilities, I also found that the mod project does not have full control with keybinding as it will mess up the keybinding of the original game.
However, ARK did provide the Hotbar to slot ARK items like weapons, tools, food, armor, etc. ARK also has default keybinding for the use of slotted items for both PC and console. In this case, I think creating abilities as ARK items is a good direction. First, the Abilities can be slotted to Hotbar like all ARK items and players can rearrange the abilities in Hotbar for different combats; Second, creating Ability as ARK items can make it fully adapted to the ARK inventory system, also lets the ability connected to ARK craft system and engram system for further development.

PrimalItem_Ability

After researching the ARK PrimalItem base classes, I chose to create the PrimalItem_Ability inherited from the PrimalItemConsumableGeneric base class which is the most appropriate ARK base class for the implementation of the Ability System.

All abilities will derive from the PrimalItem_Ability base class. According to the paper's design abilities, I created 5 types of abilities in PrimalItem_Ability which are Projectile, Instant, Buff, Toggle Buff, and Class Switch.

Projectile: Activation consumes mana immediately, initiating cooldown 

Instant: Activation consumes mana immediately, triggering instantaneous effect

Buff: Activate Buff consumes mana immediately, deactivating after the perform time and entering cooldown status. 

Toggle Buff: Activation consumes mana immediately and continually drains mana until manually deactivated or depleted. 

Class Switch: Activation changes player's roleplay class immediately.

Hotbar.png

Abilities slotted in Hotbar with CD indicator

AbilityType.png

PrimalItem_Ability Attributes

Mana System

To enable players to use abilities, I created a mana system for roleplay classes, allowing the PrimalItem_Ability to consume mana. Since abilities are replicated, all mana-related variables are also replicated, and calculations are performed server-side.  Additionally, according to the design requirements, I added customization features that allow DM/GameSmith players to modify the roleplay class mana settings and ability attributes via the GameUserSetting.ini file located on the server.

Warlock ManaBar.png

Warlock mana bar

ManaSetup in Server.png

Warlock Mana Configuration and Ability Attributes Setup

Feature Abilities

Transform (Druid) & Mind Control (Mage)

The concept of Druid Transform is to grant the Druid class the ability to shapeshift into any creature(both rideable and unrideable dinos) like the Druid in the D&D campaign. With the vast array of creatures available in ARK, there are many interesting gameplay possibilities of druid transforms waiting for players to discover. They can morph into a Rox to fight, become a worm or snake to hide and escape, or shapeshift into a bird to steal things from the air. 

Mind Control is a projectile ability designed for Mage. Mage players can take control of the hit dino to move or attack. Like the Druid Transform, mind control continually drains mana until manually deactivated or depleted. 
The difference is when Mage players use the mind control ability, the Mage character will stay where they use the ability and the character is still able to be damaged, once the mage character takes damage and dies, mind control will end too and players need to respawn as they die.

Druid Transform

Mage Mind Control

Lessons & Challenges

To implement these two abilities, my initial idea was to have the Player Controller possess the Dino Character and then possess back to the Human Character when Transform/Mind Control ends. However, this approach may cause issues with the player camera, replication, HUD, and disabled input.
Instead of using standard possession, I discovered an internal ARK function that allows the player to manually be set as a rider for a dino. By using these functions, I could set the human character as a rider for the target dino, smoothly transferring the Player Controller from the human character to the dino character. I then hid the human character and made it invulnerable, so that this ability looked like Transforming rather than riding.
However, not all dinos in ARK are rideable, but we expected the Transform/Mind Control can control all the dinos. For unrideable dinos, I had to try the Possession again to take control of these unrideable dinos, then hide and teleport the human character on the top of the dino while Transforming/MindControlling. 

Enhanced Jump & Fireball (Warlock)

Enhanced Jump is an instant ability that allows players to jump significantly higher than normal. 
Fireball is a projectile ability that grants a player the power to cast a fireball. Fireballs deal triple damage to wood and thatch structures.
Note: Unlike vanilla Ark consumable items, PrimalItem_Ability can be used in all movement modes including walking, failing, or swimming.

Combo play of Enhanced Jump and Fireball

Flicker and Meditate (Mage)

Flicker is an instant ability that immediately teleports the player a short distance forward from the current position.
Meditate is a toggle buff ability that increases the mana regeneration speed. 

bottom of page