Out of Tune: Project Specs
Project Description
Game Overview
Description
What kind of game are you planning to build?
Escape room style, cooperative game with a music and horror theme. Each level contains multiple rooms that may contain minigames or keys. Players must find and collect keys and bring them to the exit door in order to escape to the next level.
Objective
What are the goals of the game, how do players win, how do they lose?
The objective is to find the keys to unlock the door to escape the level. Each level has a time limit. If the players do not escape the level within the time limit, they lose the game. If they escape within the time limit, they win. Each time a player dies, that player must wait a certain amount of time before they can respawn in the level.
Unique Aspects
What are the interesting or unique aspects to your game?
Our game will blend minigames, co-op, and music with an unsettling atmosphere and charming characters. It’ll throw players into a world of horror, but it encourages them to face it light-heartedly with its cooperative gameplay and goofy characters. This game will be self-aware: it embraces the contradictory joy of being in scary scenarios when you have people to laugh at.
We will aim to keep our game replayable by choosing minigames that are also skill-based so that once you know the solution, they are still fun to play → don’t make one-trick puzzles that are uninteresting the second time around. Some minigames will also require collaboration between 2-4 players and cannot be completed without them.
Players also will be faced with music challenges that are reflective of real music theory practices.
Features
Must Haves:
- Around 3–4 minigames
- An escape room
- Music-incorporated gameplay
- Keys and exit door functionality
- Jump scares
- Game timer
Would Be Really Nice to Have:
- More minigames
- Procedural (Random) map generation (with seeding?)
- Minimap or compass with user locations
- Voice channels
- Character customization
Cool But Only If Ahead Of Schedule
- Leaderboard of best times
- Several levels (escape rooms)
- Monsters/enemies in non-puzzle rooms
- Proximity chat
Group Management
Team Members
- Julie Hong
- Gabriel Ikezaki
- Helen Lin
- Brandon Reponte
- Ravi Shende
- Jasmine Vodhanel
- Annie Wong
- William Zhang
Roles
We will not have any different leaders or group managers, because we will function as a democracy. However, we will still have different roles in game development.
Decision Making
For large game decisions, we will make decisions as a democracy, with a majority (5 people out of 8) needed. For smaller architectural decisions, it will be up to the groups that are working those pieces.
Decision Making
For large game decisions, we will make decisions as a democracy, with a majority (5 people out of 8) needed. For smaller architectural decisions, it will be up to the groups that are working those pieces.
Communication and Collaboration
We will communicate online using discord and zoom. We created a discord server where we’ll text decisions, recaps, resources, and also ping when necessary. We plan on using lectures for in-person full team meetings. Sub-groups will also decide when and how their members will meet throughout the week for group-specific decisions and meetings, be it in person or online.
Scheduling
Throughout the week, each person will check against the schedule below and make sure that tasks are being completed to schedule. If we see that we’re behind on any part, we can have people volunteer to help others in need. If everyone is behind, we will meet to talk about narrowing our scope.
We will have full-group in-person meetings during each lecture. Then, sub-groups will have meetings either in person or on zoom at their discretion.
Weekly Group Status Reports
Each person will send updates of how they are doing and if they are on track in a discord channel for updates and brief checking on updates when we meet up. We will have a person taking notes of what happens during the meetings. We each will write our respective portions of the project, send it to one person that will check and make sure that everything is ready and completed by deadline.
Project Development
Development Roles
-
Art/3D Modeling
- Jasmine
-
Music/Audio
- Annie
-
Graphics
- Gabriel
- Julie
- Helen
-
Developer (Networking)
- Julie
- Gabriel
- Ravi
- Brandon
-
Developer (Physics)
- Brandon
- Ravi
- William
-
Developer (General, Minigames)
- Ravi
- Helen
- William
Tools
- Art/3D Modeling: Blender, Adobe Photoshop
- Graphics: OpenGL
- Language: C++
- Networking: Boost.Asio
- Communication: Discord
- Physics: Own Physics
- Version Control: GitHub, Google Drive
- Tasks: GitHub Projects
-
Auto-Formatting and Linting: TBD – probably one of the following:
- Clang-format
- clang-tidy
- cppcheck
- cpplint
- oclint
- uncrustify
Testing
For testing, we plan on relying on Github Actions to maintain functionality of smaller codebase fragments. For each minigame, we’ll test the player’s inputs, their outputs, failure and success in respect to the minigame’s winning condition. We will do play-tests before merging each branch. For play-tests, we will create a checklist of checks to do, adding onto it as more features are implemented.
Documentation
We will create google docs for all player documentation (how to play, strategies, etc.) as well as internal documentation (project specifications, meeting notes, branching strategies, etc.). Those will be done as an entire group and stored in a shared google folder. All code-related specs and ADRs and information will be put on the repository.
Everyone will do documentation for the code that they write. Subgroups will do documentation for the main components that they work on. Everyone is expected to write the doc-strings for the functions that they write. File doc-strings will be written by the people who are working on that file and creating it.
Project Schedule
Define a set of milestones with a specific definition of what each milestone is, what it means to complete each milestone, and when you expect to complete them. Define the milestones at two scales, a high level set of key milestones like integration and minimal viable game, and a low level set of weekly milestones.
Week | Overall,General | Art | Audio | Graphics | Networking | Physics/Generation | Game Play |
---|---|---|---|---|---|---|---|
2 | Map out how all the pieces will work together. Start APIs and create class structures. | Concept Art | Get a world space (ground, skybox) with a cube that can move around with WASD. | Build basic client/server system, design and implement message protocol | Implement basic movement + jumping | Choose 3 minigames/Minigame design/idea | |
3 | Start working on hallway and room mechanics, implement game timer | Start modeling rooms and environments and minigame rooms | Making music sketches | Connect client and server together (ensure compatibility for graphics); Start support for 3D model files (models exported from modeling tools can be rendered in game world) | Game state synchronization | Implement collision detection + object interaction | Implement key, jump scare, death mechanism |
4 | Create first level map and plan escape sequence | Continue working on minigame rooms | Finalize support for 3D model files, add textures and materials | Game events & interactions | Implement minigame physics | Start Mini game 1 | |
5 | Design main escape room mechanics | Model interactable items | Implement SFX | Add support for UI: text and graphics that will be displayed on screen | Multiplayer audio sync & immersion | Procedural map generation | Finish Minigame 1 logic, start 2 |
6 | Connect minigame 1 with first map, test cohesiveness. | Start modeling and rigging player character | Start adding support for animations for characters, objects, UI | Sync animations | Finish minigame 2 logic and start 3 | ||
7 | Add in minigame 2. Implement voice channels. | Keep working on player character | Finalize support for animations, optimize graphics engine | Networked player death & respawn system | Finish minigame 3 | ||
8 | Add in minigame 3. Implement procedural map generation if time permits | Animations | Continue optimization | Handle disconnect/reconnect & cleanup & lobby system | Create more mini games if time permits | ||
9 | Implement character customization if time permits | Keep working on animations | Finalize optimization | Optimization | Create more mini games if time permits | ||
10 | Finalize Game |