🧪 Inventory Diagnostics — Performance Smoke Tests¶
This folder contains diagnostics-only scripts used to validate how the Inventory system behaves under repeated load.
These are not gameplay systems and are not part of the supported runtime API.
🎯 Purpose¶
These scripts exist to:
- Stress public Inventory APIs under repeated usage
- Surface performance characteristics (timing, allocations)
- Validate that core behaviour remains stable and predictable
👉 They help answer:
“Does the system still behave correctly when hammered?”
📦 Included¶
| Script | Purpose |
|---|---|
InventoryPerfSmoke |
Stresses core inventory operations (add, remove, split, merge, transfer, sort, search) |
InventorySnapshotPerfSmoke |
Stresses snapshot capture and restore (JSON-based workflows) |
🚀 How to Use¶
- Create a clean test scene
- Add one of the smoke scripts to an empty GameObject
-
Assign:
-
ItemDatabase ItemDefinition- Press Play
-
Observe:
-
Console logs
- Unity Profiler (CPU / GC Alloc / Timeline)
📊 What These Tests Show¶
These scripts provide insight into:
- Execution time for repeated operations
- Allocation behaviour (GC pressure)
- Stability under load
- Scaling behaviour (via container size and iteration count)
⚠️ What These Tests Do NOT Prove¶
These are smoke tests, not benchmarks.
They do not guarantee:
- Performance in all projects
- Performance with custom gameplay logic
- UI, rendering, or animation cost
- Networking or persistence overhead
🧠 Interpretation¶
If these scripts behave cleanly but your project is slow, common causes are:
- Excessive per-frame inventory operations
- Large container sizes combined with frequent sorting/searching
- UI update overhead
- Custom logic layered on top of the system
🔐 Authority Notes¶
- Inventory mutations still go through
SceneInventoryService - Authority rules (
IInventoryAuthority) still apply - These scripts run in permissive mode by default
🧩 Design Philosophy¶
These diagnostics:
- Use public APIs only
- Avoid internal shortcuts
- Mirror real-world usage patterns
If these tests pass:
👉 the core system is behaving correctly
📝 Notes¶
- Designed for developer inspection, not end-user features
- Safe to delete from your project
- Best used alongside the Unity Profiler
📎 Related¶
- Inventory Samples → usage examples
- Inventory Teachables → guided interaction panels
- Inventory Runtime → core system implementation