Narrative Design in Oxenfree

After finishing the game last night, I decided to analyze the narrative behaviors in the 2016 game Oxenfree.

Oxenfree is a narratively driven horror game where you control the character Alex and try to stop dimensional ghosts from taking over your friends. Being narratively driven, Oxenfree has a total of 10 endings, allowing itself for multiple playthroughs. How the player chooses the dialog in this game I think is unique to other dialog games. In many dialog games, a kind of word block appears at the bottom and shows you a list of choices to take. In this game, however, there are different word bubbles that appear over the player’s head, and depending on which button is pressed (I played it on xbox), the story tree changes. How the narration is represented can be seen in the heading photo. Now I’m not going to break apart the story line and analyze the different changes, but rather take a different approach and look at how the decision making actually works.

Decisions, decisions

As far as I can tell, there are really only two different ways the choices work: there is a timed choice, where the bubbles fade out if you don’t answer, and a stable answer where the game waits for you to make a choice. Let’s look at each one a little more closely:

Timing is everything

The bulk of the game features timed dialog segments. In these segments, the player is either given an option to remark to something that is happening, or to reply in conversation to the other characters. Not every timed choice has the same amount of time, however. There are times where the bubbles fade out quickly, and other times that take a long time to answer. The bubbles that fade out quickly usually represents a quick, witty remark that affects how the characters think of you, so it turns the decision making almost into a quick-time event, but with multiple choices. These timed responses can add stress onto the player as they try to quickly handle a situation.

It’s also curious to see that even though there’s only three choices presented to the player, there’s also another choice: not speaking at all. There were times where I didn’t like any of the choices being given to me, so I just waited until the dialog boxes went away. The only problem with this choice is I didn’t know how the game would react to that decision. By choosing the different dialog boxes, we can infer how others are going to react to what we say, but by not talking at all, the game is left to itself to make the decisions for us.

Think Carefully Now

In the bubbles that wait for you, the player is given time to think about the choices that they are about to make. Most of the time, these choices are very important, like when choosing who to bring with you to check out the other side of the island. By waiting, the game places emphasis on these decisions, allowing the character to have time in choosing how they want to vastly change the game.

Interactions

Most of the time, the player is having a conversation with the other characters. In Oxenfree, the developers want the conversations to be as natural as possible, so the other characters behave to your responses a certain way. When waiting for you to talk, the characters usually say “Hello?” or “Did you hear me?” as if they’re expecting you to answer. If this is during a timed dialog, the characters will just say something like “Oh playing the quiet game are we?” or something snooty like that. If timed correctly, the player can answer back with “Yes, I heard you, yeah i think you’re right” or something like that, where the player responds to the character’s questioning remarks. There are sometimes where the player just interrupts the conversation, either the other characters were talking about how the player is being quiet, or they were going off in a tangent from the conversation. Sometimes it’s disappointing to interrupt what the character was going to say; perhaps they were giving something away about the story, other times it feels like the player wants to get the conversation over with. Another way a player interacts is by making a decision, but only answering it at a certain point in the conversation, instead of interrupting the characters. Because of the variations in this system, the player realizes which conversations are actually important to the story, and which are world building, characterization fluff.

Besides answering the characters, there are also objects in the world to interact with. Because of the unique way the dialog works, players can move around while also talking, giving a more natural feeling to the conversation. When a player selects certain objects, when that object becomes available to select either during or after conversation, the player starts a new conversation about it. Sometimes finding an object progresses the gameplay, but other times it’s just for world building. When the object is important, previous conversations are interrupted as the game focuses on the next task. Other times, however, the characters will go back to their conversation with the player. There was one point in time where I was talking to a character and I wanted to drop the conversation, so I just kept selecting the different items in the room. The game, however, found this conversation important, so it brought it up again immediately after.

Interacting by leaving the different areas, or walking too far away, also causes different interactions. In the case of entering a different area, whole conversations can be lost behind, because certain conversations only happen at certain places (we’ll talk about triggers in the next segment). This can be a detriment on the game, because the player just lost all the important choices that they could’ve made. When the game wants the player to listen in on a conversation, the characters will sometime beckon the player to come back, like saying “Hey, why don’t you stay and chat?” These kinds of interactions are ways the game is telling the player that exploration isn’t important, and there’s no point rushing from area to area.

What makes it tick?

So we just described the different kinds of systems that are involved with the conversation to make it flow naturally, but how does it actually work behind the scenes? Note: with programming, there are multiple kinds of ways to complete certain tasks, so what I say may not be exactly what’s programmed, but it could be a similar system. Now, within the program, there are the different Update methods, which are just called every frame (so like 30 frames per second or what have you). Then there are Coroutines, which follow their own set of actions. To make it easier to visualize, just think of Updates and Coroutines on separate timelines: the walking and scenery effects in the game are on the update side, while the actual conversations are on the Coroutines side. By being able to aptly control the timing of Coroutines, developers can figure out the right timing for each conversation.

Imagine the conversations as a web of Coroutines. By interconnecting the system with a series of true or false statements (called booleans, or bools in C#), the game can choose which Coroutine to call next when a player makes a decision. Using while loops, which are activate if certain terms are met, there the bubbles can fade out naturally, waiting until a player makes a choices. Within that while loop, there can be “if” statements where if a player presses this button, then this conversation is true and moves to the next Coroutine, or if a player doesn’t make a decision at all, move to something else. If a conversation is interrupted in the middle, it can check if there were any bools that were set off or not. I can picture a kind of game manager for the scene or conversation where it holds a set of bools and if there is a bool that is false, that set of Coroutines start. If you’re not sure what I mean, don’t worry, just imagine like if you were grocery shopping and you were following a list, but in the middle of shopping, a friends stops you to say hi. After that conversation, you go back to your list of items and proceed to shop.

When I talk about triggers in terms of programming, I’m talking about invisible boxes that the player can’t see. When a player enters or exits a box, an event happens, which could mean a conversation starts, or the characters beckon the player back to a certain area. Because the player can move around while also talking, triggers in this game are very important. It may seem like sometimes the characters start conversations with the player randomly, but a lot of the time it’s because a player walked into certain areas of the map. Triggers are also useful when a player gets close to an object and the selectable option and its description shows up. There can also be trigger boxes that are on the characters themselves. If the player is either following the character or the character is following the player, the game can determine how far away the player is by if they are in a character’s trigger box or not.

I could go farther in depth about all the programming and techniques used to make the game, but I’m going to keep it at that for now. Maybe sometime in the future I’ll try to recreate a level of another game, but we’ll see. You can check out Oxenfree here. What did you think of the game? What were you favorite bits of dialog? Let me know in the comments below! Have a great day, and thanks for reading!

Psst! If you liked this blog and you want more, please consider contributing to my Ko-Fi. It helps me make new and exciting media like this blog and you get a game in return! Check it out here