engineer-thesis-WUT/Thesis/Thesis.tex

272 lines
8.3 KiB
TeX
Raw Normal View History

\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}
\usepackage{leading}
2022-08-23 14:19:26 +02:00
\usepackage[nottoc]{tocbibind}
\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
\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}
% 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,
}
\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{
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}
\newfontfamily{\adagioLight}{Adagio Slab Light}
\newfontfamily{\helveticaLight}{HelveticaLTStd-Light}
\newfontfamily{\helvetica}{Helvetica}
2022-08-22 13:43:33 +02:00
\newcommand{\tytul}{
Tworzenie aplikacji multiplatformowych na podstawie tworzenia silnika do gier "match three"
}
\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}
2022-08-18 20:09:21 +02:00
{\fontsize{24}{24}\adagio Politechnika Warszawska }
\end{center}
\begin{center}
{\fontsize{12}{12}\adagio \addfontfeature{LetterSpace=41.0} Wydział Elektroniki i Technik Informacyjnych}
\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}
2022-08-20 18:14:52 +02:00
{\fontsize{43}{43}\adagioLight Praca dyplomowa inżynierska}
\\[24pt]
{\fontsize{12}{12}\helveticaLight na kierunku Computer Science}
2022-08-20 18:14:52 +02:00
{\fontsize{12}{12}\helveticaLight na specjalno{\fontsize{12}{12}\adagioLight ś}ci Computer Systems and Networks \\[50pt]}
2022-08-22 13:43:33 +02:00
{\fontsize{14}{14}\helvetica \tytul \\[50pt]}
{\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
{\fontsize{12}{12}\helveticaLight numer albumu 307585 \\[24pt]}
2022-08-20 18:05:52 +02:00
{\fontsize{12}{12}\helveticaLight promotor }
2022-08-20 18:05:52 +02:00
{\fontsize{12}{12}\helvetica dr hab. inż. Tomasz Martyn \\[12pt]}
2022-08-20 18:05:52 +02:00
{\fontsize{12}{12}\helveticaLight konsultacje }
2022-08-20 18:05:52 +02:00
{\fontsize{12}{12}\helvetica dr hab. inż. Tomasz Martyn \\[40pt]}
2022-08-20 18:05:52 +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
\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-16 19:29:30 +02:00
\end{document}