
Froströk - Internship
During my internship at Froströk, I developed a fully replicated inventory and item generation system for multiplayer, and implemented core gameplay features using the Gameplay Ability System (GAS).
Internship Info
Role: Gameplay & Systems Programmer
Time Frame: 19/05 - 24/12
Engine: Unreal Engine
Inventory System
Spatial Inventory
I built a fully replicated spatial inventory system in C++ for multiplayer.
The system includes:
-
A 2D grid of inventory slots.
-
Items with their own width and height, allowing them to cover multiple slots.
-
Space management where players arrange items within the grid.
-
Item tracking based on a top-left slot index for easy placement and collision checks.
-
Automatic calculation of how much space each item occupies using top-left index.
-
Support for equipping items such as weapons and armor.
Items
Each item can be extended with an attribute called a fragment.
This system:
-
Uses Unreal’s instanced struct framework for efficient performance and memory usage.
-
Allows items to be expanded without modifying their core structure.
-
Stores data such as:
-
Icon
-
Item name
-
Equipment properties
-
Weapon information
-
Fragments make it easy to customize and build on item functionality.

This system is similar to Path of Exile

Example of fragments
Combat System
Gameplay Ability System (GAS) – Combat Refactor (C++ & Blueprints)
I was responsible for replacing an existing Blueprint-based combat system with a fully GAS-driven solution using C++ and Gameplay Abilities.
-
Rebuilt the core combat system using Gameplay Abilities, Gameplay Effects, and Gameplay Attributes, replacing the previous Blueprint-only implementation.
-
Implemented the gameplay flow so that all player actions (attacks, dodges, and special abilities) are triggered and managed through Gameplay Abilities.
-
Used Gameplay Effects to handle all stat-driven interactions, such as damage, attribute modifications, and temporary buffs/debuffs for both players and enemies.
-
Implemented a combo-based attack system where:
-
A Gameplay Ability activates the attack, plays the correct animation montage, and communicates with a dedicated Combat Component.
-
The Combat Component tracks the current combo index, which defines per-hit data such as damage, stamina cost, and other parameters.
-
-
Set up a data-driven animation system:
-
Animations for each combo step are stored in data assets and looked up using gameplay tags.
-
Each weapon has its own data table of available montages, making it easy to add or tweak weapons without changing code.
-

Ability system flow

Example of combo data
