mirror of
https://github.com/kuhyx/engineer-thesis-WUT.git
synced 2026-07-04 13:23:09 +02:00
feat: fixes before pdf
This commit is contained in:
parent
f10a05ba74
commit
5d439bc2cc
Binary file not shown.
@ -713,98 +713,6 @@ Specialized tools like FreeType and stb\_image elecate the visual experience of
|
||||
|
||||
\chapter{Design and Architecture of the Match Three Engine}
|
||||
|
||||
\section{Requirements}
|
||||
|
||||
\subsection{Functional Requirements (FR)}
|
||||
\begin{enumerate}
|
||||
\item \textbf{Game Initialization and Setup (FR1)}:
|
||||
\begin{itemize}
|
||||
\item The engine shall initialize a game board with a predetermined square size (e.g., 8x8).
|
||||
\item The game board shall be populated randomly with different colored pieces.
|
||||
\item The initial game board should not have any matches (three or more of the same colored pieces in a row or column).
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{User Interactivity (FR2)}:
|
||||
\begin{itemize}
|
||||
\item Players shall be able to select a piece.
|
||||
\item Players shall be able to swap the selected piece with an adjacent piece (up, down, left, or right) to form a match.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Matching Logic (FR3)}:
|
||||
\begin{itemize}
|
||||
\item When three or more pieces of the same color align vertically or horizontally, they shall be recognized as a match.
|
||||
\item Matched pieces shall be removed from the board.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Board Update (FR4)}:
|
||||
\begin{itemize}
|
||||
\item After pieces are matched and removed, new pieces shall drop down to fill the vacant spaces.
|
||||
\item The board shall continuously check for matches after each update.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Scoring System (FR5)}:
|
||||
\begin{itemize}
|
||||
\item Players shall earn points for each match made.
|
||||
\item Bonus points shall be awarded for matches greater than three pieces.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Game Over Logic (FR6)}:
|
||||
\begin{itemize}
|
||||
\item The game shall end when no moves are left.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Pause and Resume (FR7)}:
|
||||
\begin{itemize}
|
||||
\item Players shall be able to pause and resume the game.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Game Difficulty Levels (FR8)}:
|
||||
\begin{itemize}
|
||||
\item Make the game more difficult or easy by giving player more or less turns to play
|
||||
\end{itemize}
|
||||
\end{enumerate}
|
||||
|
||||
\subsection{Non-functional Requirements (NFR)}
|
||||
\begin{enumerate}
|
||||
\item \textbf{Performance (NFR1)}:
|
||||
\begin{itemize}
|
||||
\item The game engine shall ensure smooth animations without any lag.
|
||||
\item Match detection should occur within milliseconds to ensure real-time response.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Usability (NFR2)}:
|
||||
\begin{itemize}
|
||||
\item The game interface shall be intuitive.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Portability (NFR3)}:
|
||||
\begin{itemize}
|
||||
\item The game engine should be platform-independent, allowing for easy deployment across different operating systems using C++ and OpenGL.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Maintainability (NFR4)}:
|
||||
\begin{itemize}
|
||||
\item The code shall be well-structured, modular, and commented, allowing for easy updates and maintenance.
|
||||
\item Utilize design patterns where applicable for cleaner and more understandable code.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Reliability (NFR5)}:
|
||||
\begin{itemize}
|
||||
\item The engine shall be robust enough to handle unexpected inputs without crashing.
|
||||
\item Memory leaks should be minimized, and efficient memory management practices should be followed.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Scalability (NFR6)}:
|
||||
\begin{itemize}
|
||||
\item The game engine shall support additional features or levels in the future without requiring a complete overhaul.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Documentation (NFR7)}:
|
||||
\begin{itemize}
|
||||
\item A comprehensive documentation detailing the architecture, algorithms, and functionalities should be provided. (For example in this thesis)
|
||||
\end{itemize}
|
||||
\end{enumerate}
|
||||
|
||||
\section{Game Loop and State Management}
|
||||
In the heart of every video game lies the game loop. This cycle dictates the game's pacing, ensuring that events, updates, and rendering processes all appear in a correct order. Game loop functions together with state management, which ensures the game behaves consistently in response to player actions and internal events. This section will focus on both the game loop and state management and how they influence our multiplatform Match Three game engine.
|
||||
|
||||
@ -1059,6 +967,99 @@ Drivers allow an operating system to interact with hardware:
|
||||
To address these challenges, our engine adopts abstraction layers: by utilizing existing libraries and solutions (OpenGL, GLAD and GLFW), our game engine is ready for easier adjustments for specific hardware.
|
||||
|
||||
\chapter{Implementation Details}
|
||||
|
||||
\section{Requirements}
|
||||
|
||||
\subsection{Functional Requirements (FR)}
|
||||
\begin{enumerate}
|
||||
\item \textbf{Game Initialization and Setup (FR1)}:
|
||||
\begin{itemize}
|
||||
\item The engine shall initialize a game board with a predetermined square size (e.g., 8x8).
|
||||
\item The game board shall be populated randomly with different colored pieces.
|
||||
\item The initial game board should not have any matches (three or more of the same colored pieces in a row or column).
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{User Interactivity (FR2)}:
|
||||
\begin{itemize}
|
||||
\item Players shall be able to select a piece.
|
||||
\item Players shall be able to swap the selected piece with an adjacent piece (up, down, left, or right) to form a match.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Matching Logic (FR3)}:
|
||||
\begin{itemize}
|
||||
\item When three or more pieces of the same color align vertically or horizontally, they shall be recognized as a match.
|
||||
\item Matched pieces shall be removed from the board.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Board Update (FR4)}:
|
||||
\begin{itemize}
|
||||
\item After pieces are matched and removed, new pieces shall drop down to fill the vacant spaces.
|
||||
\item The board shall continuously check for matches after each update.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Scoring System (FR5)}:
|
||||
\begin{itemize}
|
||||
\item Players shall earn points for each match made.
|
||||
\item Bonus points shall be awarded for matches greater than three pieces.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Game Over Logic (FR6)}:
|
||||
\begin{itemize}
|
||||
\item The game shall end when no moves are left.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Pause and Resume (FR7)}:
|
||||
\begin{itemize}
|
||||
\item Players shall be able to pause and resume the game.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Game Difficulty Levels (FR8)}:
|
||||
\begin{itemize}
|
||||
\item Make the game more difficult or easy by giving player more or less turns to play
|
||||
\end{itemize}
|
||||
\end{enumerate}
|
||||
|
||||
\subsection{Non-functional Requirements (NFR)}
|
||||
\begin{enumerate}
|
||||
\item \textbf{Performance (NFR1)}:
|
||||
\begin{itemize}
|
||||
\item The game engine shall ensure smooth animations without any lag.
|
||||
\item Match detection should occur within milliseconds to ensure real-time response.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Usability (NFR2)}:
|
||||
\begin{itemize}
|
||||
\item The game interface shall be intuitive.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Portability (NFR3)}:
|
||||
\begin{itemize}
|
||||
\item The game engine should be platform-independent, allowing for easy deployment across different operating systems using C++ and OpenGL.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Maintainability (NFR4)}:
|
||||
\begin{itemize}
|
||||
\item The code shall be well-structured, modular, and commented, allowing for easy updates and maintenance.
|
||||
\item Utilize design patterns where applicable for cleaner and more understandable code.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Reliability (NFR5)}:
|
||||
\begin{itemize}
|
||||
\item The engine shall be robust enough to handle unexpected inputs without crashing.
|
||||
\item Memory leaks should be minimized, and efficient memory management practices should be followed.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Scalability (NFR6)}:
|
||||
\begin{itemize}
|
||||
\item The game engine shall support additional features or levels in the future without requiring a complete overhaul.
|
||||
\end{itemize}
|
||||
|
||||
\item \textbf{Documentation (NFR7)}:
|
||||
\begin{itemize}
|
||||
\item A comprehensive documentation detailing the architecture, algorithms, and functionalities should be provided. (For example in this thesis)
|
||||
\end{itemize}
|
||||
\end{enumerate}
|
||||
|
||||
\section{Core Engine Implementation}
|
||||
For our Match Three game engine, we aimed to create a simple core, capable of ensuring basic gameplay and small codebase allowing developers to extend or modify the engine's capabilities as needed. This section describes the implementation of the Match Three game engine.
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user