Senior Gameplay Programmer
ARK: Survival Ascended
Ark: Survival Ascended Trailer
WORK SUMMARY
ROLE
-
Senior Gameplay Programmer
ENGINE
-
Unreal Engine 5
RESPONSIBILITIES
-
Gameplay Systems Design and Scripting.
-
Gameplay Programming.
-
Technical Design
MY WORK
-
New Camera System: Designed and scripted the game's new camera system.Programmed camera subsystems that were able to adapt to each of Ark's creatures' speeds. The camera was able to adjust its interpolation speed dynamically, based on the creature that the player was controlling.
-
Creature foliage system: Used blueprint to create a system to grow foliage on dinosaurs. The system allows level designers to paint foliage onto creatures. The foliage dynamically grows over time and can be harvested by players.
-
New durability system: Implemented a new durability VFX system for weapons, armor, and dinosaur saddles.
-
New dragging system: Implemented a system that allowed players to drag other players and dinos when dead. The new system substituted the old Ark ragdoll physics for an animation-based one that used ground-conforming logic to imitate ragdoll.
NEW CAMERA SYSTEM
-
ARK: Survival Ascended introduced a new camera system, with a more natural feel than the old ARK: Survival Evolved (2017) camera. I implemented the new camera system from scratch, using C++ and Unreal Blueprint.
IMPROVEMENTS OVER OLD CAMERA
-
More natural feeling through spring interpolation: The new camera system uses spring interpolation for the camera pivot and arm length, to give the camera a more natural feeling. The old system used a hardcoded linear interpolation.
The camera pivot (red) is constantly interpolating to its desired location (green) using spring interpolation.
-
Customizable camera settings: although the new camera is implemented in C++, its behavior can be easily adjusted in blueprint, through the use of the camera settings BP.
Some of the camera settings that designers can customize.
-
Different camera Profiles: the new system lets designers create different camera profiles with different interpolation settings, so that players can choose the camera behavior that more adapts to their preferences.
The game has three different camera profiles by default, but modders can create and add new ones.
Players can choose their preferred camera profile ("Camera Mode") in the Camera menu.
-
Easily scalable: one of the goals of the camera system was to create a camera that worked for all dinosaurs in the game, from the slow, small turtles, to gigantic t-rexes. The system is able to dynamically change its interpolation values based on the speed of the creature that the player is controlling.
CUSTOMIZABLE CAMERA SETTINGS
-
Using the new camera system, designers have access to a lot of different camera settings that were inaccessible before:
-
Pivot location (it can be assigned to a specific bone).
-
Pivot interpolation settings.
-
Arm Length (distance between the camera location and the camera pivot).
-
Arm Length interpolation.
-
Camera Rotation interpolation.
-
Camera Pivot Offset.
-
The camera settings that designers can modify.
PER-AXIS PIVOT LOCATION SPRING INTERPOLATION
-
The pivot is the point in space that the camera is aiming at. At any given moment, the current camera pivot is trying to interpolate to it's "desired" location, by using spring interpolation.
The camera pivot (red) uses spring interpolation to follow the desired pivot location (green)
-
Designers can set different interpolation values per-axis. This allows for faster interpolation on the Z axis when the player is jumping, and a slower interpolation on the X and Y axes when the player is running.
Designers can choose different interpolation settings for each camera axis.
For the player, the camera has a slower interpolation on the X and Y axes.
The camera interpolates faster on the Z axis.
DYNAMIC INTERPOLATION BASED ON SCREEN LOCATION
-
There are situations where we want the camera pivot to interpolate faster than normal. For example, when the player gets closer to the borders of the screen, we want the camera to quickly move towards the character, to prevent it from getting out of view.
-
The new camera system, allows us to dynamically modify the camera interpolation settings based on the player's screen location, using something called Interp Params Modifiers.
The Interp Params Modifiers allow us to change the pivot interpolation settings based on the player's location on the screen.
The pivot location interpolation becomes faster as the player gets closer to the edges of the screen.
The dynamic interpolation speed is achieved thanks to the interpolation modifiers.
-
The logic for these modifiers was implemented in blueprint, so that designers and modders had easy access to it, and could edit it to fit their needs.
Scroll and zoom the image above to see the rest of the blueprint logic.
PITCH-BASED CAMERA MODIFIERS
-
The new camera system includes a sub-system called the pitch-based modifiers, which change the camera settings based on the camera pitch. This system allows, for example, to get a better view of the level when players are looking at the character from above, and prevents the character from getting in the way of the camera when players aim the camera up.
The pitch-modifiers allow players to get a better view of the character and the level from above.
Example of a pitch-modifier set up in the camera settings blueprint.
-
Like the screen-based modifiers, the pitch modifiers are also implemented in blueprint, to make it easy for modders and designers to customize the logic if needed. The following image shows part of the pitch-modifiers logic:
Scroll and zoom the image above to see some of the pitch-modifiers blueprint logic.
THE DINOSAUR CAMERA SYSTEM
-
The new camera system was originally intended for the player. Midway through the development of the system, we decided to use the camera for the dinosaurs as well.
-
The main challenge was to make sure the system worked for all creatures. There's over 100 creatures in the game, each moving at a different speed, some of them moving extremely slowly and others moving very fast.
-
Another challenge was to make the camera system smart, so that the camera settings adapted to each creature's movement dynamically. We didn't want designers to have to change the camera settings on a creature-by-creature basis.
SPEED-BASED CAMERA MODIFIERS
-
The dinosaur camera system incorporates pivot location interpolation multipliers which allow the pivot location to interpolate faster or slower based on each dinosaur's maximum speed. Slower creatures get smaller multipliers, while faster creatures get higher multipliers, assuring that the creatures always stay on the screen and that the camera moves smoothly.
-
All of the multipliers are calculated dynamically by the camera system for every creature, without requiring any per-creature tweaking from designers (although designers can adjust the multipliers' behavior if needed, see below).
Slower creatures get lower multipliers (highlighted in red), which makes the camera interpolate slower.
Faster creatures get higher multipliers (highlighted in red), which makes the camera interpolate faster.
-
The speed-based multipliers also adapt to the movement mode of the creature (running results in higher multipliers than walking) and each camera axis has different logic to calculate its corresponding multipliers.
-
Even though the system is dynamic, designers still have the ability to customize the behavior of the interpolation multipliers, for creatures with unique or weird movement patterns. However, this is rare, and most creatures use the default values for these settings.
Designers can change the behavior of the camera pivot interpolation multipliers on a per-creature basis by changing the above default settings.