\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{Minigolf: User's Guide}
\author{Cal Pierog, et al.}
\date{April 12, 2004}

\begin {document}
\maketitle

\section{Overview}
The player is an intrepid golfer set out to make your mark by sinking the ball in the hole in the fewest strokes. Accomplishing this goal will require expert navigation through a huge urban maze, finally depositing the ball in the hole at the end.
\section{Display and Controls}
The display is broken into two windows: the display windows and the command console. The display windows is where all the graphics display and most of the game is carried out. The console is used for loading new map files and debugging (see below).\\
\,\\
The mouse and keyboard serve as the two main methods of user input. The holding the left mouse button and dragging around the display window moves the camera about the ball. This same functionality aims the ball when lining up a shot.\\
\,\\
The keyboard has a plethora of functionality but is only active when the display window is highlighted. Keys pressed when the display window is inactive are ignored. The usable keys and their general purposes are outlined in figure below. When in doubt, pressing any unbound key will display a list of the active keys and their uses.
\begin{center}\includegraphics[scale=.6]{LSDkeyboard}\end{center}
The most important key is the space bar which will cause the club to hit the ball with varying levels of force. See ``Game Mechanics'' below for more information. \\
\,\\
The other miscellaneous key 'l' prompts the user to load a different hole into the golf game. When pressed the command console will be activated and prompt the user for the new world's filename. Version 1.0 only contains one filly-supported world which is the first hole that will display automatically (see ``Course'' section below). \\
\,\\
Most of the other keys control the camera which are described in the ``Camera'' section below. The only other keys are for debugging but have been left in Version 1.0 for the users' potential amusement. However, they are not officially supported and the development staff takes no responsibilities for any adverse behavior stemming from their use. The utility of each debugging key is outlined in the Appendix.\\
\,\\
In general, key controls are case-insensitive.

\section{Camera}
The camera has two modes: 1) Ball Follow and 2) Free Look. Pressing ``b'' on the keyboard will toggle between the two modes. \\
\,\\
In ball follow mode, the camera simply follows the ball wherever it goes. You can change the camera's perspective only with the mouse and ``+ -'' zoom keys. All other camera keys are deactivated in this mode. Note that you must be in ball follow mode in order to hit the ball (see below).\\
\,\\
The free look mode disengages the camera from the call and activates all the camera controls. The camera uses Half-Life style controls to move the camera about freely in the world. The movements are always relative to the direction the camera is facing. In other words, up/down, left/right, etc. are as you would expect. While navigating the camera, it is advised that you remain fully zoomed in at all times to prevent unintuitive behavior resulting the similar appearance of moving forward and zooming in. \\
\,\\
Regardless of mode, the camera can go through any surfaces, which can be a mixed blessing. If the screen suddenly is all one color, you might have the camera inside an object.

\section{Game Mechanics}

\subsection{Hitting the Ball}
% power bar and hitting ball
When the ball has stopped and the camera is following the ball, a club will appear indicating that the ball can now be hit. The direction the camera is pointing determines the direction in which the ball is shot. Once a direction has been determined, the space bar is pressed once to bring up the vertical power bar on the left-hand side of the screen, as shown below. 
\begin{center}\includegraphics[scale=.4]{LSDMeter}\end{center}
The power bar oscillates up and down in a periodic fashion, the length of the which indicates how much power will be put on the ball when the space bar is struck a second time. Once the space bar is struck, the ball flies off and the player can but watch until the ball comes to rest again and is ready for another stroke.

\subsection{To Infinity $\ldots$ and Beyond}
% penalized one stroke for going off course; ball reset
If the ball goes off the course, it is retrieved and put back at the position from which it was last hit. Going off the course in this manner costs the unfortunate player an extra stroke in addition to the one initially used to get the ball off the course. \\
\,\\
The number of strokes used can be viewed in the command console.

\subsection{The Hole}
% the hole, what it looks like, surprise at the end
% hole indicated by hovering arrow
  % tell to move camera to face course
% GET PICTURE!!!!
To complete the course, you must get the ball in the hole which is indicated by a large silver and red arrow hovering above it, as seen in the picture below. 
\begin{center}\includegraphics[scale=.5]{LSDhole}\end{center}
Once you reach the hole with the ball you are in for a surprise. A word from the wise, pan the camera toward the level before sinking the ball in the hole.

\section{Course}
The courses is modeled after a cityscape complete with skyscrapers and multicolored arches, as can be seen below.
\begin{center}\includegraphics[scale=.2]{LSDCity}\end{center}
The first part of the city has flat roads leading around the initial cluster of buildings and under the series of arches. At the end of the arches is a large yellow ramp which must be used to propel the ball into the final part of the city containing two hexagonal skyscrapers (one white, one black). This second part of the city has rougher terrain than the first but also contains the objective hole.

\section{Known Bugs}
\begin{itemize}
\item Issues with rolling and stopping
\item Different behavior on very fast/slow computers
\item No octree implemented, so overly complicated courses may run slowly
\end{itemize}

\section*{Appendix}
Summaries of the available debugging commands:
\begin{itemize}
\item x - Toggles axes on and off. The axes are drawn at the origin and extend outward in the positive $x$, $y$, and $z$ directions, as seen below.
\begin{center}\includegraphics[scale=.3]{LSDaxes}\end{center}
\item n - Prints out ball's current position.
\item N - Toggles constant printing of ball's position. Warning: This should be used sparingly as it produces LOTS of output.
\item i - Toggles lights. Note that surfaces have different color information between the lights being on and off. Consider the examples below of the same scene with lights on and off.
\begin{center}\begin{tabular}{cc}
\includegraphics[scale=.5]{LSDlighton} & \includegraphics[scale=.5]{LSDlightoff} \\
Scene with lights on & Same scene with lights off 
\end{tabular}\end{center}
\item o - Toggles collision information output.
\item $\backslash$ - Toggles and resets crazy triangles.
\item $[\;\;]$ - Explode/Implode crazy triangles. Only active when crazy triangles are on. 
\end{itemize}

\end {document}


