Relationship System

v1.1.0

Support

FAQ, changelog, and support resources.

Frequently Asked Questions

How do relationships resolve when there's a faction and an entity override?

The resolver uses a hierarchical lookup: Entity Override (scoped) → Entity Override (default) → Faction (scoped) → Faction (default) → Parent Faction (×inheritanceRate) → None. The first match wins.

Can the same entity pair have multiple relationships?

Yes! With Multi-Dimensional Relationships, you scope relationships to different RelationshipDefinitions. Player↔Merchant can have separate 'Trade Reputation' and 'Personal Trust' dimensions.

What's the difference between symmetric and asymmetric?

Symmetric (default): A↔B is one value. Asymmetric (isSymmetric=false on definition): A→B and B→A are independent — the player can trust a companion, but the companion may distrust the player.

How do I persist relationships?

Add the RelationshipRemember component to the same GameObject as your RelationshipManager. It integrates with GC2's Remember system to automatically save and load all relationship data, including modifiers, caps, runtime factions, and diplomacy states.

What are Stable Entity IDs?

The system uses deterministic IDs that survive play sessions. Set IDs to 'Manual' for scene entities or 'AssetBased' for prefab spawns to ensure save/load reliability.

How do temporary modifiers work?

Modifiers alter relationship change deltas. They can be Flat (+10), Percentage (×1.5), or Override. They support duration-based expiry, target filtering (entity/faction/definition), and GainOnly/LossOnly modes.

Can relationships work in multiplayer?

The current version is designed for single-player. Multiplayer support would require network synchronization which is not included.

How does dynamic inheritance differ from static?

Static (dynamicInheritance=false): Parent values are only used when a child relationship is first created. Dynamic (true): Parent values are scaled by inheritanceRate on every lookup — child relationships reflect parent changes in real-time.

What are Runtime Factions?

Unlike Faction ScriptableObjects (edit-time), RuntimeFactions are created during gameplay for player guilds, dynamic alliances, etc. They integrate fully with the hierarchy, resolver, and save/load systems.

Changelog

Current Version: 1.1.0

Version 1.1.0

Release Date: pending validation

Fixed

  • Player builds now compile — Test code that shipped inside the runtime assembly, and editor-only menu code compiled for all platforms, both broke player builds. Tests moved to the dedicated test assembly; menu items moved to their own editor-only assembly.
  • The Examples installer no longer offers a phantom update — The Relationship.Examples install asset declared version 1.0.1 while the package it ships installs to Relationship.Examples@1.0.0. The declared version now matches what is installed, so the Install window stops re-importing the same folder on every click.

Added

  • Decay Preview in the Relationship Settings window — The Relationships tab now opens with an Edit-Mode-only preview: pick a definition, see the projected value curve and an estimated time-to-target from both directions. New scripting helper DecayPreviewUtility.EstimateTimeToTarget(...).
  • JSON export and import for balancing (Tools tab) — Export Balancing JSON / Import Definitions from JSON, Edit Mode only, undoable, GUID-then-name matching, never touches stat modifiers, default caps or the decay curve. Public format via RelationshipJsonSerializer / RelationshipBalanceDocument.
  • Relationship Journal UI — New Relationship Journal View component lists a relationship's recorded change history with filters and a configurable format. Needs Enable History on the Definition. New Instruction "Open Relationship Journal". No prefab ships yet.
  • Affinity romance UI palette — New RS_AffinityPalette.asset color preset — assign it to any prefab's existing Palette Applicator to reskin, no new prefab required.
  • Gift preferences — New GiftPreference asset maps an item id to a relationship delta and reaction line. New Instruction "Apply Gift (Item Id)" and Event "On Gift Received". Inventory-agnostic by design.
  • Gossip / rumour broadcast — New Instruction "Spread Rumour" changes every member of a target faction's relationship with a source entity, with Falloff and Max Members. New Event "On Rumour Spread".
  • Two new editor menu items — Window → Relationship System → Support & Feedback and Rate on Asset Store.
  • Full Visual Scripting reference — The package now ships 30 Instructions, 18 Conditions, 6 Events (previously documented as 11/5/4).

Changed

  • Manager "Keep manager alive across scene changes" setting relabelled — Now "Scene Management (not applied yet)" — the manager never called DontDestroyOnLoad and still does not; the value is stored only. Readable as RelationshipManager.Instance.PersistAcrossScenes.
  • Stat Modifiers list relabelled — Now "Stat Modifiers (integration pending)" with a note that it is stored but not applied at runtime yet. Existing data is untouched.

Version 1.0.1

Release Date: 2026-04-07

TODO

  • Maintenance release — TODO publisher: fill in from Asset Store release notes — no source available in this working folder

Version 1.0.0

Release Date: February 2026

Cap System Improvements

  • Directional Clamping — Caps now use directional clamping - only prevents crossing boundaries, doesn't force values into range
  • Cap Registrar Component — Visual component for registering caps without code via Inspector
  • Entity/Faction ID Fallback — Cap lookup now checks both Entity IDs and Faction IDs with automatic fallback

UI System Enhancements

  • Definition-Scoped Views — Views can filter by RelationshipDefinition for multi-dimensional relationships
  • Performance Optimizations — GameObject, Entity ID, and Faction caching in RelationshipViewBase
  • Frame-Batched Notifications — Multiple rapid changes batched into single notification

New GC2 Components

  • Cap Instructions — InstructionSetCap, InstructionRemoveCap for visual scripting
  • Cap Conditions — ConditionCapAtMax, ConditionCapAtMin, ConditionHasCap
  • UI Instructions — InstructionRefreshRelationshipView for manual UI refresh

Version 0.9.0

Release Date: January 2026

Core System

  • Hierarchical Relationship Resolution — Entity Override → Faction → Inherited lookup chain
  • Multi-Dimensional Relationships — Definition-scoped relationships for Trust, Respect, Fear, etc.
  • Asymmetric/Directional Relationships — A→B can differ from B→A for opinions vs mutual trust
  • Faction Inheritance — Configurable inheritance rate (0-100%) from parent factions

Advanced Features

  • Temporary Modifiers — Flat/Percentage/Override with duration, filtering, and GainOnly/LossOnly
  • Relationship History — Circular buffer audit log with timestamps, deltas, and source labels
  • Reputation Caps — Min/max value gates with OnCapReached events
  • Diplomacy State Machine — War, Peace, Alliance, Ceasefire, Embargo with threshold-based transitions
  • Advanced Decay Curves — Linear, AnimationCurve, and Asymmetric decay modes
  • Runtime Factions — Dynamic creation, hierarchy integration, full save/load support
  • GC2 Visual Scripting — ~45 Instructions, Conditions, and Events for all features

UI System

  • Production-Ready UI Prefabs — Ready-to-use prefabs for common relationship display patterns
    • RelationshipBar — value display with level indicators
    • FactionCard — faction info with member list and hierarchy
    • NotificationToast — relationship change notifications

Version 0.6.0

Release Date: January 2026

  • RelationshipManager core system
  • CharacterRelationship component
  • RelationshipDefinition ScriptableObject
  • Faction system with hierarchies
  • GC2 Instructions, Conditions, and Events
  • Scene Instructions system
  • Editor Window with analytics
  • UI System with base classes
  • Remember component for persistence
  • Auto-Hostility component

Support

📧 support@c-huck.com📖 Documentation💬 Discord — coming soon

This is a passion project — no 24/7 support, but I reply as quickly as I can.

FAQ, Changelog & more →
Before contacting support: Please check the FAQ above and ensure you have the latest version installed.