\author{Maciej Domański, Krzysztof Rudnicki, Gabriel Skowron-Rodriguez}
\date{\today}
\begin{document}
\maketitle
\section{Introduction}
\subsection{Goal of project}
Creating an analogy in form of a real time strategy game to operating system processes and how they function. \\
Each soldier in our game will represent a process which can receive and send signals from and to "the general" (player), soldiers communicate with each other, exchange information, divide resources among themselves and work together to achieve a goal or set of goals. \\
We will use the Unity Game Engine, for simplicity's sake we will use Mono-behaviours on prefabs to represent the soldiers. This is not the most performant solution but it is easy enough to implement in realistic (one month) timeframe.\\
When it comes to more detailed usage of different tools to accomplish different goals all of them will come up as the project progresses and we actually work on the tasks.
Every week our group will meet on Monday at 12:00 and work for approximately 3 hours. This will ensure that everybody does a similar amount of work. \\
Task division will be done using Trello before or at the beginning of the weekly meeting.
\paragraph{Goal of the game} Destroying enemy base.
For simplicity's sake, the enemy base is just a "soldier" without the ability to attack or move, with more health points. "Base destruction" is accomplished by reducing its health points to zero.
\paragraph{Realization of the goal} Attacking the base with our soldiers.
We have decided to split range of attack and range of view since combining them may lead to difficult code problems to solve should we reach higher level(s) of our project. \\
Soldiers receive global orders from the player but they use their local vision to fulfill those orders. (For example by looking at where their neighbours stand and adjust their position accordingly). Used to simulate communication between operating system and processes. \\
In order to communicate something to the whole squad (like killing of an enemy soldier), the soldiers sends a message to its neighbours, causing the info to be distributed to the whole squad immediately
\\ This is used to simulate processes communicating with each other. \\
Each soldier has its own Action "stack". Every tick a single (topmost) action from the Soldier's Action stack is executed
Soldiers automatically get in fighting distance to enemy soldiers \\
When soldier sees enemy he communicates so to the squad and the whole squad goes towards enemy
\subsubsection{Squads}
More than one squad \\
We can transfer soldiers between squads
\subsubsection{Commander panel}
Commander panel with all info regarding soldiers and squads, amount of enemy soldiers killed, where they are, whether they exist, ability to remove squads which do not send those statistics. \\
If there is at least one living soldier in a squad he will send every \textit{x} ticks statistics:
\begin{itemize}
\item How many soldiers are in the squad
\item Squad position
\item How many enemy soldiers does he see
\end{itemize}
\subsubsection{Player}
Symbolically player sees different color outlines of the squads based on whether they send statistics or not