RPG Maker Resources Tutorials • Game Development

RPG Maker Relationship System Step-by-Step Tutorial

Add depth and emotion to your game by building Trust, Friendship and Romance with surrounding characters, shaped by the player's own dialogue choices.

All RPG Maker EnginesMid-level Tutorial~45 min
Relationship Mechanics Lite title screen for RPG Maker with MV and MZ compatibility badges.
Good news: this system works with any version of RPG Maker. If you use MZ or MV, open the demo file and follow along. On another engine? Recreate the event commands shown below. Download here!

What you'll learn today

We'll create dynamic character bonds that change as the player talks to an NPC. Three relationship types, all built with simple variables and conditional branches:
1
Trust level 💔
Starts full and can be broken by rude actions. Great for gating quests, dialogue or storyline branches.
2
Friendship level 🌱
Builds over time through kind dialogue choices, a strong bond might unlock party invites, perks or backstory reveals.
3
Romance level 💘
A long-term romantic connection that evolves with the story, for rare items, custom cutscenes and more.
Lite vs. Pro: this tutorial covers the free Lite version, built around a single NPC to keep things clear. A free Pro version adds multi-character support, layered/unlockable paths and a tavern map, available to email subscribers via the Anya & Lolo Club.

Before you start

1
If you have MZ/MV
Open the provided demo file. The key commands sit in the top-left corner of the demo map, organized into squares for learning (one Autorun event and one NPC event). For multiple maps, move them into Common Events and trigger with a switch.
2
If you use a different engine
No problem, recreate the commands manually. Place setup events in the top-left corner first, then move them into Common Events once you're happy.
RPG Maker demo map with the relationship system events placed in the top-left corner.
RPG Maker demo map showing the Autorun and NPC events organized for learning.

Part 1. Laying the foundation 🎭

First we create the core tracker using three variables. ~10-min setup
Three trackers
TrustLevel, starts strong, but can be broken 💔
FriendshipLevel, builds from scratch 🌱
RomanceLevel, also builds from zero 💘
1
Create your relationship trackers
Double-click a tile to open the Event Editor and name the event "Set Relationship Levels". Go to Game Progression → Control Variables → Single Variable and create three New Variables: TrustLevel, FriendshipLevel, RomanceLevel.
2
Set the starting values
Set Friendship and Romance to 0 so they build over time. Set Trust to 3 (choose "Set" and enter 3 in the Constant box). Your three lines should read:
◆Control Variables:#0002 FriendshipLevel = 0
◆Control Variables:#0003 RomanceLevel = 0
◆Control Variables:#0001 TrustLevel = 3
RPG Maker Control Variables commands creating the Trust, Friendship and Romance trackers.
RPG Maker Control Variables command setting TrustLevel to 3.
Why start Trust at 3? Think of it like heart containers in Zelda ❤️❤️💔, it starts full and depletes with rude choices. After 3 bad choices it hits 0 (broken). Friendship and Romance work the opposite way: they start empty and fill up with positive interactions.
Trust starts full, then depletes 3 → 2 → 1 → 0 rude choices break it Friendship / Romance start empty, then fill up 0 → 1 → 2 → 3 kind choices grow it Trust starts full, then depletes 3 → 2 → 1 → 0 rude choices break it Friendship / Romance start empty, then fill up 0 → 1 → 2 → 3 kind choices grow it
3
Run it once at startup (safely)
This event must run once to set the variables, then turn itself off. Change the Trigger to Autorun, then add Control Self Switch → [A]: ON right after the three variables. A non-stop Autorun would freeze the game, so the Self Switch is essential.
RPG Maker Control Self Switch A set to ON command.
4
Add a blank Page 2
Click New Event Page and set its Condition to Self Switch [A] is ON. Leave Page 2 completely blank. Now the event runs Page 1 once, flips Self Switch A, and switches to the empty Page 2, so it stops running. Clever and safe!
RPG Maker Autorun event Page 1 setting the relationship variables and Self Switch A.
RPG Maker blank Page 2 with a Self Switch A condition that stops the Autorun.
Page 1 (Autorun) Runs once: set the variables, then Self Switch A = ON Self Switch A Page 2 (blank) Condition: Self Switch A ON Nothing runs, event stops Page 1 (Autorun) Runs once: set the variables, then Self Switch A = ON Self Switch A Page 2 (blank) Condition: Self Switch A ON Nothing runs, event stops

Part 2. Meet your first love interest 💖

Now let's give the player someone to connect with. ~20-min setup
1
Create the "Guard Girl" NPC
Double-click a clear tile to create a new Event. Pick a girl guard sprite (the pink-haired one on the "Actor 2" sheet) and name the event Guard Girl.
RPG Maker event editor creating the Guard Girl NPC with a guard sprite.
2
Give her a greeting and choices
Add a Show Text like "Can I help you?". Then add Message → Show Choices with four options:
You seem nice.                         (Friendship)
Your hair shines brighter than the armor!  (Romance)
Out of my way!                          (Trust)
Nevermind...                            (Cancel)
Set Default to Choice #1 and Cancel to Choice #4.
RPG Maker Show Choices command with four dialogue options and default/cancel settings.
RPG Maker event list showing the four choice branches for the Guard Girl.
Playtest now! Walk up to the Guard Girl and press the action button, she should greet you and show the four choices. If nothing happens, make sure the Trigger is set to Action Button (or Event Touch). Add an Exit Event Processing at the end of each branch so each conversation closes cleanly.

Part 3. Connecting dialogue to the trackers 🌱

Let's turn each choice into a real interaction. We'll start with the Friendship branch ("You seem nice").
1
Add a Friendship point
At the start of the branch: Control Variables → FriendshipLevel → Add → 1. You'll see ◆Control Variables:#0002 FriendshipLevel += 1.
RPG Maker Control Variables command adding 1 to FriendshipLevel.
2
React based on the current level
So she doesn't repeat herself, add Conditional Branch → FriendshipLevel ≥ 3 and tick "Create Else Branch". The top tier (≥ 3) shows a celebration; the Else shows progress.
RPG Maker Conditional Branch checking if FriendshipLevel is greater than or equal to 3.
3
Celebrate the milestone
Inside the If (≥ 3), add a Show Text like Can you feel it? We've become \C[29]Good Friends\C[0]!, the color code \C[29] highlights the words. Add an Animation, Sound or Balloon icon to make it feel special.
4
Track progress in the Else
In the Else section, show how many points remain, and make it smart: nest conditionals so the message changes from "3 more" → "2 more" → "1 more" as the player gets closer. A simple point count becomes a visible journey!
RPG Maker completed Friendship branch with celebration and progress messages.
RPG Maker nested conditionals showing remaining friendship points to the next milestone.
Playtest tip: temporarily change the check from ≥ 3 to ≥ 1 to see the celebration immediately, then change it back.

Your turn: build the Romance branch 💝

Use the exact same logic for the "Your hair shines brighter than the armor!" choice. Your 5-step checklist:
1. Add +1 RomanceLevel at the start (use variable #0003, not Friendship!)
2. Insert an If/Else and check RomanceLevel ≥ 3
3. Create a romantic success message (hearts, a color like \C[27] for purple)
4. Add progress tracking for Romance levels 0, 1 and 2
5. Use a romantic animation (Radiation) and a Heart balloon icon
Stuck? Re-read the Friendship section, the steps are identical, just swapping the variable.

A handy script ☝️ (Pro developer tip)

Hardcoding the event name "Guard Girl" into every Show Text gets painful if you rename her later. Instead, store the event's name in a variable:
$gameVariables.setValue(4, $dataMap.events[this._eventId].name);
Add this as a Script command at the very beginning of the event. Now replace "Guard Girl" with \V[4] anywhere in Show Text, for example:
Before: Congratulations! You and Guard Girl are now Romantic Partners!
After: Congratulations! You and \V[4] are now Romantic Partners!
RPG Maker Script command storing the event name into a variable for use in dialogue.
Don't worry about the script! Just copy and paste it exactly. It may preview as 0 in the editor, but it works perfectly in-game, and updates automatically if you rename the event.

Part 4. The Trust branch, please don't break it! 💔

The "Out of my way!" branch works in reverse: instead of filling up, we deplete Trust. Each rude choice removes one heart; at 0, trust is broken.
1
Check if already broken
At the start of the branch, a Conditional Branch checks TrustLevel ≤ 0. This "locked out" state catches players who already broke trust and shows a cooldown line immediately.
2
Subtract a Trust point
If trust isn't broken yet, in the Else branch subtract a point: TrustLevel -= 1. Note we use -= 1 (subtract), not += 1!
RPG Maker Control Variables command subtracting 1 from TrustLevel.
3
Warn, or break
Check If TrustLevel ≥ 1: show a warning like "Woah, okay." In its Else (trust just hit 0), show the "broken now" reaction.
RPG Maker conditional branches showing the trust warning and broken-trust messages.
Test it: be rude three times. 3→2 "Woah, okay…" (warning), 2→1 "Woah, okay…" (warning), 1→0 "You're so RUDE!!!" (broken now), then any future choice at 0 → "… (She won't even look at you.)" (cooldown).
Beyond basics (for ambitious devs)
Add an apology mechanic to slowly rebuild trust, trust-gated quests (NPC only helps if Trust ≥ 2), or a witness system where other NPCs react if you're mean to their friend.

Part 5. On-screen display (HUD) 🎯

Let's show Trust, Friendship and Romance on screen, updating in real time. ~15-min setup
1
Turn on the TextPicture plugin
In MZ, open the Plugin Manager and enable the built-in TextPicture plugin (no configuration needed). In MV, the DTextPicture plugin is already included.
RPG Maker Plugin Manager with the TextPicture plugin enabled.
2
Add the display commands
At the very beginning of the Guard Girl event, add a Plugin Command with the text, then an empty Show Picture to draw it:
MZ:  TRUST \V[1] | FRIENDSHIP \V[2] | ROMANCE \V[3]
MV:  D_TEXT \c[17] TRUST \V[1] | FRIENDSHIP \V[2] | ROMANCE \V[3] \c[0]

◆Show Picture:#1, None, Upper Left (505,220), (100%,100%), 255, Normal
Want it prettier? Try icons: TRUST 🏺\V[1] | FRIENDSHIP 🌼\V[2] | ROMANCE 💘\V[3].
RPG Maker game screen showing the Trust, Friendship and Romance HUD above the dialogue.
Don't forget to clean up! Add ◆Erase Picture:#1 right before Exit Event Processing in every branch, so the display disappears when the conversation ends. Want it visible all the time? Use a Parallel event that constantly refreshes Picture #1.

🚀 Where to go from here

You've built a professional relationship system, dynamic tracking of three types, meaningful choices, visual/audio feedback, a live HUD, milestone celebrations and pro touches like cooldowns and dynamic names.
The free Pro version adds multi-NPC support (four example characters), advanced dynamics (instant friendships, trust-only setups), and layered paths where Romance only unlocks after enough Friendship. It's free for subscribers, join the Anya & Lolo Club for the download link.
Want to hang out?
Join the Discord, or follow along on your favorite platform below.
© Anya & Lolo