RPG Builder
Make a classic turn-based RPG in Godot — towns, party, chests, battles — without writing code. Free.
A classic 2D RPG: walk around towns and fields, talk to people, open chests, and fight turn-based battles with a party. It's a set of screens inside Godot that edit your game for you — you fill in tables and paint maps, and the game that ships with it already knows how to walk, talk, fight, level up and save. A small sample game is included so you can see every feature working before you change anything.
The five screens
- **Game** — title, start map and position, starting party, level and gold.
- **Database** — heroes, enemies, skills, items, elements and zones (which enemies appear where).
- **Events** — dialogue, choices, chests, battles, doors.
- **Maps** — make maps, paint them, place events, play-test from any map.
- **Art** — bring in battler sheets and battle backdrops.
Controls in the game
- **Walk** — arrow keys, WASD or the D-pad.
- **Talk / confirm** — Space, Enter, or A on a gamepad.
- **Pick a choice** — arrow keys, or number keys.
- **Menu** — Esc.
Getting it running
- Install **Godot 4.4 or newer** (the standard build, not .NET) from godotengine.org. Godot doesn't install — unzip it and run it.
- Unzip the RPG Builder somewhere you keep projects, for example `Documents\Godot`.
- In Godot's Project Manager press **Import**, browse into that folder, pick `project.godot`, and press **Import & Edit**.
- First open takes a few seconds while Godot imports every image and sound.
- At the top of the editor, next to 2D, 3D, Script and AssetLib, click **RPG Builder**. That's the Builder.
- Press **Play from start** at the top right. Talk to the elder, beat the Hill Ogre in the field, and recruit Lio.
The Game screen
- **Title** — shown on the title screen.
- **Start map, x, y** — where a new game begins. x and y are tiles counted from the top-left, starting at 0.
- **Starting party** — heroes from the Database. The first one leads.
- **Starting level, gold** — what a new game starts with.
- **Max party size** — how many heroes travel together.
Working in the Database
Tables on the left, entries in the middle, the selected entry's fields on the right. Pick a table, pick an entry, change the fields, and press **Save** at the top right. **Reload** throws away anything unsaved.
To add something: type a short id in the box under the entry list (lowercase, no spaces — `goblin`, `fire_sword`), then press **+** for a blank entry or the duplicate button for a copy of whatever is selected. Duplicating is the fastest way to make anything: copy the closest thing you already have and change what's different.
Need a field that isn't there? Type its name in **add a custom field** at the bottom of the form and press **+**. It's saved with the entry and your own scripts can read it.
What each table is for
- **Heroes** — party members: level-1 stats, element, known skills, battler art, a short bio.
- **Enemies** — stats, skills, element, EXP and gold rewards, item drops with a chance each.
- **Skills** — attacks, spells, heals and buffs, with an MP cost, power, element and target.
- **Items** — potions, ethers and key items, with prices and effects.
- **Elements** — types, and what each is strong against (double damage).
- **Zones** — groups of maps. **Encounters** lists the enemies that appear in tall grass, **Enemy levels** their range, **Battle backdrop** the picture behind the fight.
- **System** — the Game screen settings, in table form.
Events — everything that happens
People who talk, signs, chests, doors, cutscenes, bosses. An event is a list of commands that run top to bottom.
- Open **Events**, type an id at the bottom of the list (`old_man`) and press **+**.
- Give it a **Name** so you can find it later.
- Optionally fill in **Run once (switch)** with a switch name like `chest_open` — the event runs once, turns that switch on, and never runs again. Exactly what a chest needs.
- Press **Add command**, pick what should happen, fill in its fields, keep adding.
- **Save**, then place it on a map — that's where you choose whether it starts on talk, on touch, or as soon as the map loads.
**Choice** gives the player options, each with its own list of commands. **If / else** checks a switch, an item, gold, a level or how many of an enemy were defeated, and runs Yes or No. Select an option inside one of those before pressing Add command and the new command goes inside it.
The commands
- **Show text** — a message box. **Speaker** is the name above it; leave it empty for narration.
- **Choice** — let the player pick; each option runs its own commands.
- **If / else** — check a switch, item, gold or party member.
- **Set switch** — turn a switch on or off.
- **Give item / Give gold** — a negative number takes them away.
- **Add / Remove party member** — recruit a hero, or have one leave.
- **Heal party** — full HP and MP for everyone.
- **Battle** — start a fight with a chosen group. Good for bosses.
- **Transfer player** — move the party to another map at tile x, y.
- **Wait, Label, Jump to label, End event** — timing and flow control.
Maps
- **Maps > New map**: name it, pick a zone, set the size in tiles, press **Create map**.
- Select it and press **Open**. Godot switches to the 2D view.
- In the **Scene** panel click the **Ground** layer — the TileMap panel opens at the bottom. Click a tile, then click or drag to paint. Right-click erases; the rectangle and bucket tools fill big areas fast. **Ctrl+S** to save the map.
- Back in the Builder, use **Place on the open map** to put an event or a spawn down, then switch to 2D and drag it where you want. It snaps to the grid. **Ctrl+S**.
- **Play here** on the Maps screen starts the game on that map — the fastest way to test one area.
Your first quest, in ten minutes
This touches every screen: a new monster, a new area to find it in, and a villager who rewards you.
- **Database > Enemies**: select Slime, type `cave_bat` in the id box, press duplicate. Name it Cave Bat, raise HP a little, EXP 10, gold 8. Save.
- **Database > Zones**: add `cave`, name it Echo Cave, add Cave Bat to its Encounters. Save.
- **Maps > New map**: Echo Cave, zone `cave`, 20 by 15. Create it, open it, paint a floor with walls and a patch of tall grass. Ctrl+S.
- **Events**: add `to_cave` with one **Transfer player** command to Echo Cave. Place it at the village edge, starting on **Touch**, looking **Invisible**. Ctrl+S.
- **Events**: add `miner`. **If / else** on switch `bats_done`. In No: Show text "Bats in my cave! Clear them out?" and Set switch `bats_done`. In Yes: Show text "Thanks! Take this." then Give gold 50. Place him in the village, talk-to-start. Ctrl+S, **Play from start**.
Your own art
The sample uses plain placeholder art so you can see how the pieces fit. Open **Art** in the sidebar, press **Import from a folder…** for the kind you're adding, and pick the folder your images are in — they're copied into the project. Then pick the new image in the entry's image field in the Database and press Save.
- **Battler sheets** — a folder per battler, with `poses.png` in a 3x2 grid: idle, walk, strike, kick, cast, hurt. Any frame size works as long as the six cells are equal. Pick them in Heroes or Enemies > Battler.
- **Battle backdrops** — any PNG or JPG. One per zone, in Zones > Battle backdrop.
- **Tiles** — replace `assets/tiles/placeholder_tiles.png` with your own 32x32 sheet in the same order, or add tiles to `assets/tiles/tileset.tres`.
When something doesn't work
- **My change didn't show up** — press Save on the screen you changed, and Ctrl+S on any map you edited, then play again.
- **An event doesn't start** — check how it's set to start. "Talk to it" needs the player facing it and pressing Space. Also check its run-once switch isn't already on.
- **No battles in the grass** — the map's zone needs enemies in its Encounters list, and the grass must be the tall-grass tile.
- **I broke a table** — press **Reload** before saving to undo. The files in `data/` are plain text, so a copy of that folder is an easy safety net.
Credit, and publishing what you make
The RPG Builder is free to use, including in games you sell. The one thing it asks is a line somewhere players can see — credits screen, store page, About box:
The full terms are in `LICENSE.md` in the project folder.
If you make something you're proud of, I publish selected games made with the Builders — help with the store page, promotion here, and a revenue split agreed per game. It's optional and you keep your game either way. Send a message to ask.
Where things live in the project
- `data/` — every table as a JSON file. The Builder reads and writes these; back them up or edit them by hand.
- `assets/` — images, tiles and sounds.
- `game/` — the game itself. You never have to touch it, but it's plain commented GDScript if you want to.
- `addons/` — the Builder.
Made something with it? Publish it here — rough and unfinished is welcome.