Create a minimal RPG from scratch using the wizards — in ~15 minutes.

Your first project#

Let's create a small GDD (about a dozen pages) so you can feel the flow. The example is a fantasy RPG with a simple economy, attributes, one skill, and one item.

Before you start#

Prerequisites:

  • A GDD Manager account (free signup at /login)
  • 15 minutes
  • A desire to invent cool names (you'll need it)

Step 1 — Create the project#

On the home page (/), click "+ New project".

Give it a name (e.g., Adventure Tutorial) and a short description. The project starts empty, with the default structure of 5 groups (Overview, Design, Content, Presentation, Production) — you can ignore these for now.

Step 2 — Attributes page#

The first real page is the Attributes one, because everything in the game will depend on it.

  1. In the sidebar, click the + next to Content (or another group).
  2. In the picker, choose the type 🎯 Attributes.
  3. Give it the name Base Attributes.

The page is created with a pre-populated attribute table (HP, ATK, DEF, SPD). Edit the default values if you want:

HP   100
ATK  10
DEF  5
SPD  5

Step 3 — Currency page#

Next, a currency to make the economy work.

  1. + New page → type 🪙 Economy.
  2. Name: Gold.
  3. Configure in the panel: code GOLD, name Gold, icon if you want.
  4. Set the DataID by clicking "+ DataID" below the title — the default suggestion is DATA_GOLD, edit if you prefer.

Done — now there's a currency that other addons can reference.

Step 4 — Item page#

Let's create an item: Iron Sword.

  1. + New page → type ⚔️ Effect Items.
  2. The wizard will open asking about two dependencies:
    • Currency: choose Gold (created in step 3).
    • Attributes: choose Base Attributes (created in step 2).
  3. Page name: Iron Sword. Click "+ DataID" below the title and edit it to DATA_IRON_SWORD (the auto-suggestion will be something like DATA_IRON_SWORD).

The page is created with 3 addons already configured:

  • Inventory — weight, category, stack
  • Economy — buy price (e.g., 100 GOLD), sell price (50 GOLD)
  • Attribute Modifiers+5 ATK when equipped

Fill in the fields. Every change saves automatically.

Step 5 — Skill page#

Now the fun part: a fire skill.

  1. + New page → type ⚡ Skills.
  2. Wizard asks: which Attributes page? Choose Base Attributes.
  3. Name: Fireball. DataID (click below the title): DATA_FIRE_BALL.

The page is created with 2 addons:

  • Skills (empty)
  • Skill Effects (Attribute Modifiers, empty)

Let's fill them in:

In the Modifiers addon, add an entry:

  • Name: Fireball Impact
  • Attribute: hp
  • Mode: add
  • Value: -30

In the Skills addon, add a skill:

  • Name: Fireball
  • Type: active
  • Cooldown: 5 (seconds)
  • Costs: nothing for now
  • Effects: check the Fireball Impact checkbox (from the modifier above)

Done. When the game triggers Fireball, it will apply -30 to the target's hp.

Step 6 — Remote Config (export)#

The last step: setting up the JSON your engine will consume.

  1. On any page (I recommend creating an 📤 Export Configuration one), add a Remote Config addon.
  2. In the panel, build a tree like:
{
  "skills": [        ← array, source: skills:DATA_FIRE_BALL
    {
      "id": "...",       ← skillField/id (resolves to dataId)
      "name": "...",     ← skillField/name
      "cooldown": 0,     ← skillField/cooldownSeconds
      "effects": [       ← array, source: skillEffects
        {
          "name": "",        ← skillEffectField/resolvedName
          "attr_id": "",     ← skillEffectField/resolvedDefinitionsRef
          "attr_key": "",    ← skillEffectField/resolvedAttributeKey
          "attr_value": 0,   ← skillEffectField/resolvedValue
          "attr_stack": ""   ← skillEffectField/resolvedStacking
        }
      ]
    }
  ]
}
  1. Click Export — the ready JSON lands in your clipboard or a file.

Result:

{
  "skills": [
    {
      "id": "DATA_FIRE_BALL",
      "name": "Fireball",
      "cooldown": 5,
      "effects": [
        {
          "name": "Fireball Impact",
          "attr_id": "DATA_BASIC_ATTR",
          "attr_key": "hp",
          "attr_value": -30,
          "attr_stack": ""
        }
      ]
    }
  ]
}

This JSON is what your engine reads. It has stable identifiers (DATA_*), resolved values, cross-section refs translated — everything ready to consume without runtime cross-resolving.

What's next?#

You've done:

✅ Attributes · ✅ Currency · ✅ Item with effect · ✅ Skill · ✅ Remote Config

Next directions: