123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502 |
- .\" $NetBSD: atc.6,v 1.21 2004/01/01 16:31:37 wiz Exp $
- .\"
- .\" Copyright (c) 1990, 1993
- .\" The Regents of the University of California. All rights reserved.
- .\"
- .\" This code is derived from software contributed to Berkeley by
- .\" Ed James.
- .\"
- .\" Redistribution and use in source and binary forms, with or without
- .\" modification, are permitted provided that the following conditions
- .\" are met:
- .\" 1. Redistributions of source code must retain the above copyright
- .\" notice, this list of conditions and the following disclaimer.
- .\" 2. Redistributions in binary form must reproduce the above copyright
- .\" notice, this list of conditions and the following disclaimer in the
- .\" documentation and/or other materials provided with the distribution.
- .\" 3. Neither the name of the University nor the names of its contributors
- .\" may be used to endorse or promote products derived from this software
- .\" without specific prior written permission.
- .\"
- .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- .\" SUCH DAMAGE.
- .\"
- .\" @(#)atc.6 8.1 (Berkeley) 5/31/93
- .\"
- .\" Copyright (c) 1986 Ed James. All rights reserved.
- .\"
- .Dd January 1, 2004
- .Dt ATC 6
- .Os
- .Sh NAME
- .Nm atc
- .Nd air traffic controller game
- .Sh SYNOPSIS
- .Nm atc
- .Op Fl u?lstp
- .Op Fl gf Ar "game name"
- .Op Fl r Ar "random seed"
- .Sh DESCRIPTION
- .Nm
- lets you try your hand at the nerve wracking duties of the air traffic
- controller without endangering the lives of millions of travelers each year.
- Your responsibilities require you to direct the flight of jets
- and prop planes into and out of the flight arena and airports.
- The speed (update time) and frequency of the planes depend on the
- difficulty of the chosen arena.
- .Sh OPTIONS
- .Bl -tag -width flag
- .It Fl u
- Print the usage line and exit.
- .It Fl \&?
- Same as
- .Fl u .
- .It Fl l
- Print a list of available games and exit.
- The first game name printed is the default game.
- .It Fl s
- Print the score list (formerly the Top Ten list).
- .It Fl t
- Same as
- .Fl s .
- .It Fl p
- Print the path to the special directory where
- .Nm
- expects to find its private files.
- This is used during the installation of the program.
- .It Fl g Ar game
- Play the named game.
- If the game listed is not one of the ones printed from the
- .Fl l
- option, the default game is played.
- .It Fl f Ar game
- Same as
- .Fl g .
- .It Fl r Ar seed
- Set the random seed.
- The purpose of this flag is questionable.
- .El
- .Sh GOALS
- Your goal in
- .Nm
- is to keep the game going as long as possible.
- There is no winning state, except to beat the times of other players.
- You will need to: launch planes at airports (by instructing them to
- increase their altitude); land planes at airports (by instructing them to
- go to altitude zero when exactly over the airport); and maneuver planes
- out of exit points.
- .Pp
- Several things will cause the end of the game.
- Each plane has a destination (see information area), and
- sending a plane to the wrong destination is an error.
- Planes can run out of fuel, or can collide.
- Collision is defined as adjacency in all three dimensions.
- A plane leaving the arena
- in any other way than through its destination exit is an error as well.
- .Pp
- Scores are sorted in order of the number of planes safe.
- The other statistics are provided merely for fun.
- There is no penalty for
- taking longer than another player (except in the case of ties).
- .Pp
- Suspending a game is not permitted.
- If you get a talk message, tough.
- When was the last time an Air Traffic Controller got called away to the phone?
- .Sh THE DISPLAY
- Depending on the terminal you run
- .Nm
- on, the screen will be divided into 4 areas.
- It should be stressed that the terminal driver portion of the
- game was designed to be reconfigurable, so the display format can vary
- depending on the version you are playing.
- The descriptions here are based on the ascii version of the game.
- The game rules and input format, however, should remain consistent.
- Control-L redraws the screen, should it become muddled.
- .Ss RADAR
- The first screen area is the radar display, showing the relative locations
- of the planes, airports, standard entry/exit points, radar
- beacons, and ``lines'' which simply serve to aid you in guiding
- the planes.
- .Pp
- Planes are shown as a single letter with an altitude.
- If the numerical altitude is a single digit, then it represents
- thousands of feet.
- Some distinction is made between the prop planes and the jets.
- On ascii terminals, prop planes are
- represented by a upper case letter, jets by a lower case letter.
- .Pp
- Airports are shown as a number and some indication of the direction
- planes must be going to land at the airport.
- On ascii terminals, this is one of `^', `\*[Gt]', `\*[Lt]', and `v', to indicate
- north (0 degrees), east (90), west (270) and south (180), respectively.
- The planes will also take off in this direction.
- .Pp
- Beacons are represented as circles or asterisks and a number.
- Their purpose is to offer a place of easy reference to the plane pilots.
- See
- .Sx THE DELAY COMMAND
- section below.
- .Pp
- Entry/exit points are displayed as numbers along the border of the
- radar screen.
- Planes will enter the arena from these points without warning.
- These points have a direction associated with them, and
- planes will always enter the arena from this direction.
- On the ascii version of
- .Nm ,
- this direction is not displayed.
- It will become apparent what this direction is as the game progresses.
- .Pp
- Incoming planes will always enter at the same altitude: 7000 feet.
- For a plane to successfully depart through an entry/exit point,
- it must be flying at 9000 feet.
- It is not necessary for the planes to be flying in any particular
- direction when they leave the arena (yet).
- .Ss INFORMATION AREA
- The second area of the display is the information area, which lists
- the time (number of updates since start), and the number of planes you
- have directed safely out of the arena.
- Below this is a list of planes currently in the air, followed by a
- blank line, and then a list of planes on the ground (at airports).
- Each line lists the plane name and its current altitude,
- an optional asterisk indicating low fuel, the plane's destination,
- and the plane's current command.
- Changing altitude is not considered
- to be a command and is therefore not displayed.
- The following are some possible information lines:
- .Pp
- .Bd -literal -offset indent
- B4*A0: Circle @ b1
- g7 E4: 225
- .Ed
- .Pp
- The first example shows a prop plane named `B' that is flying at 4000 feet.
- It is low on fuel (note the `*').
- Its destination is Airport #0.
- The next command it expects to do is circle when it reaches Beacon #1.
- The second example shows a jet named `g' at 7000 feet, destined for
- Exit #4.
- It is just now executing a turn to 225 degrees (South-West).
- .Ss INPUT AREA
- The third area of the display is the input area.
- It is here that your input is reflected.
- See the
- .Sx INPUT
- heading of this manual for more details.
- .Ss AUTHOR AREA
- This area is used simply to give credit where credit is due. :-)
- .Sh INPUT
- A command completion interface is built into the game.
- At any time, typing `?' will list possible input characters.
- Typing a backspace (your erase character) backs up, erasing the last part
- of the command.
- When a command is complete, a return enters it, and
- any semantic checking is done at that time.
- If no errors are detected, the command is sent to the appropriate plane.
- If an error is discovered
- during the check, the offending statement will be underscored and a
- (hopefully) descriptive message will be printed under it.
- .Pp
- The command syntax is broken into two parts:
- .Em Immediate Only
- and
- .Em Delayable
- commands.
- .Em Immediate Only
- commands happen on the next update.
- .Em Delayable
- commands also happen on the next update unless they
- are followed by an optional predicate called the
- .Em Delay
- command.
- .Pp
- In the following tables, the syntax
- .Em [0\-9]
- means any single digit, and
- .Aq Em dir
- refers to a direction, given by the keys around the `s' key: ``wedcxzaq''.
- In absolute references, `q' refers to North-West or 315 degrees, and `w'
- refers to North, or 0 degrees.
- In relative references, `q' refers to \-45 degrees or 45 degrees left, and `w'
- refers to 0 degrees, or no change in direction.
- .Pp
- All commands start with a plane letter.
- This indicates the recipient of the command.
- Case is ignored.
- .Ss IMMEDIATE ONLY COMMANDS
- .Bl -tag -width "aaaa"
- .It "a [ cd+- ]" Em number
- Altitude: Change a plane's altitude, possibly requesting takeoff.
- `+' and `-' are the same as `c' and `d'.
- .Bl -tag -width "aaaaaaaaaa" -compact
- .It a Em number
- Climb or descend to the given altitude (in thousands of feet).
- .It ac Em number
- Climb: relative altitude change.
- .It ad Em number
- Descend: relative altitude change.
- .El
- .It m
- Mark: Display in highlighted mode.
- Plane and command information is displayed normally.
- .It i
- Ignore: Do not display highlighted.
- Command is displayed as a line of dashes if there is no command.
- .It u
- Unmark: Same as ignore, but if a delayed command is processed,
- the plane will become marked.
- This is useful if you want to forget about a plane during part,
- but not all, of its journey.
- .El
- .Ss DELAYABLE COMMANDS
- .Bl -tag -width "aaaa"
- .It "c [ lr ]"
- Circle: Have the plane circle.
- .Bl -tag -width "aaaaaaaaaa" -compact
- .It cl
- Left: Circle counterclockwise.
- .It cr
- Right: Circle clockwise (default).
- .El
- .It "t [ l-r+LR ] [ dir ] or tt [ abe* ]" Em number
- Turn: Change direction.
- .Bl -tag -width "aaaaaaaaaa" -compact
- .It "t\*[Lt]dir\*[Gt]"
- Turn to direction: Turn to the absolute compass heading given.
- The shortest turn will be taken.
- .It "tl [ dir ]"
- Left: Turn counterclockwise: 45 degrees by default, or the amount
- specified in
- .Aq dir
- (not
- .Em to
- .Aq dir . )
- `w' (0 degrees) is no turn.
- `e' is 45 degrees; `q' gives \-45 degrees counterclockwise, that is,
- 45 degrees clockwise.
- .It "t- [ dir ]"
- Same as left.
- .It "tr [ dir ]"
- Right: Turn clockwise, 45 degrees by default, or the amount specified in
- .Aq dir .
- .It "t+ [ dir ]"
- Same as right.
- .It tL
- Hard left: Turn counterclockwise 90 degrees.
- .It tR
- Hard right: Turn clockwise 90 degrees.
- .It "tt [abe*]"
- Towards: Turn towards a beacon, airport or exit.
- The turn is just an estimate.
- .It "tta" Em number
- Turn towards the given airport.
- .It "ttb" Em number
- Turn towards the specified beacon.
- .It "tte" Em number
- Turn towards an exit.
- .It "tt*" Em number
- Same as ttb.
- .El
- .El
- .Ss THE DELAY COMMAND
- The
- .Em Delay
- (a/@) command may be appended to any
- .Em Delayable
- command.
- It allows the controller to instruct a plane to do an action when the
- plane reaches a particular beacon (or other objects in future versions).
- .Bl -tag -width "aaaa"
- .It ab Em number
- Do the delayable command when the plane reaches the specified beacon.
- The `b' for ``beacon'' is redundant to allow for expansion.
- `@' can be used instead of `a'.
- .El
- .Ss MARKING, UNMARKING AND IGNORING
- Planes are
- .Em marked
- by default when they enter the arena.
- This means they are displayed in highlighted mode on the radar display.
- A plane may also be either
- .Em unmarked
- or
- .Em ignored .
- An
- .Em ignored
- plane is drawn in unhighlighted mode, and a line of dashes is displayed in
- the command field of the information area.
- The plane will remain this way until a mark command has been issued.
- Any other command will be issued, but the command line will return to a
- line of dashes when the command is completed.
- .Pp
- An
- .Em unmarked
- plane is treated the same as an
- .Em ignored
- plane, except that it will automatically switch to
- .Em marked
- status when a delayed command has been processed.
- This is useful if you want to forget about a plane for a while, but its
- flight path has not yet been completely set.
- .Pp
- As with all of the commands, marking, unmarking and ignoring will take effect
- at the beginning of the next update.
- Do not be surprised if the plane does
- not immediately switch to unhighlighted mode.
- .Ss EXAMPLES
- .Bl -tag -width gtte4ab2 -offset indent
- .It atlab1
- Plane A: turn left at beacon #1
- .It cc
- Plane C: circle
- .It gtte4ab2
- Plane G: turn towards exit #4 at beacon #2
- .It ma+2
- Plane M: altitude: climb 2000 feet
- .It stq
- Plane S: turn to 315
- .It xi
- Plane X: ignore
- .El
- .Sh OTHER INFORMATION
- .Bl -bullet
- .It
- Jets move every update; prop planes move every other update.
- .It
- All planes turn at most 90 degrees per movement.
- .It
- Planes enter at 7000 feet and leave at 9000 feet.
- .It
- Planes flying at an altitude of 0 crash if they are not over an airport.
- .It
- Planes waiting at airports can only be told to take off (climb in altitude).
- .It
- Pressing return (that is, entering an empty command) will perform the
- next update immediately.
- This allows you to ``fast forward''
- the game clock if nothing interesting is happening.
- .El
- .Sh NEW GAMES
- The
- .Pa Game_List
- file lists the currently available play fields.
- New field description file names must be placed in this file to be playable.
- If a player specifies a game not in this file, his score will not be logged.
- .Pp
- The game field description files are broken into two parts.
- The first part is the definition section.
- Here, the four tunable game parameters must be set.
- These variables are set with the syntax:
- .Pp
- .Dl "variable = number;"
- .Pp
- Variable may be one of:
- .Li update ,
- indicating the number of seconds between forced updates;
- .Li newplane ,
- indicating (about) the number of updates between new plane entries;
- .Li width ,
- indicating the width of the play field; or
- .Li height ,
- indicating the height of the play field.
- .Pp
- The second part of the field description files describes the locations
- of the exits, the beacons, the airports and the lines.
- The syntax is as follows:
- .Pp
- .Bd -literal -offset indent
- .Bl -tag -width airport: -compact
- .It beacon :
- (x y) ... ;
- .It airport :
- (x y direction) ... ;
- .It exit :
- (x y direction) ... ;
- .It line :
- [ (x1 y1) (x2 y2) ] ... ;
- .El
- .Ed
- .Pp
- For beacons, a simple x, y coordinate pair is used (enclosed in parenthesis).
- Airports and exits require a third value, which is one of the directions
- .Em wedcxzaq .
- For airports, this is the direction that planes must be going to take
- off and land, and for exits, this is the direction that planes will be
- going when they
- .Em enter
- the arena.
- This may not seem intuitive, but as there is no restriction on
- direction of exit, this is appropriate.
- Lines are slightly different, since they need two coordinate pairs to
- specify the line endpoints.
- These endpoints must be enclosed in square brackets.
- .Pp
- All statements are semi-colon (;) terminated.
- Multiple item statements accumulate.
- Each definition must occur exactly once, before any item statements.
- Comments begin with a hash (#) symbol and terminate with a newline.
- The coordinates are between zero and width-1 and height-1 inclusive.
- All of the exit coordinates must lie on the borders, and
- all of the beacons and airports must lie inside of the borders.
- Line endpoints may be anywhere within the field, so long as
- the lines are horizontal, vertical or
- .Em exactly
- diagonal.
- .Ss FIELD FILE EXAMPLE
- .Bd -literal
- # This is the default game.
- update = 5;
- newplane = 5;
- width = 30;
- height = 21;
- exit: ( 12 0 x ) ( 29 0 z ) ( 29 7 a ) ( 29 17 a )
- ( 9 20 e ) ( 0 13 d ) ( 0 7 d ) ( 0 0 c ) ;
- beacon: ( 12 7 ) ( 12 17 ) ;
- airport: ( 20 15 w ) ( 20 18 d ) ;
- line: [ ( 1 1 ) ( 6 6 ) ]
- [ ( 12 1 ) ( 12 6 ) ]
- [ ( 13 7 ) ( 28 7 ) ]
- [ ( 28 1 ) ( 13 16 ) ]
- [ ( 1 13 ) ( 11 13 ) ]
- [ ( 12 8 ) ( 12 16 ) ]
- [ ( 11 18 ) ( 10 19 ) ]
- [ ( 13 17 ) ( 28 17 ) ]
- [ ( 1 7 ) ( 11 7 ) ] ;
- .Ed
- .Sh FILES
- Files are kept in a special directory.
- See the
- .Sx OPTIONS
- section for a way to print this path out.
- It is normally
- .Pa @atc_dir@ .
- .Pp
- This directory contains the file
- .Pa Game_List ,
- which holds the list of playable games, as well as the games themselves.
- .Pp
- The scores are kept in
- .Pa @atc_scorefile@ .
- .Sh AUTHOR
- Ed James, UC Berkeley: edjames@ucbvax.berkeley.edu, ucbvax!edjames
- .Pp
- This game is based on someone's description of the overall flavor
- of a game written for some unknown PC many years ago, maybe.
- .Sh BUGS
- The screen sometimes refreshes after you have quit.
|