Action RPG Builder
Make a real-time action RPG in Godot — sword, dodge-roll, spells, enemies that chase — without writing code. Free.
A top-down action RPG: swing a sword, dodge-roll through attacks, cast spells, and fight in real time. The game that ships with it already handles combat, enemies, levelling, items, dialogue and saving. The sample game, **Thornvale**, shows every feature.
The five screens
- **Game** — title, hero class, start map and position, starting level and gold.
- **Database** — hero classes, enemies, skills, items and zones.
- **Events** — dialogue, choices, chests, rewards, ambushes, doors.
- **Maps** — make maps, paint them, place events and enemy spawns, play-test.
- **Art** — sprites and backdrops.
Controls in the game
- **Move** — WASD / arrows, left stick or D-pad.
- **Attack** — J (gamepad X).
- **Dodge roll** — K (gamepad B). You can't be hit mid-roll.
- **Skill** — L (gamepad Y). Q or RB switches skill.
- **Talk** — E (gamepad A). **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 Action 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 **Action RPG Builder**. That's the Builder.
- Press **Play from start** at the top right. Talk to Captain Rhea, clear five slimes in the Thorn Woods, come back for your first spell, then face the Thorn King.
The Game screen
- **Title** — shown on the title screen.
- **Hero class** — which class from the Database the hero is. Stats and growth come from it.
- **Start map, x, y** — where a new game begins, in tiles from the top-left starting at 0.
- **Starting level, gold, skills** — what a new game starts with.
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
- **Hero classes** — level-1 stats and how much they grow each level.
- **Enemies** — **Behaviour** is the interesting field: *chase* runs at you, *charger* winds up visibly then rushes, *shooter* keeps its distance and fires, *wander* ambles about. Plus HP, attack, speed, sight range, size, colour, EXP, gold, drops, and an optional switch that turns on when it's defeated (for bosses).
- **Skills** — projectiles, novas (a burst around you) and heals, with MP cost and damage. Set a level to learn it automatically, or teach it from an event.
- **Items** — potions, ethers and key items.
- **Zones** — groups of maps, handy for music and backdrops.
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**, **Choice**, **If / else**, **Set switch** — as above. If / else can also check how many of an enemy were defeated, written `enemy_id:count`.
- **Give item / Give gold** — a negative number takes them away.
- **Learn skill** — the hero learns a skill.
- **Heal hero** — full HP and MP.
- **Spawn enemy** — make an enemy appear at tile x, y. Ambushes and bosses.
- **Transfer player** — move the hero 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.
Enemy spawns go down the same way as events. On the start map, keep the start tile walkable — that's where the hero appears.
Your first quest
- **Database > Enemies**: select Slime, type `ember_imp`, press duplicate. Name it Ember Imp, Behaviour **shooter**, an orange colour, a bit more HP. Save.
- **Maps > New map**: Ash Hollow, 30 by 20. Paint ground, walls and trees, place three Ember Imp spawns spread apart. Ctrl+S, then **Play here** and fight them. Too hard? Change their HP, Save, try again.
- **Events**: `to_hollow` with **Transfer player** to Ash Hollow, placed on the village edge (Touch, Invisible).
- **Events**: `ranger`. **If / else** with Defeated set to `ember_imp:3`. Yes: Show text, **Learn skill**, Set switch `imps_done`. No: "Imps in Ash Hollow. Deal with three of them?" Put `imps_done` in his **Run once** box if the reward should happen once. Place him in the village, 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.
- **Sprites** — PNGs for enemies and the hero, picked in Enemies > Sprite. Without one, enemies are drawn as coloured shapes.
- **Backdrops** — big images for zones and the title screen.
- **Tiles** — replace `assets/tiles/placeholder_tiles.png` with your own sheet in the same order, or add tiles to `assets/tiles/tileset.tres`.
When something doesn't work
- **My change didn't show up** — Save on the screen you changed, Ctrl+S on any map you edited.
- **Enemies don't chase me** — check their **Sight range**. It's in pixels, and a tile is 32 pixels.
- **An enemy spawn keeps coming back** — that's **Comes back every visit**. Select the spawn in the Scene panel and untick it.
- **I broke a table** — press **Reload** before saving to undo. Keep a copy of `data/` as a backup.
Credit, and publishing what you make
The Action 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.