Stress CUPacity

“We tell ourselves things that stress us out every day that are either exaggerated or not real. I wanted the feeling of recognizing it and overcoming it to be manifested in the gameplay.”

My Role(s): Design, Programming
Team Size: 1
Engine: Unity
Duration: 7 Days
Platform(s): PC
Click Here to Play
Click Here to Read the DevLog

Stress CUPacity is an Arcade-style Avoid-’em-Up game developed in Unity to be submitted as part of Brackey’s Game Jam 2022.1. I completed the game in around 7 days in my spare time as a hobby project. I was solely responsible for all aspects of the Programming and Design for the game, and I used open source files, as well as my own sources, for the sound effects.

Game Overview:

The player controls an avatar for their psyche represented by a green dot. They start the game at the start of a day. They begin to tell themselves things that stress themselves out in the form of a message at the top of the screen. That message then, after a brief moment, manifests as a physical shape that travels in a pattern that the player tries to avoid the trajectory of. Each message is color coded and has a different shape/pattern attached to it which represents a different category of stress (such as Financial or Social). If the player collides with a shape, they receive damage in the form of stress that fills up an onscreen “cup.” If that cup reaches “CUPacity,” it begins to overflow into the cups of others. At the each day, the player is brought to a menu, where they can select a category of stress to “work on” by clicking a button next to the category. This will remove one from the quantity of that corresponding stress. If a stress quantity reaches 0, that stress will appear throughout the day less frequently. The game ends when all stresses = 0, and it’s up to the player to try to achieve this with as little stress accumulated as possible. There is also an option to empty your own cup of stress, but that increases the amount of damage taken for subsequent rounds, increasing the risk.

A motivational message is provided to the player after each day that works both as positive life encouragement and a gameplay hint system.

Conception:

The theme for the jam was “This is Not Real.” I am very often preaching the philosophy of seeing reality and what is actually there in our day-to-day lives. We tell ourselves things that stress us out every day that are either exaggerated or not real. I wanted the feeling of recognizing it and overcoming it to be manifested in the gameplay. I was dealing with a lot of stress myself during the development of this game, and I always liked the idea of using games as a mental health tool, so my decision to make this type of game came easily. The challenge arose in deciding the scope of the game. I figured that I could make one loop that repeats within seven days, and that way I didn’t have to worry about creating additional content. Since stress manifests itself similarly each day and it is up to each person to recognize it and deal with it, I thought this was a fitting representation of the metaphor. The concept of the “cup” came from me constantly saying “my plate is full right now” when it comes to stress. I thought “cup” worked better than “plate” because it made more sense from an overflowing perspective.

Game Design Process:

I was heavily inspired by the current game trends of the time that require you to play the same gameplay loop over and over in order to learn new things and improve your skill. I didn’t want the player to receive power ups or skills that changed the game; rather, I wanted the game to be exactly the same throughout in order for the player to recognize the challenges and overcome them. When the player first starts the game, the shapes are flying at them seemingly at random and it is overwhelming and frustrating by design. After a couple of tries, they will begin to recognize that each shape follows a pattern, and they can begin to see the signs of their appearance in order to figure out how best to avoid them and the combination of them. In the context of dealing with stress, I feel this is a strong message.

The challenge came from keeping the loop engaging and challenging, but not impossible to deal with. I kept the control of the psyche intentionally slightly erratic. The shapes — while follow the same pattern each time they appear — will appear at random intervals (set in Unity’s Inspector). This allows players to learn what each stress does and try to avoid it as it appears, but has the capability of appearing at a time that catches them off guard, preventing them from getting bored as they improve.

Each stress issues a “warning” through a color-coded message at the top of the screen (which is randomly generated through a list of Scriptable Objects — see below for details) as well as a sound effect associated with each category of stress. For example, the “Financial” stress will pop up a message about money, and the sound of a cash register will play. This tells the player that the financial stress is about to appear, giving them a brief moment to prepare.

I wanted the game to also represent the consequences of not dealing with stress appropriately. While at first the only visible “cup” on screen is your own, if your stress exceeds your CUPacity, the quantity that exceeds it will spill into another person’s cup, making that one appear on screen. For each cup that exceeds CUPacity, a new cup for a new person appears. This shows that if you don’t handle your stress appropriately, it can negatively impact the stress of people around you. This also doubles as a “score” system, because at the end of the game it shows how many people you affected, and you can replay the game in order to get a lower stress count.

Programming Process:

The player movement was handled by Unity’s physics system with code to move based on button presses. I intentionally did not fine tune it in order to keep with the erratic pacing, although I did create a public field in the Inspector in case I wanted to adjust it later. The stresses were created using Unity’s generic sprites. I added colliders to each. Since I knew the game would take place on one screen and the stresses would follow the same pattern each time they appeared, I opted to use the Animator to create an Animation for each stress that would play as they appear on screen. Code was written to destroy it after a few seconds — well after the animation played (adjustable in the Inspector as well).

I created a spawn point for each type of stress that handled all of the parameters of its spawning. Everything from the time it spawns to (randomly between a min and max value) to a reward for getting the stress count to zero (which added to the time in which each stress spawned, decreasing their frequency of appearance). I find serializing fields and dragging components into it is more reliable and optimized than using FindObjectOfType or similar, so my code features a lot of those references. It also helps me handle NullReferenceExceptions a lot easier.

Instead of opting for an entirely different scene for the menus (with the exception of the start menu), I decided to keep all UI elements and menus on the Unity scene and just activate/deactivate as needed. I found this helpful under the pressure of the deadline, because it allowed me to know for sure that each reference to other objects would work and data would transfer from game day to game day. It also allowed me to quickly keep the stats in the UI persistent between menus, allowing the player to make tactical decisions when they choose what stress to work on or whether or not to reset their stress damage.

 

© 2018 Blund