Skip to content

tesiawu/MafiaManager

 
 

Repository files navigation

Group number: 10
Team Members: Aishwarya Shashidhar, Robby Stigler, Tesia Wu, Daniel Zheng
Name of project: Mafia Manager
Dependencies: Xcode 10.1, Swift 4, Firebase, Multipeer Connectivity
Special Instructions:
- You have to open the file MafiaManager.xcworkspace (as opposed to the file MafiaManager.xcodeprog).
- Use an iPhone XR Simulator
- Before running the app, run "pod install" inside the MafiaManager folder where the podfile is located
- To test the connection between two players, you need to run another simulator. Use iPhone X.


Final Release:


| Feature                                    | Description                                                                                                   | Release Planned | Release Actual | Deviations (if any) | Who/Percentage Worked on                        |
|--------------------------------------------|---------------------------------------------------------------------------------------------------------------|-----------------|----------------|---------------------|-------------------------------------------------|
| Login                                      | Sign up, log in, and load welcome page                                                                        | Alpha Release   | Alpha Release  | None                | Tesia (100%)                                    |
| UI                                         | main colors, design, preventing blank white space, constraints/formatting                                     | Final Release   | Final Release  | None                | Tesia (40%) Aish  (40%) Daniel (20%)            |
| Deck/Card Management - Basic UI            | Creating the views for deck/card detail, deck/card creation, editing                                          | Alpha Release   | Alpha Release  | None                | Robby (50%) Aish  (40%) Daniel (10%)            |
| Deck/Card Management - Full Implementation | Implementing functionality for editing decks/cards, creating decks/cards, deleting decks/cards, copying cards | Beta Release    | Beta Release   | None                | Robby (45%) Tesia (45%) Daniel (10%)            |
| Gameplay - Basic UI                        | Narrator view, player view for gameplay                                                                       | Alpha Release   | Alpha Release  | None                | Robby (80%) Aish  (10%) Daniel (10%)            |
| Gameplay - Full Implementation             | Networking logic, getting player information to sync across devices                                           | Beta Release    | Beta Release   | None                | Robby (55%) Tesia (35%) Daniel (10%)            |
| Settings - UI                              | instructions                                                                                                  | Alpha Release   | Alpha Release  | None                | Robby (33%) Tesia (33%) Aish (33%)              |
| Settings - Full Implementation             | Muted, default timer, logout                                                                                  | Beta Release    | Beta Release   | None                | Robby (50%) Tesia (30%) Daniel (20%)            |
| Search Functionality                       | Searching functionality for decks and cards throughout the app                                                | Final Release   | Final Release  | None                | Robby (100%)                                    |
| Timer                                      | Timer to play the game                                                                                        | Beta Release    | Beta Release   | None                | Tesia (30%) Robby (30%) Daniel (20%) Aish (20%) |
| History Tab                                | Stretch goal to record the winners of a game, and presenting the stored results in the history tab            | Stretch Goal    | Final Release  | None                | Tesia (50%) Aish  (40%) Robby (10%)             |
| Bugs                                       | Fixing bugs that arose throughout the project                                                                 | Final Release   | Final Release  | None                | Robby (55%) Daniel (25%) Tesia (10%) Aish (10%) |


- Tesia: (Release 35%, Overall 32%)
  - Pair programmed with Aish for the UI design
  - Pair programmed with Aish to debug network issues with Firebase in the History tab
  - Firebase functionality in the History Tab
  - Wrote the slides

- Aish: (Release 15%, Overall 17%)
  - Pair programmed with Tesia for the UI design
  - History Tab inital design and implementation with dummy data
  - Pair programmed with Tesia to debug network issues with Firebase in the History tab
  - Pair programmed with Robby to debug networking issues in gameplay

- Robby: (Release 35%, Overall 33%)
  - General bug Fixes
  - Finalizing Networking Issues

- Daniel: (Release 15%, Overall 18%)
  - General bug fixes
  - Maintaining / touching up UI design across changes
  - Pair programmed with Robby to debug networking issues in gameplay

---------------------------------------------------------------------------------------------------------------------------------------

Beta Release:
  - This release has most of the functionality of our project. There are a few things that don't yet have functionality, 
    and we will specify this in the Clarifications/Differences section.
  - The game is best seen on the iPhone XR (this is clarified in the Known Bugs section)
  - For the Deck icons and Card icons, you can press and hold to delete 
    (we need to add a label to clarify, and we will for the next release)
  
Testing Instructions:
 - It's best if you use two simulators to test the networking. 
   At the start of the game, on simulator should be the narrator and the other should be the player. 
   The narrator can follow the given directions and once it gets to the "Wait for Players" view, the narrator needs to wait 
   for the players to connect. The player can then connect and a popup should show the devices that are available. The player 
   should then select the narrator and the narrator can then press the "Start" button to begin the game. 
   If a player leaves, the narrator will not be notified and the table will not change. 
   If the narrator leaves, the players will be notified.


Contributions:
https://start.ubuntu-mate.org/
Tesia (Release 35%, Overall 30%)
  - Deck Management functionality
    - Pair programmed with Robby to implement Deck Management folder: creating, editing, deleting decks and cards. 
      Also helped with styling those views and logic for them. 
    - Also helped with the copying card functionality into a certain deck.
  - Gameplay functionality
    - Helped with the networking logic and setting up the views 
      (when a player connects and the narrator presses start, the player should be able to see their role)
    - Pair programmed with Aish to do the narrator dashboard player statuses during gameplay 
      (when the narrator hits "revive" or "kill", the narrator should be able to see the updated player status on their table)
    - Timer functionality in the gameplay setting for narrator

Daniel (Release 15%, Overall 20%)
  - Contraints & UI Upkeep
    - Maintained constraint standards across the whole project. Eliminated any conflicts or issues that popped up.
    - Tested and fixed UI to work better on smaller phones (iPhone 8).
    - General UI cleanup
  - Player Status Networking
    - Pair programmed with Robby to implement the player status updates over the network communication. 
      When a narrator changes a player's status from 'Alive' to 'Dead' or vice versa, 
      the change should reflect on that player's screen.
  - General Bugfixes
    - Added checks to timer to prevent user from adding multiple threads to start the timer.
      - Also cleaned up the timer functionality to work properly
    - Added input checks to prevent invalid entries
      - Prevented user from entering a game with 0 players
      - Prevented narrator from starting a game with not enough players

Aish (Release 10%, Overall 17.5%)
  - Gameplay Functionality
    - Pair programmed with Tesia to store player statuses on the narrator dashboard during gameplay. 
        Implemented the kill/revive button and made sure that the status on both the individual player view on the narrator dashboard
        and the table view updated properly. 
  - General Bug Fixes
    - Worked on making the collection view cells show up properly for both iPhone 8 and iPhone XR
    - Pair programmed with Daniel to propect against invalid entries such as the narrator starting the game with an
        insufficient number of players

Robby (Release 40%, Overall 32.5%)
  - Deck Management functionality
    - Pair programmed with Tesia, implementing Deck and Card creation, editing, and deletion functionality
    - Did some styling changes
  - Gameplay Functionality
    - Created functionality for the narrator to set up the game, including choosing a deck number of players per role, 
      and connecting the narrator to players
    - Created networking helper class (MPCManager) for MultipeerNetworking
    - Implemented messaging between narrator and players to kick players, send kill messages, and end the game


Differences:
 - In our Design doc, we stated that the player would be able to pick which narrator to join from a table view, 
   but with the MultipeerConnectivity library, it already gives us a popup to select which device to connect to. 
   Therefore, when trying to connect to a narrator, the player can just select the device the narrator has.


Clarifications:
 - This wasn't clear in our proposal, but we have not implemented searching functionality. We will do so during the final release.
 - While it said in our proposal that we'd have the statistics functionality done for this release, we also specified in the 
   Alpha release that because that is releated to our stretch goal (the History tab), we would include that with our final release. 
   This should be shown when the narrator taps "Skip" or "Record Winners" at the very end of the game. 
   For now, it just leads the narrator back to the initial view of the player tab 
   (Start Game as Narrator and Join Game as Player options).
 - It was never specified in our proposal, but we have decided to save everything into Core Data for now, meaning each 
   unique user doesn't have their own decks/cards/game. We were thinking for the final release, when the user logs in, 
   they download their data and information onto their own device, using Core Data.
 - The most number of connections with the multipeer networking is 8 for this release. For the final release, 
   we were thinking of possibily allowing it to handle more connections.


Known Bugs:
 - In the Decks and Cards tab, when you press and hold on a deck/card to delete it, it jiggles. If you continue to let it 
   jiggle and then press the add deck/card cell, it will add the deck/card and the old decks/cards will jiggle and be deletable, 
   EXCEPT for the one that you just added.
 - When you let the app close and reopen it, the app will automatically go to the welcome loading page and stay there. 
   We should fix this to to the Decks tab.











Alpha Release:
  - This release is the skeleton of our project. What we have right now is what our app is going to look and feel like, 
    but most functionality has not yet been implemented.

Contributions:

Tesia (25%)
  - Login/Register page and functionality
    - You can log in and register and it will authorize it/create that account like in HW6
  - Can also save user information/profile and retrieve it from the Firebase database
    - For example, the welcome loading page shows that user's name they signed up with.
    - In the future, this will be how we store the user's game data as well
  - Welcome Loading screen 
  
Daniel (25%)
  - Help / instructions
    - A simple TextView with information about the app's purpose, and instructions on the many features found in the app.
  - Constraints and UI clean up
    - Made everything *pretty* and consistent with sizing, margins, and contraints.
  - End game view (Narrator Only)
    - The end game result screens that appear when the game is over.
    - The Narrator should be able to select players in the table to indicate who are the 'winners' of the game. 
      - This is for bookkeeping purposes, and can be viewed in the 'History' tab.
      - The functionality has not been implemented yet, and appears blank for now.
      
Aish (25%)
  - Card and Deck creation views
    - Did views for browsing Decks, creating Decks, browsing cards, and creating cards.
    - Browsing uses a CollectionView for that grid look/feel.
    - Deck and Card creation skeleton implemented in Storyboard.
  
Robby (25%)
  - Game views and Dashboard
    - Added views for both the narrator and player setup. No functionality (promised for Beta), but layout and skeleton for
      selecting a deck, customizing number of characters, adding players, and joining a game.
    - Created narrator dashboard. At this point is an empty table with a button to end the game, a timer, and settings view
    - Timer view created, no functionality but uses a picker for up to 15min59sec.
  - Settings view	
    - Simple view with an option to mute the game, designate a default timer length, and log out of the game. Also includes
      a help segue to the instructions page

Differences:
 - In our proposal we had a slight contradiction, saying that we would work on the statistics page during Alpha, but also that stats/history is a stretch goal
   We decided to keep it as a stretch goal hopefully as part of the final release (as clarified in our design doc)
 - Removed the edit button in Deck Management, and replaced it with a 'Settings' button that should be accessible on all three tabs.

 
 
Clarifications:
 - While we have search bars built in, we did not fill out the functionality to dismiss them.
 - While there is a log in functionality, there is no log out functionality because in our Proposal we stated that is part of our settings page functionality.
 - In our design doc, we forgot to include a section for game instructions. To account for this we put this as part of the settings 
 - A lot of the views won't look like much due to lack of data. 
   - Due to this, we have temporary buttons so you can access the views dependent on collection/table data.
   

About

CS371 iOS Project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 99.8%
  • Ruby 0.2%