Overview
A deterministic, ScriptableObject-driven loot generator — templates, rarities, weighted affixes, procedural names, and a 4-tab editor window. This is the full manual; it is updated with every release.

What it does
You define content as ScriptableObjects — stats, rarities, item types, sub-types, affixes, templates, and name pools. The static ItemGenerator engine rolls them into finished items: named, statted, affixed, socketed, and priced. Output is either a runtime ItemInstance (plain serializable class) or an ItemDefinition asset saved to your project from the editor window.
| System | Description |
|---|---|
| Content model | 4 item types → 13 sub-types with four inheritance modes → 14 templates, all plain ScriptableObjects. Types, sub-types & templates → |
| Rarities & affixes | 6 rarity tiers driving affix counts, sockets, stat multipliers, and roll quality; 25 weighted affixes with restrictions and exclusion groups. Rarities & affixes → |
| Deterministic generation | Seed in, identical item out — every time, on every platform, via Unity.Mathematics.Random. Generating items → |
| Name generation | Weighted prefix/suffix/base pools with rarity and type conditions, plus a unique-name pool for legendaries. Name generation → |
| Persistence | Tiny seed-snapshots that survive JSON and regenerate the full item on load. Saving generated items → |
| Editor tooling | A 4-tab window (Generate / Templates / Browser / Configuration), a setup wizard, and one-click example content. Editor windows → |
Generation pipeline at a glance
ItemGenerationRequest template OR type(+sub-type), rarity, seed, settings
│
resolve sources sub-type inherits from type; template overrides both
│
roll base stats + implicits every pool entry rolled; quality floor × rarity multiplier
│
roll affixes count from rarity; weighted picks; exclusion groups;
│ stat uniqueness; forced template affixes first
roll sockets count in rarity's min..max range
│
compose name prefix/base/suffix pools — or the unique-name pool
│
compute value & durability footprint of stats → sell value; rarity multipliers
│
ItemInstance + OnPostGenerate callback chain, seed & version stampedItemGeneratorSystem C# namespace, and the engine has no MonoBehaviours — ItemGenerator.Generate() is a pure static call you can run anywhere, including in tests.Works with Grid Inventory System
Both assets are independent, but they know each other: if our Grid Inventory System is installed, its Item Creator window gains an import row — drop a generated ItemDefinition in and the inventory item form pre-fills (rarity mapped, footprint suggested from the icon). See Items & the Item Creator.
Where to go next
| If you want to… | Description |
|---|---|
| Install it | Installation & setup — dependency auto-install and the first-import wizard. |
| Generate something | Quick start — an item in the editor window, then the same thing in code. |
| Look something up | API reference — every public type and method on one page. |