Skip to content

Project DECAY Overview

Alex Hoopes edited this page Feb 23, 2024 · 8 revisions

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 🧟‍♂️🧟‍♀️

Table of Contents

Features

These are the high-level features that we would like this project to support.

  1. 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
  2. Character Creation Wizard

    • Character creation is streamlined into a series of questions, rather than filling out a character sheet directly
  3. Multiple Game Saves

    • Users can start or be a part of multiple ongoing games
  4. 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
  5. Player Survival Mechanics

    • Hunger/Thirst
    • Sleep
    • Maximum Carry Load
    • Gasoline for vehicles
    • Injuries
  6. Randomized Encounters with Humans and Zombies

    • Events will occur to bring the survivors into contact with zombies and other (non-player) humans somewhat regularly
  7. Realistic World Progression Over Time

    • Power goes out as the grid fails
    • Food rots unless it is canned or stored properly

Game Theme and Background

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.

Technology Stack

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.

Frontend

Backend

Third-Party Tools

Development Guidelines

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.

Development Environment

Our development environment will be containerized for ease of development.

Coding Standards

  1. All code will be automatically formatted and linted on file save.
  2. We will maintain test coverage of 90%.
  3. We will perform unit, integration, and end-to-end testing.
  4. Every line of code must come with a treat for Dre.
    • A single Goldfish cracker will count as a single treat.
  5. We will follow normal variable and file naming conventions for TypeScript and PostgreSQL.
  6. All functions will have a descriptive comment explaining what the functions and what the parameters are.

Git Workflow

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

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

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

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

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>

Deployment Strategy

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.

Pull Requests

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

Roadmap

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```
Loading