Cyber Soldiers in Cyber Houses

Shall Make, Shall Be: The Bill of Rights at Play

Technologies Used? Unity2D, Google Sheets
Skills Used? Game Development/Programming, Software Engineering, System Design, C# Programming
People Involved? Artist: Vi Trinh
When? September 2021 ~ July 2022

CSCH is a game centered around the Third Amendment in the Bill of Rights. As the player works to find the surveillance items in each level, a robotic narrator discusses the amendment and its modern day implications, raising questions about what exactly constitutes a "soldier" or a "house" in the digital era.

The game concept and all of the art assets were created by a brilliant artist named Vi Trinh. I was hired by NYU as a freelance game developer for the project, so my role was to transform Vi’s desired feature list and library of assets into a functioning game in Unity.

Perhaps the most challenging feature to figure out was the live scoreboard, which we ultimately decided to host on Google Sheets. Every time a player completes the game, the amount of time remaining and the score are sent from the game to a spreadsheet that can be viewed on Vi’s website. This feature was especially important when the game was featured at the Shall Make, Shall Be exhibition in 2022.

Check out the trailer on YouTube!

For more information about this project, please see:

Interested in the code for this project? Check out the snippets in the carousel below!

Image #1: When one of the spying bugs is found and clicked on by the player, the bug becomes un-clickable, the UI is updated, and a sound plays to indicate success!

Image #2: Meanwhile, over in the ScoreCalculator, we are checking every frame to determine whether or not all of this level's bugs have been found. If they have, we'll call a different function to alert the LevelController to the player's success!

Image #3: As we can see here, the "SendSuccessMessage" function alerts any class that needs to respond immediately to the player's success -- like the LevelController.

Image #4: Over in the LevelController, we have some useful functions for actions such as pausing, reinitiating play, and restarting the game. (There’s also a comment there to indicate that if we wanted to reinstate the behavior of pausing the ongoing audio during a game pause, this would be the place to do it!)

Image #5: Here, we can see that finding all of the bugs triggers a function that simply pauses the timer, then tells the overlay to display a message to the user. So...how do we activate that “LC_ToNextLevel” function that will allow us to move on?

Image #6: It turns out that the OverlayManager has a number of functions that allow it to talk to the LevelController, thus allowing it to serve as the messenger between the player and the controller (since the player's actions primarily involve either clicking on Bugs, which have their own behaviors, or interacting with various elements for which the OverlayManager is responsible). Once the button on the "success" message is clicked, the OverlayManager will use the “RequestNextLevel” function tell the LevelController that it's time to move on, which will allow the program to do everything it needs to in order to prepare the next level, such as loading in the next scene, initializing the next set of bugs, and starting up the timer again.

If you’d like to know more about the code for this project, please send me an email or fill out the contact form on this site :)

Previous
Previous

Ride Prototype: Winter Forest Meditation

Next
Next

Music in AR: Gizmu