HPL: Nyarlathotep Rising
Built a visual narrative editor and runtime system that let writers create complex branching Lovecraftian storylines. Worked across the entire game—tools, UI, save systems, and more.
The Game
HPL: Nyarlathotep Rising is a narrative adventure set in the Lovecraft universe—think “The Life and Suffering of Sir Brante” but with cosmic horror. Players make choices across multiple protagonists, with consequences that ripple through branching storylines.
A game like this lives or dies by its tooling. Writers need to craft complex narrative structures without waiting for programmers to implement every branch.
My Role
As Tools & Systems Programmer on a small team (3 programmers, 1 artist, 1 writer), I worked across the entire game. My primary focus was the narrative tooling, but I contributed to nearly every system.
What I Built
Visual Narrative Editor
The core authoring tool that let writers work independently:
- Node-based editor for building branching dialogues visually
- Condition system using simple expressions (no code required)
- Preview mode for testing flows without launching the game
- Variable tracking for sanity, relationships, inventory, and story flags
Writers could create and iterate on narrative content without programmer intervention.
Runtime System
The editor was only half the problem. I also built the runtime that:
- Reads the editor’s output and executes narrative logic
- Manages game state across multiple protagonists
- Handles the flow between story segments, choices, and consequences
Save & Load
Narrative games need robust save systems—players expect to pick up exactly where they left off:
- Full state serialization across all story variables
- Multiple save slots with proper data isolation
- Reliable loading that restores the exact game state
Everything Else
Small team, broad responsibilities:
- Frontend UI implementation
- Particle effects and visual polish
- Audio integration
- General gameplay systems
The Challenge
The hardest part wasn’t any single system—it was coordination. Multiple remote teams, each with their own pace and priorities. Changing requirements. Miscommunication across time zones.
The game shipped. The tools worked. Writers created the content they envisioned.
What I Learned
Building tools for non-programmers is its own skill. The reward isn’t just seeing your code work—it’s watching someone else’s workflow speed up because of something you built. Like sharing a bit of your knowledge as a programmer, every day.