Filed 2026-08-22 in
docs/research/comparative-systems/— external research (Gemini), not code-verified. Feeds the scenario-ladder / reactivity design work (seenotes/conversation context), not any accepted ADR. Treat specific numeric claims as reported by the source citations below, not as verified against Chronicle's own code or against the games themselves.
Architectural Lessons and Postmortems in Character-Driven Social Simulation: Design Guidelines for Emergent NPC Social Reactivity¶
Systemic social reactivity in games requires bridging the gap between low-level state mechanics—such as subjective beliefs, obligations, and local reputation—and high-level non-player character (NPC) agency. In complex simulation environments, character-driven systems must continuously evaluate social state to drive believable, autonomous NPC initiatives while maintaining engine performance and player legibility. Paradox Interactive’s Crusader Kings franchise (Crusader Kings II and Crusader Kings III) serves as the primary commercial benchmark for large-scale, character-first social simulations1.
This research report analyzes the design evolutions, failure modes, technical architectures, and academic frameworks surrounding Crusader Kings and its genre neighbors (King of Dragon Pass, Wildermyth, Total War, and Mount & Blade). The resulting synthesis provides a concrete design blueprint for constructing persistent, legible, and reactive NPC social systems.
1. Paradox Postmortems and Designer Commentary¶
1.1 The Transition from CK2 to CK3: Proof-of-Concept to Functional System¶
The structural transition from Crusader Kings II (CK2) to Crusader Kings III (CK3) reflected a fundamental shift in design philosophy regarding systemic complexity, player interaction, and social reactivity. Game Director Henrik Fåhraeus characterized CK2 as an organic proof-of-concept operating with an "indie" development mindset, where mechanics were iteratively added across eight years of post-launch expansions1. While CK2 successfully demonstrated that character-centric strategy games could generate compelling emergent narratives, its underlying architecture suffered from severe usability bottlenecks, opaque UI displays, and unconstrained feature bloat1.
Lead Designer Alexander Oltner noted that the primary objective when designing CK3 was removing interface and structural friction without reducing the underlying asymmetric depth of the social simulation1. Rather than stripping away mechanical complexity, CK3 reorganized how character state was evaluated and presented to the player1. The user interface was overhauled to expose the precise mathematical drivers of character behavior through nested tooltips and explicit status summaries, transforming character state from a hidden, black-box calculation into an accessible play space3.
1.2 Load-Bearing Innovations: Stress, Secrets, and Intentional Internal Conflict¶
The inclusion of the Stress system in CK3 addressed a fundamental design flaw present in CK2: the decoupling of character personality traits from optimal player decision-making4. In CK2, players could freely ignore their character’s explicit traits—such as executing captives or betraying long-standing allies as a Compassionate or Honest ruler—whenever meta-game strategy dictated5.
The CK3 Stress system converts personality traits into active mechanical constraints4. When an agent executes an action that directly contradicts their core personality, the system awards Stress points5. Accumulating Stress pushes characters across explicit thresholds (Levels 1 through 3), triggering Mental Breaks5. These breaks force immediate, out-of-control social behaviors—such as public insults, violent outbursts, or self-destructive coping mechanisms—that fundamentally disrupt the agent's long-term plans5. From a systems design perspective, Stress acts as an internal friction tax that disincentivizes pure meta-gaming and aligns player incentives with character roleplaying4.
Similarly, the transition from CK2's abstract "Plot Power" metric to CK3's "Secrets and Hooks" economy grounded intrigue in persistent, trackable social assets7. In CK2, recruiting conspirators required accumulating an arbitrary percentage score (e.g., reaching 100% Plot Power) by stacking small opinion modifiers8. CK3 replaces this abstraction with a two-tier social leverage system:
- Secrets: Discrete state flags generated by illicit character actions (e.g., murder, infidelity, embezzlement) that exist in an undiscovered or discovered state7.
- Hooks: Dynamic contractual leverage derived from discovering Secrets or granting favors, split into Weak Hooks (single-use or time-limited coercion) and Strong Hooks (permanent, reusable operational control)7.
Hooks serve as guaranteed dynamic overrides against standard AI refusal logic, creating an explicit leverage economy where social control is explicitly traded, spent, or neutralized7.
1.3 Fåhraeus’s Core Axioms of Emergent Narrative¶
In his foundational Game Developers Conference (GDC) presentations, Henrik Fåhraeus outlined the structural requirements necessary for a complex simulation to function as a narrative engine11. Fåhraeus posited that emergent stories do not originate purely from procedural engines; rather, they are constructed in the player's mind through human pattern recognition11. Players naturally impute intentionality, drama, and emotion to mathematically driven outcomes11. To reliably trigger this psychological threshold, Fåhraeus defined six essential systemic pillars11:
- Complex Agent Networks: A high volume of individual autonomous actors, each possessing distinct local goals, subjective relationship ratings, and bounded operational visibility11.
- Systemic Unpredictability and Chaos: Controlled stochastic elements (e.g., sudden illness, sudden death, battle outcomes) that continually disrupt static power balances and force adaptive behavior11.
- The Human Factor (Empathy Anchors): Relatable social motives—family ties, vengeance, jealousy, ambition—that allow human players to understand why an AI agent is acting, even when the outcome is harmful11.
- Seedlings of Pre-authored Narrative: Modular, hand-crafted event content designed to attach itself dynamically to state changes, providing artistic flavor and dramatic context to procedural occurrences11.
- Persistent Conflict Drivers: Inherent structural friction—such as scarce resources, overlapping territorial claims, or incompatible religious tenets—that guarantees constant interaction between agents11.
- Dubious Morality: Mechanics that explicitly reward self-serving, ethically compromised actions, forcing agents and players to make trade-offs between moral alignment and strategic survival11.
2. Known Failure Modes and Legibility Breakdown¶
2.1 The "Opinion-Modifier Soup" and Mathematical Opacity¶
A primary systemic failure mode identified in CK2 was the accumulation of uncapped, overlapping numerical modifiers, commonly referred to as "opinion-modifier soup"17. Over extended play sessions, individual character opinions became an unreadable amalgam of dozens of disparate transient and permanent modifiers (e.g., +5 Sent Gift, -10 Short Reign, -15 Desired Title, +20 Saved My Life, -50 Executed Kin)17.
This stacking model caused significant systemic degradation across three areas:
- Motivation Flattening: High-value, character-defining events (such as the execution of a child) could be mathematically neutralized by stacking trivial positive interactions (such as sending cash gifts or granting minor honorary titles)17.
- Loss of Narrative Identity: Characters lost distinct behavioral profiles. An agent did not act out of a specific, coherent grievance; they acted because an aggregated scalar floating-point value dipped below an arbitrary threshold17.
- Perpetual State Oscillation: Minor annual decay ticks caused character opinions to rapidly bounce back and forth across action triggers, leading to erratic, immersion-breaking behaviors (e.g., joining, leaving, and re-joining a rebellion faction month after month)19.
2.2 AI Legibility and Causality Failures¶
A central critique of complex social simulations involves the transparency of AI decision-making—specifically the "Why did my vassal revolt?" problem17. When an AI character initiates an aggressive social action (such as forming a rebellion faction, framing another character, or launching an assassination plot), players must be able to trace the causal chain back to clear, systemic antecedents17.
When causality is obscured, players experience systemic agency as arbitrary, scripted punishment17. In CK2, the evaluation logic governing faction membership was buried deep within complex nested utility scripts (ai_will_do calculations incorporating dozens of weighted triggers)18. Because the player was presented only with the binary outcome (the character joined the revolt) rather than the underlying chain of reasoning (e.g., low opinion + ambition trait + coerced via a strong hook by a rival ringleader), the simulation failed as a legible narrative engine7.
2.3 Unconstrained Plot Spam and Strategy Meta-Gaming¶
Early iterations of CK2 suffered from unconstrained plot formation, where nearly every courtier was perpetually involved in assassination schemes8. This occurred because the AI evaluated plot recruitment using raw probability checks without requiring explicit narrative friction, secret exposure risk, or meaningful mechanical costs6.
Furthermore, without mechanical boundaries enforcing character integrity, complex social sims default to strategic min-maxing5. In early iterations of CK2, players quickly realized that the most efficient play style involved ruthlessly purging hostile courtiers, fabricating claims constantly, and executing claimants without regard for character personality traits5. When the optimal strategy requires treating social actors as disposable numerical nodes, the systemic fiction collapses6. CK3 corrected this by tying every mechanical interaction directly to the character's internal trait parameters via the Stress engine, ensuring that optimal strategy varies dynamically based on who the character is4.
3. Event Engine Architecture and Storylet Engineering¶
3.1 Structural Evolution: Mean-Time-To-Happen (MTTH) vs. Event-Driven on_action Hooks¶
The underlying performance and execution architecture of Paradox engines evolved significantly to handle thousands of active social agents across long campaign runtimes15.
In early Paradox engines, social narrative events were evaluated using a polling model known as Mean-Time-To-Happen (MTTH)23. Under an MTTH system, the engine periodically checks the trigger conditions of every unexecuted event for every valid character scope at fixed temporal intervals (e.g., every 20 in-game days)23. If the triggers evaluate to true, the engine uses a base time probability modified by factor multipliers to determine whether the event fires on that tick23.
While MTTH allowed for organic, unpredictable event timing, its computational cost scaled quadratically (, where
is the number of active characters and
is the number of registered events)15. As character counts expanded into the tens of thousands, MTTH evaluation created severe CPU bottlenecks and thread contention15.
To resolve this, modern social simulation engines transitioned to an Event-Driven on_action Architecture23. Under this paradigm, events are completely passive until a state change explicitly calls a system hook24. When an event hook fires (e.g., on_character_death, on_secret_exposed, on_opinion_threshold_crossed), the engine evaluates only the small subset of events subscribed to that specific hook23. By shifting from continuous polling to localized, event-driven execution, engine processing overhead is drastically reduced, enabling real-time social evaluation across expansive character graphs23.
3.2 Storylet Taxonomy and Narrative Scaling Logic¶
To deliver narrative content that feels responsive rather than repetitive, modern narrative design relies on Storylet Architectures, pioneered by Emily Short and integrated into modern strategy and social RPG frameworks20. A storylet is an atomic, self-contained narrative unit consisting of three core components20:
- Preconditions: World state, agent personality, and social link requirements that must be satisfied for the content to enter the selection candidate pool20.
- Payload: The text, choices, barks, or dynamic interactions presented to the player or AI agents20.
- Postconditions: State mutations, opinion shifts, stress updates, or new secret flag generations applied upon resolution20.
To prevent repetitive content loops when scaling content, storylet engines utilize structural rotation algorithms20:
- Task vs. Vignette Differentiation: Distinguishing between repeatable, systemic routine actions (Tasks) and unique, high-impact dynamic narrative moments (Vignettes)29.
- A/B Bucket Rotation: Categorizing storylets into distinct thematic buckets and enforcing alternating selection constraints to guarantee that consecutive events pull from varied emotional and operational contexts20.
- Exclusion & Cool-down Filters: Imposing post-resolution execution locks on specific storylet IDs to ensure identical events do not re-fire within a designated timeframe or character generational cycle18.
4. Comparative Analysis of Social Simulation Neighbors¶
To fully contextualize character-driven agency, it is necessary to examine how other landmark social strategy and narrative titles structure social state, trigger NPC initiatives, maintain legibility, and manage scaling failures.
| Game System | Social State Model | Action Trigger Architecture | Readability/Legibility Mechanism | Primary Failure Vector |
|---|---|---|---|---|
| Crusader Kings III | Multi-layered scalar values, explicit Secret flags, Weak/Strong Hooks7. | Hybrid on_action hooks, personality Stress limits, scheme progress phases5. | Nestable tooltips, explicit causality summaries, itemized hook logs3. | Systemic modifier bloat, mid-game snowballing, late-game performance loss15. |
| King of Dragon Pass | Clan-level metrics, subjective ancestral favor, personality trait vectors20. | Annual phase triggers, event pool probability, high-impact storylets20. | Explicit advisor consultations, diegetic cultural feedback20. | High obscurity, opaque choice consequences, punishing random wipes20. |
| Wildermyth | Character-pair bindings, dynamic hook traits, transformative state tags20. | Legacy history triggers, target context matching, vignette storylets20. | Visual comic panel interface, explicit relationship status, choice previews20. | Personality degradation, repetitive narrative beats across campaigns20. |
| Total War Series | Scalar Loyalty values, satisfaction pools, trait-based adjustments30. | Hard threshold triggers, high-probability revolts, civil war triggers30. | Color-coded threat meters, itemized modifier lists, trend indicators30. | Binary operational switches, arbitrary civil wars, shallow roleplaying depth30. |
| Mount & Blade II | Single scalar Relationship float, faction influence pools, honor traits. | High-level AI decision tree, deterministic war choices, defection triggers. | Raw relationship float displays, basic log messages, minimal narrative feedback. | Total lack of narrative depth, incoherent motives, machine-like AI decisions. |
4.1 Detailed Synthesis of Genre Neighbors¶
King of Dragon Pass¶
King of Dragon Pass grounds social reactivity in collective clan ethos and ancestral traditions20. Rather than managing individual interpersonal state between hundreds of court nodes, the game tracks subjective clan metrics and advisor team traits20. Action execution relies on storylet selections presented during seasonal phases20. Legibility is maintained strictly diegetically through an explicit Ring of Advisors, who analyze pending events and offer contextual predictions based on cultural lore20. The primary trade-off is opacity; choice consequences are often deeply obscure, leading to trial-and-error play patterns20.
Wildermyth¶
Wildermyth transforms character relationships into procedural comic narratives20. Social state is tracked via explicit character-pair bindings (e.g., Rivals, Lovers, Friends) modified by emergent physical transformation tags (e.g., mummified, fire-infused)20. Its trigger engine utilizes dynamic contextual casting, searching the active party for characters whose underlying history, traits, and relationship levels match the exact preconditions of a storylet payload20. Legibility is exceptionally high because the visual comic panel interface explicitly surfaces character motivations during narrative beats20. However, its scope is constrained to small tactical bands, making it difficult to scale to massive social networks20.
Total War Series¶
The Total War franchise handles character reactivity primarily through scalar loyalty and satisfaction meters30. When character satisfaction falls below critical red-line thresholds, the character triggers deterministic defection or civil war30. Legibility is straightforward—the game presents clean, color-coded threat meters detailing direct inputs30. However, the system suffers from binary operational switches. Characters feel less like living social actors and more like ticking mechanical time-bombs that require periodic point investments to disarm30.
Mount & Blade II: Bannerlord¶
Mount & Blade II tracks single-scalar relationship numbers between the player and noble lords, supplemented by broad personality alignment traits (e.g., Honorable, Cruel). AI actions—such as defecting to another kingdom or supporting political decrees—are computed deterministically by weighing military power ratios and financial holdings. Because social state is extremely shallow, characters lack distinct narrative agency, operating as military asset managers rather than reactive social agents.
5. Academic Frameworks and Emergent Storytelling Theory¶
Academic analyses of social simulation design—notably papers by Emily Short, Max Kreminski, and proceedings from DiGRA and GDC—identify specific structural mechanisms that are load-bearing for player immersion and perceived agent reality2.
5.1 Sculptural Fiction vs. Generative Social Simulation¶
Emily Short categorizes interactive narrative frameworks into two dominant paradigms: Sculptural Fiction and Simulated Narrative31.
- Sculptural Fiction: The system begins with a massive "deck" of pre-authored narrative nodes (storylets)26. As player and NPC actions mutate state, the engine "carves away" invalid storylets, leaving only valid narrative paths31. This approach maintains high authorial quality and dramatic prose integrity while responding dynamically to state shifts20.
- Generative Social Simulation: The system continuously computes agent interactions directly from raw mathematical equations (e.g., utility functions, personality trait vectors, spatial proximities)11. While this generates high systemic emergence, it frequently struggles with prose generation, dramatic pacing, and narrative legibility6.
The consensus in modern narrative systems engineering favors a hybrid approach: utilizing continuous state simulation to track background social relationships (beliefs, grudges, obligations), and surfacing these states through a sculptural storylet engine when key thresholds are crossed20.
5.2 Emergence Detection and Pattern Recognition¶
Academic literature emphasizes that the human brain operates as an active pattern-recognition device, naturally seeking causal relationships between sequential events14. Fåhraeus highlighted that emergent storytelling works because players connect disparate algorithmic occurrences into a coherent dramatic arc11.
For example, if an NPC vassal's child dies of illness (random chance), and that same vassal subsequently joins a treasonous faction against the player (state-driven choice), the player infers a tragic, character-driven story: The grief-stricken parent blames the sovereign for their loss and seeks vengeance12. To leverage this psychological phenomenon effectively, the social simulation engine must ensure appropriate persistence11. Events must leave persistent social records (memories, grudges, hooks) that future AI decision passes can read7. Without persistent state flags linking past occurrences to present actions, the illusion of intentional narrative collapses into perceived randomness11.
6. Strategic Design Framework for NPC Social Reactivity¶
Synthesizing the postmortems, failure modes, engine architectures, and academic research yields a definitive blueprint for building a persistent, reactive NPC social engine.
6.1 What to Copy¶
Building an effective social reactivity system requires implementing concrete mechanics that turn abstract relationships into trackable assets7. First, replace unconstrained opinion scores with explicit leverage assets, specifically Secrets and Hooks7. Secrets should exist as discrete state flags attached to illicit character actions, while Hooks serve as spendable social currency that can override an NPC's standard refusal logic during requests or conspiracies7.
Second, incorporate an internal friction engine analogous to CK3's Stress system4. NPCs and players must incur a mechanical penalty when taking actions that violate their established personality traits or subjective belief provenance5. When Stress passes defined thresholds, it should force immediate, reactive behavioral shifts or mental break choices, ensuring characters cannot act as purely rational meta-gamers4.
Third, construct the execution backbone around an event-driven on_action architecture rather than continuous polling23. Systemic checks should execute strictly when state shifts occur—such as a belief mutating, a grudge forming, or an obligation expiring23. Finally, prioritize total causality legibility by surfacing nested tooltips or narrative log entries that explicitly break down why an NPC initiated an action, citing their specific traits, grudges, and coercive hooks3.
6.2 What to Adapt¶
Rather than adopting raw scalar opinion values (-100 to +100) that easily devolve into opinion-modifier soup, adapt relationship values into categorized stance vectors (e.g., Loyal, Transactional, Resentful, Hostile) paired with discrete memory flags9. Stance vectors provide clear operational boundaries for AI decision-making, while memory flags preserve the precise narrative origin of the relationship9.
Additionally, adapt Emily Short's sculptural storylet architecture for handling NPC dialogues, schedule modifications, and autonomous social actions20. Use sculptural precondition filtering to evaluate available narrative beats against the local observer's belief state20. To prevent data bloat over long play sessions, adapt event logs into a memory summarization pipeline9. Periodically condense detailed historical interactions into high-level, persistent memory tokens (e.g., consolidating multiple minor disputes into a single permanent Tavern Feud token) to maintain processing efficiency9.
6.3 What to Avoid¶
Engine developers must strictly avoid continuous Mean-Time-To-Happen (MTTH) polling loops that re-evaluate all social triggers across all world characters on regular time ticks23. This pattern introduces severe CPU bottlenecks as the active character count grows15.
Furthermore, avoid uncommunicated threshold switches where NPCs instantly transition from passive allies to aggressive enemies without prior warning barks, visible status changes, or accessible legibility traces17. Sudden action execution without visible antecedents destroys the player's perception of agent rationality17. Lastly, avoid relying on unconstrained probability rolls for high-impact social actions like assassinations or framed crimes8. Unweighted probabilistic execution leads to chaotic plot spam that degrades systemic believability6.
6.4 Open Questions Unsolved by Crusader Kings¶
Despite extensive commercial and academic iteration, several core challenges in character-driven social simulation remain unresolved:
- The
Social Graph Scaling Bottleneck: In a densely populated world, tracking subjective bi-directional beliefs, mutated rumors, and local reputations between every active character pair causes the social graph to scale quadratically (
)15. Existing games bypass this bottleneck by aggressively pruning off-screen actors or limiting deep simulation to primary characters, but maintaining persistent, multi-tiered social coherence across large active populations remains an open engineering hurdle15.
- Generational and Identity Continuity: While grand strategy titles handle title inheritance mechanics cleanly, transferring nuanced social state—such as long-term family grudges, localized reputation, and unfulfilled obligations—to successor NPCs frequently fails2. Dynamic characters often fail to internalize the complex historical context of their predecessors, resulting in abrupt, immersion-breaking state resets upon an NPC's death2.
- Balancing Player Agency Against Hyper-Reactive NPC Cascades: As NPC social networks become more autonomous and hyper-reactive, agent-initiated actions can rapidly spiral out of control5. A single state mutation can trigger a cascading chain reaction of blackmail, revolts, and retaliatory violence that completely overwhelms the player5. Establishing a systemic dampening mechanism that preserves meaningful NPC agency without frustrating the player's capacity for strategic planning remains one of the most delicate balancing acts in narrative systems design6.
Works cited¶
- Crusader Kings 3 Director shares vision of game depth in new dev diary | Shacknews, https://www.shacknews.com/article/114966/crusader-kings-3-director-shares-vision-of-game-depth-in-new-dev-diary
- Gods, Kings, and Historians: History and the Dual Diegesis of Crusader Kings in the Assemblage of Play - DiGRA Digital Library, https://dl.digra.org/index.php/dl/article/download/2244/2241/2259
- Crusader Kings III Preview - a characterful heir to a grand strategy dynasty - TheSixthAxis, https://www.thesixthaxis.com/2019/10/23/crusader-kings-iii-preview-lifestyle-dynasty-religion-accessibility-knights-horse-pope/
- CK3 - Game Vision Statement by Henrik Fåhraeus : r/CrusaderKings - Reddit, https://www.reddit.com/r/CrusaderKings/comments/dk1civ/ck3_game_vision_statement_by_henrik_f%C3%A5hraeus/
- Dev Diary #31 - Stress : r/CrusaderKings - Reddit, https://www.reddit.com/r/CrusaderKings/comments/ha32zg/dev_diary_31_stress/
- How does CK3 fair against CK2 in its current state? : r/CrusaderKings - Reddit, https://www.reddit.com/r/CrusaderKings/comments/1q1ec0u/how_does_ck3_fair_against_ck2_in_its_current_state/
- Crusader Kings 3 Dev Diary Overview | PDF | Dynasty - Scribd, https://www.scribd.com/document/500476375/Ck3-First-Version-FINAL-1
- CK3 Dev Diary #5 - Schemes, Secrets, and Hooks : r/paradoxplaza - Reddit, https://www.reddit.com/r/paradoxplaza/comments/e1y9tk/ck3_dev_diary_5_schemes_secrets_and_hooks/
- Developer diaries - Crusader Kings II Wiki, https://ck2.paradoxwikis.com/Developer_diaries
- Does anyone else miss this specific rule from CK2 in CK3? : r/CrusaderKings - Reddit, https://www.reddit.com/r/CrusaderKings/comments/1esxaoz/does_anyone_else_miss_this_specific_rule_from_ck2/
- How complex AI can promote Emergent Narrative - Joe Duffy | Virtual Reality Developer, https://www.joeduffy.games/how-complex-ai-can-promote-emergent-narrative
- Emergent Stories in Crusader Kings II - GDC Vault, https://media.gdcvault.com/gdceurope2014/Presentations/829037_Henrik_Fahraeus.pdf
- Video: Designing Crusader Kings II to generate strange, emergent stories - Game Developer, https://www.gamedeveloper.com/design/video-designing-i-crusader-kings-ii-i-to-generate-strange-emergent-stories
- The fascinating story AI behind Crusader Kings 2's dark chain of events - Kill Screen, https://www.killscreen.com/fascinating-story-ai-behind-crusader-kings-2s-dark-chain-events/
- The game feels rather empty after you form an Empire. :: Crusader Kings III Algemene discussies - Steam Community, https://steamcommunity.com/app/1158310/discussions/0/5383446733851827321/?l=dutch\&ctp=2
- https://store.steampowered.com/news/posts/?feed=steam_community_announcements\&appids=1158310\&enddate=1651581323
- UC Santa Cruz - eScholarship, https://escholarship.org/content/qt4mr6c29j/qt4mr6c29j.pdf
- Patch 1.9.1 "Husky" Update Summary | PDF | Spanish Civil War - Scribd, https://www.scribd.com/document/501465099/changelog
- https://store.steampowered.com/news/posts/?feed=steam_community_announcements\&appids=1158310\&enddate=1649162354
- Notes from the Boundaries of Interactive Storytelling - Polaris Game Design Retreat, https://polarisgamedesign.com/2024/notes-from-the-boundaries-of-interactive-storytelling/
- Patch 1.9.X - Hearts of Iron 4 Wiki, https://hoi4.paradoxwikis.com/Patch_1.9.X
- Is there winning or a victory condition in Crusader Kings 3? How do games end? - Reddit, https://www.reddit.com/r/CrusaderKings/comments/ik69zc/is_there_winning_or_a_victory_condition_in/
- Event modding - Hearts of Iron 4 Wiki, https://hoi4.paradoxwikis.com/Event_modding
- Editing Event modding - Europa Universalis 4 Wiki, https://eu4.paradoxwikis.com/index.php?title=Event_modding\&veaction=edit\&mobileaction=toggle_view_desktop
- Event modding - Crusader Kings II Wiki, https://ck2.paradoxwikis.com/Event_modding
- ShiJbey/Anansi: Create simulation-driven visual novels in Unity. - GitHub, https://github.com/ShiJbey/Anansi
- Narrative and Interactivity (Chapter 10) - The Cambridge Companion to Literature in a Digital Age, https://www.cambridge.org/core/books/cambridge-companion-to-literature-in-a-digital-age/narrative-and-interactivity/884621725F764FA533B03A70FFECCE58
- Project Horseshoe 2019 report section 4, https://www.projecthorseshoe.com/reports/featured/ph19r4.htm
- GOLMAC plays Emily Short's Bee (podcast episode up) - IF Reviews and Essays, https://intfiction.org/t/golmac-plays-emily-shorts-bee-podcast-episode-up/75224
- HISTORY GAMES - ftp.centralsteubenchamber.com, https://ftp.centralsteubenchamber.com/overview/5DSvTD/IPrU1E/HistoryGames.pdf
- Changeful Tales: Design-Driven Approaches Toward More Expressive Storygames, https://search.proquest.com/openview/f70947154e9dd8ecd8c6341a378c7e83/1?pq-origsite=gscholar\&cbl=18750
- Crusader Kings III - Steam Community, https://steamcommunity.com/app/1158310/announcements/