Hang Up Design Retrospective
Trials and Solutions to Allowing the Player to Hang Up at Any Time
One of the key features we wanted to include in a game about breaking up with your shitty ex over the phone is the ability to hang up at any time. In this post, I'll outline why the feature was important, what issues it introduced into the writing and design process, and how they were overcome.
Why include this feature?
Dealing with an emotionally manipulative partner is already an agency-denying experience. A game exposing players to him shouldn’t compound it by restricting when and how the player is allowed to end the call.
What problems needed to be solved?
To simulate the reality of hanging up at any time, the action needed to be available outside choice points and even when the NPC was mid-line. If hanging up ended the game, this would be easy: just cut off the line and roll the credits. However, given the nature of the character, we wanted him to always call back. But if he can be interrupted at any moment, where would he resume from? How would we make it feel natural?
What did we try?
The naïve, obvious solution was just to have him jump back to whatever line you interrupted him at after a brief acknowledgment by him that he lost the connection. However, in testing, we quickly found this violated one of the game’s other pillars: having a reactive NPC who rarely repeated lines. He sounded like a record that kept getting knocked off the needle. He was predictable. We wanted a man who sounded like he could go on forever about nothing despite never saying the same thing twice.
Graphing out our entire game in a flow chart helped us discover the solution. Our structure had been a series of topics that naturally escalated the longer he spoke about them, with some (not pictured) transitions to prevent them from getting old. Examining each topic, we found they could each naturally be divided into four "phases" with a natural pauses in between.
Using a bit of scripting in Ink, we tracked how many phases in each topic the player had seen and created a "segue into new topic" function. This function checked each topic, selected the one which the player had seen the fewest phases of, played a special segue line, and then jumped into that phase.
This solved two problems. One, it made Josh feel more natural: people frequently get jumbled about what they were saying when interrupted. He’s just as likely to start grumbling about his family as he is about the mobile game, Tractor Dad, he’s forced to slave on at work. The second problem was not exhausting content. By always selecting the topic you’d seen the least of, we reduced the probability any player would ever exhaust a topic and start seeing looping content.
This worked great. Players groaned after hanging up to get out of hearing about Healthvetica only to find he was now droning on about how definitely not jealous he was of his cousin. It really felt like this man could not be stopped, even though we’d only recorded a limited number of lines.
To improve the pacing even more, we started tracking how many times the player had hung up on him and the level of tension in the conversation when they did, adjusting his response when calling back accordingly. Josh’ll buy you lost reception once, but not twice. He’ll also respond much more violently if you hang up on him while he’s already upset. All this helped keep the game moving forward, made Josh feel like an NPC with his own goals. It also meant conflict-averse players were eventually shuffled toward a fight, whether they wanted it or not.
Hanging up on the guy is also amazingly cathartic, as the Let’s Play shows.