Plugins Showcase
Animation Setup
In Development
Development Time: 7 Months
Team Size: 1
The Animation Setup plugin provides tools for modular character assembly and common mesh setup.
The skinless Skeletal Mesh system generates an animated skeleton that serves as the foundation for modular attachments. This separation of responsibilities allows skeletal animation to be independent of Skeletal Meshes.
The portrayal system creates a workflow for representing an Actor Component in unique ways for different viewers. Portrayals are implemented via a PortrayalDefinition and are identified by Gameplay Tag. Actors can associate their different components with different portrayal tags.
The NinjaGame project implements a first-person portrayal that the Character views when in first-person; meanwhile, other Actors see the default portrayal.
Contributions
• Make skinless Skeletal Mesh generation functionality for creating animated skeletons
• Make PortrayalDefinition for defining how viewers are included and excluded from viewing
• Make ObjectReferenceLibrary subsystem for identifying PortrayalDefinitions by Gameplay Tag
• Make general-purpose Primitive Scene Proxy implementations
Custom Collision Queries
Finished
Development Time: 2 Months
Team Size: 2
These custom collision query functions are made using a layered approach where each one implements its own feature and builds off of others.
These queries combined give us exit hits, can penetrate blocking hits, can ricochet, and can run out of strength. This is a powerful query that is useful for complex shooting systems in games.
The ShooterTest game project uses this and has bullet damage determined by the query strength. ShooterTest also uses physical materials to determine how much strength to nerf and which surfaces are ricochetable.
All collision queries are generic to both line traces and shape sweeps.
Contributions
 • Make method for penetrating any hit while preserving the desired hit responses
 • Make function for modifying Hit Result trace data
 • Optimize backwards query distance required for exit hits, reducing up to 50% of function time
 • Develop function for ordering entrance and exit Hit Results to the query's forwards direction
 • Develop query that can lose strength based on distances between entrance and exit Hit Results
Ability System Setup
Finished
Development Time: 2 Years
Team Size: 2
This plugin is an extension of Epic Games' Gameplay Ability System offering an efficient workflow that eliminates boilerplate code and improves scalability.
This plugin provides a setup for Avatar Actors, a better workflow for Gameplay Ability input binding, and many other tools to aid in using the ability system.
The AvatarActorExtension component initializes and uninitializes an Avatar Actor when provided with an Ability System Component and optional AbilitySets. It is agnostic to Ability System Component location and supports Avatar Actors of any type.
For Pawns, the more specialized PawnAvatarActorExtension component provides additional logic for ability input binding. This makes a complete in-editor workflow for associating Gameplay Abilities with Input Actions via Gameplay Tags.
Contributions
 • Develop common initialization and uninitialization for Ability System Component with Avatar Actor
 • Develop Gameplay Tag workflow for associating Input Actions with Gameplay Abilities
 • Make granting and removing of Ability Sets
 • Make a way to reuse Target Actors through several Ability Task usages
 • Make custom Gameplay Target Data Filters
Input Setup
Finished
Development Time: 1 Month
Team Size: 2
The Input Setup plugin is a central place where all Input Actions in the game can be accessed from.
Input Action references are stored on an Engine Subsystem and identifiable by Gameplay Tags, allowing different game systems to use the same Input Actions without creating duplicate references.
The game project can add Input Actions to the subsystem via project settings. External plugins are able to contribute via a Data Asset that is loaded by the subsystem. Contributions from dynamically-loaded plugins, e.g., Game Features, are supported as well.
The Ability System Setup plugin uses this subsystem to execute input events for relevant Gameplay Abilities of the Input Actions.
Contributions
 • Develop subsystem gathering Input Action references from game project and dynamic plugins
Property Wrapper
Finished
Development Time: 16 Months
Team Size: 2
Using a property wrapper gives you an event to use for when the value of the property has been changed.
The original motivation behind the property wrapper was to provide a streamlined workflow for Push Model replication.
The property wrapper's functionality is generic to any type. It is implemented as a lightweight USTRUCT with most functionality in a base class and boilerplate code in a macro.
Contributions
 • Develop usage of FProperty pointers for Push Model replication and generic serialization
