-
Notifications
You must be signed in to change notification settings - Fork 0
/
report.tex
132 lines (108 loc) · 7.52 KB
/
report.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 6CCS3PRJ Final Year Individual Project Report
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[11pt]{informatics-report}
\usepackage{etoc}
\usepackage{fontspec}
\usepackage{fontawesome}
\usepackage{color}
\usepackage{hyperref}
\usepackage[justification=Centering]{caption}
\usepackage{float}
\newcommand{\link}[1]{\href{#1}{#1}}
\usepackage[square,sort,comma,numbers]{natbib} %References
%TC:subst \verbatiminput input
% https://tex.stackexchange.com/a/353234
\usepackage{calc}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\usepackage{pdfpages,graphicx}
\usepackage{mdframed}
\usepackage{listings}
\definecolor{light-gray}{gray}{0.92}
\definecolor{mainColor}{RGB}{211, 47, 47} % some dark red
\renewcommand\lstlistingname{Code}
\lstset{
language=Python,
numbers=left,
numbersep= 7mm,
numberstyle=\color{Black},
stepnumber=1,
tabsize=3,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
basicstyle=\color{Black}\ttfamily,
commentstyle=\color{LimeGreen},
keywordstyle=\color{BurntOrange}\bfseries,
stringstyle=\color{WildStrawberry},
keywords={var, func, extends},
frame=leftline,
framesep=0mm,
xleftmargin=3mm,% marge ajouté à gauche du tableau (à configurer en dernier pour l'alignement global du tableau)
framesep=2mm, %distance texte bord du cadre (limite de la background color)
framerule=0mm,
abovecaptionskip=5mm,
aboveskip=\baselineskip,
belowskip=\baselineskip
}
% \usepackage{tcolorbox}
% \tcbuselibrary{skins,breakable,listings}
% \newtcblisting[use counter=lstlisting]{codeblock}[2][]{%
% enhanced,noparskip,breakable,colback=light-gray,colframe=DarkSlateGray,opacitybacktitle=.8,%
% fonttitle=\bfseries,before upper={\hspace*{-1em}\includegraphics[height=\baselineskip]{example-image-a}~#2},%
% title after break={\centering\footnotesize\itshape\strut\lstlistingname~\thelstlisting~--~continued},%
% listing only,listing options={xleftmargin=-1mm},after upper={\centering\strut\lstlistingname~\thelstlisting:~#2},
% frame hidden,arc=0pt,outer arc=0pt,boxrule=0pt,frame code={\draw[gray,line width=2mm] ([xshift=-0.5pt]frame.north west) -- ([xshift=-0.5pt]frame.south west);},#1}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Front Matter - project title, name, supervisor name and date
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\title{6CCS3PRJ Final Year\\\vspace{0.2cm}Implementing Procedural Content Generation Algorithms in a Tile Map RPG in the Godot Game Engine}
\author{Zishan Rahman}
\studentID{20071291}
\supervisor{Senir Dinar}
\date{\today}
\abstractFile{FrontMatter/abstract.tex}
\ackFile{FrontMatter/acknowledgements.tex} %Remove line if you do not want acknowledgements
\begin{document}
\createFrontMatter
\onehalfspacing
\tableofcontents{}
\doublespacing
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Report Content
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% You can write each chapter directly here or in a separate .tex file and use the include command.
\chapter{Introduction}
%This is one of the most important components of the report. It should begin with a clear statement of what the project is about so that the nature and scope of the project can be understood by a lay reader. It should summarise everything that you set out to achieve, provide a clear summary of the project's background and relevance to other work, and give pointers to the remaining sections of the report, which will contain the bulk of the technical material.
Procedural Content Generation, or PCG, refers to the use of algorithms and programming in lieu of human handiwork to design and implement various contents in video games, such as levels, terrains, trees and cities. A PCG algorithm is ontogenetic when it tries to produce a foreseeable end result as it goes along. For this project, several well-known ontogenetic algorithms have been implemented in a basic 2D tile-map-oriented RPG-like game, using the open-source Godot game engine, and then comparing how each algorithm carries out the creation of levels in said game, both performance-wise and comparing the kinds of level layouts generated by each algorithm. The aim here is to weigh up the best algorithm for the chosen scenario based on how similar and how different each implementation of the algorithm provides with its level layouts, and show how every algorithm was well integrated into the chosen scenario and adapt the scenario and the algorithm as needed.
\section{Report Structure}
First, there will be some \hyperref[Background]{background} provided into the work done behind this dissertation, demonstrating some understanding of PCG in video games and eventually justifying the choice to use Godot, why a 2D tile map RPG was chosen to adapt to a PCG context and why each algorithm was chosen to implement each PCG algorithm into the defined scenario.
The main \hyperref[Body]{report body} will go through firstly how each algorithms works, and secondly go into how they were implemented into the chosen scenario at a surface-level explanation. This report goes into further detail in the \hyperref[Implementation]{Implementation} section.
The \hyperref[Design]{Design \& Specification} section will firstly go through what was sought after in every implementation of the chosen scenario, in order to be able to compare each implementation with one another and then determine how each algorithm was ranked according to the relevant criteria in the \hyperref[Evaluation]{Evaluation} section.
The \hyperref[Implementation]{Implementation} section will go into further detail than done in \hyperref[Body]{the report body} as to how each algorithm implemented and any code issues were worked around, including GDScript code snippets where needed.
The \hyperref[Issues]{Legal, Social, Ethical and Professional Issues} section will discuss how, firstly, any issues with any external code references used for any software artefacts were eventually worked around, and how integrity was practiced while doing so. Secondly, this section will go through the plans set out to make both the dissertation and the artefacts behind it publicly available while still taking care of any potential professional issues.
The \hyperref[Evaluation]{Results \& Evaluation} section will go through some of the quantifiable results obtained in experimenting with theses implementations and any custom values that were set during those experiments. This report has included these tables in the \hyperref[Appendix]{Appendix}, so as not to break the flow of the report itself. This section will also discuss the conclusions obtained and how each algorithm was ranked in terms of how they turned out with the given scenario, as well as how similar and different the produced level layouts were.
Finally, in the \hyperref[Conclusion]{Conclusion and Future Work} section, there will be a final summary of the conclusions obtained and discussed earlier, in addition to what was gained by the author of this report as a games programmer and student from this project, and where this project and its aims could be taken further.
\include{Chapters/Background}
\include{Chapters/Body}
\include{Chapters/DesignSpecification}
\include{Chapters/Implementation}
\include{Chapters/ProfessionalIssues}
\include{Chapters/Evaluation}
\include{Chapters/Conclusion}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% References
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\bibliographystyle{plain}
\bibliography{Bibliography/reference}
% \nocite{*}
\addcontentsline{toc}{section}{Bibliography}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Appendices
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\appendix
\include{Appendices/Appendix}
\include{Appendices/UserGuide}
\include{Appendices/SourceCode}
\end{document}