CSE 125 Group 5 (UIUIUI): Moonlight Revelry

Project Specification

What kind of game are you planning to build?

Our game will be a variant of Capture the Flag, played on a map of islands. The map will have 4 predefined starting islands on the cardinal edges for the 4 players, and a “flag” object at the center (equidistant from the players). There will be powerups, weapons, and other interesting objects that generate on the islands, providing unique gameplay mechanics. Water will serve as a secondary “biome” that players can enter, but will move more slowly in (specifics pending).

What are the goals of the game, how do players win, how do they lose?

Each game will last 10 minutes/however much demo time is allotted. The goal of each round is to be holding the flag when the clock runs out. To incentivize players to take the flag rather than simply wait out the clock, holding the flag will confer time-based advantages; i.e the longer a player holds the flag, the more boosts to their weapons they will receive. We will make sure that the “flag boost” is substantial enough to incentivize going for the flag instead of waiting until the last second. Players will have melee and ranged weapons to attack other players or knock them off islands (Islands will be floating. Players will have a set amount of health, and will die if their health reaches zero. If a player holding the flag dies, the flag will be released at the death spot.

What are the interesting or unique aspects to your game?

There will be several mechanics of interest in this game:

  • Each round, the player holding the flag at the end of the round wins the round. This means that the game is alive until the very end, and allows strategic gameplay.
  • It will be a low-gravity environment, allowing for fluid movement and high jumps.
  • The core “theme” dynamic will be a shift in lunar phases. The phase will advance toward the full moon during the round, resulting in more light and a rise in water level. Islands will get smaller and movement will become more challenging as rounds advance.
  • Start should be a new moon, end should be a full moon

What are the list of features of your game? Prioritize them into at least three categories: "Must Have", "Would Be Really Nice", and "Cool But Only If Ahead Of Schedule".

Must have:
Basic level generation, passable meshes, textures and shaders, countdown clock, player movement/jump logic, flag-holding benefits

Would be really nice:
Powerup system, lunar phase system, particle effects, high-quality meshes, textures, and shaders, water as a secondary biome

Cool but only if ahead of schedule:
Procedural level gen for replayability, 2v2 team mode, island theming w/ unique environments, attack/defense mechanism for weapons

Group Management

What are the major roles in your group's management?

In terms of work, our group will have different teams responsible for different parts of the development. For now, we have teams for graphics/animation and systems/networks. We can create more specific teams for specific aspects of the project as needed such as physics, gameplay, controls, camera, etc. Each member can be part of multiple teams.

How will decisions be made? By leader, consensus?

Decisions will be made via a discussed consensus. Ideally, before agreeing on a major decision, instead of holding an immediate vote, everybody should be convinced as to the merit of a particular decision and find the decision acceptable. Any doubts should be brought up as soon as possible. In the event of a hard deadlock after ample discussion, we will randomly select a person to make a decision, so as not to cause delays in the development of the game.

How will you communicate and collaborate online?

Online collaboration will be done primarily via our own Discord server. Information related to the game will also be recorded on the game website and/or in documents on our Google Drive. Code comments and reviews on GitHub pull requests may also be used as an auxiliary method. We also plan on using a github project board to organize and keep track milestones, tasks & their priorities as well as status (completed, in progress, not started), deadlines, and assign tasks to group members.

How will you know when you're off schedule, and how will you deal with schedule slips?

We will know we are off schedule if our weekly report either does not meet the weekly schedule that we have set up on github projects, or does not fulfill the specific goals that we set for ourselves at the weekly meetings (and are recorded on github projects).

If this happens, we will first try to understand the reasons we have failed to keep up with the schedule. Based on our discussion, we may decide to assign more people to help work on the task we are falling behind on, redistribute some tasks if we find some took less/more time than anticipated, and if necessary cut features. We will make sure to update our milestones and schedule accordingly.

Who will produce the weekly group status reports?

Each sub-team, i.e. the systems/networks team and the graphics/animation/design team will compile a separate progress report. We will alternate between the members of the group to create a single document each week, combining the two reports and adding notes that apply to the entire group (mostly based on updates from the team meetings we had in the past week).

In addition, anybody who makes miscellaneous contributions will drop their progress in a designated section on our progress document.

When will you have your weekly group meetings (separate from the meeting with instructors)?

Possible times: Thursday Night, Friday Midday (12-4), Saturday Midday (12-4), Sunday Morning (10-12), Monday Evening (7pm after)

The list of times given are not times where everybody has to meet, but rather a set of times where we know that people are free, and can work together. Thus, these times act like open office/work hours for the game, to create as many opportunities for collaboration as possible.

Our designated all-team check in will take place on Mondays 9PM.

Project Development

What are the development roles and who will handle them?

Graphics

Networking

Game Logic + Physics

Art

Sumukh

Jose

Elena

Almog

Steven

Jungwoo

Almog

Sumukh

Jose

Steven

Grace

(everyone else, if needed)

What tools will you use?

We will use C++ with OpenGL for graphics. While this is fairly standard, we believe it is sufficient for our needs.

How will you do testing?

  • Unit Tests
  • Scenario Tests
  • User Tests
  • Game Playthroughs
  • Unity Mockup Comparisons

How will you do documentation (both internal group documentation as well as external player documentation)?

Internal Documentation:

  • Shared Google Drive folder to manage documents for each role
  • Miro for diagramming game logic
  • README.txt
  • history.txt
  • ChangeLog
  • Documentation in code (e.g. file headers, function headers, etc.)

External Documentation:

  • Simple tutorial for the players
  • Written instructions/rules
  • Recorded video tutorials
  • Website to post progress & updates to the game (this site)

Project Schedule

Low Level Milestones

Week

Art/Sound

Graphics

Networking

Game Engine/Physics

Game Logic

2

Collect or design general multi-use models for the game

Port over existing 169 code.
Write basic diffuse/specular/emission shader and shadows.

Set up a basic TCP echo client/server

Decide on whether to use a library or build from scratch

Determine game logic flow from project specification

3

Concept art for player and entities used in the game

Asset importing, complete shadows if not complete in week 2

Define packet protocol structure for client/server communication

Coordinates, positioning, movement, gravity, collision (bounding boxes), velocity

Specify the required API methods that must be accessible through the game engine for implementing the game logic

4

Design assets from concept art

Integrate with network client

Integrate with graphics client

Object Management API, Event API

5

Finalize art assets, visualize in the graphics client

Animation + Particle system, shaders (i.e. water)

Optimize protocol

Map generation, player controls, NPC AI (?)

Use Game Engine API to blueprint the gameplay,
Write procedural gen code if we’re doing it procedural

6

Define sound effects required for the game

Animation + Particle system, continue shaders

Spatial audio for sound effects

7

Explore publicly available options online

UI, complex animations

Basic audio processing API from existing assets

Incorporate sound effects

8

Finalize audio assets

Polish Graphics

Debugging

Debugging

9

Beta Testing

Beta Testing

Beta Testing

Beta Testing

Beta Testing

10

Demo Final Product

Demo Final Product

Demo Final Product

Demo Final Product

Demo Final Product

High Level Milestones

  • Render a 3D object w/shader and shadows [2]
  • Echo Server [2]
  • Add player input to client [3]
  • Integrate client and server [4]
  • Multiple clients on server [5]
  • Process physics on server for player movement [5]
  • Create meshes and textures for environment & player [5]
  • Collision detection w/environment [6]
  • Water implementation & shader [6]
  • Health and Damage mechanics [6]
  • Game Clock [6]
  • Collectible powerups [7]
  • Collectible Flag & ability to win the game [7]
  • Flag Boosts (time-based) [7]
  • UI on client [7]
  • More advanced types of weapons and movement are implemented [8]
  • The moon phase shift mechanic is implemented [8]