Viral

A strategy game wearing the skin of a social media app.

View on GitHub

Summary

Viral is a single-player turn-based strategy game set inside a social media app. After setting up their account on the fledgling platform, the player will be informed through the app that the CDC has marked their area at risk of a mysterious illness spreading through social media, causing their friends to become hostile. It begins to “infect” the friends on their friends list through the app, slowly causing the people on their network to behave strangely and ultimately turning them hostile toward the player. The player will use clues about the friends from their profiles and posts to determine who has been infected by this illness, and clear them from the friends list as fast as possible. The win condition is to clear all infected friends from the friends list without being brought down to zero friends.

I chose Viral as my project idea because I wanted to focus on something that was heavily dependent on a database to function properly. I have a number of other project ideas that require this, so I decided to use Viral to “dip my toe in” and get some experience with a data-driven project. While maybe not exactly useful, I found it to be interesting. While the idea of a game that takes place in a virtual or digital setting is nothing new (see Pony Island for an example), I have never seen one that takes place inside a fictional social media app. It also combines elements of turn-based strategy and (very light) horror themes, a combination I happen to enjoy but see very little of in the gaming industry.

Viral is very dependent on its database. On creation, a list of all possible actions and demeanors that the user’s friends can have are immediately persisted into the database. It will also eventually use Leaflet.js to provide a fake neighborhood map to show the player where all of the outbreaks have occurred near them, and allow the user to take their own profile picture using the device camera.

Intended Users

Functionality

  1. By installing and launching the app, the player is brought to a “sign-up” page, as if it were a social media app.
  2. They “create an account,” which has them enter a number of parameters required for the game, including taking a profile picture with the device’s camera and determining the difficulty of the game. The game will generate a “friends list” using random values in the databases.
  3. Once the account is created, the player is given a skippable tutorial that shows them how to navigate the various pages and create or delete posts and comments.
  4. After the tutorial, the player is given a number of “free turns” to explore the app and get a feel for the layout and options available to them. A turn can contain a number of specific actions, but a handful of key actions bring a turn to an end:
    • messaging someone through the app’s messenger
    • commenting on a post or profile
    • deleting someone from the friend’s list
    • the illness can make an extra turn every x minutes the player spends in the same turn
  5. Once the free turns have passed, the “illness” takes its first turn, and play begins. The illness’s turn consists of performing one or more of the following actions, depending on difficulty:
    • adding a number of infections to friends on the player’s friends list
      • as infection stages increase, this can cause infections to chain to multiple friends with a single “move”
    • sending a number of messages or making a number of posts and comments in the app on the behalf of NPCs
  6. The player and the illness trade turns until the game ends.
    • The player can end the game early by choosing to delete their account. This will kick them back to the “sign-up” page, where they can “create a new account” and start again.
    • Nothing created or stored by the game using the device services is saved past the end of a game - it wipes all pictures taken immediately once the game ends. If the player wishes to save these for whatever reason, an option will be available in the game menu, but it is not done by default.

Persistent Data

The game will be data-driven, with all possible text displayed during the game listed in SQLite databases that will be stored on the device.

Device/External Services

Device Services:

External Services:

Wireframe

Technical Design TODO

Current State

Viral is currently building, and successfully inserting Actions, Demeanors, Friends, Games, and Actions Taken into the database upon new game creation.

Aesthetic Enhancements

Functional Stretch Goals

I have ordered the stretch goals for the Viral project by their level of utility.