Your First Skill Database
This guide walks you through creating a complete skill database using the Skill Forge — from opening the wizard to using the generated database in your game code. The entire process takes about 5 minutes.
By the end, you will have:
- A type-safe enum of all your skill codes
- A ScriptableObject database with a custom inspector
- Runtime-ready data you can query from any script
Step 1: Setup
Open the Skill Forge wizard:
The wizard opens to Step 1: Setup. Configure these fields:
Database Name
Enter a name for your database, e.g., RPGSkills. This determines the generated class names:
| Field | Example |
|---|---|
| Database Name | RPGSkills |
| Generated Enum | RPGSkillsType |
| Generated Database | RPGSkillsDatabase |
| Generated Editor | RPGSkillsDatabaseEditor |
Namespace
Optionally set a namespace for the generated code. Leave blank if your project does not use namespaces.
Template
Select a genre template to pre-populate property definitions. For this walkthrough, choose ARPG — it provides a solid set of categories (Skill Type, Element, Target Type), flags (Is Passive, Is Ultimate), numerics (Mana Cost, Cooldown, Cast Time), and texts (Tooltip, Lore) at both skill-level and rank-level.
Linked Databases
If you have companion packages installed (SAF, SIF, SEF, SQF), you can drag-and-drop their generated database assets here. This enables searchable dropdowns for cross-forge reference fields in Step 3 (e.g., selecting an item code from your SIF database instead of typing it manually).
For this walkthrough, you can skip linked databases. They are entirely optional.
Click Next to proceed to Step 2.
Step 2: Definitions
This is where you define the dynamic property schema for your skills. The Skill Forge uses a two-level property system:
- Skill-Level Properties — apply to the skill as a whole (e.g., Skill Type, Element, Is Passive)
- Rank-Level Properties — apply to each individual rank of a skill (e.g., Damage, Mana Cost, Area of Effect)
If you chose the ARPG template, you will see pre-populated definitions at both levels. You can customize them freely.
Property Types
There are 4 types of dynamic properties, available at both skill-level and rank-level:
| Type | What It Stores | Example |
|---|---|---|
| Category | Selection from a list of named entries | Skill Type: [Attack, Buff, Debuff, Heal, Summon] |
| Flag | Boolean (true/false) | Is Passive, Is Ultimate, Requires Line of Sight |
| Numeric | Float or integer value (optionally a range) | Mana Cost, Cooldown, Cast Time, Base Damage |
| Text | String value (single or multi-line) | Tooltip, Lore Text, VFX Path |
Adding a Property
To add a new property, expand the relevant section (e.g., Skill-Level Categories) and click the + button at the bottom of the list. Fill in the label/name and any additional settings (entries for categories, constraints for numerics, line count for texts).
Removing or Reordering
Use the - button to remove a property, or drag entries in the ReorderableList to reorder them. All existing skill entries are automatically synced when you add, remove, or reorder definitions.
JSON Schema Export
At the bottom of Step 2, you will find the JSON Schema section. This lets you export your property definitions in 3 formats (Full JSON, Light JSON, Markdown) for AI-assisted bulk content generation. You can also import skills from JSON. See AI Workflow for details.
Click Next to proceed to Step 3.
Step 3: Builder
The builder is a split-panel editor where you create and edit individual skill entries.
Left Panel — Skill List
The left panel shows all your skills in a scrollable list with:
- Search bar — filter by name or code
- Category filter — show only skills of a specific type
- Sort — alphabetical, by code, or by category
- Pagination — handles large lists efficiently
- Bulk operations — select multiple skills for delete or duplicate
- + / - buttons — add or remove skills
Click any skill in the list to select it and edit its details in the right panel.
Right Panel — Skill Editor
The right panel displays all editable fields for the selected skill, organized into foldout sections:
- Identity — Code (SCREAMING_SNAKE_CASE), display name, description, icon
- Categories — dropdown selectors for each skill-level category
- Flags — toggle checkboxes for each skill-level flag
- Numeric Properties — value fields for each skill-level numeric
- Text Properties — text fields for each skill-level text
- Ranks — a list of ranks, each with its own rank-level properties, upgrade costs (resource code + amount), and optional SAF modifier assets
- Prerequisites — conditions that must be met to learn/use the skill (e.g., "FIREBALL at least rank 3")
- Skill Modifiers — SAF modifier assets attached to the skill itself (requires Simple Attribute Forge)
- Cross-Forge References — 12 fields linking to items, enemies, quests, and factions from companion forges
Creating Your First Skill
FIREBALL and the Display Name
to Fireball. Add a description like Hurls a ball of fire at the target.
Repeat to add more skills. Use Duplicate to clone an existing skill as a starting point.
Click Next to proceed to Step 4.
Step 4: Settings
Configure where and how the database is generated.
Output Path
Set the folder where generated files will be placed. The default is Assets/GeneratedSkillDatabases/.
Click Browse to choose a different location.
Custom Paths
Enable Use Custom Paths to specify separate output folders for scripts (.cs files)
and assets (.asset files). Useful if you want scripts in a Scripts/ folder
and assets in a Data/ folder.
Generation Toggles
- Generate Enum — produces the
{Prefix}Type.csenum file. Disable if you want to manage skill identifiers differently. - Generate Database — produces the
{Prefix}Database.csScriptableObject and{Prefix}DatabaseEditor.cscustom inspector. Almost always left enabled.
File Preview
The bottom of Step 4 shows a preview of all files that will be generated, including their full paths. Review this before proceeding.
Click Next to proceed to Step 5.
Step 5: Generate
The final step shows a summary of your database and a Generate button.
Summary
Review the summary to confirm everything is correct: database name, number of skills, number of properties, output paths, and enabled generation options.
Generation Process
Click Generate to start the two-phase generation:
.cs files
(enum, database class, custom editor) to your output folder. Unity then triggers a domain reload
to compile the new scripts.
.asset ScriptableObject and populates it with all your
skill data. A log message confirms completion.
[InitializeOnLoad] handler that runs after
the domain reload to complete Phase 2.
Generated Files
After generation completes, you will find these files in your output folder:
.asset file in the Project window and inspect it.
The custom editor displays your skills in the same split-panel layout as the wizard's builder.
Using Your Database at Runtime
The generated database implements ISimpleSkillDataSource, giving you a clean API
to query skill data from any script.
Assigning the Database
Add a ScriptableObject field to your MonoBehaviour and drag the generated .asset
file onto it in the Inspector:
Querying Skills
Use the interface methods to access your data:
Reading Dynamic Properties
Access the dynamic properties you defined in Step 2 using index-based accessors. The index corresponds to the order you defined them (0-based):
Property Definition Labels
To get human-readable labels for your properties (useful for UI), query the data source:
Filtering
Query skills by property values:
Using SimpleSkillHelper
The static helper class provides utility functions without needing a tracker instance:
Next Steps
You have created your first skill database. Here is where to go from here:
Skill Forge Deep Dive
Learn about all features: rank progression, prerequisites, cross-forge references, and the two-level property system in detail.
Build Skill Trees
Create talent trees with grid-based node layouts that reference your skills. Nodes have point costs, level requirements, and parent-child connections.
Create Skill Sets
Design loadout templates with typed slots and threshold-based set bonuses. "Equip 3 fire skills for +20% fire damage."
Define Combos
Build skill sequences with timing windows and threshold rewards. "Fireball, Ice Bolt, Lightning within 2 seconds = Elemental Burst."
AI-Assisted Content
Export your schema to JSON or Markdown, feed it to an AI assistant, and import hundreds of generated skills back into your database.
Cross-Forge Integration
Connect to Simple Attribute Forge, Simple Item Forge, Simple Enemy Forge, and Simple Quest Forge for deep cross-system references.