An extensive collection of C# libraries for producing RPGCore mechanics and more.
RPGCore started as an in-Unity framework for producing RPGCore games. It has since evolved into a collection of .NET Standard libraries that offer specialised sets of features.

At it's core, this project features a behaviour system that's used to create modular items and buffs. The behaviour system is setup using a visual scripting tool, shown below.

Below is an item called the 'Fire Cape'. It applies the Immolate buff to it's owner, which deals damage to nearby enemies.
This graph in the game is interpreted by the tooltip system, which renders the 'Fire Cape' tooltip as shown below.

Libraries
Library | Features |
RPGCore.Data.Polymorphic | Polymorphic data serialization. |
RPGCore.DataEditor | Data file editing API. |
RPGCore.Events | Value wrappers and collections with events. |
RPGCore.Packages | Loading pre-packaged content. |
RPGCore.Projects | Authoring pre-packaged content and build pipelines. |
RPGCore.FileTree | File system abstraction with file change events. |
RPGCore.Behaviour | Provides a node-based modular behaviour system. |
RPGCore.Inventories | Inventories that contain, store, and move items. |
RPGCore.Items | Modular implementation of RPG items. |
RPGCore.Traits | RPG character stats and item stats. |
RPGCore.Packages
RPGCore.Packages is an API for processing and bundling game data. For every resource managed by RPGCore.Packages, it provides tagging, metadata and dependencies; which work together to form a basic CMS.
RPGCore.Packages is currently being used to drive the content of my portfolio website.
The ImportPipeline for RPGCore.Projects provides an API for customising the importing and building process.
- Custom directory importers can be used to control how a directory imports into assets.
- Custom file importers can be used to control how a file imports into assets.
- Custom import processors can be used to post-process imported assets (i.e. ignore assets, write metadata, or tag them).
- Custom resource importers can tag, write metadata and register dependencies for all resources they import.
- Custom resource exporters can compress, optimize and write new resourcs to the exported directory.