Meetings will primarily be held twice a week in the lab room according to the lab schedule. Additional meetings will be held in Thode Library at any time when necessary.
...
...
@@ -78,27 +94,49 @@ Responsible for recording valuable information and summarizing the meetings.\\
\section{Team Member Roles}
\begin{center}
\FloatBarrier
\begin{table}[hbt!]
\centering
\begin{tabular}{ |c|l| }\hline
\textbf{Team Member}&\textbf{Role(s)}\\\hline
Weidong Yang & Team Leader, Pyglet \& Algorithm Expert\\\hline
Hongqing Cao & LaTex \& Documentation Expert\\\hline
Sida Wang & Scribe, Git Project Manager\\\hline
\end{tabular}
\end{center}
\caption{\textbf{Team Member Roles}}
\end{table}
\FloatBarrier
\section{Git Workflow Plan}
\subsection{Overview}
The \textbf{Git Master and Feature Branch} will be used to manage software development. One team member will create his/her local branch and work on it. This workflow allows different modules to be developed and tested in each team member's localized branch and do not cause conflicts. Sida will be responsible for the git master controls and will ensure all the files are completed.
Requirements Document Draft & February 7 & SRS-Rev.0 \\\hline
Proof of Concept Demonstration & February 13 & N/A\\\hline
Test Plan Draft & February 28 & TP-Rev0 \\\hline
Revision 0 Design and Documentation & March 13 & DD-Rev0 \\\hline
Revision 0 Demonstration & March 19 & N/A \\\hline
Revision 1 Demonstration & April 2 & N/A \\\hline
Revision 1 Design and Documentation & April 6 & DD-Rev1 \\\hline
\end{tabular}
\caption{\textbf{Millstones and Gitlab Tags}}
\end{table}
\FloatBarrier
\section{Proof of Concept Demonstration Plan}
\subsection{Scope and Feasibility}
The original project is implemented using Python within one module. To optimize modularity, our reimplementation will follow the software architecture MVC(Model, View, Controller) model. Since Python is an object-oriented programming language, the modular design is feasible using different classes to implement.
\subsection{Potential Challenges and Risks}
The hardest part of the reimplementation will be Adding new categories of blocks. In the original project, all blocks are static and have no other interactions with the player besides being built or destroyed. In our expectation, new blocks with unique properties such as Lava, which will burn the player out, will be added to the game. These new types of blocks will require more complex interactions with the player, which is difficult to implement. Since the original game is using the content of Minecraft, the customization of the reimplementation heavily depends on the texture resources from the internet. The most difficult part of testing is to test the interaction between the player and the world within the game. Similar to most 3D games, it is hard to mitigate the risk of bugs using traditional testing methods.
The hardest part of the reimplementation will be adding new categories of blocks. In the original project, all blocks are static and have no other interactions with the player besides being built or destroyed. In our expectation, new blocks with unique properties such as Lava, which will burn the player out, will be added to the game. These new types of blocks will require more complex interactions with the player, which is difficult to implement. To mitigate this challenge, we plan to model the game blocks as objects, and to program unique algorithms to apply to different blocks. Also since the original game is using the content of Minecraft, the customization of the reimplementation heavily depends on the texture resources from the internet. The most difficult part of testing is to test the interaction between the player and the world within the game. Similar to most 3D games, it is hard to mitigate the risk of bugs using traditional testing methods. To make the game stable and enjoyable, our testing team will dynamically test the game by spending a significant amount of time playing it.
\subsection{Software Resources}
The Pyglet package provides cross-platform windowing and multimedia library. With Pyglet, visually rich small games can be feasible to build. Pytest provides powerful unit testing and functional testing but does not fully support solutions to integration testing. All the libraries using by this project will be easily installed on either Windows or Linux machines. The game will be delivered as an executable file(generated by Pyinstaller) in order to optimize the portability.
\subsection{Demonstration}
The demonstration will be done on both a Windows and a Linux system. On each machine, one team member will click on the icon of the executable game file and play the game. The player will travel the world for a certain distance and have some interactions between different types of blocks. The flying mode will also be activated to show its functionality. To overcome the risk of 3D bugs, some extreme spots(defined by exploratory testing) will be reached.
The demonstration will be done on both Windows and Linux systems. On each machine, one team member will click on the icon of the executable game file and play the game. The player will travel the world for a certain distance and have some interactions between different types of blocks. The flying mode will also be activated to show its functionality. To overcome the risk of 3D bugs, edge case testings will be performed.