Skip to content
Snippets Groups Projects
DevelopmentPlan.tex 6.44 KiB
Newer Older
\documentclass{article}
Sida Wang's avatar
Sida Wang committed
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{tabularx}

Sida Wang's avatar
Sida Wang committed
\title{\textbf{SE 3XA3: Development Plan\\MineCraft}}
Sida Wang's avatar
Sida Wang committed
\author{\textbf{Group Number: }307\\
		\textbf{Group Name: }3 Craftsmen \\
		\textbf{Members: }\\
		Hongqing Cao 400053625\\
		Sida Wang	 400072157\\
		Weidong Yang 400065354}
%\input{../Comments}

\begin{document}

\begin{table}[hp]
\caption{Revision History} \label{TblRevisionHistory}
\begin{tabularx}{\textwidth}{llX}
\toprule
\textbf{Date} & \textbf{Developer(s)} & \textbf{Change}\\
\midrule
Sida Wang's avatar
Sida Wang committed
Jan 27 & Hongqing & Added team information\\
Jan 30 & All & Discussed about the content\\
Jan 30 & Sida Wang & Finished the content of all parts according to the discussion\\
... & ... & ...\\
\bottomrule
\end{tabularx}
\end{table}

\newpage

\maketitle

\section{Team Meeting Plan}
Sida Wang's avatar
Sida Wang committed
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.

\begin{itemize}
	\item \textbf{Monday} 12:30 - 14:20,    ITB 236
	\item \textbf{Thursday} 12:30 - 14:20,    ITB 236
	\item Occasionally,    Thode Library 1st Floor
\end{itemize}

\subsection{Roles}
\textbf{Chair:} Weidong Yang\\
Responsible for selecting topics and creating the meeting agenda. \\\\
\textbf{Timekeeper:} Hongqing Cao\\
Responsible for ensuring the meeting starts and ends on time and keeping the distribution of time on each topic balanced.\\\\
\textbf{Notetaker:} Sida Wang\\
Sida Wang's avatar
Sida Wang committed
Responsible for recording valuable information and summarizing the meetings.\\
Sida Wang's avatar
Sida Wang committed

\subsection{Rules For Agenda}
\textbf{Pre-meeting:}
\begin{itemize}
Sida Wang's avatar
Sida Wang committed
	\item The chair will create an agenda sheet for a specific meeting including general topics, activities, and questions to be discussed. Other team members should preview the agenda sheet before the meeting.
	\item An item checklist may be produced by the chair when multiple topics are to be discussed.
Sida Wang's avatar
Sida Wang committed
	\item Any absence for meetings should be reported before the meeting starts.
\end{itemize}
\textbf{During meeting:}
\begin{itemize}
	\item The timekeeper should ensure that the meeting starts and ends on time.
Sida Wang's avatar
Sida Wang committed
	\item The chair will record the attendance of each member at the beginning of the meeting. 
Sida Wang's avatar
Sida Wang committed
	\item The meeting will start with a review of the agenda sheet. This will ensure that all team members are fully prepared.
Sida Wang's avatar
Sida Wang committed
	\item The meeting will end with a review of the meeting's effectiveness. Each team member should give at least one piece of advice on how to improve the effectiveness of the next meeting. The notetaker will summarize the meeting at the end.
Sida Wang's avatar
Sida Wang committed
\end{itemize}


\section{Team Communication Plan}
Sida Wang's avatar
Sida Wang committed
\begin{itemize}
Sida Wang's avatar
Sida Wang committed
	\item \textbf{Facebook Messenger} group chat will be used for internal communications including inquiries, the share of resources, and discussion.
Sida Wang's avatar
Sida Wang committed
	\item \textbf{Gitlab} will be the main tool for communications of development changes and updates.
Sida Wang's avatar
Sida Wang committed
\end{itemize}


\section{Team Member Roles}
Sida Wang's avatar
Sida Wang committed
\begin{center}
\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}

\section{Git Workflow Plan}
Sida Wang's avatar
Sida Wang committed
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.

\section{Proof of Concept Demonstration Plan}
Sida Wang's avatar
Sida Wang committed
\subsection{Scope and Feasibility}
Sida Wang's avatar
Sida Wang committed
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. 
Sida Wang's avatar
Sida Wang committed
\subsection{Potential Challenges and Risks}
Sida Wang's avatar
Sida Wang committed
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.
\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.
Sida Wang's avatar
Sida Wang committed
\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.
Sida Wang's avatar
Sida Wang committed
\begin{itemize}
	\item \textbf{Programming Language: }Python
	\item \textbf{Graphical User Interface: }Pyglet
Sida Wang's avatar
Sida Wang committed
	\item \textbf{Testing Tools: }Pytest
Sida Wang's avatar
Sida Wang committed
	\item \textbf{Documentation Tools: }Doxygen
Sida Wang's avatar
Sida Wang committed
	\item \textbf{Version Control: }Gitlab
Sida Wang's avatar
Sida Wang committed
	\item \textbf{Other Tools: }Pyinstaller
Sida Wang's avatar
Sida Wang committed
\end{itemize}
Sida Wang's avatar
Sida Wang committed
The Coding Style is \textbf{PEP-8} for this project.
\section{Project Schedule}
Sida Wang's avatar
Sida Wang committed
The project schedule can be found \href{https://gitlab.cas.mcmaster.ca/wangs132/minecraft/blob/master/ProjectSchedule/ProjectSchedule_3XA3_307.pdf}{\textbf{HERE}}.
Sida Wang's avatar
Sida Wang committed
To be completed in Revision 1.