top of page

RPG GAS

RPGPreview.mp4
Role

Gameplay Programmer

Engine

Unreal Engine 5 (C++ / GAS)

Duration

4 Months

Team Size

1 Developers

Cooperative RPG developed in Unreal Engine. The game features procedurally generated levels using PCG frameworks, lobby creation through steam's subsystem, the game system's were developed with a focus on on scalable and data-driven architecture. Designed and implemented an equipment system featuring randomized item attributes. The game is built using Gameplay Ability System.

Personal Focus & Contributions

One of the goals for this project was to learn more about procedural content generation tools in Unreal Engine. Since PCG graphs can be deterministic they were a perfect fit for a multiplayer project - the dungeon generator runs on the authoritative user and then replicates all output to clients, so they can rebuild the dungeons themselves. The dungeon generator itself runs a BSP algorithm to subdivide the grid into rooms, the rooms are then connected using Delaunay triangulation to guarantee all rooms are connected in a natural way with the surrounding rooms - the Prim's algorithm then finds a shortest path to connect all rooms, which is then used to discard most of the edges that lie outside of that path.


PCG Graphs do the rest - from edges and room coordinates they generate randomly offset splines to act as corridors and add noise to the rooms when sampling landscape to add irregularities and make their shape more interesting. 

PCGPreview.mp4

For this project I wanted to create systems with which it would be easy to produce new content. Loot managers, abilities and enemies - all utilize data tables, data assets, and curve tables. This data driven architecture allowed me to save significant amount of time on new content creation, iteration and balance changes.

PCG and procedural dungeons

Data driven gameplay systems

Adding a new item or a consumable can be done by simply defining a new data asset.

Dynamic ability tooltips.

Gameplay ability system

For this project I decided to learn Unreal Engine's gameplay ability system. Combat and character progression are built using GAS. Primary and derived attributes are defined through Attribute Sets, while gameplay abilities, effects, and gameplay tags are used to to create RPG combat with network in mind. Gameplay abilities are both used for combat and world interaction, for example: collecting a resource node or chopping down a tree.

​

Damage and combat calculations are handled through Magnitude Mod Calculations or Gameplay Effect Executions Calculation, allowing for contextual logic such as elemental resistances, scaling, and conditional modifiers.

DamageExec: Damage Types / Res

Gameplay effects: Buffs / Debuffs

Fireball ability is predicted; the server does server-side rewind and validates.

SsrPreview.mp4
AbiltiesPreview.mp4
bottom of page