---
# System prepended metadata

title: PROJECT_PLAN

---

# PROJECT_PLAN

## Names
Daniela Bocanegra (dib4@duke.edu) 
Kyra Chan (ktc22@duke.edu) 
Erik Gregorio (eg158@duke.edu) 
Jackson McNabb (jdm109@duke.edu) 
Thomas Quintanilla (tq11@duke.edu)


* Kyra:
    * Week 1: Focus on Building Basic Game Structure
        * Focus on building hierarchy for View classes, e.g. ViewManager, StyledView, ViewScene
        * For ViewManager, create method that switches between scenes
        * For StyledView, create setDefaultCSS() method and attachCSS() method
        * First create HomeScene and GameCenterScene with default Guest user before handling player profiles
        * Work on using reflection to build GameCenterScene grid of games to select from (will need to use XML reader).
        * Then work on using reflection to build overall structure of GameScene (will need to use XML reader) for:
            * Top Menu, which should contain almost the same info for every game (HBox)
            * Game Menu, which should contain game-specific info about the player's status (HBox)
            * Game Area (default background image, player character, starting configuration, etc.)
            * Action Toolbar, which should contain buttons for the user to play/pause game, preferences, and game statuses (VBox) – although these buttons may not be actionable yet
            * User Toolbar, which should contain the player's info and game settings – some buttons may also not be actionable yet, such as update to premium
        * Implement high scores feature (on front-end)
    * Week 2: Focus on Implementing a Few Games + Player Profiles
        * Create dark mode
        * Build player profiles
        * Implement save game / load game feature
        * Implement customization tools, such as increasing animation speed, default powerups and available characters
        * Implement more example games (~3 by this point) on front-end
    * Week 3: Focus on Implementing More Variety in Games
        * Implement more example games (10 by this point) on front-end
        * Finish up any other incomplete features
* Thomas:
    * Week 1: Focus on constructing the Frontend and Backend API and bridging them together
        * Create a list of interactions that would occur between the backend and frontend.
        * Develop frontendAPI interface with list of commands to bridge the two together.
        * Construct Controller class to hold FrontendAPI and BackendAPI interfaces
        * Help Kyra with any UI components needed
    * Week 2: Work on front end object interaction
        * Send any object interactions to back end to apply any game rules defined
        * Handle collisions between objects based on game rules
        * Help Kyra with any UI components needed
    * Week 3: Focus on implementing more variety in games with Kyra
        * Help build UI components needed for each specific game
        * Design any levels needed for each game.
        * Help Kyra with any UI components needed

* Daniela: 
    * Week 1: Focus on creating all interfaces and implemement them to begin building all necessary components for a basic game. 
        * Create a player object that is controlled by user input that can traverse game area
        * Begin implementing a full game.
    * Week 2: Implement more complex environment objecs. Bring together all game components. Have one full game.
        * Begin working on second game/another variation.
    * Week 3: Implement final additional features. Implement more games and variations.
        * Work on implementing levels.
        * Work on saving and loading game state.

* Erik: 
    * Week 1: Focus on creating and defining interactions between objects.
        * Having enemies and platforms that interact with player.
        * Begin implementing a full game.
    * Week 2: Implement powerups. Bring together all game components. Have one full game.
        * Develop player-power up interactions.
    * Week 3: Implement final additional features. Implement more games and variations.
        * Add functionality to enable/disable premium features.
        * Implement game replay so that users can compete against themselves.

* Jackson 
    * Week 1: Develop and augment a simple XML creation mechanic capable of constructing proof-of-concept player databases that can then be read. This includes, when constructed, player usernames and passwords database and game type and basic preferences.
    * Week 2/Week 3: As soon as functions and features on both the frontend and backend become developed work with devs to inherit data and dynamically change as data is then read mid-run or pre-run. Also, develop alert mechanic per feature to alert users to failures of parsing and allow for reified bug testing. Split up classess depending on direction of developments as development progresses.

