Game Studio – Implementation plan
Restarted 2026-11-14 as a minimal app: a port of the old Keystone Class Designer with a cleaner UI and the overly complex flows removed. The first, fuller build (registry, ability editor with tooltips and formulas, talent kinds/ranks and test builds, dashboard, art styles, AI icon generator) is preserved at the git tag full-studio-v1. Check it out to look at or reuse any of it.
What the app is now
- Home: quick links and the class list.
- Class Designer: a class list, then per class a header card (portrait, name, fantasy, armor, resources, roles) and three tabs:
- Base: name, fantasy, armor type, primary and secondary resource. A Resources card beside it adds resources (each marked Primary or Secondary, shared by all classes) and removes ones no class uses.
- Abilities: the shared ability pool. Name, description, type (Damage / Healing / Utility), cost in the class's primary and secondary resource, cast (instant / cast / channeled with a time), cooldown, charges, range, icon with color. Filter by type, edit in a side panel with a live tooltip preview, duplicate, delete. Improve rewrites a rough description with an OpenAI model to the spec's description rules; you accept or discard the suggestion. Hover any ability for its WoW-style tooltip.
- Talent Trees: up to three specializations side by side (name, role, description, icon). Each tree is 4×4 plus two capstones. Click a slot to add a talent; click a talent to edit it in the side panel: name, points (1–3), description with per-rank values (
{5/10/15}), the ability it teaches, the talent it requires (same tree, no loops), icon with color, row/column. Moving onto a taken slot swaps the two. Hover any talent for its tooltip (rank, next rank, requirement, taught ability).
- Icons (Icon Generator): two tabs. Library: the open-source game-icons.net collection (4,000+ RPG icons, CC BY 3.0, via
@iconify-json/game-icons) as placeholders. Generate: describe an icon (or start from the target's own text), pick a style (Stained glass or Painted, each matched to reference icons) and a color palette (presets such as Holy, Plague green, Frost blue, or your own words), generate 1–4 variants with OpenAI GPT Image (an offline placeholder generator without a key), pick one. Either way, preview at game sizes and apply it to any ability, talent, specialization or passive. The same collection opens from "Choose Icon" in every editor, next to "Upload".- Passives: the class's two group passives (GDD "Group passives"), side by side. Each is a stat bonus ("Group gains 5% Haste") or a custom description, with an icon and a tooltip preview.
- Simulate: try a build per GDD §8–10 and §21: 21 points across the trees, rows open at 0/3/6/9/12 points in earlier rows of the same tree, one capstone per tree, a required talent must be at max rank first (our choice; the GDD doesn't say), abilities no talent teaches are available from the start and taught ones unlock with their talent, and up to 10 go on the action bar (keys 1–9, 0; click or drag). The build also picks one of the two group passives. Click adds a point, right-click removes one; removals that would break the build are refused. The build is kept per class in the browser (localStorage), not in the database.
- Changes: a log of every saved edit to the class and everything in it (created / updated / deleted, with what changed, e.g. "Cooldown: 12 sec → 10 sec"), grouped by day, newest first. Logging starts with this feature; earlier edits aren't in it.
- Notes: the Excalidraw board (autosave, two-tab conflict guard), recolored to the site palette.
- Docs: renders the markdown files in
docs/.
Roles are derived from the specializations. Icons are a collection glyph (tinted with a custom color from the color wheel, or by default the role or ability type color) or an uploaded image; the last one chosen wins. Without either, a tinted tile with the first letter is shown. Portraits are uploads. Option lists (armor types, resources, roles, ability types) are constants in src/domain/class-rules.ts.
Kept from the first build
Next 16 setup, PGlite for dev / Postgres in production, Drizzle migrations, Dockerfile + start-time migrations + /api/health (docs/deploy.md), the asset store for uploads, the Notes board.
Open questions
- The spec (
docs/game-studio-plan.md) still describes the brass-and-gold look, talent kinds/ranks, the ability editor fields and the icon generator. Update it in the claude.ai project if the minimal direction is the new baseline. - Godot export format (
.tresor JSON), when export comes back. - Saved builds: the GDD allows up to 3 builds per class; Simulate keeps one scratch build per browser. Store named builds in the database if they're needed.
- AI icon generation: OpenAI is wired; Gemini can go behind the same provider interface. Still open: an editable art style with reference images (the spec's versioned Art Style page), regenerating from a stored prompt, and cleaning up unpicked variants.
- Which of the first build's features, if any, to bring back, and in what simplified form.