Before writing any code, you must define how relationships function inside your game world. A robust social system relies on a mathematical framework to track how non-player characters (NPCs) or players feel about one another. The Affinity Matrix
Scripts modify the BillboardGui above a player’s avatar to display custom titles. A script might allow a player to set their status to "Single," "Taken," "Manager at Grocery Store," or "Subordinate."
Any custom input text or dialogue typed by players must pass through Roblox's official filtering system before showing up on screen. Use TextService:FilterStringAsync() to prevent inappropriate language in your custom relationship UI. Best Practices for Optimization
Do not allow players to jump straight to romance. Use the affinity score to gate relationship milestones: 0 - 20 points Friend: 21 - 50 points Close Friend: 51 - 75 points Romantic Partner: 76 - 100 points The Date System Loop
Keep a strict boundary between workspace channels and casual or personal discussion spaces.
As with the "My Dear Yumesora" example, romantic content should contain suggestive themes without explicit material — suitable for Roblox's broad audience.
Players perform tasks, give gifts, or spend time together to increase a stat, unlocking new dialogue or perks. Narrative-Driven Systems
Workplace roleplay requires clear hierarchies and mechanics that acknowledge professional bonds. The script below establishes a basic framework for tracking coworkers and employers using Roblox Attributes.
local friends = Players:GetFriendsAsync(userId)
To make the storylines interesting, the feature includes a "Drama Button" (enabled by server owners).