We’re OK

On-the-fly character switching puzzles exploring father-daughter bond.

TABLE OF CONTENTS

👀 Overview: game jams, working solo & puzzle platformers

👩‍💻 ui design: Splash screen, win and lose screens, narration system

✍️ Narrative Design: Family bonds and different endings

💡 Gameplay Design: On-the-fly character switching

👩‍💻 Programming: C#, colliders, toggle system

🌅 Conclusion: what I learnt

🎮 Play We’re OK

Overview

We’re OK is a story-heavy puzzle platformer where the player can weaken or mend a broken father-daughter bond by completing or skipping puzzle segments.

 This game was made in two weeks for the Budding game jam. All assets were created by me (except music & SFX). I was keen to dabble in narrative writing, coding and UI design for this game.

Here’s a quick breakdown of what I worked on:

  • Design: gameplay and balanced levels, 3 camera viewports using Cinemachine.
  • UI Design: splash screen, start menu, in-game menu, narration system, win/lose screens.
  • Narration Design: exploring a father-daughter bond in a backdrop of losing a terminally sick family member.
  • C# Scripting: movements, UI updates using triggers, using playerPrefs, character toggle system
  • 2D Art: characters, environment, narration bubbles

UI Design

I used Affinity Designer to design the UI and create sprites. I was keen to keep the UI minimalistic, given the short time frame. All the UI was made in Unity Canvas, using boolean functions to activate and deactive gameobjects based primarily on button clicks. Some of the buttons (eg. “skip hurdle” button) were controlled by scripts that monitored the number of clicks to show or hide buttons. Narration bubbles were individually made using Affinity Designer, and their visibility were also controlled by button clicks in Canvas.

I also made use of three cameras to show both Anita and Baapu (the leading characters) on the same screen, with the narration box on the righthand side.

Splash screen

Main menu

Controls screen

Credits screen

Cannot skip hurdle screen

In-game UI

Map progression screen

Narration screen

Win screen

Lose screen

narrative Design

This was my first experience writing narration with different endings.

The game revolves around Anita, and Baapu (her dad) as they come to grips with losing the matriarch of the family to a terminal illness.

Due to the short timescale, I decided to focus the story on a singular incident, having two different endings, one a bit less positive that the other.

I wrote the narration in the context of text messages between Anita and Baapu, using emojis within narration bubbles.

Below is the narration that ended up in the game:

One of the areas of improvement that would be interesting to implement is more variation in endings. The variation in ending was determined by whether the player skipped a hurdle or successfully solve the puzzle in each level. If they skipped the hurdle, the main characters would drift further apart.

Since I allowed the player to skip puzzles only once in this prototype, the narration did not need significant variation. If this game was expanded to include three skips, for example, I would have liked to add more dramatic narration, delving deeper into the core relationship dynamics between Anita and Baapu.

gameplay design

Having previously prototyped a game where the player could control two characters using the same controls (see Mr & Mrs Pie), I was keen to explore this concept further, this time using a toggle system for the player to have more control on character movement. I also wanted to find a better solution for the camera logic, using a split screen to focus on each character.

Designing the toggle system

For the toggle system, I decided to use colours to differentiate between each characters. Baapu and his environment was blue, while Anita and her environment was pink. I then turned the active character yellow so the player was aware which character they were controlling. 

I also decided to use the Shift key for toggling between characters. I initially intended for the player to be able to move faster by using the Shift key, which is often used in other platformers, but in the end I did not feel that it was necessary, so adopted it instead for the toggle. 

Toggle mechanic in action.

Split-screens & camera logic

I opted for a horizontal split-screen rather than a vertical split-screen between the characters, since their y-axis position does not vary as much as their x-axis values. A horizontal split-screen also created less blind spots for the player. I implemented this mechanic using Cinemachine, creating two main cameras and two follow cameras with camera bounds, one for each character, as follows:

Main camera for Anita

Follow camera for Anita

Main camera for Baapu

Follow camera for Baapu

I also left some space on the right hand side of the viewport rect to add the narration screen. 

One of the areas of improvement for this system would be making the narration camera inactive when the characters are not conversing, therefore reducing blank spaces while the player is solving the puzzle.

Removing the narration screen during puzzle solving would have made the game more immersive.

Main camera for narration screen. This camera did not need a follow camera since it was static.

Accessibility 

In terms of accessibility, I was keen for colour-blind players to also be able to play the game, so I adjusted the colour brightness so the active character was still distinguishable. I also added name tags in the narration box (left for Anita, right for Baapu). 

Looking back, I could have made the game even more accessible by adding more contrast between the environment colours for each character, which could have been implemented if I had tested the game for accessibility at earlier stages of art creation.

Player with normal eyesight

Player with Monochromacy/Achromatopsia (reference)

programming

Programming the toggle system

One of the main mechanics of this game was the toggle system. The main challenge was making the toggle turn off again after it was pressed the first time and return a different value the second time. To solve this, I wrote up a loop using bool values as follows:

Function to toggle between Anita and Baapu in game controller script.

Referring to toggle function from game controller script

conclusion

Overall, I am pleased with how the game turned out, especially since I developed this game within two weeks in my spare time, while working at a game studio during the day.

This was my first experience writing narration between two characters, and I enjoyed that part of development. I am keen to delve further into this topic, even exploring more unconventional storylines and researching more about emotional storytelling its nuances.

I am pleased to have been able to code a functioning toggle system that actually works quite smoothly in game. My code could be leaner, and definitely a topic I will look into for future games. I am also curious to learn about how to implement a narration system that feeds from a database of dialogues, to avoid having to manually create individual dialogue boxes.

In terms of design, I am keen to explore more ideas where the player interacts with two or more characters to solve puzzles. After making this game, I am interested to build on simple concepts to create interesting puzzles in my future games, possibly with more gameplay.

 Overall, this was an interesting concept that helped me build my skills, mainly in programming, design, narration and UI design.