Dungeon Crawler Framework — Character Generator¶
Overview¶
The Character Generator is the visual tool you use to build your entire party from scratch — no scripting required. You open it from Unity's top menu under Window → CrawlerKit → Character Generator.
The window is organised into four numbered tabs that follow the exact order you build a party in: 1. Stats → 2. Races → 3. Classes → 4. Characters. You define the stats your game uses, build races and classes on top of them, and then configure four party members that are saved as ScriptableObject assets. The PartyUI loads those assets automatically when the game starts, so there is no scene setup to do afterwards.
Everything created by the tool lives under CrawlerKitParty/CharacterData (stats, races, classes and portraits) and the finished party members are written to CrawlerKitParty/Resources/PartyMembers.
A red 🗑 Clear All button sits in the top-right corner of the tab bar. It asks for confirmation and then permanently deletes everything the generator has created — every stat, race, class, portrait and saved party member. Use it as a full reset; it cannot be undone.
Tab 1 — Stats¶
Stats are the foundation, so this is the first thing you set up. Races need stats for their bonuses and classes need stats for their scaling, so the later tabs stay locked behind a warning until at least one stat exists.
Each stat has the following fields:
- Display Name — the name shown in the UI (for example Strength, Dexterity, Intelligence).
- Abbreviation — a short three-character form such as STR, DEX, INT.
- Description — a note about what the stat does, shown in italics under the stat name in the list.
- Min Value — the hard floor. No effect can push the stat below this.
- Max Value — the hard ceiling. Equipment and buffs cannot exceed this.
- Base Value — the starting value for every new character, before race or class bonuses are applied.
The editor shows inline guidance with typical minimums, maximums and base values for common stats (Strength, Dexterity, Vitality, Intelligence, Willpower and more) across several scales — classic 3–18, Grimrock-style 1–20, or a wide 1–100. These are suggestions only.
You can create as many stats as you like, from a four-stat minimalist RPG to a twelve-stat classic crawler. Saved stats appear in a list at the top of the tab showing their range and base value at a glance, and each one can be edited or deleted from there.
Tab 2 — Races¶
Once stats exist you can create your playable races — Human, Elf, Dwarf, Lizardman, or anything that fits your game.
A race has:
- Display Name — shown in the character creation UI.
- Description — a lore note or gameplay summary.
- Icon — an optional sprite used in the UI.
- Stat Bonuses — flat bonuses added on top of each stat's Base Value when a character of this race is created.
To add a bonus you click + Add Stat Bonus, pick a stat from the dropdown and set the value with an integer slider that ranges from −5 to +5. The editor suggests examples — a Dwarf might get Vitality +2 and Willpower −1, an Elf Dexterity +2 and Strength −1. As a rule of thumb, keep the total close to zero so no race is obviously dominant.
Deleting a race also removes its dedicated portrait subfolder and every portrait inside it, so you never end up with orphaned portrait data scattered around the project.
Tab 3 — Classes¶
Classes define what your characters can do. Each class has:
- Display Name — shown in the character creation UI.
- Description — a short flavour or gameplay summary.
- Hand Visuals — two sprite slots (left and right hand) shown in the first-person view when no weapon or shield is equipped. A mage might have a glowing arcane hand, a warrior an armoured fist.
- Primary Stat — the main scaling stat for the class. It drives HP for martial classes and Mana for casters.
- Secondary Stat — a supporting stat that adds a smaller bonus.
- Can Use Magic — when enabled, the character can cast spells and equip magic-only items such as staves and robes. This toggle is also available directly on each class row in the list for quick changes.
- Can Use Heavy Armor — controls whether the class can equip items marked Heavy in the Inventory Editor (the HEAVY badge on helmets, armor, legs, boots and cloaks). Enable it for classes like Fighter and Paladin; leave it off for Mage and Rogue, who can then only equip light pieces.
Below these is the Stat Weights for Random Generator section. This tells the randomiser how important each stat is for the class on a four-point scale: 0 = Dump (rolled low), 1 = Normal, 2 = Important (rolled high), 3 = Key (rolled very high). Every stat in your project is listed automatically, and any you don't configure default to Normal. The Characters tab uses these weights when you roll stats in Class mode, so a Fighter's Strength comes out high while a Mage's Willpower is prioritised.
Tab 4 — Characters¶
This is where everything comes together. Four slot buttons sit at the top — Slot 0 to Slot 3, labelled by formation position: Front Left, Front Right, Back Left, Back Right. Completed slots turn green and the currently selected slot turns yellow.
Each slot is built from the following sections.
Race Portraits¶
A gallery filtered by the slot's selected race. A row of race filter buttons lets you switch which race's portraits are shown, and that selection stays in sync with the Race dropdown in the Identity section below.
You import portraits by dragging PNG files directly into the gallery area. The tool creates a PortraitData asset for each image and saves it into the correct race subfolder automatically. If the filename contains "male" or "female", the category is detected automatically (256×256 is the recommended size).
A small toolbar above the gallery gives you 🎲 Random (assign a random portrait of this race), ☑ Select All, ☐ Deselect All, and 🗑 Delete (count). Click any thumbnail to assign it to the slot — the assigned portrait gets a yellow highlight. Ctrl+Click (or Cmd+Click) marks portraits for deletion, turning them red with a check mark; the Delete button then removes the marked ones after a confirmation.
Identity¶
Name, race and class. The Name field is a dropdown populated from an editable FantasyNames.json file, plus a Custom Name text field for typing your own, and a 🎲 dice button that picks a random unique name — it avoids names already used by the other three slots.
The Race dropdown is synced with the portrait gallery filter, and the Class dropdown is filtered by the race's allowed class list when you have configured one (falling back to all classes if the filter would be empty).
Stats¶
A slider for every stat you defined, with four roll buttons at the top:
- Balanced — a true 3d6 bell curve scaled to the stat's range, so average results are common and extremes are rare.
- Class — uses the Stat Weights from the Class editor: Key and Important stats roll high, Dump stats roll low, everything else rolls Balanced.
- Heroic — every stat in the top 40% of its range.
- Cursed — every stat in the bottom 40%, for challenge runs.
Next to each slider the racial bonus is shown in green or red, and the final value (base plus bonus) appears in bold on the right.
Resources¶
Max HP, Max Energy and Backpack Slots, set directly per character — there is no automatic calculation, you decide the numbers.
Death¶
A single Permadeath toggle. When enabled, the character cannot be revived after dying — health potions, Heal spells and every revival mechanic will have no effect. The toggle turns red while active so it is impossible to miss.
Equipment on Start¶
An EquipmentSetData slot with an apply mode. Drag in a set and it is applied to the character's inventory when the game starts. FillEmpty fills only empty slots; Replace overwrites everything. A strip of item icons previews every non-null piece in the set so you can see at a glance what the character begins with.
Randomise Buttons¶
Three buttons at the bottom of the Characters tab:
- 🎲 Randomize This Character — randomises the selected slot: a random race, a random class compatible with that race, a matching portrait, a unique name, and stats rolled in Class mode.
- 🎲 Randomize ALL Characters — does the same for all four slots at once.
- 🎲 Randomize ALL Names — shuffles only the names, picking four unique names from the pool without touching anything else.
Generate, New Party and Load Party¶
Once all four slots are valid — name, race, class and portrait all set — the 💾 GENERATE PARTY ASSETS button turns green and becomes clickable. It creates four PartyMemberData assets in CrawlerKitParty/Resources/PartyMembers:
- Member_FrontLeft.asset
- Member_FrontRight.asset
- Member_BackLeft.asset
- Member_BackRight.asset
Each asset stores everything about that character: name, portrait, race and class references, all stat values with racial bonuses applied, Max HP, Max Energy, backpack slots, the permadeath flag and the starter equipment set. The PartyUI loads them automatically by name at game start. Clicking Generate again later overwrites the existing assets rather than creating duplicates.
Two companion buttons sit beside it:
- 🆕 NEW PARTY — clears all four slots and starts fresh, after a confirmation prompt.
- 📂 LOAD PARTY — reads the four
Member_*.assetfiles already in the project and restores the slots from them, including name, race, class, portrait, all stats, resources and equipment. It also understands the legacy stat format from older versions of the framework, so older parties load correctly.
Slot State Persistence¶
The Character Generator saves the state of all four slots to EditorPrefs whenever the window closes, and restores them when you reopen it. If you enter and exit Play mode, or Unity reloads the domain, your work-in-progress characters are preserved between sessions.
Workflow Summary¶
- Stats — create the stats your game uses.
- Races — create your playable races and assign stat bonuses.
- Classes — create your classes, set primary/secondary stats, abilities and stat weights.
- Characters — configure all four slots: name, race, class, portrait, stats, resources and equipment.
- Click Generate Party Assets — four ScriptableObject assets are created in Resources/PartyMembers.
- The PartyUI loads those assets automatically when the game starts.
The Character Generator takes you from an empty project to a fully configured, playable party without writing a single line of code.
Dungeon Crawler Framework — Mantis3de