Inspiration

Modern dating apps reduce connection to swipes and surface-level interactions. We wanted to explore something deeper:

👉 What if a game could simulate emotional dynamics in relationships?

Inspired by visual novels and real-life dating psychology, we aimed to build a system where conversations actually matter, and where players must navigate personality, timing, and emotional boundaries—not just pick the “right” answer.

What it does

Romance Simulator is an AI-driven dialogue game where players interact with a character, Sophia, through:

💬 Free-form dialogue (player types anything) 🔘 Multiple-choice responses (guided options) 🧠 Memory system (she remembers past interactions) 💔 Relationship mechanics (trust, intimacy, attraction, comfort)

The game features:

🎭 Dynamic scenarios (first meeting, texting, dates, conflict) ⏳ Conversation limits & cooldowns (to prevent spamming) 📅 Date planning system (choices affect relationship outcomes) 🧊 Avoidant personality model (Sophia doesn’t open up easily) 🏁 Three endings: Bad (rejection/ghosting) Neutral (no real connection) Good (earned emotional connection)

👉 Conversations evolve based on your behavior—not just your words.

How we built it

We designed the system around state + AI prompting + game rules:

🧠 AI Layer Used Groq API for fast LLM responses Built structured prompts combining: Character personality (Sophia) Current scenario Relationship stats Memory (past dialogue + extracted traits) 🧩 Game Engine Session state tracks: Relationship metrics Scenario progression Cooldowns and limits Modular system: memory.py → stores history + player traits relationship.py → updates stats based on choices scenario.py → controls narrative flow dialogue.py → builds prompts dynamically 🎭 Personality System

Sophia is modeled as:

Avoidant attachment style Emotionally guarded Reactive to player behavior

This creates non-linear responses—being too eager can actually push her away.

Challenges we ran into

  1. Making conversations feel real

Early versions felt:

Too agreeable Too predictable

👉 Fix: Added personality constraints + emotional states (e.g. “slightly bored”, “testing the player”)

  1. Balancing relationship mechanics

If too easy:

Game becomes boring

If too harsh:

Player feels punished

👉 Solution: Multi-dimensional system (trust, attraction, comfort) instead of a single “love score”

  1. Memory handling

Naive memory caused:

Repetition Inconsistent behavior

👉 Solution:

Short-term memory (recent dialogue) Long-term traits (player behavior patterns)

  1. Preventing spam interactions

Players could brute-force good outcomes

👉 Fix:

Conversation limits Cooldowns Scenario progression gates

Accomplishments that we're proud of

💡 Created a dynamic AI character with believable emotional behavior 🎭 Built a system where player behavior matters more than dialogue choices 🧠 Implemented memory that influences future interactions ⚖️ Designed a nuanced relationship system (not just “+1 love”) 🎮 Made conversations feel like a game with tension, not just chatting

What we learned

💬 Dialogue systems need constraints, not just generation 🧠 Personality design is more important than model size 🎮 Good game feel comes from: friction uncertainty consequences ⚖️ Balancing emotional systems is surprisingly similar to balancing gameplay mechanics

What's next for Romance simulator

🎭 More Characters Different attachment styles (anxious, secure, chaotic) 🌍 More Scenarios Group settings Long-distance interactions Breakups and reconciliation 🧠 Smarter Memory Persistent cross-session memory Player “profile” that evolves over time 🎮 Gameplay Features Visual UI / avatars Voice interaction Real-time emotional feedback indicators 🤖 AI Improvements More nuanced emotional transitions Better long-term narrative consistency

Built With

Share this project:

Updates