\documentclass[letterpaper,11pt]{article}
\usepackage{amssymb,amsmath}
\usepackage{enumerate}
\usepackage{fullpage}
%\usepackage{verbatim}
%\usepackage[pdftex]{graphicx}

\renewcommand{\thefootnote}{\fnsymbol{footnote}}
\newcommand{\qf}[1]{\footnote{\footnotesize #1}}


%Title
\title{Heroes of CIS: Final Report}
\author{Cal Pierog, Ryan Riegel, Paul Scott}
\date{February 9, 2004}

\begin {document}
\maketitle

\section{Overview}
We essentially built the game we specified in our design document, but
with a few enhancements.  None of our risks caused significant
problems, but a few had us scratching our heads for a while.  The
player is a CIS staff member in charge of maintaining the printers at
all costs.  He must fight his way through horde of students, keeping
them from loading Tray 3 and repairing printers before they explode
due to their print queue filling.

\section{Gameplay}

\subsection{General}
The Game occurs in a 2D playfield containing the player, students
(enemies), printers, supply cabinets, walls, and ``doors'' (student
spawn points) arranged in various positions.  The printers
occasionally break, requiring the player to fix them using a wrench
from the supply cabinet.  While the printers are broken, an
unrelenting stream of print requests are added to their print queues,
but when they are fixed, they slowly process the pages, causing the
their queues to decrease.  If the any of the printer's queues fill,
the printer explodes and the game is over.

\subsection{Player Controls}
Using the arrow keys, the player must move between the printers and
supply cabinets, avoiding obstacles and enemies on the way.  Each
arrow key moves the player in its repective direction, and the
player's movement is blocked by walls and the edge of the playfield.
The player's motion is also obstructed by printers, supply cabinets,
students, and doors.

\subsection{Supply Cabinets}
Supply cabinets are modeled by immoble critters sitting at various
points on the playfield.  The player may obtain a wrench from them by
simply colliding with them, but can only hold one wrench at a time.
Supply cabinets never run out of supplies, so the player doesn't need
to worry about running out.

\subsection{Printers}
Printers are also modeled by immoble critters located in corners here
and there.  They break at random intervals; every three seconds they
have a 25\% chance of breaking, so sometimes they break in rapid
succession and sometimes they run perfectly for long periods of time.
Printers can be fixed by simply colliding with them while holding a
wrench (if only this was true of the real world...), but doing so
consumes the wrench.

As mentioned above, when the printers are broken, their print queues
increase quickly (at a rate of one page per second), but when they are
fixed, their print queues slowly decrease (by one page every three
seconds).  If their print queue exceeds 10 pages, they explode,
ending the game.

\subsection{Students and Doors}
Students enter the playfield through doors at random intervals; every
two seconds a door has a percent chance of spawning a number of
students between one and three.  The percentages vary per level: doors
in Levels 1 and 2 have a 50\% chance, and doors in Levels 3, 4 and 5
have only a 25\% chance.  Students also exit the playfield through the
doors; usually they'll do so of their own will, but can be forced out
of the room if they are pushed into the door more than three seconds
after they are spawned.

Students come in three different varieties as follows:

\subsubsection{Gray Students}
These students lazily proceed towards a randomly selected printer and
then exit through the nearest door.  They move rather slowly and are
quite subject to getting bumped around.  They tend to build up into
huge crowds of confused students, trying fruitlessly to progress
towards their destinations.  They're not a big hinderance to the
player because the player can simply push them out of the way; used
intelligently, they can actually make for fairly effective shields
against the more dangerous student classes, but most of the time they
just add to the confusion.

\subsubsection{Pink Students}
These students more rapidly progress towards a randomly selected
printer, with the intent of loading paper into Tray 3.  If they do
manage to touch their selected printer, the printer breaks instantly
and starts building up its print queue as normal.  Fortunately, the
player can tag these pink students to convert them into harmless
grays.  They'll also turn gray if they succeed in breaking the printer.

\subsubsection{Red/Green Students}
These students always enter the lab in their red form, moving rapidly
in straight lines and bouncing of walls like gas particles.  If they
collide with the player, the player drops his wrench if he is carrying
one.  After 15 seconds, the red student converts into a more calmed
green student, which moves towards the nearest door and does not steal
the player's wrenches.

\subsection{Levels}
There are five levels in the game: Levels 1 and 2 take place in the
LAC lab, Levels 3 and 4 take place in the AC lab, and Level 5 takes
place in a hellish CIS nightmare.  Levels differ in wall lay-out,
number of printers, and number of doors.  The player advances to the
next level by surviving some set amount of time: 60 seconds for Levels
1 and 2, 90 seconds for Levels 3 and 4, and 120 seconds for Level 5.
Since there is no level after Level 5, the game simply ends once the
time limit elapses (we've never managed to last this long, by the
way).

\subsection{Scoring}
The player recieves 10 points for fixing a printer, 15 points for
intercepting a pink student, and 25 points for pushing a red student
(while it's still red) out the door.  Also, the player is awarded 50x
the level number after finishing each level.

\subsection{Graphics/Sound}
The game has specialized graphics for the player, each kind of
student, and the rest of the objects mentioned above.  Also, print
queues are represented graphically in a status box to the right of the
playfield, as is an indicator of whether the player is holding a
wrench.  Sounds are fairly infrequent, mainly because POP is not very
good at playing them, but a crashing sound is played when a printer
jams.

\section{Differences from SRS}
The majority of the differences between our original game specification and the actual state of the game are for the better.
\begin{itemize}
\item The player can now intercept printer-breaking enemies to render
  them harmless (and gain points).
\item Points are now based solely on actions, not on how long you
  survive.  Moving to the next level, on the other hand, is based
  solely on how long you survive.
\item The game is more level oriented than we originally planned.
  This allowed us to include both of the labs as parts of the game.
\item Doors are now embodied as critters rather than regions.  Also,
  there can be multiple doors.
\item Red students now convert into green students after an amount of
  time.  This helps prevent an enormous build up of wrench-stealing
  reds, which would render the game almost impossible.
\item Pushing red students through the door gives the player a
  considerable amount of points, because it's fairly difficult to do
  and simultaneously a good idea (as that reds tend to steal your
  wrenches when you need them most).
\end{itemize}

\section{Bugs and Possible Improvements}
While the game is playable and fun, it's not bug free.  We've spotted the following:
\begin{itemize}
\item POP seems to have some issues with spawing critters in the same
  location.  When multiple enemies are spawned simultaneously at the
  door, they sometimes get stuck together and to the door.  It looks
  sorta like they're holding hands.
\item Also, in the first two levels, the player does not automatically
  move off of the supply cabinet when he is spawned there.  It seems
  that POP defaults to pushing things off to the right, which happens
  to be into the edge of the playfield in these levels.
\item In particularly crowded situations, some strange collision
  effects (such as students tunneling through walls) can be observed.
  This is more a fault of the POP architecture than our game.
\end{itemize}

Also, there are a few areas where our game could be improved:
\begin{itemize}
\item The levels are still in need of some balancing.  We didn't have
  much time to play test our game, so we only managed to get it to the
  point where things seemed to get harder and it was possible to get
  to Level 4 if you were particularly good.  Level 5 may very well be
  impossible, but it is the last level after all.
\item An enemy cap could have been implemented to help keep
  innumerable hordes from getting out-of-hand.
\item Enemy AIs could be improved, resulting in less walking into
  walls and bumping into each other.  But then again, it's a pretty
  good simulation of sleep-depped Mudders as it is.
\item As if the game wasn't challenging enough, we could make it so
  that printers need more than one kind of supply.  For instance, they
  could run out of paper or toner in addition to having generic jams.
  Such a change would require a whole bunch more rebalancing.
\item The graphics are nice, but they could be yet better.  For
  instance, the print queues could have been made easier to read.
  Also, we could have squeezed in a few more sounds.
\end{itemize}

\end {document}
