Ninja Inventory
Last modified: 06 August 2024The Ninja Inventory plugin was inspired by concepts introduced by Epic's project "Lyra", such as definitions, instances, and fragments. These concepts are quite powerful for an inventory system, as they promote defining items through aggregation instead of the classic inheritance approach.
For a generic and reusable framework like this, such concepts are fundamental, as they truly allow the Inventory System to remain agnostic of a game's design and requirements. Furthermore, in line with a recurring theme for all plugins from Ninja Bear Studio, this framework was designed with a strong focus on separation of concerns.
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 Inventory and Equipment Domain: Provides a comprehensive domain for managing inventory and equipment.
Gameplay Ability System Integration: Uses Gameplay Abilities, Effects, and Attribute Sets for enhanced functionality.
Asset Manager Integration: Loads assets when needed and unloads them when not, optimizing performance.
Aggregation and Inversion of Control: Items and equipment pieces are declared via aggregation and inversion of control, promoting flexibility and modularity.
UI Module: Built using the Common UI and the UMG Viewmodel frameworks, for a robust and responsive user interface.
Flexibility and Extensibility: Designed to support various types of projects.
Quality and Support: Features clean, well-documented code, a thorough documentation site and a Discord support channel.
Design Pillars
Separation of Concerns: The Inventory domain is self-contained and affect other domains such as "Locomotion", "Combat", "Interaction", etc.
Flexibility: The Inventory System is flexible enough to be used in multiple projects, from simple weapon wheels to RPG games.
Extensibility: Multiple extension points are available so the Inventory System can be adapted to many situations.
Designer Friendly: You can configure and operate the entire Inventory System using Data Assets and Blueprints. Deeper customization might require C++.
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.
The Equipment Manager can be used as the Weapon Manager for Ninja Combat.
Pickups can be created as Interaction Actors from Ninja Interaction.
Inventory Abilities can be triggered using Input Handlers from Ninja Input.