Schism

Role: Narrative Designer | Tools: Unreal Engine 5, Articy Draft (flow, variables, conditions, export to engine)

Team: Indie Development • Project: Visual Novel / Espionage Puzzle Game

Schism dialogue system showing character conversation
Dialogue system featuring branching conversations with faction leaders and intelligence operatives.
Report Writing System

I designed the core gameplay loop where players collect insights from dialogue, puzzles, and documents, then write reports to both factions. Reports influence Faction Affinity values and determine story outcomes.

Faction Systems

I implemented Faction Affinity tracking, Friendship Values for key characters, and a Lie Tracker system where factions catch lies immediately, requiring players to provide excuses or face affinity penalties.

Insight Collection

I designed interactive objects like the Weavewaver device and intelligence items that players investigate to gather insights, which are then selected and included in reports to influence faction relationships.

Overview

Schism is an interactive fiction game where players control Doliturne, a double agent between the Church of Thousand Eyes and the Order of Antlers. I designed and implemented the report writing system, faction tracking, and dialogue in Articy Draft (using flow fragments, global variables, and pin conditions), then exported to Unreal. Players investigate objects, solve puzzles, and gather insights to write reports that change faction standing and story outcomes.

Project Context

Players play as Doliturne, heir to the Church of Thousand Eyes who becomes a double agent for the Order of Antlers. Core loop: investigate objects and dialogue to collect insights, then write reports to both factions. Reports update Faction Affinity (tracked in Articy), which drives story progression and ending variations.

My Responsibilities

  • Designed the report writing system: players choose which collected insights to include in reports to each faction; reports update Faction Affinity via Articy instruction nodes.
  • Built Faction Affinity, Friendship Values (Calinsis, Milvitatum), and Lie Tracker as global variables in Articy; dialogue fragments use input-pin conditions so lines only show when variables meet thresholds.
  • Created branching dialogue in Articy (dialogue fragments, hubs, jumps) with Significant, Major, and Minor decisions. Conditions check affinity, friendship, and quest state so the right options appear.
  • Designed interactive objects like the Weavewaver device where players solve frequency-dial puzzles to collect insights for reports.
  • Wrote codex entries and character biographies that unlock from discoveries, giving both worldbuilding and intel players can use in reports.
Schism dialogue system showing character conversation
Branching dialogue with conditions on Faction Affinity and Friendship Values. Lines and options appear only when the player's standing allows them.
Schism codex entry showing character biography and information
Codex entries and biographies unlock as players discover information. Both lore and intel can be used in reports.
Schism Weavewaver device interaction showing frequency dials and encryption
Weavewaver device: players solve frequency-dial puzzles to decode messages and collect insights that feed into reports and unlock new dialogue.
Schism report system showing faction intelligence and actionable information
Report system: gathered intel becomes reports to each faction; what players include or omit drives Affinity, unlocks dialogue, and branches the story.

Schism with Articy

Schism's narrative systems live in Articy Draft. I used global variables for Faction Affinity, Friendship Values, and the Lie Tracker; dialogue fragments with input-pin conditions (articy:expresso) to gate which lines appear based on those variables; and output-pin instructions to update variables when players choose report options or dialogue branches. The flow structure (dialogue containers, hubs, and jumps) drives the branching conversations, while condition nodes handle if/else logic (e.g., "show this line only if Church affinity > 50").

Articy Draft flow view: Schism dialogue structure with dialogue fragments, hubs, and pin conditions
Flow structure for Schism dialogue. Dialogue fragments and hubs with input-pin conditions check Faction Affinity and Friendship Values. Only lines that pass the condition are shown. Jumps connect branches and keep the flow navigable.
Articy Draft variables and instructions for Schism report and faction tracking
Variables and instructions. Global variables track Faction Affinity, Friendship Values, and Lie Tracker state. Output-pin instructions update these when players submit reports or make key dialogue choices, so the next conversation reflects what they said.

Report Writing System

In Articy, the report loop works like this: players gather insights from dialogue and objects, then choose which to include in reports. Each report submission triggers instruction nodes that modify the appropriate Faction Affinity variables. The system records which insights have been collected and which were sent, so I can gate later dialogue ("you haven't learned this yet") or flag lies when a faction checks a report against what the player actually discovered.

Faction Tracking

I set up global variable sets in Articy for Church affinity, Order affinity, Calinsis friendship, Milvitatum friendship, and the Lie Tracker. Dialogue fragments use conditions on their input pins to check these values before a line can play. For example, a line only appears if Church Affinity is above a threshold, or if the player has learned a specific insight. When factions catch a lie, the Lie Tracker updates and affinity drops; instruction nodes at the relevant output pins handle the math.

Dialogue & Decision Types

I structured decisions into three tiers: Significant (e.g., telling Milvitatum about Calinsis to prevent death), Major (unlock or lock intelligence), and Minor (small variable tweaks). Each tier maps to different instruction logic in Articy. Significant decisions update multiple variables and can jump to different flow branches; minor ones might only tweak a flavor flag. Conditions on input pins ensure the right options appear based on current affinity, friendship, and quest state.

Insight Collection & Interactive Objects

The Weavewaver device lets players solve frequency-dial puzzles to decode messages and collect insights. Documents, letters, and other intel objects also yield insights. I structured the payoff so most rewards are immediate (insights for reports), some are delayed (context that pays off later), and a few stay open-ended. When players gain an insight, Articy variables mark it as collected so report and dialogue conditions can reference it.

What I Learned

Articy gave me a solid workflow for turning narrative into gameplay. Using global variables, pin conditions, and instructions, I could design in Articy and have the logic export cleanly to Unreal, so there's no need to hardcode branching in-engine. The biggest takeaway: structure your variables first, then build dialogue around conditions that read them. When a recruiter asks "do you know Articy?", I can point to Schism and walk through the flow, the variable sets, and how report submissions drive the branches.