Project DescriptionLast updated: 2020-05-03

The game is a cooperative defense game in which players work together to protect a location with resources from a rush of enemy AI players. Players can perform actions such as building barriers and slowing enemies to protect this location for as long as possible. The theme of the game revolves around the players being workers in a shop during COVID-19 where people are trying to steal the store's supply of toilet paper. In the game, players must work together since their first person view restricts their ability to assess the state of the entire shop.


How to Win

Players win by protecting their resources as long as possible or surviving the entire rush of enemies. There is no end to the waves which means that the aim is to get a highest score.

How to Lose

Players lose by failing to protecting their resources from the hordes that are trying to take them

Unique Aspects

  • Players are encouraged to work together and will perform better when working together
  • Enemies are AI controlled, and will chose their own paths to reach their targets, to increase replayability and depth
  • Players will be able to interact with aspects of the environment to build barriers, create obstacles, etc. and as such the environment will be slightly changing as the game progresses

Base Features

  • Movement
  • AI Movement
  • Interactions between Players and AI Shoppers
  • Upto 6 person Multiplayer
  • A Single Medium Sized Map
  • Basic Character and AI Models
  • Basic Physics to Handle Collisions
  • Menus to Join Games
  • UI Components for Player

Target Features

  • Sound effects
  • Aggression Scale for AI Shoppers
  • Menu to Change Game Options
  • Leaderboard to keep track of High Scores
  • Save and Continue Games

Reach Features

  • Multiple Maps
  • Controller Support
  • Minimap
  • Unique Player Skills
  • Advanced Graphic Features
  • Client-side interpolation
  • Particle Effects
  • High Quality physics and art

Group ManagementLast updated: 2020-05-03

Since this project involves group collaboration between 6 people we plan to have a democratic approach to group management.


Instead of having an overall leader, each member of the group will be responsible for the work that they are doing and the work of their respective groups.

Descision Strategy

Large descisions about this project will be made by consensus either during our routine meetings or during their own separate meetings.

For decsisions that impact only certain parts of the implementation, the decisions will be made by the group that is responsibile for them or by the whole group if they impact other groups.


Since we are unable to meet up in person, we are going to use multiple remote communication platforms including:

  • Discord for out meetings and general communication
  • Google Docs for communicating more detailed ideas and concepts
  • Trello for task management
  • Visual Studio Live Share for paired programming


To keep track of our schedule we will use the Project Schedule below to compare where we are now to where we planned to be. During our meetings at the begining of each week we will access our progress and see if we are falling behind.

In the case that we are falling behind schedule, in one of our meetings we will reprioritize our features and cut noncritical features.


Our weekly group status reports will be written individually at the end of the week and then we will have a meeting and discus our reports. After discussion Chris will compile the reports and compile them onto the website.

We are thinking about the possibility of using Google Forms to automate the process of collecting the reports but that will be decided later.

Project DevelopmentLast updated: 2020-05-03


We have divided this project into three roles:

  • Graphics, UI, and Sound
    • Steven Hausman
    • Thiago Goncalves
  • Client and Server Networking
    • Cameron Foster
    • Patrick Liu
    • Anthony Lau
  • Physics and Game Logic
    • Chris Maytom
    • Patrick Liu

Members will move between roles depending on the current workload and how critical each part is.


Our game will be created using:

  • C++
  • clang
  • Git/Github
  • Doxygen
  • Opengl
  • Blender
  • Winsock
  • Fmod


Since this is project is complex we will be performing multiple different types of testing to ensure the correctness and reliability of our code. This will be done through:

  • Unit Testing
  • Beta Testing
  • "Visual Debuggers"
  • Manual Testing


To keep track of our code we will be writing file-level comments, function declaration comments, and inline comments similar to Google's comment style. For any documentation that fall outside of this we will be using README files.

Once compiled we will use doxygen to generate external documents and include player documentation on our website.

Project ScheduleLast updated: 2020-05-03

This is our current working schedule for our game.

High Level

  1. Set up toolchain
      Target: week 1-2
  2. Basic client with collision detection and basic gameplay logic
      Target: week 3
  3. Basic server-client echo server
      Target: week 3
  4. Migrating basic game state logic from client to server
      Target: week 4
  5. Basic AI, victory conditions, barricade building implemented
      Target: week 4-5
  6. Wave, economy system complete, gamemode is fully fleshed out
      Target: week 6
  7. Graphic models and UI finished and implemented
      Target: week 6
  8. Design Freeze
      Target: week 6
  9. Feature Freeze
      Target: week 9

Low Level

Week Client Networking Server Art & Sound
  • Game Idea
  • Determine Features
  • Basic Concept Art
  • Website Design
  • Set up basic client
  • Create basic echo server
  • Complete specifications for game state transfer
  • Movement
  • Update game state based upon control events
  • Game environment layout sketches
  • Create basic graphics window with model/collision
  • Set up reliable transfer of state between client and server
  • Implement collision logic
  • Create Environment models
  • Move all client game logic to server
  • Interactions between objects
  • AI pathing
  • AI Spawning
  • Create or find player model, AI model
  • Design particle effects
  • Add models to graphics window
  • Score system
  • More interactions
  • Wave system
  • UI for player
  • Menus
  • Implement particle effects
  • Economy system
  • Sounds
  • Develop shaders to improve graphics quality
  • Optimize network code
  • Level design
  • Saving and Loading Levels
  • Implement player Skills
  • More Sounds
  • Level Design
  • Debugging and Difficulty tuning
9 Alpha Testing Alpha Testing Alpha Testing Alpha Testing
10 Beta Testing Beta Testing Beta Testing Beta Testing