diff --git a/Thesis/Thesis.tex b/Thesis/Thesis.tex
index 78fc130..edf77d7 100644
--- a/Thesis/Thesis.tex
+++ b/Thesis/Thesis.tex
@@ -14,6 +14,7 @@
\usepackage{leading}
\usepackage[nottoc]{tocbibind}
\usepackage{titleps}
+\usepackage{float}
% From specification:
% Tytuł tabeli
% Umieszczony nad tabelą (manually by setting caption above table)
@@ -23,7 +24,7 @@
% Źródło rysunku/tabeli -> Pod rysunkiem lub tabelą (manually by setting caption below table)
% Przypis dolny -> numeracja ciagla w calej pracy, kroj bezszeryfowy analogiczy jak w tekscie, rozmiar 9
\usepackage[font=footnotesize, justification=raggedright]{caption}
-
+\usepackage{svg}
% Kroj pisma tytulow glownych rozdzialow
% pogrubiony bezszeryfowy -> wyzej
% tytul 1 poziomu 14
@@ -192,12 +193,20 @@
\chapter{ Introduction }
\section{Background and Motivation}
-Among us, computer science students, video games were—and still are—one of the driving forces pushing us into the field of IT. Video games allow people with technical background to express their artistic side and create visually stunning projects. In particulra "Match Three" games, characterized by their intuitive mechanics and satisfying gameplay, have attracted millions of players around the globe. They offer statisfying experience of aligning three or more similar game pieces, often resulting in gratyfying chain reactions. This lead to success of titles like "Candy Crush Saga" and "Bejeweled", staple titles for both mobile and desktop market.
+Among us, computer science students, video games were—and still are—one of the driving forces pushing us into the field of IT. Video games allow people with technical background to express their artistic side and create visually stunning projects. In particular "Match Three" games, characterized by their intuitive mechanics and satisfying gameplay, have attracted millions of players around the globe. They offer statisfying experience of aligning three or more similar game pieces, often resulting in gratyfying chain reactions. This lead to success of titles like "Candy Crush Saga" and "Bejeweled", staple titles for both mobile and desktop market.
+
+\begin{figure}[h]
+
+\includegraphics[scale=0.5]{allgates}
+\caption{Minecraft redstone offers introduciton to logical gates \cite{raspberrypi2023}}
+\end{figure}
Match three games are from technological point of view relatively easy to make, despite that there is no dedicated open-source game engine designed just for them. This engineering thesis aims to fill this void, to give back to the world of game developers and open-source projects.
Another motivation is a chance to learn one of the most popular graphical API - OpenGL, It is a graphical API which proved useful again and again with video game engines, rendering engines or for desktop applications.
+
+
\section{Scope of the Thesis}
Game development is a broad spectrum, This section aims to define to what extent the game engine will be developed
@@ -209,10 +218,24 @@ While game engines can be created for multiple game genres, this thesis focuses
Another important part of the thesis is multiplatform game development. We will focus on three major desktop operating systems: Windows, Mac, and GNU/Linux. The challenges associated with creating an uniform gaming experience across these platforms, taking into consideration differences in architecture, functionality and graphics.
+\begin{figure}[htp]
+\centering
+\includegraphics[scale=0.50]{platforms.png}
+\caption{Logos of platforms we will be focusing on, from left: Windows, Mac and Linux \cite{platforms}}
+\label{}
+\end{figure}
+
\subsection{Tool and Library Integration}
This thesis will make biggest use of OpenGL API together with libraries: GLFW, GLAD, FreeType, stb\_image, and ft2build. In order used for platform-independed creation of windows, context and handling inputs, loader for OpenGL, library for rendering text, library for loading images and library for building free type sources. Later in the thesis we will dvelfe deeper into those libraries
+\begin{figure}[htp]
+\centering
+\includegraphics[scale=1.00]{images/glfw.png}
+\caption{GLFW project logo \cite{glfwLogo} }
+\label{}
+\end{figure}
+
\subsection{Theoretical and Practical Exploration}
Main portion of this thesis is practical implementation, still we are going to explore theoretical concepts crucial for game engine development.
@@ -255,6 +278,13 @@ Expandin on this formula, 1980s and 1990s saw games like "Columns" and "Dr. Mari
In 2001 game titled "Bejeweled" came out. Simplifying and refining the mechanics of "Shariki", "Bejeweled" was the first mainstream success of Match Three genre. It provided intuitive gameplay, visually appealing graphics and set the benchmark for games that followed.
+\begin{figure}[htp]
+\centering
+\includegraphics[scale=0.50]{images/bejeweld.jpg}
+\caption{Bejeweled gameplay \cite{bejeweledGameplay} }
+\label{}
+\end{figure}
+
The success of "Bejeweled" lead to several innovation. Developers experimented with various twists on the core mechanics. Games introduced power-ups, barriers, objectives, and narrative elements. "Candy Crush Saga", released in 2012, integrated a level-based progression system, increasing the genre's complexity and depth.
\subsection{Technological Influences and Platform Diversification}
@@ -273,7 +303,14 @@ Game developres try to reach wider audiences by ensuring that their creations ar
\subsection{The Need for Multiplatform Development}
-There are three main operating systems, Windows, Mac, and GNU/Linux which together are responsible for over 90\% of desktop market share, the potential to reach a bigger audience increases when a game is made available across all of these platforms.
+There are three main operating systems, Windows, Mac, and GNU/Linux which together are responsible for over 90\% of desktop market share \cite{marketShareChart}, the potential to reach a bigger audience increases when a game is made available across all of these platforms.
+
+\begin{figure}[H]
+\centering
+\includegraphics[scale=0.50]{chart.png}
+\caption{Desktop OS market share worldwide \cite{marketShareChart}}
+\label{}
+\end{figure}
\subsection{Challenges in Multiplatform Development}
@@ -306,6 +343,13 @@ The gaming industry has seen rise of various game engines, each offering a uniqu
\subsection{Unity Game Engine}
+\begin{figure}[htp]
+\centering
+\includegraphics[scale=0.25]{images/unity.png}
+\caption{Unity engine logo \cite{unityLogo}}
+\label{}
+\end{figure}
+
Unity is one of the most popular game engines available today. It's known for its versatility, supporting a wide range of platforms, from PCs to consoles to mobile devices.
\begin{itemize}
@@ -315,6 +359,13 @@ Unity is one of the most popular game engines available today. It's known for it
\subsection{Unreal Engine}
+\begin{figure}[htp]
+\centering
+\includegraphics[scale=0.10]{images/unreal.png}
+\caption{Unreal engine logo \cite{unrealLogo}}
+\label{}
+\end{figure}
+
Epic Games' Unreal Engine stands out for its impressive graphical capabilities, often employed in AAA game titles.
Strengths:
@@ -331,6 +382,13 @@ Limitations:
\subsection{Godot}
+\begin{figure}[H]
+\centering
+\includegraphics[scale=0.05]{images/godot.png}
+\caption{Godot game engine logo \cite{godotLogo}}
+\label{}
+\end{figure}
+
Godot is the biggest multipurpose game engine that is also free and open-source.
Strengths:
@@ -347,6 +405,25 @@ Strengths:
\subsection{RPG Maker and Ren'Py}
+\begin{figure}[htp]
+\centering
+
+\begin{minipage}{0.5\textwidth}
+\centering
+\includegraphics[scale=0.25]{images/renpy.png}
+\caption{Ren'Py engine logo \cite{renpyLogo}}
+\label{fig:renpylogo} % You might want to give a label for future referencing
+\end{minipage}%
+\begin{minipage}{0.5\textwidth}
+\centering
+\includegraphics[scale=0.25]{images/rpgMaker.jpg}
+\caption{RPG Maker engine logo \cite{rpgMakerLogo}}
+\label{fig:rpgmakerlogo} % You might want to give a label for future referencing
+\end{minipage}
+
+\end{figure}
+
+
RPG Maker and Ren'Py are examples of game engines focusing on one genre of games.
RPG Maker focues on top-down rpg games, while ren'py aims to ease the process of making visual novel games. Both of those engines were used with commercial and critical success, with creation of games like "To The Moon" and "Doki Doki Literature Club". Their limitations are both their strenght and weaknesses, allowing to speedup development process but blocking the developer for leaving the area of interest for those engines.
@@ -358,10 +435,19 @@ While existing game engines offer a lot of tools and capabilities, there exists
\chapter{Basics of Game Engine Design}
\section{Core Components of Game Engines}
-Game engines serve as the backbone for game development, providing a selection of tools and features that simplify the process of creating a game from scratch. At the heart of every game engine lie its core components, which define its capabilities, flexibility, and performance. This section explains those foundational elements.
+Game engines serve as the backbone for game development, providing a selection of tools and features that simplify the process of creating a game from scratch. At the heart of every game engine lie its core components, which define its capabilities, flexibility, and performance. This section explains those elements that we are going to implement in our engine.
+
+\begin{figure}[htp]
+\centering
+\includegraphics[scale=0.50]{images/gameEngineComponents.drawio.pdf}
+\caption{Components used in our game engine}
+\label{}
+\end{figure}
+
\subsection{Rendering Engine}
+
The rendering engine is responsible for all visual aspects within a game. It takes the game's data – including textures and shaders – and converts them into pixels on the screen.
\begin{itemize}
@@ -423,6 +509,13 @@ One of OpenGL's strengths lies in its extensible design, allowing to include adv
\subsection{Cross-Platform Development}
+\begin{figure}[htp]
+\centering
+\includegraphics[scale=0.70]{images/openglWikipedia.png}
+\caption{Connection between Linux and OpenGL-based games \cite{openGLWikipedia}}
+\label{}
+\end{figure}
+
Gamers are spread across Windows, Mac, GNU/Linux, and other platforms, OpenGL's platform-independent allows for creating games for all platforms.
\begin{itemize}
@@ -472,6 +565,13 @@ There are platform-specific nuances in how graphics are presented.
\subsection{File System and Data Management}
+\begin{figure}[htp]
+\centering
+\includegraphics[scale=1.00]{images/windowsLinuxSlash.jpg}
+\caption{Separating folders with backslash and forward slash is one of many differneces between Windows and Linux systems \cite{windowsLinuxSlash} }
+\label{}
+\end{figure}
+
File systems varies between Windows, Mac, and GNU/Linux, influencing how game data is stored, retrieved, and updated.
\begin{itemize}
@@ -1141,7 +1241,7 @@ Lastly, probably the biggest challenge was managing time for this thesis. Finish
\chapter{Appendices}
-% \bibliography{sample}
+\bibliography{references}
diff --git a/Thesis/images/allgates.png b/Thesis/images/allgates.png
new file mode 100644
index 0000000..d23c323
Binary files /dev/null and b/Thesis/images/allgates.png differ
diff --git a/Thesis/images/bejeweld.jpg b/Thesis/images/bejeweld.jpg
new file mode 100644
index 0000000..fa8d8c3
Binary files /dev/null and b/Thesis/images/bejeweld.jpg differ
diff --git a/Thesis/images/candyCrush.jpg b/Thesis/images/candyCrush.jpg
new file mode 100644
index 0000000..fcd07f0
Binary files /dev/null and b/Thesis/images/candyCrush.jpg differ
diff --git a/Thesis/images/chart.png b/Thesis/images/chart.png
new file mode 100644
index 0000000..848a29a
Binary files /dev/null and b/Thesis/images/chart.png differ
diff --git a/Thesis/images/drawio.drawio b/Thesis/images/drawio.drawio
new file mode 100644
index 0000000..fa64357
--- /dev/null
+++ b/Thesis/images/drawio.drawio
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Thesis/images/gameEngineComponents.drawio.pdf b/Thesis/images/gameEngineComponents.drawio.pdf
new file mode 100644
index 0000000..a7f31ad
Binary files /dev/null and b/Thesis/images/gameEngineComponents.drawio.pdf differ
diff --git a/Thesis/images/glfw.png b/Thesis/images/glfw.png
new file mode 100644
index 0000000..81dff65
Binary files /dev/null and b/Thesis/images/glfw.png differ
diff --git a/Thesis/images/godot.png b/Thesis/images/godot.png
new file mode 100644
index 0000000..c7b370a
Binary files /dev/null and b/Thesis/images/godot.png differ
diff --git a/Thesis/images/kdiamond.png b/Thesis/images/kdiamond.png
new file mode 100644
index 0000000..92892a1
Binary files /dev/null and b/Thesis/images/kdiamond.png differ
diff --git a/Thesis/images/openGLWikipedia.svg b/Thesis/images/openGLWikipedia.svg
new file mode 100644
index 0000000..2b8947e
--- /dev/null
+++ b/Thesis/images/openGLWikipedia.svg
@@ -0,0 +1,356 @@
+
+
+
diff --git a/Thesis/images/openglWikipedia.png b/Thesis/images/openglWikipedia.png
new file mode 100644
index 0000000..6334539
Binary files /dev/null and b/Thesis/images/openglWikipedia.png differ
diff --git a/Thesis/images/platforms.png b/Thesis/images/platforms.png
new file mode 100644
index 0000000..a2783ff
Binary files /dev/null and b/Thesis/images/platforms.png differ
diff --git a/Thesis/images/renpy.png b/Thesis/images/renpy.png
new file mode 100644
index 0000000..919fa36
Binary files /dev/null and b/Thesis/images/renpy.png differ
diff --git a/Thesis/images/rpgMaker.jpg b/Thesis/images/rpgMaker.jpg
new file mode 100644
index 0000000..9c44a23
Binary files /dev/null and b/Thesis/images/rpgMaker.jpg differ
diff --git a/Thesis/images/sheep.png b/Thesis/images/sheep.png
new file mode 100644
index 0000000..136558d
Binary files /dev/null and b/Thesis/images/sheep.png differ
diff --git a/Thesis/images/source.txt b/Thesis/images/source.txt
new file mode 100644
index 0000000..7876066
--- /dev/null
+++ b/Thesis/images/source.txt
@@ -0,0 +1 @@
+https://helloworld.raspberrypi.org/articles/bbcc-exploring-logic-gates-in-minecraft - Figure 1, redstone
\ No newline at end of file
diff --git a/Thesis/images/unity.png b/Thesis/images/unity.png
new file mode 100644
index 0000000..ffca09b
Binary files /dev/null and b/Thesis/images/unity.png differ
diff --git a/Thesis/images/unreal.png b/Thesis/images/unreal.png
new file mode 100644
index 0000000..f97c221
Binary files /dev/null and b/Thesis/images/unreal.png differ
diff --git a/Thesis/images/windowsLinuxSlash.gif b/Thesis/images/windowsLinuxSlash.gif
new file mode 100644
index 0000000..3a52729
Binary files /dev/null and b/Thesis/images/windowsLinuxSlash.gif differ
diff --git a/Thesis/images/windowsLinuxSlash.jpg b/Thesis/images/windowsLinuxSlash.jpg
new file mode 100644
index 0000000..051864d
Binary files /dev/null and b/Thesis/images/windowsLinuxSlash.jpg differ
diff --git a/Thesis/references.bib b/Thesis/references.bib
new file mode 100644
index 0000000..2ae726d
--- /dev/null
+++ b/Thesis/references.bib
@@ -0,0 +1,95 @@
+@online{redstoneGates,
+ author = {Martin O'Hanlon},
+ title = {Exploring logic gates in Minecraft},
+ year = {2023},
+ url = {https://helloworld.raspberrypi.org/articles/bbcc-exploring-logic-gates-in-minecraft},
+ note = {Accessed: 2023-08-20}
+}
+
+@online{platforms,
+ title = {Windows Mac Linux Logo},
+ year = {2009}, % Adjust the year if you know the specific publication year.
+ url = {https://www.nicepng.com/downpng/u2w7w7y3e6a9r5i1_windows-mac-linux-logo/},
+ note = {Accessed: 2023-08-20}
+ organization = {NicePNG}
+}
+
+@online{glfwLogo,
+ title = {GLFW Logo},
+ year = {2013}, % Adjust the year if you know the specific publication year.
+ url = {https://www.glfw.org/},
+ note = {Accessed: 2023-08-20}
+ organization = {The GLFW Development Team}
+}
+
+@online{bejeweledGameplay,
+ title = {Bejeweled gameplay},
+ year = {2001}, % Adjust the year if you know the specific publication year.
+ url = {https://www.youtube.com/watch?v=ZEXtEUVexzA},
+ note = {Accessed: 2023-08-20}
+ organization = {PopCap Games and Electronic Arts}
+}
+
+@online{marketShareChart,
+ title = {Desktop Operating System Market Share Worldwide Chart},
+ year = {2023}, % Adjust the year if you know the specific publication year.
+ url = {https://gs.statcounter.com/os-market-share/desktop/worldwide},
+ note = {Accessed: 2023-08-20}
+ organization = {Global Stats}
+}
+
+@online{unityLogo,
+ title = {Unity Game Engine Logo},
+ year = {2005}, % Adjust the year if you know the specific publication year.
+ url = {brand.unity.com},
+ note = {Accessed: 2023-08-20}
+ organization = {Unity Technologies}
+}
+
+@online{unrealLogo,
+ title = {Unreal Game Engine Logo},
+ year = {2014}, % Adjust the year if you know the specific publication year.
+ url = {www.unrealengine.com},
+ note = {Accessed: 2023-08-20}
+ organization = {Epic Games}
+}
+
+@online{godotLogo,
+ title = {Godot Game Engine Logo},
+ year = {2014}, % Adjust the year if you know the specific publication year.
+ url = {https://godotengine.org/},
+ note = {Accessed: 2023-08-20}
+ organization = {Godot Foundation}
+}
+
+@online{rpgMakerLogo,
+ title = {RPG Maker Engine Logo},
+ year = {2015}, % Adjust the year if you know the specific publication year.
+ url = {https://www.rpgmakerweb.com/},
+ note = {Accessed: 2023-08-20}
+ organization = {Gotcha Gotcha Games Inc}
+}
+
+@online{renpyLogo,
+ title = {Ren'Py Game Engine Logo},
+ year = {2004}, % Adjust the year if you know the specific publication year.
+ url = {https://www.renpy.org/},
+ note = {Accessed: 2023-08-20}
+ organization = {Tom "PyTom" Rothamel}
+}
+
+@online{openGLWikipedia,
+ title = {Linux kernel and OpenGL video games},
+ year = {2014}, % Adjust the year if you know the specific publication year.
+ url = {https://commons.wikimedia.org/wiki/File:Linux_kernel_and_OpenGL_video_games.svg},
+ note = {Accessed: 2023-08-20}
+ author = {ScotXW https://commons.wikimedia.org/wiki/User:ScotXW}
+}
+
+@online{windowsLinuxSlash,
+ title = {PCMag encyclopedia backslash},
+ year = {2013}, % Adjust the year if you know the specific publication year.
+ url = {https://www.pcmag.com/encyclopedia/term/backslash},
+ note = {Accessed: 2023-08-20}
+ organization = {PCMag}
+}