Ninja Combat
Last modified: 06 August 2024The Ninja Combat plugin was designed as a layer built on top of Unreal Engine's Gameplay Ability System, introducing a Combat Domain that can be used in various types of projects, such as weapons, damage, vitals, and many others.
This system provides a robust foundation covering numerous Abilities, Effects, and Attributes, along with other common aspects of a Combat System, such as Motion Warping, Projectile Pooling, Physical Reactions, and more.
This is an ample and advanced system, built on top of many Unreal Engine capabilities. To take full advantage of it, it's recommended that you have some familiarity with these base systems. For advanced usage, you will need to use C++.
Main Features
Extensive Combat System Domain: Includes a wide range of features for building comprehensive combat systems.
Integration with the Gameplay Ability System: Seamless integration with Unreal Engine's powerful ability system.
Integration with the Gameplay Targeting System: Supports precise targeting mechanisms.
Integration with the Motion Warping System: Allows for dynamic and responsive character movement.
Data-driven and Event-based: Designer-friendly Combat Combos can be crafted using State Machines.
Advanced Damage and Defense Mechanics: Includes features such as Critical Hits, Breaker Hits, Armor, Blocking, Poise, and Procedural Hit Reactions.
Core Attributes: Provides essential attributes like Health, Magic, Stamina, Critical Damage, and Defense.
Basic Widgets: Includes common elements such as Health Bars and Damage Applied, integrated with UMG Viewmodels.
Configurable and Extensible: Highly customizable in both Blueprints and C++.
Clean Code and Thorough Documentation: Well-documented codebase and comprehensive documentation site.
Design Pillars
Separation of Concerns: The Combat domain is self-contained and affect other domains such as "Locomotion", "Inventory", "Interaction", etc.
Flexibility: The Combat System was built with adventure, action RPGs and souls-like in mind, but it's flexible enough for other types of games.
Extensibility: Provides many extension points in C++ and Blueprints. Interface-oriented design for components.
Connectivity: Parts of the system that must integrate with other domains are designed to be integration-friendly.
Engine Parity: As much as possible, reuses features already available in the engine, without "reinventing the wheel".
Integrations
The Gameplay Ability System can be configured using Ninja GAS.
Activate abilities and combos with input handlers from Ninja Input.
Allows the creation of weapons as Equipment Actors with Ninja Inventory.