\documentclass[12pt,oneside]{article}

% Page geometry -- Oakland University requirements
\usepackage[left=1.5in, top=1in, right=1in, bottom=1.5in, footskip=0.5in]{geometry}

% Spacing
\usepackage{setspace}
\onehalfspacing

% Packages
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{esint}
\usepackage{graphicx}
\usepackage{url}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

% No widows/orphans
\widowpenalty=10000
\clubpenalty=10000

\begin{document}

% --- Title Page ---
\begin{titlepage}
\centering
\vspace*{2in}
{\Large\bfseries CROSS-PLATFORM OPEN SOURCE ISOMETRIC GAME DEVELOPMENT TARGETING THE ANDROID OPERATING SYSTEM\par}
\vspace{1in}
{\large ANTHONY J. DIPERNA\par}
\vspace{0.5in}
{\large THESIS FOR THE DEGREE OF MASTERS OF SCIENCE IN EMBEDDED SYSTEMS\par}
\vspace{1in}
{\large OAKLAND UNIVERSITY\par}
\vspace{0.25in}
{\large 2011\par}
\end{titlepage}

% --- Abstract ---
\begin{abstract}
It is becoming increasingly difficult to stay competitive as a solo developer
in the Mobile and Social gaming markets.
Historically, one of the greatest aspects of software design is that an
individual or small team of innovative developers could compete with much
larger corporations.
This window is, on one hand, closing as large corporations attempt to dominate
the mobile market, and growing with the relatively recent rise of open
source software.
This thesis describes a game engine named IsoMob that enables developers
to create isometric applications that target the World Wide Web, Desktop
PC and Android simultaneously.
It accomplishes this with a single code base written in HaXe.
HaXe is an abstraction language that is able to compile to various languages
such as C++, Actionscript 3.0, PHP, HTML5 and Javascript.
The design and implementation of the game engine are described, as well
as the results of an Application built using IsoMob.
\end{abstract}

% --- Table of Contents ---
\tableofcontents
\newpage

% ===================================================================
% SECTION 1: INTRODUCTION
% ===================================================================
\section{Introduction}

This thesis presents an isometric game engine that can target multiple platforms
with a single code base.
The engine is targeted at helping an individual or small team of developers
quickly and efficiently build an application that runs on Google Android,
Adobe Flash, and on any other C++ target.
There have been recent advances in cross-platform mobile game development,
but most of these solutions are targeted at either the very complex or
simplest of games.

\subsection{Motivation}

The range of applications being deployed to mobile environments deployed
today is considerably broader than it was even a few years ago.
The huge growth in the mobile market was a combination of cheap hardware,
abundant technology, and essentially the iPhone.
Since the iPhone was released, Google introduced the Android operating
system, HP acquired Palm (WebOS), Nokia partnered with Windows Phone, and
Motorola Spun off Motorola Mobility Holdings \cite{iPhoneChangedEverything}.
This breakthrough defined a new type of software application almost overnight;
the mobile application.
At the same time, Facebook also became a viable development platform.
Facebook transformed small development shops like Zynga, Playfish and Popcap
games into game juggernauts that could compete with industry incumbents
such as Electronic Arts (EA).

Small games,

\begin{itemize}
  \item Mobile Development
  \begin{itemize}
    \item Android
    \item Growth Rate
    \item Resources needed
    \item Complexity
    \item Speed To Market
    \item Competition
    \item One man shop
  \end{itemize}
  \item Why Cross-Platform?
  \begin{itemize}
    \item FaceBook
    \item Kongregate
    \item Problems it solves
    \item Problems it creates
  \end{itemize}
  \item HaXe
  \begin{itemize}
    \item What it is
    \item Why it was chosen
  \end{itemize}
  \item Isometric
  \begin{itemize}
    \item Filmation
    \item Similar Applications
    \begin{itemize}
      \item Bullet Hell
    \end{itemize}
  \end{itemize}
\end{itemize}

% ===================================================================
% SECTION 2: RELATED WORK
% ===================================================================
\section{Related Work}

\subsection{Cross-Platform Strategy}

\subsubsection{Scripting}

The Lua approach or Corona SDK / Moai

Using Lime, isometric support exists, but in beta state

\subsubsection{Adobe Flash}

\subsubsection{Adobe AIR}

\subsubsection{HTML5}

PhoneGap and Titanium

\subsubsection{Consistent API}

cocos2d, android uses Java, iPhone uses Objective-C, similar API

\subsubsection{Limitations}

\begin{itemize}
  \item Corona SDK
  \begin{itemize}
    \item Yearly Fee
    \item Each additional piece of SDK costs more money
    \begin{itemize}
      \item Lime
      \item Spriteloq
    \end{itemize}
    \item No one has done anything isometric yet (20mil downloads)
  \end{itemize}
  \item PhoneGap
  \begin{itemize}
    \item HTML5 Based
  \end{itemize}
  \item Titanium
  \begin{itemize}
    \item HTML5 Based
  \end{itemize}
  \item GameSalad
  \begin{itemize}
    \item HTML5 Based
  \end{itemize}
\end{itemize}

\subsection{Native Application}

C++ Application on Android

\subsection{Development Environment}

Testing software in FlashDevelop with Flash instead of using Emulator

\subsection{Summary}

Graph of competition and features

% ===================================================================
% SECTION 3: ENGINE DESIGN
% ===================================================================
\section{Engine Design}

Rather than creating an entire game engine from scratch, I designed IsoMob
based on proven game engine components.
The Axonometric projection is based on the very first isometric game
``Knight Lore'' \cite{onFilmation}, AI is based on steering behaviors
\cite{steeringBehaviors}, the physics is a mix of Euler and Verlet Integration.
This design decision facilitates the adoption of IsoMob with those familiar
with game programming experience.

\subsection{Isometry}

\subsubsection{Axonometric vs Dimetric}

\begin{figure}[h]
  \centering
  \includegraphics[width=0.7\textwidth]{figures/thesisIsovsDimetric.png}
  \caption{Isometric vs Dimetric Projection}
  \label{fig:iso-vs-dimetric}
\end{figure}

\subsubsection{Isometric Transform}

\begin{figure}[h]
  \centering
  \includegraphics[width=0.7\textwidth]{figures/thesisIsometricPicture.png}
  \caption{Isometric Projection}
  \label{fig:isometric}
\end{figure}

\subsection{Scenes}

\subsubsection{Triggers}

\subsubsection{Extensible Markup Language (XML)}

\subsection{Walls}

\subsection{Floors}

\subsection{Entities}

\subsection{Resources}

\subsubsection{Platform Specifics}

\subsubsection{Tilesheets}

\subsubsection{Characters}

\subsubsection{Objects}

\subsubsection{Textures}

\subsection{Rendering}

\subsubsection{Platform Specifics}

\subsubsection{Depthsorting}

\subsubsection{RTrees}

\subsection{Saving State}

% ===================================================================
% SECTION 4: ARTIFICIAL INTELLIGENCE (AI)
% ===================================================================
\section{Artificial Intelligence (AI)}

\subsection{Seek}

\subsection{Flee}

\subsection{Wall Avoidance}

\subsection{Object Avoidance}

\subsection{Formations}

\subsection{PathFinding}

\subsubsection{A*}

% ===================================================================
% SECTION 5: PHYSICS
% ===================================================================
\section{Physics}

\subsection{Method}

\subsection{Why Method Was Chosen}

\subsection{Limitations}

% ===================================================================
% SECTION 6: APPLICATION
% ===================================================================
\section{Application}

\subsection{Mechanics}

\subsection{Creating Scenes}

\subsection{Inventory}

\subsection{Item Libraries}

\subsection{Excel Macros}

\subsection{Heroes and Enemies}

\subsection{The Player}

\subsection{Animation}

\subsection{AI State Machine}

% ===================================================================
% SECTION 7: USER INTERFACE
% ===================================================================
\section{User Interface}

\subsection{Menu}

\subsection{Controls}

\subsection{Widgets}

% ===================================================================
% SECTION 8: IMPLEMENTATION
% ===================================================================
\section{Implementation}

\subsection{Design Goal}

\subsubsection{Motivation}

\subsection{Processor Utilization}

\subsection{Memory Usage}

\subsection{Frames Per Second (FPS)}

\subsection{Centralized Game Loop}

\subsubsection{Registering Game Events}

\subsection{Cross Platform Difficulties}

\subsubsection{Android}

\subsubsection{Flash}

\subsubsection{Desktop}

% ===================================================================
% SECTION 9: CONCLUSION
% ===================================================================
\section{Conclusion}

\subsection{Contributions}

\subsubsection{Open Source Game Engine}

\subsection{Future Work}

\subsubsection{Robustness}

\subsubsection{User Interface}

\subsubsection{Extensions to AI}

\subsubsection{Extensions to Physics}

\subsubsection{Evaluation}

% ===================================================================
% APPENDICES
% ===================================================================
\appendix

\section*{Appendix A: IsoMob Reference}

\section*{Appendix B: Application Design Parameters}

\section*{Appendix C: XML Parsing}

% ===================================================================
% BIBLIOGRAPHY
% ===================================================================
\begin{thebibliography}{99}

\bibitem{GameAI}
Buckland, Matt.
``Programming Game AI by Example''.
Jones \& Bartlett (2005).

\bibitem{AdvAs3Anim}
Peters, Keith.
``AdvancED Actionscript 3.0 Animation''.
Apress (2008).

\bibitem{AdvGameDesignFlash}
Spuy, Rex.
``AdvancED Game Design with Flash''.
Apress (2010).

\bibitem{3DMathPrimer}
Dunn, Fletcher and Parberry, Ian.
``3D Math Primer for Graphics and Game Development''.
Jones \& Bartlett (2002).

\bibitem{cocos2d}
Cocos2d.
``cocos 2d''.
\url{http://cocos2d.org/}

\bibitem{titanium}
Appcelerator.
``Titanium''.
\url{http://www.appcelerator.com/}

\bibitem{phonegap}
PhoneGap.
``PhoneGap''.
\url{http://www.phonegap.com/}

\bibitem{corona}
Ansca, Inc.
``Corona SDK''.
\url{http://www.anscamobile.com/corona/}

\bibitem{Haxe}
Twin-Motion.
``HaXe''.
\url{http://haxe.org/}

\bibitem{TonyPA}
TonyPA.
``Tile Based Games''.
\url{http://www.tonypa.pri.ee/tbw/start.html}

\bibitem{OpenSteer}
OpenSteer.
``Swarm Intelligence''.
\url{http://opensteer.sourceforge.net/doc.html}

\bibitem{Moai}
Zipline Games.
``Moai''.
\url{http://getmoai.com/}

\bibitem{iPhoneChangedEverything}
GigaOM.
``How Apple's iPhone changed everything''.
\url{http://gigaom.com/2011/06/29/the-iphone-effect-how-apples-phone-changed-everything/}

\bibitem{whyMostDontFinishVideoGames}
CNN.
``Why most people don't finish video games''.
\url{http://articles.cnn.com/2011-08-17/tech/finishing.videogames.snow_1_red-dead-redemption-entertainment-software-association-avid-gamers?_s=PM:TECH}

\bibitem{whatIsGoogleAndroid}
Gatliff, Bill.
``What is Google Android? An Introduction to Android Programming''.
ESC Chicago (2011).

\bibitem{steeringBehaviors}
Reynolds, Craig.
``Steering Behaviors for Autonomous Characters''.
Sony Computer Entertainment America (1999).
\url{http://www.red3d.com/cwr/steer/gdc99/}

\bibitem{onFilmation}
Walker, Neil.
``On Filmation''.
\url{http://retrospec.sgn.net/users/nwalker/filmation/}
(2004).

\end{thebibliography}

\end{document}
