NAME

snipes - a text maze game

SYNOPSIS

snipes [-cdsx] [-jkqv] [level]

DESCRIPTION

snipes is a single-player text-mode action game in which the object is
to wander a maze killing evil smiley face characters (the "snipes") and
the hives which create them. Of course, the snipes try to kill you at
the same time.
The level argument is of the form [A-Z][1-9]. The alphabetic character
specifies characteristics of the level, such as whether or not diagonal
shots bounce off the walls. The numeric character specifies the level
of difficulty. More details in the LEVELS section below.
Use the grey arrow keys to move and the keys a, s, d, and w to fire.
(This works best with a QWERTY layout, of course.) You can move
diagonally by pressing a combination of one vertical movement key with
one horizontal movement key simultaneously and a similar approach will
allow you to fire diagonally. Holding the space bar makes you move
faster. CTRL-C is quit.
While running snipes on the console (not in X) you will be unable to
switch VTs. Pressing CTRL-Z will suspend the raw keyboard mode (re-
enabling VT switching) until you press Enter.
Jenny scrolling is named after a friend who suggested it. While it
makes the screen less flickery, it’s a little hard to deal with IMHO.
DISPLAYTARGETOPTIONS
-c Use ncurses(3X).
-d Use doublewide font hack with ncurses(3X).
-s Use svgalib(7).
-x Use X Window System.
GENERALOPTIONS
-j Use Jenny scrolling mode.
-k Force keyboard to use safe (non-raw) mode (only with
ncurses(3X) display target).
-q Quiet mode: do not play sound effects.
-v Display version number and exit.

HISTORY

Novell NetWare 2.x came with a pair of "network testing utility"
programs (games) called nsnipes and ncsnipes. nsnipes worked on
monochrome displays while ncsnipes worked on color displays. The
networked Novell version was based on a single player version made by
SuperSet Software, called either hsnipes or just snipe. snipes is a
from-scratch reimplementation and shares no code with the Novell or
SuperSet games.

BUGS

The snipes are pretty stupid about where they go and when and where
they shoot.
In the DOS version, vertical movement is slowed down so that it seems
to be about the same speed as horizontal movement. This program
currently does not do that.
In the DOS version, diagonal shots don’t travel exactly diagonally.
The deltaX values change in the pattern {2, 2, 3, 2, 3}. See weapons.c
for more detail. This program currently uses deltaX=1.
The X Window version of snipes is extremely slow.
The fact that snipes uses raw keyboard mode makes bugs somewhat more
problematic than they would be otherwise. The remainder of this
section describes how to minimize problems. Note that this section
does not apply if you use the X Window System display target because
that target does not have these problems.
Different types of computers have different keyboard scancode mappings.
In order to deal with this, the dumpkeys program is used to determine
the keyboard mapping at run-time. If the mapping can not be loaded
from dumpkeys for any reason, raw keyboard mode will be unavailable.
If snipes crashes, the keyboard may be left in raw mode. In that case,
the console will be unusable: you will not be able to switch VTs and
when you type, garbage will probably appear on the screen. Recent
versions of snipes should be good at preventing this, but you can be
extra safe by running it like so:
snipes; kbd_mode -a; stty sane; reset
After snipes runs, even if it terminates by crashing, the subsequent
three commands will run. Note that the last two restore some screen
settings which may also be incorrect.
If snipes hangs for some reason, it’s harder to get things fixed. If
you’re on a network, you can always log in remotely and kill the snipes
process ("killall snipes" should do.) There are other things you can
do without having to log in remotely, however. One is to set up gpm(1)
(the cut and paste utility for virtual consoles) to be able to execute
commands for you when you use certain combinations of mouse clicks.
The command I use in my startup scripts looks like:
gpm -t $MOUSETYPE -S ’/usr/bin/killall -9
snipes;/usr/bin/kbd_mode -a::’
See the man page for gpm(1) for more information on how this works. In
short, it lets you kill snipes and restore the keyboard using a special
sequence of mouse button clicks. If you use this method, you will want
to make sure you use whatever path is appropriate on your system for
the killall(1) and kbd_mode(1) programs.
Finally, recent versions of the Linux kernel have support for some
"magic" SysRq key commands. If you have compiled your kernel with this
enabled, pressing Alt-SysRq-R will change the keyboard translation mode
back to "cooked".