Gameplay is by far the most important part of any game. Of course great artwork and a compelling storyline are also crucial, but building a strong, flexible, multiplayer-enabled system is time consuming and complex. Luckily Unreal built the Gameplay Ability System for this exact purpose. It has been battle tested in games like Fortnite and has proven that it can scale to large, complex games.
I was able to dedicated a ton of time this weekend to implementing the core foundation of this system and getting many of the things constructed that will be required mechanics later in the game when developing the different classes. This system makes all kinds of different gameplay effects possible like buffs, debuffs, instant spells and effects, damage over time, heal over time, and even passive effects with periodic or infinite durations governed by strict policies for how they interact with themselves and other effects.
Here's a list of all the things I was able to develop:
Established the game UI architecture
Stubbed out UI widget base and child classes
Setup Widget Controller class
Setup Overlay Widget Class & Overlay HUD
Added widget blueprint to act as the HUD master overlay
Setup Widget Controller Parameters
Setup delegates to broadcast attribute values to widget controller
Setup listeners for the callbacks
Updated game mode to use a new blueprint
Set widget class reference in Player Controller
Updated Health Globe and Global Progress Bar to pull actual values from C++
Created Overlay Widget Controller
Created blueprint from the Overlay Widget Controller class
Setup delegates and bindings for attribute value changes
Learned more about forward declaration in C++
Started working on the foundation for gameplay effects
Changed the effect actor class to use gameplay effects
Setup handles for gameplay effect contexts
Implemented function to apply effects to targets that can be called from blueprints
Implemented instant effects
Implemented duration effects
Implemented periodic effects
Implemented infinite effects
Added instant and duration effect application policies
Implemented Infinite effect application and removal
Implemented pre-attribute changes and post-attribute change executions to clamp values to never go below zero or above their defined max attribute value
Implemented post gameplay effect execution base logic into attribute set class
Added curve tables as magnitude for an effect as the effect's level goes up
Changed anti-aliasing method to Temporal Anti-Aliasing (TAA) from Temporal Super-Resolution (TSR) to avoid ghosting effects introduced by TSR
Big progress was made this weekend and I am beginning to feel way more confident with the overall architecture of the game. Determining what stuff should be in C++ classes versus what stuff should remain open and flexible on the blueprint side has been a fun challenge.
This week I will spend time looking in-depth at Gameplay Tags and implementing them into the overall ability system framework. This should empower me to start really tying the system together and giving the players and enemies more interesting and powerful skills and abilities.
Cheers,
Vinny
Comments