๐ฏ Project Overview
Dark Age is a complex, data-driven medieval survival RPG built on Unreal Engine 5. The game features emergent gameplay through interconnected systems including advanced survival mechanics, dynamic NPC ecosystems, political intrigue, and a living economy. The architecture is designed around modular Game Instance Subsystems and Actor Components for maximum scalability and maintainability.
๐๏ธ Core Architecture Philosophy
- Data-Driven Design: All gameplay values stored in
Data TablesandData Assets - Modular Subsystems: Decoupled systems communicating via interfaces – see
TDD.md - Component-Based Entities: Flexible actor composition using specialized components – see
TDD.md - Emergent Gameplay: Systems designed to interact and create unpredictable scenarios
๐ Recent Updates
- 2025-09-29: working copy
- 2025-09-07: Enhance game systems and update GPU Dump Viewer
- 2025-09-07: o Stable build
- 2025-08-02: Update changelog and README formatting
- 2025-08-02: Improve changelog and README update processes
Implementation Status & Roadmap
๐ข Core Systems (85% Complete)
Player Character System
Status: 90% Complete | Files: DAPlayerCharacter.cpp
- โ
Attribute System:
StatlineComponent– Full implementation - โ Character Progression: Level-based attribute allocation
- โ
Equipment System:
InventoryComponentintegration - โ
Faction Integration:
FactionReputationComponent - ๐ Political Actions:
DAPlayerCharacter_PoliticalActions.cpp– 70% complete
Survival Mechanics
Status: 90% Complete | Core: AdvancedSurvivalSubsystem
- โ Hunger/Thirst System: Real-time depletion and damage when stats are at zero.
- โ
Disease System:
DiseaseSystemwith staged progression - โ
Environmental Effects:
ClimateAdaptationComponent - โ
Shelter Management:
ShelterManagementComponent - ๐ Advanced Disease Interactions: 60% complete
- ๐ Seasonal Survival Effects: Planned for v1.2
๐ก NPC & AI Systems (70% Complete)
NPC Ecosystem
Status: 75% Complete | Core: NPCEcosystemSubsystem
- โ
NPC Archetypes:
DAMillerNPC,DALandownerNPC,DATavernKeeperNPC - โ Daily Schedules: Time-based behavior patterns
- โ Needs System: Hunger, sleep, social needs affecting behavior
- ๐ Population Dynamics: Migration and breeding systems – 40% complete
- ๐ Advanced Social Interactions: Planned for v1.3
AI Behavior
Status: 65% Complete | Components: AICombatBehaviorComponent
- โ Combat AI: Basic combat behaviors and tactics
- โ
Memory System:
AIMemoryComponent - โ
Morale System:
AIMoraleComponent - ๐ Advanced Planning:
AINeedsPlanningComponent– 50% complete - ๐ Group AI Coordination: Planned for v1.4
๐ก Economy & Crafting (65% Complete)
Dynamic Economy
Status: 75% Complete | Core: EconomySubsystem
- โ Supply/Demand Simulation: Price fluctuation based on regional trade
- โ Trade Routes: Inter-settlement commerce
- โ Vendor Integration: NPC merchant behavior
- ๐ Advanced Market Events: Economic crises, booms – 30% complete
- ๐ Player-Driven Economy: Large-scale player impact – Planned for v1.5
Crafting System
Status: 50% Complete | Component: CraftingComponent
- โ Basic Recipes: Item creation from components
- โ Skill Requirements: Level-gated crafting
- โ Station-Based Crafting: Forge, workbench, etc.
- ๐ Quality System: Item quality variations – 40% complete
- ๐ Master Crafting: Legendary item creation – Planned for v1.6
๐ก Political & Social Systems (55% Complete)
Faction System
Status: 60% Complete | Core: FactionManagerSubsystem
- โ
Faction Reputation:
FactionReputationComponent - โ Basic Faction Relations: Friend/enemy dynamics
- ๐ Political Events:
PoliticalSystem– 45% complete - ๐ Faction Wars: Large-scale conflicts – Planned for v1.7
Crime & Justice
Status: 50% Complete | Core: CrimeManagerSubsystem
- โ
Notoriety System:
NotorietyComponent - ๐ Crime Detection: Witness system – 60% complete
- ๐ Justice System: Courts, punishment – 30% complete
- ๐ Bounty System: Player bounties – Planned for v1.8
๐ก Quest & Content Systems (65% Complete)
Quest Framework
Status: 70% Complete | Core: QuestSystem
- โ Static Quests: Hand-authored quest content
- โ
Dynamic Quest Generation:
DynamicQuestSubsystem - โ
Quest Log UI:
DAQuestLogWidget - ๐ Complex Quest Chains: Multi-stage narratives – 50% complete
- ๐ Emergent Storylines: AI-driven narratives – Planned for v2.0
๐ด Advanced Features (25% Complete)
Multiplayer Foundation
Status: 30% Complete | Core: MultiplayerSocialSubsystem
- ๐ Network Architecture: Basic client-server setup – 40% complete
- ๐ Social Features: Player interactions – 20% complete
- ๐ Persistent World: Server-side world state – Planned for v2.1
Weather & Environment
Status: 20% Complete | Core: WeatherSystem
- ๐ Basic Weather: Rain, snow effects – 30% complete
- ๐ Seasonal Changes: Long-term climate cycles – Planned for v1.9
- ๐ Weather Impact: Survival and gameplay effects – Planned for v1.9
๐๏ธ Technical Documentation Library
๐ Core Documentation
| Document | Purpose | Completion | Last Updated |
|---|---|---|---|
| ๐ Game Design Document | Complete gameplay mechanics & balance | 95% | Current |
| ๐ Technical Design Document | C++ architecture & system design | 90% | Current |
| ๐ API Reference | Complete C++ class documentation | 85% | Current |
| ๐ Changelog | Project update history | 100% | Current |
๐ง System-Specific Documentation
| System | API Docs | Implementation | Status |
|---|---|---|---|
| Survival | AdvancedSurvivalSubsystem |
AdvancedSurvivalSubsystem.cpp |
85% โ |
| NPC Ecosystem | NPCEcosystemSubsystem |
NPCEcosystemSubsystem.h |
75% ๐ |
| Economy | EconomySubsystem |
EconomySubsystem.cpp |
70% ๐ |
| Combat | NextGenCombatSubsystem |
NextGenCombatSubsystem.h |
60% ๐ |
| Quests | QuestSystem |
DynamicQuestSubsystem.cpp |
70% ๐ |
| Politics | PoliticalSystem |
FactionManagerSubsystem.cpp |
55% ๐ |
๐จ UI System Documentation
| Component | API Docs | Implementation | Features |
|---|---|---|---|
| Main HUD | ADAHUD |
DAHUD.cpp |
Health, stamina, minimap |
| Inventory | UDAInventoryWidget |
DAInventoryWidget.cpp |
Item management, equipment |
| Player Status | UDAPlayerStatusWidget |
DAPlayerStatusWidget.cpp |
Survival stats, conditions |
| Notifications | UDANotificationWidget |
DANotificationWidget.cpp |
System messages, alerts |
| Interactions | UDAInteractionPromptWidget |
DAInteractionPromptWidget.cpp |
World interaction prompts |
๐ฎ Gameplay Mechanics Deep-Dive
โ๏ธ Combat System
Implementation: NextGenCombatSubsystem | Status: 60% Complete
Damage Calculation Formula
FinalDamage = (BaseWeaponDamage + (RelevantAttribute * WeaponModifier)) - ArmorDR
| Weapon Type | Base Damage | Attribute Modifier | Stamina Cost | Special Properties |
|---|---|---|---|---|
| Swords | 12-18 | STR ร 0.5 | Light: 5, Heavy: 15 | Balanced speed/damage |
| Axes | 15-25 | STR ร 0.7 | Light: 7, Heavy: 20 | +50% vs wooden shields |
| Bows | 8-15 | DEX ร 0.6 | 3 per shot | Damage scales with draw time |
| Daggers | 6-12 | DEX ร 0.4 | Light: 3, Heavy: 8 | +100% backstab damage |
Status Effects System
Component: StatusEffectComponent
- Bleeding: -2 HP/sec for 30 seconds
- Poisoned: -1 HP/sec for 60 seconds, -10% movement speed
- Stunned: Cannot move or attack for 3 seconds
- Diseased: Various effects based on
DiseaseSystem
๐ Survival Mechanics
Implementation: AdvancedSurvivalSubsystem | Status: 85% Complete
Needs System (Real-Time)
| Need | Depletion Rate | Critical Threshold | Death Threshold | Effects |
|---|---|---|---|---|
| Hunger | -0.1 per second | <25% | 0% | Stamina regen -50% โ -0.5 HP/sec |
| Thirst | -0.2 per second | <25% | 0% | Stamina regen -50% โ -1 HP/sec |
| Sleep | -1 per 5 minutes | <20% | N/A | -25% XP gain, hallucinations |
| Warmth | Variable by climate | <30% | 0% | Movement -25% โ -1 HP/15s |
Disease System Details
Implementation: DiseaseSystem
Example: “The Shakes” Disease Progression
// Stage 1: Incubation (24 hours real-time)
- No visible effects
- 10% chance from consuming dirty water
// Stage 2: Symptomatic (72 hours real-time)
- Dexterity: -5 points
- Periodic coughing animations
- 5% chance to spread to nearby NPCs
// Stage 3: Severe (48 hours real-time)
- Dexterity: -10 points, Strength: -5 points
- Stamina regeneration disabled
- 15% chance to spread to nearby NPCs
// Cure: Herbal Tincture
- Recipe: 3ร Rivercress + 1ร Clean Water
- Requires Alchemy skill level 5
- 95% cure rate, 5% chance of complications
๐๏ธ NPC Ecosystem
Implementation: NPCEcosystemSubsystem | Status: 75% Complete
NPC Archetype: Miller
Implementation: DAMillerNPC
// Daily Schedule (Game Time)
07:00 - Wake up, check grain supplies
08:00 - Begin mill operations (if grain available)
12:00 - Lunch break, social interaction
13:00 - Resume mill operations
17:00 - End work, walk to tavern
19:00 - Socialize at tavern (different dialogue tree)
22:00 - Return home, sleep
// Needs-Based Behavior Overrides
if (Hunger < 30) { AbandonWork(); SeekFood(); }
if (Social < 20) { SeekSocialInteraction(); }
if (Happiness < 10) { GeneratePlayerQuest("Help the Miller"); }
Dynamic Quest Generation
Implementation: DynamicQuestSubsystem
// Example: Wolf Problem Quest Generation
1. NPCEcosystemSubsystem detects Landowner.Happiness < 25
2. Cause analysis: Wolf attacks on livestock (tracked via WorldEcosystemSubsystem)
3. DynamicQuestSubsystem generates "Cull Quest"
- Title: "Wolf Troubles"
- Objective: Kill 5 wolves in Millhaven Forest
- Reward: 100 gold + 10 Millhaven reputation
- Failure condition: 7 days timeout
4. Quest becomes available from Landowner NPC
๐ฐ Economic Simulation
Implementation: EconomySubsystem | Status: 70% Complete
Supply & Demand Example
// Scenario: Player floods market with iron ore
Initial State:
- Iron Ore price: 5 gold/unit
- Millhaven supply: 50 units
- Demand: 10 units/day
Player Action: Sells 100 Iron Ore units
Economic Response:
- New supply: 150 units
- Price adjustment: -40% (now 3 gold/unit)
- Ripple effects:
* Iron Sword price: -15% (crafting cost reduced)
* Neighboring town Oakstead: Iron shortage detected
* Dynamic quest generated: "Iron Delivery to Oakstead"
* Trade route established: Millhaven โ Oakstead
๐ ๏ธ Development Setup & Build Instructions
Prerequisites
- Unreal Engine: 5.3+ (check
DarkAge.uprojectfor exact version) - Visual Studio: 2022 with C++ game development workload
- Git LFS: For large asset management
- Minimum RAM: 16GB (32GB recommended for full builds)
Quick Start
# 1. Clone repository with LFS
git clone --recursive [repository_url]
cd DarkAge
# 2. Generate project files
# Right-click DarkAge.uproject โ "Generate Visual Studio project files"
# 3. Build solution
# Open DarkAge.sln in Visual Studio
# Build โ Build Solution (Development Editor configuration)
# 4. Launch editor
# Double-click DarkAge.uproject
Key Development Maps
| Map | Purpose | Location |
|---|---|---|
| ThirdPersonMap | Main gameplay testing | Content/_DA/Maps/ThirdPersonMap.umap |
| TestLevel | System integration testing | Content/ThirdPerson/Lvl_ThirdPerson.umap |
Data Configuration
| System | Data Location | Format |
|---|---|---|
| Items | Content/_DA/Data/Items/ |
Data Tables |
| NPCs | Content/_DA/Data/NPCs/ |
Data Assets |
| Quests | Content/_DA/Data/Quests/ |
Data Assets |
| Recipes | Content/_DA/Data/Crafting/ |
Data Tables |
๐ง Development Principles & Best Practices
๐ฏ Core Design Philosophy
- Data-Driven First: Gameplay values belong in Data Tables, not C++ hardcoding
- Modular Architecture: Systems communicate via interfaces, avoid tight coupling
- Performance Critical: Profile regularly, especially
NPCEcosystemSubsystem - Emergent Design: Systems should interact to create unpredictable gameplay
๐ Code Standards
// Example: Proper subsystem interaction
void UAdvancedSurvivalSubsystem::UpdateCharacterSurvival(ACharacter* Character, float DeltaTime)
{
// โ
Good: Use interface for loose coupling
if (IStatlineInterface* StatlineInterface = Cast<IStatlineInterface>(Character))
{
StatlineInterface->ModifyHunger(-DeltaTime * HungerDepletionRate);
}
// โ Bad: Direct component access creates tight coupling
// UStatlineComponent* StatComp = Character->GetComponent<UStatlineComponent>();
}
๐ Performance Guidelines
- Tick Optimization: Use
SetTickInterval()for non-critical updates - Object Pooling: Reuse objects for frequently spawned items (projectiles, effects)
- LOD Systems: Implement distance-based detail reduction for NPCs
- Async Loading: Stream world content to maintain 60+ FPS
๐บ๏ธ Upcoming Milestones
๐ Version 0.35 (Current Sprint) – Core Systems Polish
Target: Q3 2025 | Progress: 80%
- ๐ Complete advanced disease interactions
- ๐ Finish NPC population dynamics
- ๐ Implement complex quest chains
- ๐ Performance optimization pass
๐ Version 0.4 – Environmental Systems
Target: Q4 2025 | Progress: 15%
- ๐ Seasonal survival effects
- ๐ Advanced weather impact on gameplay
- ๐ Climate-based NPC migration
- ๐ Environmental storytelling
๐ Version 0.5 – Social Complexity
Target: Q1 2025 | Progress: 5%
- ๐ Advanced NPC social interactions
- ๐ Relationship webs between NPCs
- ๐ Social event propagation
- ๐ Reputation consequence system
๐ Version 0.6 – Multiplayer Foundation
Target: Q2 2026 | Progress: 0%
- ๐ Persistent world server architecture
- ๐ Player-to-player interactions
- ๐ Shared economy simulation
- ๐ Emergent multiplayer storylines
๐ Performance Metrics & Targets
Current Benchmarks (Development Build)
| Metric | Current | Target | Status |
|---|---|---|---|
| Frame Rate | 45-60 FPS | 60+ FPS | ๐ Optimizing |
| Memory Usage | 8.2 GB | <6 GB | ๐ Optimizing |
| NPC Count | 150 active | 300+ active | ๐ Scaling |
| World Size | 4kmยฒ | 16kmยฒ | ๐ Planned |
| Load Times | 45 seconds | <30 seconds | ๐ Optimizing |
Critical Performance Areas
NPCEcosystemSubsystem: Primary bottleneck for large NPC populationsWorldEcosystemSubsystem: Environmental simulation overhead- UI Rendering: Complex HUD elements during gameplay
- Asset Streaming: Large world content loading
๐ฎ Ready to Dive Deeper?
๐ Start with the Game Design Document for complete gameplay mechanics
๐ง Review the Technical Design Document for architecture details
๐ Browse the API Documentation for implementation specifics
This README serves as your central hub – all systems, percentages, and links are kept current with active development.
by Raioix