From 867a6b110bb867f6f4d79818db738bc6644287f2 Mon Sep 17 00:00:00 2001 From: Krzysztof Stefan Rudnicki Date: Thu, 12 May 2022 12:22:00 +0200 Subject: [PATCH] Add @SpartaqS changes --- projectConcept/main.tex | 48 +++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/projectConcept/main.tex b/projectConcept/main.tex index b153e5e0..72121d22 100644 --- a/projectConcept/main.tex +++ b/projectConcept/main.tex @@ -3,6 +3,7 @@ \usepackage{listings} \usepackage{xcolor} \usepackage{graphicx} +\usepackage{soul} \lstdefinestyle{sharpc}{language=[Sharp]C, frame=lr, rulecolor=\color{blue!80!black}} @@ -19,33 +20,34 @@ \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 focus mainly on the parts of the game which represent how processes work in operating systems first, then on how the game actually looks and works +We will focus on the parts of the game which represent how processes work in operating systems first, then on how the game actually looks and works \subsection{Tools} -We will use Unity Game Engine, for simplicity sake we will use Mono-behaviours on prefabs of the soldiers. This is not the most optimal solution but it is easy enough to implement in realistic (one month) time. \\ -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 will actually work on the tasks. +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. \subsection{Dividing Tasks} -Every week our group will meet on Monday at 12:00 and work for approximately 3 hours. This ensures that everybody does similar amount of work. \\ -Dividing tasks will be done using trello before or at the beginning of the weekly meeting. +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. \newpage \subsection{Workflow} We use gitlab hosted on studia elka servers. There are 3 types of branches in our project: \begin{enumerate} - \item Main - Rarely used, hosting only stable versions of the game + \item Main - Rarely used, hosting stable versions of the game \item Development - Branch where we merge all individual branches and actively change on weekly basis. \item Individual branches - Created for each task and merged when this task is finished \end{enumerate} We also use separate scenes on which we will work for each member of the project. \\ -Branching and separate scenes minimize the risk of corrupted gitlab project and simplifies merging and management of the project. +Branching and separate scenes minimize the risk of corrupting the gitlab project and simplifies merging and management of the project. \section{Goals} \subsection{Minimum Viable Product} This is a minimum goal we want to achieve in order to consider this project as finished \\ -\paragraph{Goal of the game} Destroying enemy base, for sake of simplicity enemy base is just enemy "soldier" without option to attack, move and bigger health points. Destroying means reducing health points to zero. -\paragraph{Realization of goal} Attacking the base with our soldiers. +\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. \paragraph{Map} Map is divided into tiles @@ -63,29 +65,29 @@ Soldiers have following attributes: \item Damage per attack \item Speed of attack \end{itemize} -We decided to split range of attack and range of view since combining them can lead to difficult code problems to entangle should we reach higher level of our project. \\ -Soldiers take physical space - a tile \\ +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 occupy physical space - a tile \\ \subsubsection{Soldiers Communication} -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 to that. Used to simulate communication between operating system and processes. \\ -In order to communicate something to the whole squad (like killing enemy soldier), the soldier sends communicate to neighbours soldiers which further distribute this info to the whole squad. This is used to simulate processes communicating with each other. \\ -Every tick a single (topmost) action from the Soldier's action stack is executed +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 \\ -Every soldier has its own "stack" of actions, each tick he does one action from the top of the stack \\ -There are process interrupts send by the player which force the soldier to do something regardless of what he has on stack. +There are process interrupts sent by the player which force the soldier to perform a special action instead of executing what is on the action stack. \subsection{Squads} Exactly one squad on map \\ \begin{lstlisting}[caption={Pseudo-code for Squad class}] class Squad{ List soldiers - Queue orders + Queue orders } \end{lstlisting} \subsection{Fighting} -If the enemy is in rage of attack we attack \\ -Attack means that the closest enemy to the soldier, receives damage (which means that his health gets decreased) accordingly to the soldier stats) +If an enemy is within a Soldier's attack range, the Soldier will perform an "attack" action\\ +"Attack" means that the closest enemy to the soldier, receives damage (which means that its health gets decreased, accordingly to the soldier stats) \subsubsection{Player} Player orders are first in priority for soldiers, (like interrupt signals) \\ @@ -99,11 +101,11 @@ No AI \\ \subsection{Expansion 1} This is what we would like to introduce should we finish MVP. We mostly focused on operating systems and processes related features. \\ -Expansion 1 eeans that those are first features in prority we would like to +Expansion 1 means that those are first priority features we would like to implement after finishing minimum viable product. \subsubsection{Fighting} -Priority points regarding who should soldier attack based on distance from the -enemy, how many friendly soldiers are near or the enemy health. \\ +Priority points determining who the soldiers should attack based on distance from the +enemy, how many friendly soldiers are nearby or the enemy health. \\ 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 @@ -124,7 +126,7 @@ If there is at least one living soldier in a squad he will send every \textit{x} Symbolically player sees different color outlines of the squads based on whether they send statistics or not \subsection{Expansion 2} -Expansion 2 means that those are second features in prority we would like to +Expansion 2 means that those are second priority features we would like to implement after finishing minimum viable product AND expansion 1 Creating soldiers in the main base and spawning them near the base in a new squad. \\ Soldiers have limited resources (as in limited memory and CPU power) \\