Item Anvil

Users of Item Anvil may want this instead.

Item Anvil is a flexible and customizable RPG-style item ecosystem, published on GitHub and the Unity Asset Store. It aims to be accessible and designer-friendly, with a drag-and-drop workflow built on ScriptableObjects and an expressive scripting grammar.

Just like GameObjects have component scripts, items describe functionality through additive properties. Properties can affect all items of that type (like tuning the damage of a sword) or only one instance of an item (such as enchantments).

This project started as I was looking through the systems I had written for old projects and curating a list of what I could reuse to jumpstart future projects. At the time, the system lived in a project called Pumpkin Pals, and items were inheritance-based but still built in ScriptableObjects. After considering the requests I had gotten and consulting with one of the designers, I decided to refactor it into its current property-based incarnation.

Since the system has always been data-oriented, one of the main challenges it has faced is onboarding due to the separation of data and logic. This also makes it easier to make mistakes since users have to look at multiple classes instead of having everything in once place. I intend to fix this with events taking inspiration from Unity’s messages (such as OnCollisionEnter/Update) as well as modding frameworks like Forge and Fabric. This would also open up options like being able to hook into inventories and override certain behavior.