$npx -y skills add thedivergentai/GD-Agentic-Skills --skill godot-genre-romanceExpert blueprint for romance games and dating sims (Tokimeki Memorial, Monster Prom, Persona social links) focusing on affection systems, multi-stat relationships, dated events, and route branching. Use when building relationship-centric games, social simulations, or otome games.
| 1 | ## Godot 4.7 Baseline |
| 2 | |
| 3 | - Expert patterns in this skill target **Godot 4.7+** (stable, 2026-06-18). |
| 4 | - Consult the [Godot 4.7 migration guide](https://docs.godotengine.org/en/4.7/tutorials/migrating/upgrading_to_godot_4.7.html) when upgrading projects from 4.6. |
| 5 | - **NEVER** assume 4.6 defaults (stretch mode, audio area_mask, RichTextLabel percent flags) without checking 4.7 migration notes. |
| 6 | |
| 7 | # Genre: Romance & Dating Sim |
| 8 | |
| 9 | Romance games are built on the "Affection Economy"—the management of player time and resources to influence NPC attraction, trust, and intimacy. |
| 10 | |
| 11 | ## Core Loop |
| 12 | 1. **Meet**: Encounter potential love interests and establish baseline rapport. |
| 13 | 2. **Date**: Engage in structured events to learn preferences and test compatibility. |
| 14 | 3. **Deepen**: Invest resources (time, gifts, choices) to increase affection/stats. |
| 15 | 4. **Branch**: Story diverges into character-specific "Routes" based on major milestones. |
| 16 | 5. **Resolve**: Reach a specialized ending (Good/Normal/Bad) based on relationship quality. |
| 17 | |
| 18 | ## NEVER Do (Expert Anti-Patterns) |
| 19 | |
| 20 | ### Romance & NPC Logic |
| 21 | - NEVER create "Vending Machine" romance; strictly incorporate variables like **NPC Mood**, **Timing**, and **Multi-Stat Thresholds** to ensure characters feel autonomous. |
| 22 | - NEVER use binary Affection (Love/Hate); strictly use a **Multi-Axial Model** (Attraction, Trust, Comfort) for believable psychological depth. |
| 23 | - NEVER focus on 100% opaque stats; strictly provide **Visible Indicators** (heart UI, blushing text, pulsing hearts) to help players make informed choices. |
| 24 | - NEVER use the "Same Date Order" trap; strictly implement a **Repetition Penalty** (~30%) for visiting the same location twice in a row. |
| 25 | - NEVER forget "Missable" Milestones; strictly ensure meaningful consequences (e.g., missing events due to poor scheduling) to add weight to the experience. |
| 26 | - NEVER ignore NPC Autonomy; strictly allow NPCs to have their own **Schedules** and the ability to **Reject** the player based on low trust or conflicting events. |
| 27 | - NEVER use polling (`_process`) for NPC schedule checks; strictly use a **Signal-Driven TimeManager** (Autoload) to broadcast hour/day changes for performant state updates. |
| 28 | - NEVER hardcode character references for jealousy logic; strictly use **Groups (`add_to_group`)** to broadcast romantic events across the scene for decoupled, autonomous NPC reactions. |
| 29 | |
| 30 | ### Technical & UI |
| 31 | - NEVER use `_process` for typewriter text; strictly use **Tweens on `visible_ratio`** for frame-independent, smooth reveals. |
| 32 | - NEVER parse massive narrative files on the main thread; strictly use **`ResourceLoader.load_threaded_request()`** to prevent transition stutters. |
| 33 | - NEVER use exact float math for affection checks; strictly use **`is_equal_approx()`** to avoid jitter-based logic failures. |
| 34 | - NEVER structure complex dialogue purely in code; strictly design dialogue trees as **Custom `Resource` classes** to decouple narrative data from logic. |
| 35 | - NEVER rely on the global OS clock for timed choices; strictly use **`SceneTreeTimer`** which respects `Engine.time_scale` and pause states. |
| 36 | - NEVER leave invisible controls with `MOUSE_FILTER_STOP`; strictly set to `IGNORE` or `PASS` on non-opaque layers to avoid blocking dialogue progression. |
| 37 | - NEVER hardcode dialogue strings; strictly map text to **Localization Keys** and retrieve via `tr()` for internationalization. |
| 38 | - NEVER use absolute pixel positioning for interfaces; strictly rely on **Anchoring & Containers** for responsive scaling across devices. |
| 39 | |
| 40 | --- |
| 41 | |
| 42 | ## 🛠 Expert Components (scripts/) |
| 43 | |
| 44 | ### Original Expert Patterns |
| 45 | - [romance_affection_manager.gd](scripts/affection_manager.gd) - Multi-axis (Attraction/Trust/amic_pricing_modifier.gd Attraction/Trust/Comfort) tracking and gift logic. |
| 46 | - [romance_date_event_system.gd](scripts/date_event_system.gd) - Variety-aware dating logic with repetition penalties. |
| 47 | - [romance_route_manager.gd](scripts/route_manager.gd) - Flag-based route branching and CG gallery persistence. |
| 48 | |
| 49 | ### Modular Components |
| 50 | - [romance_patterns.gd](scripts/romance_patterns.gd) - Reusable UI helpers: Typewriter tweens and heart-burst pulses. |
| 51 | |
| 52 | --- |
| 53 | |
| 54 | | Phase | Skills | Purpose | |
| 55 | |-------|--------|---------| |
| 56 | | 1. Stats | `dictionaries`, `resources` | Tracking multi-axis affection, character profiles | |
| 57 | | 2. Timeline | `autoload-architecture`, `signals` | Managing time/days, triggering scheduled dates | |
| 58 | | 3. Narrative | `godot-dialogue-system`, `visual-novel` | Conversational branching and choice consequence | |
| 59 | | 4. Persistence | `godot-save-load-systems` | Saving relation |