⚔️
Multiple Factions
Create unlimited factions with unique relationships. Guards, Thieves, Merchants, Nobles - build complex faction systems.
📊
Reputation System
Full reputation tracking from -100 to +100 with 7 distinct tiers. Every action matters!
🎭
NPC Behavior
NPCs react dynamically based on player reputation. From hostile attacks to friendly discounts.
💥
Faction Wars
Declare wars, make peace, form alliances. Complex faction relationships affect gameplay.
🎮
Blueprint Friendly
30+ Blueprint functions. No C++ knowledge required. Easy to integrate.
⚡
Zero Dependencies
Lightweight and standalone. Works with any project. No external requirements.
🌐
Multiplayer Ready
Server-authoritative reputation and faction state, replicated to every client and late joiner. Same Blueprint events on server and clients.
Reputation Tiers
Seven distinct reputation tiers that affect NPC behavior, prices, and quest availability:
Hated (-100 to -60)
Kill on Sight
Hostile (-60 to -30)
Aggressive
Unfriendly (-30 to -10)
Rude
Neutral (-10 to +10)
Normal
Friendly (+10 to +30)
Better Prices
Honored (+30 to +60)
Discounts & Quests
Exalted (+60 to +100)
Best Rewards
📚 How to Use - Step by Step
Step 1: Installation
- Extract the plugin to
YourProject/Plugins/ReputationFactionSystem/
- Open Unreal Editor → Edit → Plugins
- Search for "Reputation & Faction System" and enable it
- Restart the editor when prompted
Step 2: Add Reputation Component to Player
The player needs a component to track reputation with all factions.
1. Open your Player Character Blueprint
2. Click "Add Component"
3. Search for "Reputation Component"
4. Add it to your character
5. Compile and Save
Step 3: Create Faction Data Assets
Define each faction in your game (Guards, Thieves, Merchants, etc.)
1. Content Browser → Right-click
2. Miscellaneous → Data Asset
3. Select "FactionData" class
4. Name it (e.g., "DA_Guards")
5. Open and configure:
├─ Faction ID: "Guards" (unique identifier)
├─ Faction Name: "City Guards"
└─ Initial Player Reputation: 0.0
Tip: Create one Data Asset for each faction in your game.
Step 4: Register Factions at Game Start
Register all factions when the game starts (usually in Game Mode).
In Game Mode Blueprint → Event BeginPlay:
Get Game Instance
├─ Get Subsystem (Faction Manager Subsystem)
└─ Register Faction
└─ Faction Data: DA_Guards
Repeat for each faction (Guards, Thieves, Merchants, etc.)
Step 5: Add Faction Member Component to NPCs
NPCs need to know which faction they belong to.
1. Open NPC Character Blueprint
2. Add Component → "Faction Member Component"
3. In Details panel, set:
├─ Faction ID: "Guards" (must match registered faction)
└─ Is Faction Leader: false (true for special NPCs)
4. Compile and Save
Step 6: Change Reputation Based on Actions
Example: Player kills an NPC, loses reputation with their faction.
When Player Kills NPC:
Get Killed NPC
├─ Get Component by Class (Faction Member Component)
├─ Get Faction ID
└─ Get Player Character
└─ Get Component by Class (Reputation Component)
└─ Add Reputation
├─ Faction ID: [from killed NPC]
└─ Amount: -20.0 (negative = lose rep)
Step 7: Make NPCs React to Reputation
NPCs should behave differently based on player's reputation.
In NPC AI or Behavior Tree:
Event Tick (or custom event)
├─ Get Faction Member Component (Self)
├─ Get Player Reference
└─ Is Hostile To Actor? (Player)
└─ Branch
├─ True → Attack Player
└─ False → Patrol / Ignore
Step 8: (Optional) Adjust Shop Prices by Reputation
In Shop/Merchant Blueprint:
Get Player
├─ Get Reputation Component
└─ Get Reputation With Faction ("Merchants")
└─ Get Reputation Tier
└─ Select (based on tier):
├─ Exalted → 50% discount
├─ Honored → 25% discount
├─ Friendly → 10% discount
├─ Neutral → Normal price
├─ Unfriendly → 10% markup
├─ Hostile → 25% markup
└─ Hated → Refuses to trade
Step 9: (Optional) Declare Faction Wars
Make two factions hostile to each other.
Get Faction Manager Subsystem
└─ Declare Faction War
├─ Faction A ID: "Guards"
└─ Faction B ID: "Thieves"
Result: All Guards will be hostile to all Thieves
Step 10: (Optional) Multiplayer
Nothing extra to set up. Make sure the actor carrying the components has Replicates enabled, register factions on every machine (GameInstance Init) and change reputation or declare wars on the server. Clients receive the values and fire the same events.
Server (kill, quest reward, dialogue outcome)
└─ Add Reputation ("Guards", -20)
Every client
└─ On Reputation Changed → update HUD
Late joiner
└─ receives all reputations and wars on connect
Client-side UI that must change reputation? Enable Allow Client Reputation Requests on the Reputation Component and the call is sent to the server through a validated RPC.
✅ You're Done!
Your reputation system is now working! NPCs will react to player actions, and reputation will affect gameplay.
Technical Details
Engine Version: Unreal Engine 5.6, 5.7+
Platforms: Windows, Mac, Linux (all UE5 supported platforms)
Dependencies: None - standalone plugin
Code: Full C++ source included
Multiplayer: Yes (v1.1): server-authoritative, replicated to clients and late joiners, listen and dedicated servers