2022-08-20 18:44:56 +02:00
|
|
|
\documentclass[a4paper,11pt,twoside]{report}
|
|
|
|
|
% From specification:
|
|
|
|
|
% kroj bezszeryfowy rozmiar 11
|
|
|
|
|
% Druk dwustronny A4
|
2022-08-22 13:26:35 +02:00
|
|
|
% Pod rozdzialy do trzech poziomow -> domyslnie zalatwione przez latexa
|
|
|
|
|
% Rozdzialy poziomu I od nowej strony -> domyslnie przez latexa
|
|
|
|
|
% Wyliczenia -> tylko kropka lub myslnik -> tylko kropka domylsnie przez latexa
|
|
|
|
|
|
2022-08-17 19:22:26 +02:00
|
|
|
\usepackage{fontspec}
|
2022-08-18 20:09:21 +02:00
|
|
|
\usepackage{anyfontsize}
|
|
|
|
|
\usepackage{graphicx}
|
|
|
|
|
\usepackage{geometry}
|
2022-08-20 18:44:56 +02:00
|
|
|
\usepackage{leading}
|
2022-08-23 14:19:26 +02:00
|
|
|
\usepackage[nottoc]{tocbibind}
|
2022-08-20 18:44:56 +02:00
|
|
|
\usepackage{titleps}
|
|
|
|
|
% From specification:
|
|
|
|
|
% Tytuł tabeli
|
|
|
|
|
% Umieszczony nad tabelą (manually by setting caption above table)
|
|
|
|
|
% Justowany do lewej -> raggedright
|
|
|
|
|
% Czcionka bezszeryfowa rozmiar 9 -> footnotesize (see: https://www.sascha-frank.com/latex-font-size.html)
|
|
|
|
|
% Podpis rysunku -> pod rysunkiem (manually by setting caption below table)
|
|
|
|
|
% Źródło rysunku/tabeli -> Pod rysunkiem lub tabelą (manually by setting caption below table)
|
2022-08-22 13:26:35 +02:00
|
|
|
% Przypis dolny -> numeracja ciagla w calej pracy, kroj bezszeryfowy analogiczy jak w tekscie, rozmiar 9
|
2022-08-20 18:44:56 +02:00
|
|
|
\usepackage[font=footnotesize, justification=raggedright]{caption}
|
|
|
|
|
|
2022-08-22 13:26:35 +02:00
|
|
|
% Kroj pisma tytulow glownych rozdzialow
|
|
|
|
|
% pogrubiony bezszeryfowy -> wyzej
|
|
|
|
|
% tytul 1 poziomu 14
|
|
|
|
|
% tytul 2 poziomu 13
|
|
|
|
|
% tytul 3 poziomu 12
|
|
|
|
|
\usepackage{sectsty}
|
2022-08-24 16:58:20 +02:00
|
|
|
|
2022-08-22 13:26:35 +02:00
|
|
|
\chapterfont{\fontsize{14}{14}\selectfont}
|
|
|
|
|
|
|
|
|
|
\sectionfont{\fontsize{13}{13}\selectfont}
|
|
|
|
|
|
|
|
|
|
\subsectionfont{\fontsize{12}{12}\selectfont}
|
|
|
|
|
|
|
|
|
|
|
2022-08-20 18:44:56 +02:00
|
|
|
% From specification:
|
|
|
|
|
% Numeracja tabel i rysunków:
|
|
|
|
|
% Ciagła w całej pracy <-----
|
|
|
|
|
% Kolejna w rozdziałach
|
|
|
|
|
\usepackage{chngcntr}
|
|
|
|
|
\counterwithout{figure}{chapter}
|
|
|
|
|
\counterwithout{table}{chapter}
|
|
|
|
|
|
|
|
|
|
% From specification:
|
|
|
|
|
% Odwołania do źródeł
|
|
|
|
|
% Styl numeracyjny wg normy PW
|
|
|
|
|
% OR Styl Harwardzki <-----
|
|
|
|
|
% Bibliografia w układzie alfabetycznych wg nazwisk autorów (has to be ensured manually)
|
|
|
|
|
\usepackage{natbib}
|
2022-08-24 16:58:20 +02:00
|
|
|
\usepackage{hyperref}
|
|
|
|
|
\hypersetup{
|
|
|
|
|
colorlinks=true,
|
|
|
|
|
linkcolor=blue,
|
|
|
|
|
filecolor=magenta,
|
|
|
|
|
urlcolor=cyan,
|
|
|
|
|
pdftitle={Overleaf Example},
|
|
|
|
|
pdfpagemode=FullScreen,
|
|
|
|
|
}
|
2022-08-20 18:44:56 +02:00
|
|
|
\bibliographystyle{agsm}
|
|
|
|
|
|
|
|
|
|
% From specification:
|
|
|
|
|
% Numeracja stron:
|
|
|
|
|
% U dolu
|
|
|
|
|
% Po zewnetrznej stronie
|
|
|
|
|
% Odbicie lustrzane na stronach parzystych i nie parzystych
|
|
|
|
|
\renewpagestyle{plain}{%
|
|
|
|
|
\sethead{}{}{}
|
|
|
|
|
\setfoot[\thepage][][]{}{}{\thepage}
|
|
|
|
|
}%
|
|
|
|
|
\pagestyle{plain}
|
|
|
|
|
|
|
|
|
|
% From specification:
|
|
|
|
|
% kroj bezszeryfowy rozmiar 11
|
|
|
|
|
\renewcommand{\familydefault}{\sfdefault}
|
|
|
|
|
|
|
|
|
|
% From specification:
|
|
|
|
|
% Akapit wciecie 0.5 cm <-----
|
|
|
|
|
% OR bez wciecia z odstepem 4 przed akapitem
|
|
|
|
|
\setlength{\parindent}{0.5cm}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
% From specification:
|
|
|
|
|
% Marginesy:
|
|
|
|
|
% wewnetrzny - 30 mm
|
|
|
|
|
% Zewnetrzny - 20 mm
|
|
|
|
|
% Gorny/dolny - 25 mm
|
2022-08-18 20:09:21 +02:00
|
|
|
\geometry{
|
2022-08-20 18:44:56 +02:00
|
|
|
inner=30mm,
|
2022-08-18 20:09:21 +02:00
|
|
|
outer=20mm,
|
2022-08-20 18:14:52 +02:00
|
|
|
top=25mm,
|
|
|
|
|
bottom=25mm,
|
2022-08-18 20:09:21 +02:00
|
|
|
}
|
|
|
|
|
\graphicspath{ {./images/} }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\newenvironment{centereq}[1][0.90]
|
|
|
|
|
{%
|
|
|
|
|
\trivlist
|
|
|
|
|
\centering
|
|
|
|
|
\setlength{\leftskip}{\dimexpr(\columnwidth-#1\columnwidth)/2\relax plus 1em}%
|
|
|
|
|
\setlength{\rightskip}{\leftskip}%
|
|
|
|
|
\item\relax
|
|
|
|
|
}
|
|
|
|
|
{\endtrivlist}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\newfontfamily{\adagio}{Adagio_Slab}
|
2022-08-19 20:45:16 +02:00
|
|
|
\newfontfamily{\adagioLight}{Adagio Slab Light}
|
2022-08-22 12:58:51 +02:00
|
|
|
\newfontfamily{\helveticaLight}{HelveticaLTStd-Light}
|
|
|
|
|
\newfontfamily{\helvetica}{Helvetica}
|
2022-08-22 13:43:33 +02:00
|
|
|
\newcommand{\tytul}{
|
2023-03-05 18:14:33 +01:00
|
|
|
Creating multiplatform applications with match three game engine as an example
|
2022-08-22 13:43:33 +02:00
|
|
|
}
|
|
|
|
|
\newcommand{\tytulEng}{
|
|
|
|
|
Example of creation of multiplatform apps on basis of creating match-three game engine
|
|
|
|
|
}
|
2022-08-17 19:22:26 +02:00
|
|
|
\begin{document}
|
|
|
|
|
\begin{titlepage}
|
2022-08-20 18:14:52 +02:00
|
|
|
\begin{minipage}{0.9\textwidth}%
|
2022-08-17 19:22:26 +02:00
|
|
|
\begin{center}
|
2023-03-05 18:14:33 +01:00
|
|
|
{\fontsize{24}{24}\adagio Warsaw University of Technology }
|
2022-08-18 20:09:21 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
\end{center}
|
|
|
|
|
\begin{center}
|
2023-03-05 18:14:33 +01:00
|
|
|
{\fontsize{12}{12}\adagio \addfontfeature{LetterSpace=41.0} FACULTY OF ELECTRONICS AND INFORMATION TECHNOLOGY}
|
2022-08-18 20:09:21 +02:00
|
|
|
|
|
|
|
|
\end{center}
|
|
|
|
|
\end{minipage}
|
|
|
|
|
\begin{minipage}{0.1\textwidth}%
|
|
|
|
|
\includegraphics[width=25mm, height=25mm]{logo.jpg}%
|
|
|
|
|
\end{minipage}
|
2022-08-20 18:14:52 +02:00
|
|
|
\\[100pt]
|
2022-08-18 20:09:21 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\begin{center}
|
2023-03-05 18:14:33 +01:00
|
|
|
{\fontsize{43}{43}\adagioLight Bachelor's diploma thesis}
|
2022-08-20 18:14:52 +02:00
|
|
|
\\[24pt]
|
2023-03-05 18:14:33 +01:00
|
|
|
{\fontsize{12}{12}\helveticaLight in the field of study Computer Science}
|
2022-08-19 20:45:16 +02:00
|
|
|
|
2023-03-05 18:14:33 +01:00
|
|
|
{\fontsize{12}{12}\helveticaLight and specialization Computer Systems and Networks \\[50pt]}
|
2022-08-20 18:14:52 +02:00
|
|
|
|
|
|
|
|
|
2022-08-22 13:43:33 +02:00
|
|
|
{\fontsize{14}{14}\helvetica \tytul \\[50pt]}
|
2022-08-19 20:45:16 +02:00
|
|
|
|
2022-08-22 12:58:51 +02:00
|
|
|
{\fontsize{12}{12}\helveticaLight numer pracy według wydzia{\fontsize{12}{12}\adagioLight ł}owej ewidencji prac \{liczba\} \\[12pt]}
|
2022-08-20 18:05:52 +02:00
|
|
|
|
2022-08-20 18:14:52 +02:00
|
|
|
{\fontsize{21}{21}\helvetica Krzysztof Rudnicki \\[12pt]}
|
2022-08-20 18:05:52 +02:00
|
|
|
|
2022-08-22 12:58:51 +02:00
|
|
|
{\fontsize{12}{12}\helveticaLight numer albumu 307585 \\[24pt]}
|
2022-08-20 18:05:52 +02:00
|
|
|
|
2022-08-22 12:58:51 +02:00
|
|
|
{\fontsize{12}{12}\helveticaLight promotor }
|
2022-08-20 18:05:52 +02:00
|
|
|
|
2022-08-22 12:58:51 +02:00
|
|
|
{\fontsize{12}{12}\helvetica dr hab. inż. Tomasz Martyn \\[12pt]}
|
2022-08-20 18:05:52 +02:00
|
|
|
|
2022-08-22 12:58:51 +02:00
|
|
|
{\fontsize{12}{12}\helveticaLight konsultacje }
|
2022-08-20 18:05:52 +02:00
|
|
|
|
2022-08-22 12:58:51 +02:00
|
|
|
{\fontsize{12}{12}\helvetica dr hab. inż. Tomasz Martyn \\[40pt]}
|
2022-08-20 18:05:52 +02:00
|
|
|
|
2022-08-22 12:58:51 +02:00
|
|
|
{\fontsize{12}{12}\helveticaLight Warszawa 2023}
|
2022-08-20 18:05:52 +02:00
|
|
|
\end{center}
|
|
|
|
|
|
|
|
|
|
|
2022-08-18 20:09:21 +02:00
|
|
|
|
2022-08-17 19:22:26 +02:00
|
|
|
\end{titlepage}
|
2022-08-18 20:09:21 +02:00
|
|
|
|
2022-08-22 13:43:33 +02:00
|
|
|
|
|
|
|
|
\subsubsection{Streszczenie pracy}
|
|
|
|
|
{\fontsize{12}{12}
|
|
|
|
|
\tytul \\
|
|
|
|
|
\{SLOWA KLUCZOWE\}
|
|
|
|
|
}
|
|
|
|
|
\newpage
|
|
|
|
|
\subsubsection{Thesis abstract}
|
|
|
|
|
\fontsize{12}{12}{\tytulEng \\
|
|
|
|
|
\{KEYWORDS\}
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-23 14:19:26 +02:00
|
|
|
\tableofcontents
|
|
|
|
|
|
2022-08-23 17:02:23 +02:00
|
|
|
\chapter{ Introduction }
|
|
|
|
|
\section{ Choice of graphic renderning API }
|
|
|
|
|
There are 3 main APIs for graphical rendering
|
|
|
|
|
\begin{itemize}
|
|
|
|
|
\item DirectX
|
|
|
|
|
\item OpenGL
|
|
|
|
|
\item Vulkan
|
|
|
|
|
\end{itemize}
|
|
|
|
|
DirectX developed by Microsoft focues on Windows operating systems and
|
|
|
|
|
Microsoft line of consoles Xbox, it is deemed as being harder with more
|
|
|
|
|
low level programming and requiring better understanding of how underlying
|
|
|
|
|
mechanisms work but in turn offers functionalities and better performance.
|
|
|
|
|
It does not have free license. \\
|
|
|
|
|
OpenGL is developed by Khronos Group and offers good compatibility,
|
|
|
|
|
especially if using OpenGL ES subset which works on Windows, Linux,
|
|
|
|
|
Mac OS, Android, iOS and all major consoles.
|
|
|
|
|
It is widely recognized as easiest of APIs and most popular choice
|
|
|
|
|
for writing first game engine. On the other hand it lacks some of
|
|
|
|
|
more advanced features which have to be written manually.
|
|
|
|
|
It uses open source license similar to BSD
|
|
|
|
|
\\
|
|
|
|
|
Vulkan is also developed by Khronos Group and as such is deemed as a
|
|
|
|
|
spiritual successor of OpenGL with focus on using modern C++ features and
|
|
|
|
|
fixing issues created by OpenGL 30 years old development time.
|
|
|
|
|
Out of these three it is recognized as the hardest one as
|
|
|
|
|
it is both complicated and newest. Similarly as OpenGL
|
|
|
|
|
it uses open source license, namely Apache License 2.0.
|
|
|
|
|
\\
|
|
|
|
|
Considering all of those characteristics I decided to go with OpenGL API,
|
|
|
|
|
specifically OpenGL ES subset with its focus on compatibility as
|
|
|
|
|
making a multiplatform application is one of the focues of this thesis.
|
|
|
|
|
I decided that since this will be my first attempt at game engine development
|
|
|
|
|
I need something that is relatively easy and has a lot of resources online.
|
|
|
|
|
I would most likely not use advanced features of Vulkan and DirectX and
|
|
|
|
|
therefore finish my thesis before approaching problems where OpenGL
|
|
|
|
|
does not deliver more complicated architecture.
|
|
|
|
|
From my own private preferences I also prefer software with
|
|
|
|
|
open source license.
|
2022-08-23 14:19:26 +02:00
|
|
|
|
2022-08-24 16:58:20 +02:00
|
|
|
\section{Choice of OpenGL Library}
|
|
|
|
|
There are 4 basic OpenGL libraries that I considered:
|
|
|
|
|
\begin{itemize}
|
|
|
|
|
\item freeGLUT
|
|
|
|
|
\item SDL
|
|
|
|
|
\item SFML
|
|
|
|
|
\item GLFW
|
|
|
|
|
\end{itemize}
|
|
|
|
|
freeGLUT was created as opensource alternative to GLUT,
|
|
|
|
|
is considered to be the worst out of all 4,
|
|
|
|
|
written in archaic way, using C or very old C++,
|
|
|
|
|
which in turn results in unexpected "buggy" behaviour,
|
|
|
|
|
it is also not really popular with lack of online guides \\
|
|
|
|
|
SDL - Simple DirectMedia Layer has big userbase,
|
|
|
|
|
it is not designed to by used as a standalone
|
|
|
|
|
library and requires additional libraries to do networking
|
|
|
|
|
or to create more complex applications. \\
|
|
|
|
|
SFML is the library with most features out of all 4,
|
|
|
|
|
it supports networking, audio and has system features by
|
|
|
|
|
default. It uses modern object oriented C++.
|
|
|
|
|
Main problem with SFML is that it is not very popular API,
|
|
|
|
|
therefore troubleshooting problems with SFML is quite hard and
|
|
|
|
|
it has only few use guides online \\
|
|
|
|
|
GLFW is an library that is both the most popular and with fewest features by default.
|
|
|
|
|
It forces users to use additional libraries for networking,
|
|
|
|
|
sound, physic calculations and so on but in turn is also
|
|
|
|
|
quite small and flexible. It has biggest community and a
|
|
|
|
|
lot of guides, like one hosted at
|
|
|
|
|
\href{learnopengl.com}{learnopengl.com} or one created by
|
|
|
|
|
programming youtuber Cherno \\
|
|
|
|
|
I decided to use GLFW library. I wanted something that is
|
|
|
|
|
relatively easy to troubleshoot and has abundance of
|
|
|
|
|
learning materials online.
|
|
|
|
|
|
2022-08-23 14:19:26 +02:00
|
|
|
|
|
|
|
|
% \bibliography{sample}
|
|
|
|
|
|
2022-08-20 18:44:56 +02:00
|
|
|
|
|
|
|
|
|
2022-08-16 19:29:30 +02:00
|
|
|
\end{document}
|
2022-08-23 17:02:23 +02:00
|
|
|
|