top of page
frostrok_logo.jpg

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.

image.png

This system is similar to Path of Exile

fragments.png

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.

GAS.png

Ability system flow

Combo.png

Example of combo data

bottom of page