\documentstyle[html]{article}
\title{}
\author{Toshio Endo}
\begin{document}
\maketitle
\section{Description}
HyperAthletic is a distributed two-players game.  Players compete with
each other in the speed of typing.  The faster you type, the faster
the runner on the screen goes.  The words you should type are familiar
keywords of programming languages (like ``while,'' ``define,'' or even
``call-with-current-continuation'').

\section{Intstruction}
Run `hyper' or click the ``Play with HyperAthletic'' button below.
Two windows appear on two screens.  Press ``start game'' to start the
competition.   

A game consists of three races.  The player who wins two races will
become the winner of the game.  At each race, the word you must type
is displayed on a bar near the bottom of the window.  You must type
this word again and again to make progress.  The faster you type, the
more progress you see on the screen.  The progress is represented by a
runner on a track.

\htmladdnormallink{Play with HyperAthletic}{/cgi-bin/run_hyper}

\section{Program}
This program demonstrates how things can be written easily with the
combination of a nice GUI tool kit and a nice programming language for
distributed computation.  

In Schematic, an index number is associated with a processor.  In
HyperAthletic case, one of the two processors is called processor zero
(or PE 0) and the other called processor one (or PE 1).  Any
combination of synchronous/asynchronous and local/remote procedure
calls are done in almost the same syntax with a normal procedure call.

In games like HyperAthletic, when a processor gets a key input from
the gamer, it must update {\em both\/} of the windows.  Schematic
programmers only have to write a single definition of the update
procedure and invoke it both on the remote and the local processors in
response to a key input.  Neither message creation/transmission nor
cooporation by the receiver's end is necessary.

Right now, source code is somewhat ugly and many things are not
written in the way they should be.  We show the source code as
is, for people to get the idea of distributed programming in SchematicTk.

\htmladdnormallink{View Source}{hyper_source.html}

\section{Limitation/Bugs}
\begin{itemize}
\item Do not take this program seriously.
\item Data are not defined by concurrent objects as they should be. 
This means that some data are not properly protected from
almost-simultaneous key inputs, althogh the possibility of such
simultaneous inputs is practically zero.
\end{itemize}

\end{document}
