Most first RPGs die the same way: three unfinished towns, a combat system that never lands, and a cast of NPCs with nothing useful to say. Searchers typing how to make an RPG are usually one honest party loop away from something playable — and one scope creep away from a folder they never open again. Start with the loop. Grow the world later.
What searchers typing how to make an RPG actually want
DataForSEO lists how to make an rpg at 320 searches a month with KD 5 and informational intent (verified 2026-10-14 in tools/research-supplement.md, seed how to make an rpg). Sibling phrases in the same cluster include how to make an rpg game (320/mo, KD 4), how to make an rpg free / how to make an rpg for free (20/mo each), and engine-specific tails like how to make an rpg in godot (40/mo) or Scratch / GameMaker variants. This page targets the shorter head term. Engine-locked walkthroughs already live on this blog; the job here is the genre shape, not a license plate for one editor.
Wikipedia’s Role-playing video game article (verified 2026-10-15) frames the genre around story-driven character development, exploration, and combat — not around shipping an open world on weekend one. Your first win condition is a closed cycle a stranger can finish in under ten minutes: enter a space, talk, fight, get a reward that clearly changes the next door. Everything else is destination tourism.
The party loop in plain English
MDN’s Anatomy of a video game still frames the job as a loop: present the scene, accept input, update state, repeat (verified 2026-10-15). For a party RPG that maps to four beats you can name on a sticky note:
- Walk — move a party (or a leader token) across one small map with one choke point.
- Talk — one NPC with a short script that unlocks the fight or explains the stake.
- Fight — one encounter with readable turns or real-time hits, a win state, and a lose state that does not soft-lock the build.
- Loot — one reward that opens the exit door, raises a number the player can see, or equips a visible item.
Feel lives in the fight beat and the loot feedback. If combat is a coin flip with no telegraph, players blame the game. If loot is a floaty “+1” with no door reaction, they will not trust the next room. The win condition for today is not “finished campaign.” It is “the stranger understands why the door opened.”
Keep the cast tiny. Three party slots is enough to teach formation and roles (tank / striker / support) without a casting call. One slime, one boss-shaped slime, or one bandit with two phases is enough enemy design. Name systems before you name lore: HP, ATK, a single special, and a single status if you must. Wikipedia’s RPG article lists deep skill trees and branching plots as genre features — treat those as expansion packs after the loop is honest.
Write the four beats as acceptance tests, not vibes:
- Walk — can the player reach the NPC without clipping through walls or soft-locking behind furniture?
- Talk — does the dialogue flag flip exactly once, and can the player re-open the box without restarting combat forever?
- Fight — is there a readable telegraph before damage, and does lose return the party to a safe spawn?
- Loot — does the reward change a visible number and open the exit on the same frame the player understands?
If any test fails, do not add a merchant. Merchants hide broken loops under shopping noise. Fix the flag graph first; storefronts come after the door is trustworthy.
Browser Phaser path with WizardGenie Dual-agent
Phaser is a fast, free, open-source HTML5 2D framework with WebGL and Canvas rendering, actively developed for over eleven years and commercially maintained by Phaser Studio Inc (docs verified 2026-10-15). Stable download at the time of writing is Phaser v4.2.1 “Giedi” (released 9 July 2026 per phaser.io/download/stable, verified 2026-10-15). It is 2D-first by design — perfect for a top-down or side-view party slice you can ship in a browser tab.
WizardGenie is available on desktop (Windows installer with native filesystem access) and on the web at /wizard-genie/app. Dual-agent Planner + Executor is documented in source as “A smart Planner thinks; a cheap Executor codes. Same quality at roughly a quarter of the token cost” (src/app/wizard-genie/page.tsx lines 297–299, verified 2026-10-15). Seat models the way the economics require. Planners come from the frontier set in Sorceress Code’s lineup — Claude Opus 4.7, GPT-5.5, Gemini 3.1 Pro, Grok 4.2 (CODING_MODELS in src/app/_home-v2/_data/tools.ts lines 767–775, verified 2026-10-15). Executors stay on budget seats — DeepSeek V4 Pro, Kimi K2.5, MiniMax M2.7. Never put Sonnet, Opus, GPT-5.5, or Gemini Pro on the typing side; that erases the cost reason Dual-agent exists.
Example Planner brief that locks scope:
Goal: walk-talk-fight-loot loop feels fair on keyboard.
Runtime: Phaser 4.2.1, single scene room-01.
Files allowed: src/party.js, src/combat.js, src/npc.js.
Change: one NPC dialogue unlocks one turn fight;
loot key opens the north door; lose returns to room start.
Do not add a second map, inventory UI, or skill tree.
Done when: a stranger finishes the loop twice without soft-lock.
Playtest: walk to NPC, finish talk, win fight, open door.
Hand that to the Executor. Read the diff. Playtest before the next prompt. Reject megaprompt rewrites that “just add a second town.” WizardGenie does not auto-publish to an arcade; export the build and host where you want. The point of how to make an RPG in a browser is that the loop is playable in the same place you wrote it.
Common Dual-agent failure modes while you are still on room-01:
- Soft-lock after lose — combat sets a “busy” flag that never clears. Require lose → spawn reset → input unlocked in the same brief.
- Dialogue re-triggers fight — talk completion and fight start share one boolean. Split
talkDonefromfightStarted. - Loot without door — inventory increments but the collider stays locked. Couple reward apply and door unlock in one function.
- Megaprompt rewrite — the Executor regenerates the whole scene graph. Narrow
Files allowedand reject the diff.
A practical weekend shape:
- Friday — freeze the sticky-note loop (walk / talk / fight / loot). No art yet; rectangles are fine.
- Saturday morning — scaffold Phaser room-01 with party tokens, one NPC marker, one enemy, one door collider.
- Saturday night — WizardGenie Dual-agent for combat readability only (telegraphs, win/lose). Reject any diff that rewrites map size.
- Sunday — swap rectangles for sheets, add Speech Gen lines and a Music Gen bed, then stop.