Null Bolt
Studio
item generator system

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.

Item Generator System demo scene showing generated item cards
The demo scene: generated items rendered as Diablo-style cards, with template/rarity dropdowns and a chest roll.

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.

SystemDescription
Content model4 item types → 13 sub-types with four inheritance modes → 14 templates, all plain ScriptableObjects. Types, sub-types & templates →
Rarities & affixes6 rarity tiers driving affix counts, sockets, stat multipliers, and roll quality; 25 weighted affixes with restrictions and exclusion groups. Rarities & affixes →
Deterministic generationSeed in, identical item out — every time, on every platform, via Unity.Mathematics.Random. Generating items →
Name generationWeighted prefix/suffix/base pools with rarity and type conditions, plus a unique-name pool for legendaries. Name generation →
PersistenceTiny seed-snapshots that survive JSON and regenerate the full item on load. Saving generated items →
Editor toolingA 4-tab window (Generate / Templates / Browser / Configuration), a setup wizard, and one-click example content. Editor windows →

Generation pipeline at a glance

What happens inside Generate()
text
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 stamped
// note
Everything lives in the flat ItemGeneratorSystem 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 itInstallation & setup — dependency auto-install and the first-import wizard.
Generate somethingQuick start — an item in the editor window, then the same thing in code.
Look something upAPI reference — every public type and method on one page.