Files
IDMT/Assignment_2_report.tex
2016-10-21 14:20:20 +01:00

93 lines
3.6 KiB
TeX

\documentclass[titlepage]{scrartcl}
\usepackage{enumitem}
\usepackage[british]{babel}
\usepackage[style=apa, backend=biber]{biblatex}
\DeclareLanguageMapping{british}{british-apa}
\usepackage{url}
\usepackage{float}
\restylefloat{table}
\usepackage{perpage}
\MakePerPage{footnote}
\usepackage{abstract}
\usepackage{graphicx}
% Create hyperlinks in bibliography
\usepackage{hyperref}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\setkomafont{disposition}{\normalfont\bfseries}
\usepackage{blindtext}
\setkomafont{disposition}{\normalfont\fontsize{12}{17}\bfseries}
\setkomafont{section}{\normalfont\fontsize{12}{17}\bfseries}
\setkomafont{subsection}{\normalfont\fontsize{12}{17}\itshape}
\setkomafont{subsubsection}{\normalfont\fontsize{12}{17}\itshape}
\graphicspath{{./resources/}}
\addbibresource{~/Documents/library.bib}
\usepackage{etoolbox}
\makeatletter
\makeatother
\DeclareCiteCommand{\citeyearpar}
{}
{\mkbibparens{\bibhyperref{\printdate}}}
{\multicitedelim}
{}
\begin{document}
\title{ECS742\\Interactive Digital Media Techniques\\Assignment 2: Processing Game}
\subtitle{\LARGE{Report}}
\author{Sam Perry\\Student Number: 160842984}
\date{}
\maketitle
\section*{Procedure}
Following instructions provided to create the initial game was a relatively
straight forward task, given previous experience in programming. The most
prominent problem was an array indexing error that occured when the
projectile left the screen. This was quickly fixed by adding conditions to
check if the projectile was on screen before attempting to access the
groundLevel array.\\
On completion of this, a number of further features were implemented to
build on the basic game. These included adding graphics to the background
(and other aesthetic changes), generating more detailed maps at random, and
adding a blast radius to projectiles when coliding with objects.
\section*{Findings}
It was observed that a number of DSP related techniques applied to
animations and content generation in this project.
For example, the generation of custom terrain was implemented by summing
sine waves of randomly varying amplitudes and phases. This generated hills
and valleys randomly (within pre-determined limits) to create a different
user experience for every game. Collision detection is also dependant on
sampling theory. For example, is fired directly from one tank to the other,
but the velocity is so high that it will cover over the width of the tank
in one frame, the projectile will appear to pass straight through the
target tank.\\
The other main features involved expanding on code that had been written
for previous tasks. for example, creating growing blast radiuses involved
checking for a collision with an object (such as the ground or a tank),
increasing the size of the object on each iteration, then checking for
collisions between the object and a tank.\\
The main difficulty, although rather minor, lied in adjusting to the Java
language. As familiar concepts such as passing variables by reference do
not exist in the language, learning the ``Java/Processing way'' of
implementing features was the main skill aquired in this project.\\
There are many further improvments that could be implemented in this
project. However, it would be of great benefit to refactor a large amount
of the code to take advantage of programming models such as OOP. This would
allow for quicker and less ``hacky'' implementations of features and would
improve overall code quality.
\printbibliography
\end{document}