GLADEL'S STUFF
  • Home
    • Sorelle
    • BLEED RUNNER
    • Tear the Planks Down
  • About
  • Resume
  • Publications
  • Bonus...
    • Artwork >
      • Illustrations & Renders
      • Sketches & Lines
      • Comics
      • Pixels & Mouse
      • Collabs
    • Writing
    • 2021 - 2024 Legacy Projects
    • 2017 - 2019 Legacy Projects

Permafrost

How do you adapt an introspective story entirely without dialogue and in a short playtime?

Play here (Roblox)
Featured in
​Palaver Arts Magazine - Spring 2023 - Issue 13
Permafrost is a 3D "short story" game and soft adaptation of the Cain and Abel story and Frostbite, a psychological novel I've been writing intermittently. The game was created as a CTIN 290 ("Digital Media Workshop") Final Project at the University of Southern California.
Visions of his close friend, Angelo, dead, and the rest of his hometown destroyed haunt Milan in his new life. In the bar stationed east of Eden, where the survivors retreated, curious adventurers nag Milan into telling them stories. He decides to tell those of his childhood, trying to fight off the envy he felt so long ago.

Content Warnings: Blood, death, violence, jumpscares.
Full Playthrough Video (~12 minutes)

Overview


Timeline
June 2022 - May 2022
1 month
Role
Solo Developer
Tools
Roblox Studio
​On-paper storyboarding
Contributors
Gage Tilly (Composer)
​
Jesse Vigil (Supervising Professor)
Full Credits
Shared Core Assets: Chirin_Chironup (Ryan V)

Music: Gage Tilly
Songs (in order): Yeah (Reprise), Run, In Your Walls, Gud Ton

Sound Effects: Roblox-provided sound library

Playtesting: NepNepian, Sbubbyx, Gage Tilly, Ryan V

Free Model Asset Credits: CloneTrooper1019, liv_maddiebff1, SirDouglasTheScholar, korab6, writejsk, Traxley, EndorsedModel, Soccerpauli, dominostabz, VictorianGnome, Crykee, Quenty, Starbucks75, Trueese, DarkStalkerX0, charliepawlak302, Curtis452, huntoire, quangminhball2, Blazzerindustries, SetDefaultt, PinkPetulia, LucaXtagVtag, A1_pha, angeloantonio, GoogsterMC, JellyWelly666, eekScoob, CorruptBIOS, sleepysam, Frezener, XxCookieFlxlfxX

Clothing Credits: аномалия (Anomaly)

Picture

My Contributions

​Design
  • First Person Level Design: Level designed and storyboarded key environment details for 11 special sequences and levels to express a story in a first-person perspective entirely without dialogue using cinematic techniques (mise-en-scene, frame composition, dynamic color grading, jump-cuts, etc.)
  • Game Mechanics Design: Designed and engineered 15 systems (NPC speech, collectible and destructible objects, etc.) to encourage player divergence and intrinsic motivation within linear sequences
  • Technical Design Tools Engineering: Engineered responsive AI NPCs, randomized characters (24,360 possible combinations) unique to each playthrough, and trigger boxes for ambient changes, environment changes, UI cues, and audio cues to speed up the level design and set dressing process by 75%

Using Cinematic Techniques in Level Design

A breakdown of how I incorporated cinematic techniques for an interactive experience adaptation.

Exposition - Iterating on the Introduction

Telling a story without dialogue requires strong buildup of the setting from the very start. In an adaptation, the differences in medium require differences in content. Because of this, the game's introduction went through some iterations.

Planning
The beginning of the Cain and Abel story establishes that both brothers are hard workers. Chapter 1 of Frostbite establishes that Milan used to be a warrior who's fond of the riverbed. Frostbite also begins with a distinctly red, apocalyptic scene of a massacre in medias res.

Additionally, as a solo-developer, I did not have the time and scope to include a full dialogue system and write dialogue scripts. I thus made it a rule to not use any dialogue whatsoever. The challenge was to somehow incorporate all of these elements into the introduction using exclusively visuals, sound, and interactivity.

Method 1: Abrupt Introduction In Medias Res
Picture
My first method was to onboard the player in medias res: directly in the aftermath of the massacre, a dangerous situation directly based off Chapter 1 of ​Frostbite.

​With broken signposts and fresh corpses, it's clear that something has gone wrong and that Milan is experiencing a horrific moment.
However, this was not enough to establish Milan as a character. The main characteristic we can get out of Milan at this stage is that he has the same uniform as most of the corpses, but it's an extremely subtle and missable detail. Because the player's connection to Milan was not fully synergized, the attempt to express Milan's trauma in the intro fails.

Method 2: Starting from (Uneasy) Safety
Picture
To establish synergy between the player and Milan, I added onto the intro with a slower and safer build-up. Since the game has no dialogue, I needed to rely on the setting to characterize Milan.

​I aimed to present Milan as a hard, lonely worker who is usually away from people. I did this through mise-en-scene: building his workspace based on his personality, thus resulting in a quiet and remote fishing spot in front of a riverbank and waterfall.
The game begins with Milan swimming in the river, and the movement controls are etched into a rock in front of him, prompting the player to jump out and explore the surrounding area. Additionally, all objects in this area are destructible. The player can choose to pick up Milan's axe and destroy his workspace to have a direct impact on the environment.

Once the player decides to leave the fishing hole, they are put into the dangerous and horrific scene presented in Method 1. Now, the scene is much more chilling and successful due to the oblivious quiet time the player spent in the fishing area right before.

Picture

Text Splashes - Marking Jump-Cuts

The back-and-forth presentation of time is a crucial psychological element of the original Frostbite novel. Permafrost adapts this by featuring abrupt transitions akin to "jump-cuts" in film to give the player a feeling of "snapping back into reality" or "snapping back in time".

However, early versions of the jump-cuts had no accompanying text splashes, which made the abrupt transitions unintentionally seem like glitches instead of deliberate design choices.
Thus, in the final game, to reorient the player and give them a breather after these transitions, I implemented stark text splashes which show the year of the event and a short caption introducing it in Milan's memory. This made it much clearer what was happening, and also that the abrupt transitions were entirely intentional.
AD 920
Green is the color of envy
AD 920
A mug of raspberry juice
AD 912
A silent vow of penance
AD 912
Planning for the festival
AD 912
To feel the heat of a lost dream

Picture

Frame Composition in a First-Person Perspective

In a first-person game, it's generally adverse to the player experience to take away camera control. I thus challenged myself to direct the player's attention without resorting to forced camera control, similar to Half Life. To do this, I arranged Permafrost's scenes into frame compositions common in film and intersected them with interactive elements. Below are some highlights where I combined frame composition with interactivity.

Blocking: Angelo's Rose
Picture
Angelo's rose, a symbol representative of Angelo's "goodness", is framed by the rocks and debris blocking the space around it. The rose itself also contrasts from its surroundings due to how bright it is. Nearby is Angelo's spirit, waiting on the bridge, establishing the connection between the rose and Angelo early before flashbacks come in.

This leads the player onto the bridge and into the jump-cut into the bar.

Medium Close-up: Sitting at the Bar
Picture
Alouette is the very first person the player can "talk" to in the game. The player is directed to an empty seat and button prompt right next to her.

Alouette hunched over on her seat with her head turned to Milan results in a safe and intimate scene framed as a medium close-up shot​ to show Alouette as an ally and fellow survivor. The player can also see a sheet of paper signifying the crew's upcoming job as mercenaries in an adventurer's bar.
In the scene right afterwards, the player is sent 8 years back in time and meets Alouette when she was younger and innocent. By introducing Alouette with a scarred face in the present time, the player can see and remember the stark difference between her adult self and child self--with the grounding similarity being her white and messy hair.

High-Angle Shot: Jumping Down the Waterfall
Picture
The scene where Alouette, Angelo, and Milan meet up begins with the kids jumping down a huge waterfall into Milan's fishing hole. In this scene, I wanted the player to feel like they were part of a group of children doing daring things that they weren't allowed to do.

To make this work, I arranged the environment into a high-angle shot so that the player knows that they must jump down.

Wide Shot: Endless Forest of Falling Snow
Picture
In this scene, I wanted to make the player feel helpless, as if Alouette and Angelo were suddenly leaving them behind. I thus arranged this forest into a long wide shot or "tunnel vision" composition, wherein the player simply must run in a straight line.

At first, it seems like a simple action. However, I used illusion tricks, such as spacing out the trees, increasing Alouette and Angelo's speeds, decreasing Milan's speed, increasing screen blur, and finally changing the contrast and colors of the scene entirely to turn running down a deep forest into a desperate challenge.

Medium Shot: Orphanage Candle
Picture
The final scene where the orphanage director talks to a dejected Milan traps the player in a seat and bombards them with falling snow. Milan faces the director, framing her in a cold medium shot.

This is one of the only scenes where movement control is forcibly removed from the player. Combined with the snow, the scene expresses a suffocating feeling, with Milan's only relief being to knock over the candle.

Picture

Environmental Motifs

As a solo developer, I needed to carefully manage my resources to prevent going over scope within the 1-month timeframe. To do this, I opted to get maximum meaning out of limited resources by designing with motifs. In execution, this involved repeating familiar scenes and environments, but putting significant twists on them or making the player start in a different orientation and time of day.

Bar to Orphanage
In Frostbite, Milan mentions that telling stories at the bar reminds him of telling stories at his orphanage. I adapted this comparison into a motif, making the building structure of the bar and the orphanage similar.

Milan's Fishing Hole
Milan's fishing spot is a recurring location first introduced in a (playable) title screen, followed by the intro scene and his childhood flashback. This location serves as an important motif for Milan's "safe place", which gets ruined upon his discovery of the massacre.

Returning Home
Milan first exits the orphanage trying to have a good time with Alouette, but ends up returning to the orphanage dejected and alone. The areas are the exact same, but in the nighttime scene, instead of Milan heading to the bridge, he starts at it, and there are no people except for the director. The happy location is thus repeated in a dark mood.
Milan's equipment is also changed from a fishing rod to a rock, similar to the one that the player can choose to pick up in the introductory massacre scene. Milan's jealousy of Angelo is thus symbolized through the motif of a rock.

Design Mechanics & Tools Breakdown

A breakdown of the design and engineering of some of the prominent mechanics and tools in the game.

Sight of Envy (Green Filter)

Picture
Script Sample - CheckLookAt_Angelo ​(Google Docs)
Earlier in the Spring 2022 semester, I worked on a midterm project in which the player's POV warps and changes to a disgusting green color whenever they looked at a mirror, reflecting my fear of mirrors as a child.

I evolved and modified this
Sight of Envy mechanic for Permafrost, using the color green as a representation of "envy" and slowing down the player whenever it is triggered. I designed this mechanic to mimic the feeling of invasive negative thoughts.

​The Sight of Envy activates whenever the player looks at a certain person or part, such as Angelo's ghost, Angelo himself, and invisible walls meant to suffocate the player with the color green.
​​
Script Sample - CheckLookAt_Angelo (Click 2x to Load)
CheckLookAt_Angelo

    

Picture

Angelo's Ghost

Picture
Script Sample - SpawnAngeloNPCRandom_Server
Script Sample - SpawnAngeloNPCRandom_Local
Angelo's Ghost is a recurring "entity" that randomly appears and disappears at certain intervals. He always loosely follows the player. Whenever the player looks at Angelo's Ghost, even if he is invisible, it will trigger the Sight of Envy and slow down the player.

Angelo's Ghost functions as a randomized jumpscare, combined with the Sight of Envy to mimic invasive thoughts.

In addition, Angelo's Ghost appears in different positions for each player when the game is played in multiplayer to cause shock when players communicate with each other and get surprised by the ghost's appearance.
​​
Script Sample - SpawnAngeloNPCRandom_Server ​(Click 2x to Load)
SpawnAngeloNPCRandom_Server

    
Script Sample - SpawnAngeloOnPCRandom_Local ​(Click 2x to Load)
SpawnAngeloNPCRandom_Local

    

Picture

Player Character Costume Changing

Picture
Script Sample - Permafrost_CharacterMorph
The costume of the player character, Milan, is visible in the first-person PoV so that the player gets a better sense of how the protagonist changes throughout different parts of his life. It's important that Milan's childhood and adulthood are presented in different costumes to show the change in the character's personality and desires, despite his lack of emoting to the camera.

In addition to his clothes changing, Milan's height also changes, directly affecting the height of the player's PoV. This also hints at whether a younger or older age of Milan is shown.

There are 3 costumes for Milan in the game:
  • Adult Milan wearing his rugged village clothes. Taller than the default Roblox character.
  • Adult Milan wearing his blue mercenary armor. Taller than the default Roblox character.
  • Child Milan wearing his clean village clothes. Shorter than the default Roblox character, but taller than the other children around him.​​
Script Sample - Permafrost_CharacterMorph ​(Click 2x to Load)
Permafrost_CharacterMorph

    

Picture

Character Voices & Head Turning

Inspired by Blendo Games' Thirty Flights of Loving, I wanted to create a character voice system in which the characters speak like Charlie Brown characters--no actual dialogue (although you can kind of make out what they're saying by following their mouths). The player can't talk to everyone in the game, but they can interact with the most important characters.

I did this to add humor, add character, and subvert expectations: the characters never actually talk, but they feel like they're saying something important to the player character.

To create this system, I modded a legacy script by a user named GalaxysEve called MouthIt and added voice and head turning functionality that triggers upon interaction.

Picture

Character Costume Randomization

Picture
Script Sample - RandomBodyColors
Script Sample - RandomClothes_civilian
Script Sample - RandomHair
I wanted a lot of background NPCs to give more life to the environments and show that they are busy areas. This also increases the contrast between crowded areas for more action-oriented scenes and empty areas for more introspective scenes.

However, it’s impractical to design each individual NPC for each area, minus the main characters. It’s also inappropriate to just use the same NPC model to represent all background characters if I wanted to present the bar and village as diverse areas.

To solve this, I created a
randomized character costume system, which is included in each background NPC. The system randomizes the NPC’s skin color, hair, costume, and default animations (standing and sitting), and each result is unique to each playthrough (NPC height is pre-determined by the model). This makes it efficient and inexpensive to populate the world with personable NPCs, and can easily be ported to other projects in the future.​​
Script Sample - RandomBodyColors ​(Click 2x to Load)
RandomBodyColors

    
Script Sample - RandomClothes_Civilian ​(Click 2x to Load)
RandomClothes_Civilian

    
Script Sample - RandomHair ​(Click 2x to Load)
RandomHair

    

Picture

Music, Ambience, & Lighting Triggers

To facilitate changes in the environment, time, and mood of an area, I needed dynamic audio, color grading, and other effects. The music, ambience, and lighting triggers all operate under similar logic: when the player touches a Region3, the music, ambience, lighting, bloom, exposure, etc. effects change based on defined values in the script.

This allows me to have greater control over the presentation of the game and appropriately use cinematic techniques.
​

Picture

Last updated on 11 May 2025, 1:38 AM

Norm the of out break to chance every embraces who artist lil' a I'm.

Email

[email protected]

LinkedIn

www.linkedin.com/in/gladeline-rufo
  • Home
    • Sorelle
    • BLEED RUNNER
    • Tear the Planks Down
  • About
  • Resume
  • Publications
  • Bonus...
    • Artwork >
      • Illustrations & Renders
      • Sketches & Lines
      • Comics
      • Pixels & Mouse
      • Collabs
    • Writing
    • 2021 - 2024 Legacy Projects
    • 2017 - 2019 Legacy Projects