Ritual Static
Roles and Responsibilities:
Solo-developed and released a well-received indie horror game.
Designed and scripted over 30 unique environmental interactions affecting animations, dialogue, and level progression.
Used C# to create custom inspector tools for prototyping and refining quests and narrative sequences in the Unity engine.
Wrote and directed an original horror strory through dialogue, environmental design, and unconventional narrative devices including full motion video.
Design and iterated on complex looping levels using Unity’s probuilder toolkit and a rigorous playtest methodology.
Game Overview:
Inspired by House of Leaves and my own personal nightmares, Ritual Static is a surreal first-person photography horror game following a young man in his childhood home the day before a big move. The game’s razor pitch can be read below:
Use a digital camera to explore an ever-changing haunted house. Take pictures during the dreaming day and waking night. Surf the television, sink into static, and rot in the dark.
I developed Ritual Static in the Unity engine as a side project over the course of about 14 months, personally handling each aspect of the creative process including design, programming, audio, and art. As a fan of horror games, I felt that the genre was still in its infancy with difficult problems that haven’t been solved, like how to maintain tense pacing while allowing players the agency to explore non-linear envrionments. I wanted to challenge myself to solve these problems by creating a horror walking simulator without failure states, skill barriers, or complex mechanics that maintained an engaging sense of defamiliarity and unease throughout.
Bascially, how can you make walking down a hallway scary on its own, with no monster or challenge in sight?
One key challenge with quests was maintaining player engagement without the use of traditional challenges - without enemies, combat sequences, or puzzles, how does a space remain interesting to the player? My answer was threefold:
Use creative scene composition, looping level design, and strange dialogue interactions to contextualize simple mechanics.
Dynamically alter level geometry when the player isn’t looking to create a defamilizaring, dreamlike atmosphere.
Utilize novel interactive sequences that break away from standard patterns of play to frighten players and keep them on their toes.
The below clips display a unique interaction segment that occurs during a quest, in both its prototype and final forms.
Level Design and Swapping Mechanics:
As mentioned above, I wanted each level to feel defamiliarizing and untrustworthy. I accomplished this through the creation of a level-swapping system, where the game environment will quietly shift and assume new layouts when the player’s back is turned. This system functions through invisible trigger objects placed around the level that can enable or disable game objects when the player’s camera is turned the other direction, calculated using a dot product. This effect starts subtle in the first few levels before becoming increasingly obvious and aggressive as the game appraoches its climax.
The below clips show an early test of this system, where the house basement only appears after walking to the porch, as well as a later example where the kitchen dissolves into a series of endless hallways. The final clip displays the fake kitchen transition in the Unity editor.
Photography System:
All of the code for the game was written by myself in C#, including the photography system. Taking snapshots of objects and entities in the environment is the primary way players interact with the game, so I created an open-ended system that allowed me to slot any “response” to an object’s “stimuli” when their picture is taken. Additionally, when a picture is taken, the player’s current camera viewport is converted to a render texture and then stored within the game, allowing them to look back on their previous snapshots.
Below is a snippet of the code that renders photo textures and a clip that displays the environment dissolving after taking a picture.
Art Design:
3D game art is not my specialized craft, but Ritual Static gave me a chance to practice modeling, texturing, and rigging/animation skills in a low-pressure environment. All 3D models, save a few common props like chairs and tables, were modeled by myself in Blender and textured in Photoshop before being exported to Unity.
This project was a great lesson that designers do have the tools for creating visually inventive games if they are willing to get creative. Instead of drawing a complex ghost sprite, I took a photo of my own face and edited it to look like a scary corpse; Instead of creating elaborate skyboxes, I recorded footage of the sky at sunset and transformed it into a cubemap.
Wrapping Up:
This was my first attempt crafting a pure horror experience, and I learned some seriously critical tips related to content pacing, narrative design, and the development of interesting interactive experiences without relying on traditional mechanics.
I would like to note that although Ritual Static was largely solo developed, no game is truly made alone, and this project would never have gotten across the finish line without the help of many people. From my peers in the master’s program who provided countless playtesting sessions and words of design advice, to the kindhearted individuals who answer programming forum questions and upload creative-commons sound effects and textures to online libraries, I am immensely grateful for all the assistance I received to make my nightmare a playable realilty.
As I am wrapping up, I would like to highlight a few of my favorite Steam reviews for the game and thank the horror gaming community for taking a liking to this experience (profiles blurred for anonymity).
Platform:PC
Engine: Unity
Production Time: 14 months
Size of Team: Solo
Roles: Technical/Narrative Designer, Engineer
Link To Playable Game: Ritual Static on Steam
Achievements: 100% Positive Steam reviews, over 500k views on Youtube, over 500 copies sold ( ~2k net revenue)
Interactable System:
Ritual Static is a large game, and early in the development process I realized the neccessity for design tools that would allow me to quickly create environmental and narrative interactions without having to write pages of bespoke code. Knowing that I would want to test different types of quests and narrative sequences, I used my C# scripting skills to create a tool in the Unity engine that allowed me to quicky prototype NPC interactions while easily slotting in animation, dialogue, and sound events using a visual interface.
The below video displays this system in action, as I add a text interaction to a rocking chair object in just a few moments, with a snippet of the Interactable code beneath.
Quest Design:
The Interactable system was invaluable for designing quests, as I had several replayable game areas that needed to be filled with engaging content. These quests had two primary goals: push players to fully explore each area and maintain a dynamic sense of tension. After brainstorming a list of appropriate quests for each area, I began testing each in-engine with placeholder assets like handdrawn sprites or creative-commons sound effects.
My design workflow was inspired by the Pawel Sasko’s 2017 GDC talk about creating quests for The Witcher 3: Wild Hunt, with each quest being mapped to a pacing graph to track tension and level flow. The below image displays a pacing graph I used for a quest during the game’s first night section. Each sequence is tacked on a colored sticky note to display its relative tension/excitement, with dark green being the least tense and pink being the most tense.
Many cutscenes in Ritual Static began with 3D scenes that were photographed, edited, and animated to produce a scratchy, jumpy feel. To accomplish this, I created a unique level in the game specifically for the creation of these scenes, featuring an invisible hud and disabled collision in order to better facilitate the taking of dynamic photos. Each frame is edited in Photoshop before being stiched back together and animated as a UI raw image sequence inside Unity. These sequences can then be called by an animator object that fades in and out as neccessary.
Narrative Design:
Ritual Static was a great chance for me to practice multimedia storytelling as I sought to convey an emotional horror narrative through dialogue, level design, and more experimental methods like full motion video and fixed-camera dream sequences. I tried to keep written dialogue focused and minimal, intended more to supplement the game’s visual and systemic storytelling rather than overthrow it.
The below clips display a few of these experimental storytelling methods, including a choose-your-own adventure game to contextualize the story’s opening and a fake home movie recorded on a CRT television.