======================= Sprint 1: Team Building ======================= Objectives ########## - Familiarize yourself with GitHub for project management and source code/version control. - Familiarize yourself with Requirements/Use Cases for your 2D game project. - Organize and coordinate with your team. For the project in this course, you will be required to use task tracking software to coordinate with your teammates and document your progress on the project. Ideally, you will summarize your work at the end of each sprint by creating a burndown chart. You will also be required to use source/version control for your code through git and GitHub. Learning The Tools ################## GitHub resources: - Account creation: `GitHub Student Developer Pack `_ - Creating a repository, making commits, making pull requests: `GitHub Hello World Guide `_ - `Github Project Boards `_ - Everyone should create at least one task on the taskboard, connect to the team's repo, and commit one change to the code - `GitHub Help Documentation `_ - `Github Quick Feference / Cheat Sheet `_ - `Misc. learning materials from try.github.io `_ Team Building ############# Depending on whether or not you have preselected a full team you will likely need to do most of the following during the first few days of Sprint2. - Arrange an event (a meal, gaming, a sporting event, a movie, watching meme videos, any sort of activity that you have a shared interest in) and get to know each other better. - Create a team name and inform your instructor so that your placeholder team name can be replaced. - Work on learning your teammates' names. I expect you to know your teammates names before the end of the semester. - As a group, discuss your goals for the project and policies for how your team will operate. Write down what everyone is willing to agree to and have everyone sign it. Some ideas to consider: - What is everyone's preferred method of contact? Will the team make use of a communication or teamwork application such as MSTeams, Slack, Discord, Trello, etc.? - How often and long will your team meetings outside of class be? In-person or online? Entirely asynchronous? - Everyone should strive to make an excellent project that you are proud to include in your work portfolio. When you have to make decisions on where to focus the team's efforts, what are your priorities? Some options to weigh in no particular order: code cleanliness, project management documentation, communication and team morale, robustness of runtime behavior, team member specialization allowing different but equally appreciated contributions, and breadth of features. - As a group, discuss how you will resolve any conflicts or disagreements that might occur over the course of the project; write and sign what you agree on. - The situation most prone to spiraling out of control here centers on cases where one person's responsibilities are taken over by another. In some cases this may be reasonable, ex: a feature with little to no code 1-2 (or whatever your team agrees on, perhaps even up to 7) days before the end of a Sprint. This can lead to one person having nothing to work on, making them feel undervalued and less interested in contributing in the future, leading to more cases of late or missing work. I recommend you leave late or missing features for the team member they were assigned to and to implement a new feature that was not orignally planned to be included if you want to compensate. Big Picture Project Notes ######################### Starting with Sprint2 your team will begin a semester long project developing a 2D game engine. Currently, the standard project is an implementation of a 2D top-down adventure game, styled as the first dungeon of The Legend of Zelda (1986) with your own custom features added at near end of the semester. Teams may petition the instructor to implement a different 2D game, including ones from other genres such as a 2D platformer, but this will take more effort on planning, documentation, and communication of your project's functional requirements. If you do not have experience playing The Legend of Zelda or other 2D top down adventure games, please look into the resources :doc:`here `. Aside from playing the game itself, the most useful resources for requirements gathering are the game's user manual and videos of gameplay footage (useful search terms being: NES legend of zelda longplay speedrun). If someone on the team has a Nintendo Switch with Switch Online, the original Legend of Zelda game is available for emulation in the NES app. You will be expected to read your teammates' code, and by the end of the project you should be able to reimplement the entire project given enough time. However, since you'll only be implementing a subset of the game you should start to think about which parts you would prefer to work on and discuss that with your teammates. Near the end of the project you'll be adding new custom features of your choice, so if there are particular options you want to try (Sprint5 page lists some), you should make sure to be involved in the most closely related part of the project to ensure time and effort is spent on using abstractions and designing for ease of maintenance of it. This discussion on interests can also help in making sure critical features are assigned to someone with more experience or more time available to work on the project during the busier times of the semeseter. Assessment ########## Once your team has finished the team building document, creating and tracking tasks, as well as making code commits, contact your instructor during in-class team meeting time or during office hours to have your work checked. You may still ask to have your work for this activity checked during Sprint2. While this assignment is not graded with a numeric score, it is a sanity check on your usage of these project tools - be sure to ask for help if you're unsure on whether or not you're using the tools correctly.