Downtown West Modular Set now available for free

Simple Skill System

Erebnyx Studio - Nov 29, 2020

Easy to use data driven skill framework. Made to work for all kinds of effects such as player skills, NPC abilities, environmental effects, etc...

  • Supported Platforms
  • Supported Engine Versions
    4.25 - 4.26
  • Download Type
    Engine Plugin
    This product contains a code plugin, complete with pre-built binaries and all its source code that integrates with Unreal Engine, which can be installed to an engine version of your choice then enabled on a per-project basis.

Tutorial: https://www.youtube.com/watch?v=cbmAC1bXo28


  • you need to create all kinds of skills with effects interacting with each other, but if like me you find the Gameplay Ability System hard to use, the Simple Skill System plugin is for you.
  • loosely inspired by the Entity-Component-System pattern for the architecture/usability benefits (not the cache coherency):
  1. components are pieces of data, a damage value or a duration for example.
  2. effects are sets of components.
  3. systems are the logic that can modify/add/remove components. They filter effects according to their components and when they match, the changes are applied.
  4. contexts can be seen as the world in which the other parts live. 
  • create your own components and systems for any skill you can imagine.
  • promotes composition over inheritance as well as a more declarative workflow.
  • written in C++ with all the necessary features exposed to blueprints. The plugin is intended to be used in a data driven way by creating blueprints, facilitating work with designers as well.

Technical Details

DETAILS

  • tested on 4.25/4.26 on Windows and Linux. The plugin is exclusively made of regular Unreal Engine C++ so if you build from source it should work on most platforms/recent versions with minimal changes.
  • double buffered so every system will read the same values in a given tick, regardless of the execution order.
  • the double buffering does not cause time sensitive operation such as starting/stopping effects to have a tick of delay, the update is instant.
  • you can chain effects in a frame perfect manner. The delta time is propagated from the previous effect to the next. For example if the previous effect had 10ms left to run but the tick last 16ms, the next effect will be started immediately as if it had been running for 6ms.
  • you can create multiple contexts in case you want to separate some effects/systems from each other or if you want to enforce an order.
  • defensive programming protecting you from hard to diagnostic bugs.
  • pointer to implementation idiom working with UObjects.



CONTENT

  • the plugin code.
  • simple examples that can be run by setting the SSS_GameMode_BP on a map then pressing 1-4:
  1. Toy example to see how to create effects and setup components to be run by a system
  2. Damage over time to see how to create skills in a more procedural/data driven fashion
  3. Layered skill to see how to create skills with effects running concurrently
  4. "Hold" skill to see how to create skills that last an indefinite amount of time
  • an example with UI where you cancel attacks to perform a combo for a more "real life" use case
  • color coded comments, white for descriptions, green for intent and orange for implementation details coming from C++.