-
Notifications
You must be signed in to change notification settings - Fork 0
Project DECAY Overview
Project DECAY is an online roleplaying game set in a zombie apocalypse, based on The End of the World's Zombie Apocalypse module. The core idea of this project, and the reason it is going to be hosted online, is because we want to augment your roleplaying session with your real-world surroundings using an overlay on top of something like Google Maps or OpenStreetMap. Basing your player character on yourself is already a core mechanic of the Zombie Apocalypse game, so this adds another layer to that theme.
Fun Fact: DECAY is an anagram for Apocalypse Chronicles: The Dead Emerged Yesterday 🧟♂️🧟♀️
These are the high-level features that we would like this project to support.
-
World Generation from Real Life Maps
- Defaults to the user's current location
- Supports starting from anywhere in the world if desired
- Generates "realistic" loot/encounters in nearby structures
-
Character Creation Wizard
- Character creation is streamlined into a series of questions, rather than filling out a character sheet directly
-
Multiple Game Saves
- Users can start or be a part of multiple ongoing games
-
Realistic Zombie Mechanics
- Zombie numbers/encounters are loosely based on the local population
- Infection and disease rates
- Zombie populations move around the world
- Fixed starting population that will decrease as players kill more of them
-
Player Survival Mechanics
- Hunger/Thirst
- Sleep
- Maximum Carry Load
- Gasoline for vehicles
- Injuries
-
Randomized Encounters with Humans and Zombies
- Events will occur to bring the survivors into contact with zombies and other (non-player) humans somewhat regularly
-
Realistic World Progression Over Time
- Power goes out as the grid fails
- Food rots unless it is canned or stored properly
Project DECAY is aiming to be a realistic roleplaying scenario, placing the players as themselves -- surroundings and all -- into the zombie apocalypse.
As the name implies, new games are always set one day after the beginning of the zombie apocalypse. As such, players will likely run into more human characters at first, until the zombie infection spreads enough that it begins to completely take over.
There is room for some dark humor, but generally the tone is meant to be pretty serious.
At this point in time, we aren't positive what our tech stack should be. We know that we want it to be available online, so it will have to utilize either JavaScript or something else that can be compiled to Web Assembly.
- React.js for the user interface.
- TypeScript
- Zustand for state management.
- Supabase with GraphQL for API interactions and real-time notifications/events.
- TypeScript
- Migraphile for database migrations.
- PostgreSQL for the database.
- Google Maps APIs
Established coding and design guidelines to maintain consistency throughout the development process. This section will include information on code style, version control practices, and documentation standards.
Our development environment will be containerized for ease of development.
- All code will be automatically formatted and linted on file save.
- We will maintain test coverage of 90%.
- We will perform unit, integration, and end-to-end testing.
- Every line of code must come with a treat for Dre.
- A single Goldfish cracker will count as a single treat.
- We will follow normal variable and file naming conventions for TypeScript and PostgreSQL.
- All functions will have a descriptive comment explaining what the functions and what the parameters are.
The main
branch will be the only long-lived branch in the repository. The current state of the staging environment will be represented by the most recent commit on the main
branch. The production environment will be represented by the most recent tag on the main
branch.
Feature branches should be created for new enhancements or features being added to the system.
Feature branches will meet the following naming convention: feat/<Issue ID>_<Short Description>
Bugfix branches should be created for any work that is meant to correct a feature working differently than originally intended.
Bugfix branches will meet the following naming convention: fix/<Issue ID>_<Short Description>
Chore branches should be created for any work that is necessary for the maintenance of the project or for improving developer experience. Chores should not have any effect on end-users of the product itself.
Chore branches will meet the following naming convention: chore/<Issue ID>_<Short Description>
DevOps branches should be created for any work that revolves around the deployment of code or CI/CD automations.
DevOps branches will meet the following naming convention: devops/<Issue ID>_<Short Description>
The frontend will be deployed as a static site in an AWS S3 bucket. The database and API will be deployed via Supabase.
Deployments to the staging environment will happen automatically on merge to main
. Deployments to the production environment will happen automatically on tag. We will use semantic versioning for our tags.
All code requires a pull request to be merged into main
.
Pull requests will:
- automatically verify that code matches our style guide
- automatically verify that test coverage meets our requirements
- be squashed on merge in order to maintain a clean commit history
- reference an issue that it is either contributing to or closing
- include instructions for manual testing by reviewers
- require a code review from at least one other contributor in order to maintain shared knowledge of the codebase
gantt
title Project DECAY Roadmap
dateformat DD-MM-YYYY
section Project Planning
Determine Tech Stack :pp1, 01-02-2024, 15d
Determine Development Guidelines :pp2, after pp1, 15d
Repository Setup :pp3, after pp2, 15d
section Milestone A
User Auth :ma1, after pp3, 15d
Game CRUD :ma2, after ma1, 15d
Map Integration :ma3, after ma2, 15d
Map Overlay :ma4, after ma3, 30d
section Milestone B
Character Creation :mb1, after ma4, 30d
Time Progression (Ideation) :mb2, after mb1, 15d
Loot Based on Map Structures :mb3, after mb2, 30d
Character Inventory Persistence :mb4, after mb3, 30d
section Milestone C
World Loot Persistence :mc1, after mb4, 30d
Zombie Generation Based on Location :mc2, after mc1, 30d
Zombie Persistence :mc3, after mc2, 30d
Zombie Swarm Behavior :mc4, after mc3, 30d
section Milestone D
Random Event Generation :md1, after mc4, 30d
Combat :md2, after md1, 30d
Thirst/Hunger/Disease Mechanics :md3, after md2, 30d
section Milestone E
Multiple Players Connected to Single Game :me1, after md3, 30d```