|
|
1.1 root 1: . \" XP - exdented paragraph
2: .de XP
3: .RT
4: .if \\n(1T .sp \\n(PDu
5: .ne 1.1
6: .if !\\n(IP .nr IP +1
7: .in +\\n(I\\n(IRu
8: .ti -\\n(I\\n(IRu
9: ..
10: .\" Copyright (c) 1986 Ed James. All rights reserved.
11: .\"
12: .TH ATC 6 "January 1, 1986"
13: .UC
14: .SH NAME
15: atc \- Air Traffic Controller Game
16: .SH SYNOPSIS
17: .B atc
18: -[u?lstp] [-[gf] game_name] [-r random seed]
19: .SH DESCRIPTION
20: .LP
21: .I Atc
22: lets you try your hand at the nerve wracking duties of the air traffic
23: controller without endangering the lives of millions of
24: travelers each year.
25: Your responsibilities require you to direct the flight of jets
26: and prop planes into and out of the flight arena and airports.
27: The speed (update time) and frequency of the planes depend on the
28: difficulty of the chosen arena.
29: .SH OPTIONS
30: .LP
31: .TP 8
32: .B \-u
33: Print the usage line and exit.
34: .TP
35: .B \-?
36: Same as
37: .B \-u.
38: .TP
39: .B \-l
40: Print a list of available games and exit.
41: The first game name printed is the default game.
42: .TP
43: .B \-s
44: Print the score list (formerly the Top Ten list).
45: .TP
46: .B \-t
47: Same as
48: .B \-s.
49: .TP
50: .B \-p
51: Print the path to the special directory where
52: .I atc
53: expects to find its private files. This is used during the
54: installation of the program.
55: .TP
56: .B "\-g game"
57: Play the named game. If the game listed is not one of the
58: ones printed from the
59: .B \-l
60: option, the default game is played.
61: .TP
62: .B "\-f game"
63: Same as
64: .B \-g.
65: .TP
66: .B "\-r seed"
67: Set the random seed. The purpose of this flag is questionable.
68: .SH GOALS
69: .LP
70: Your goal in
71: .I atc
72: is to keep the game going as long as possible.
73: There is no winning state, except to beat the times of other players.
74: You will need to: launch planes at airports (by instructing them to
75: increase their altitude); land planes at airports (by instructing them to
76: go to altitude zero when exactly over the airport); and maneuver planes
77: out of exit points.
78: .LP
79: Several things will cause the end of the game.
80: Each plane has a destination (see information area), and
81: sending a plane to the wrong destination is an error.
82: Planes can run out of fuel, or can collide. Collision is defined as
83: adjacency in any of the three dimensions. A plane leaving the arena
84: in any other way than through its destination exit is an error as well.
85: .LP
86: Scores are sorted in order of the number of planes safe. The other
87: statistics are provided merely for fun. There is no penalty for
88: taking longer than another player (except in the case of ties).
89: .LP
90: Suspending a game is not permitted. If you get a talk message, tough.
91: When was the last time an Air Traffic Controller got called away to
92: the phone?
93: .SH "THE DISPLAY"
94: .LP
95: Depending on the terminal you run
96: .I atc
97: on, the screen will be divided into 4 areas.
98: It should be stressed that the terminal driver portion of the
99: game was designed to be reconfigurable, so the display format can vary
100: depending the version you are playing. The descriptions here are based
101: on the ascii version
102: of the game. The game rules and input format, however,
103: should remain consistent.
104: Control-L redraws the screen, should it become muddled.
105: .SS RADAR
106: .IP
107: The first screen area is the radar display, showing the relative locations
108: of the planes, airports, standard entry/exit points, radar
109: beacons, and "lines" which simply serve to aid you in guiding
110: the planes.
111: .IP
112: Planes are shown as a single letter with an altitude. If
113: the numerical altitude is a single digit, then it represents
114: thousands of feet.
115: Some distinction is made between the prop
116: planes and the jets. On ascii terminals, prop planes are
117: represented by a upper case letter, jets by a lower case letter.
118: .IP
119: Airports are shown as a number and some indication of the direction
120: planes must be going to land at the airport.
121: On ascii terminals, this is one of '^', '>', '<', and 'v', to indicate
122: north (0 degrees), east (90), west (270) and south (180), respectively.
123: The planes will also
124: take off in this direction.
125: .IP
126: Beacons are represented as circles or asterisks and a number.
127: Their purpose is to offer a place of easy reference to the plane pilots.
128: See 'the delay command' under the input section of this manual.
129: .IP
130: Entry/exit points are displayed as numbers along the border of the
131: radar screen. Planes will enter the arena from these points without
132: warning. These points have a direction associated with them, and
133: planes will always enter the arena from this direction. On the
134: ascii version of
135: .I atc,
136: this direction is not displayed. It will become apparent
137: what this direction is as the game progresses.
138: .IP
139: Incoming planes will always enter at the same altitude: 7000 feet.
140: For a plane to successfully depart through an entry/exit point,
141: it must be flying at 9000 feet.
142: It is not necessary for the planes to be flying in any particular
143: direction when they leave the arena (yet).
144: .SS "INFORMATION AREA"
145: .IP
146: The second area of the display is the information area, which lists
147: the time (number of updates since start), and the number of planes you
148: have directed safely out of the arena.
149: Below this is a list of planes currently in the air, followed by a
150: blank line, and then a list of planes on the ground (at airports).
151: Each line lists the plane name and its current altitude,
152: an optional asterisk indicating low fuel, the plane's destination,
153: and the plane's current command. Changing altitude is not considered
154: to be a command and is therefore not displayed. The following are
155: some possible information lines:
156: .IP
157: B4*A0: Circle @ b1
158: .br
159: g7 E4: 225
160: .IP
161: The first example shows a prop plane named 'B' that is flying at 4000
162: feet. It is low on fuel (note the '*'). It's destination is
163: Airport #0.
164: The next command it expects
165: to do is circle when it reaches Beacon #1.
166: The second example shows a jet named 'g' at 7000 feet, destined for
167: Exit #4. It is just now executing a turn to 225 degrees (South-West).
168: .SS "INPUT AREA"
169: .IP
170: The third area of the display is the input area. It is here that
171: your input is reflected. See the INPUT heading of this manual
172: for more details.
173: .SS "AUTHOR AREA"
174: .IP
175: This area is used simply to give credit where credit is due. :-)
176: .SH INPUT
177: .LP
178: A command completion interface is built into
179: the game. At any time, typing '?' will list possible input characters.
180: Typing a backspace (your erase character) backs up, erasing the last part
181: of the command. When a command is complete, a return enters it, and
182: any semantic checking is done at that time. If no errors are detected,
183: the command is sent to the appropriate plane. If an error is discovered
184: during the check, the offending statement will be underscored and a
185: (hopefully) descriptive message will be printed under it.
186: .LP
187: The command syntax is broken into two parts:
188: .I "Immediate Only"
189: and
190: .I Delayable
191: commands.
192: .I "Immediate Only"
193: commands happen on the next
194: update.
195: .I Delayable
196: commands also happen on the next update unless they
197: are followed by an optional predicate called the
198: .I Delay
199: command.
200: .LP
201: In the following tables, the syntax
202: .B [0\-9]
203: means any single digit, and
204: .B <dir>
205: refers to the keys around the 's' key, namely ``wedcxzaq''.
206: In absolute references, 'q' refers to North-West or 315 degrees, and 'w'
207: refers to North, or 0 degrees.
208: In relative references, 'q' refers to -45 degrees or 45 degrees left, and 'w'
209: refers to 0 degrees, or no change in direction.
210: .LP
211: All commands start with a plane letter. This indicates the recipient
212: of the command. Case is ignored.
213: .SS "IMMEDIATE ONLY COMMANDS"
214: .RS
215: .B "\- a Altitude:"
216: .RS
217: Affect a plane's altitude (and take off).
218: .RE
219: .RS
220: .B "\- [0\-9] Number:"
221: .RS
222: Go to the given altitude (thousands of feet).
223: .RE
224: .B "\- c/+ Climb:"
225: .RS
226: Relative altitude change.
227: .RE
228: .RS
229: .B "\- [0\-9] Number:"
230: .RS
231: Difference in thousands of feet.
232: .RE
233: .RE
234: .B "\- d/\- Descend:"
235: .RS
236: Relative altitude change.
237: .RE
238: .RS
239: .B "\- [0\-9] Number:"
240: .RS
241: Difference in thousands of feet.
242: .RE
243: .RE
244: .RE
245: .B "\- m Mark:"
246: .RS
247: Display in highlighted mode. Command is displayed normally.
248: .RE
249: .B "\- i Ignore:"
250: .RS
251: Do not display highlighted. Command is displayed as a
252: line of dashes if there is no command.
253: .RE
254: .B "\- u Unmark:"
255: .RS
256: Same as ignore, but if a delayed command is processed,
257: the plane will become marked. This is useful if you want
258: to forget about a plane during part, but not all, of its
259: journey.
260: .RE
261: .RE
262: .SS "DELAYABLE COMMANDS"
263: .RS
264: .B "\- c Circle:"
265: .RS
266: Have the plane circle (clockwise by default).
267: .RE
268: .RS
269: .B "\- l Left:"
270: .RS
271: Circle counterclockwise.
272: .RE
273: .B "\- r Right:"
274: .RS
275: Circle clockwise.
276: .RE
277: .RE
278: .B "\- t Turn:"
279: .RS
280: Change direction.
281: .RE
282: .RS
283: .B "\- l Left:"
284: .RS
285: Turn counterclockwise (45 degrees by default).
286: .RE
287: .RS
288: .B "\- <dir> Direction:"
289: .RS
290: Turn ccw the given number of degrees.
291: Zero degrees is no turn. A ccw turn
292: of -45 degrees is 45 cw.
293: .RE
294: .RE
295: .B "\- r Right:"
296: .RS
297: Turn clockwise (45 degrees by default).
298: .RE
299: .RS
300: .B "\- <dir> Direction:"
301: .RS
302: Same as turn left <dir>.
303: .RE
304: .RE
305: .B "\- L Left 90:"
306: .RS
307: Turn counterclockwise 90 degrees.
308: .RE
309: .B "\- R Right 90:"
310: .RS
311: Turn clockwise 90 degrees.
312: .RE
313: .B "\- <dir> Direction:"
314: .RS
315: Turn to the absolute compass heading given.
316: The shortest turn will be taken.
317: .RE
318: .B "\- t Towards:"
319: .RS
320: Turn towards a beacon, airport or exit. The turn is
321: just an estimate.
322: .RE
323: .RS
324: .B "\- b/* Beacon:"
325: .RS
326: Turn towards the beacon.
327: .RE
328: .RS
329: .B "\- [0-9] Number:"
330: .RS
331: The beacon number.
332: .RE
333: .RE
334: .B "\- e Exit:"
335: .RS
336: Turn towards the exit.
337: .RE
338: .RS
339: .B "\- [0-9] Number:"
340: .RS
341: The exit number.
342: .RE
343: .RE
344: .B "\- a Airport:"
345: .RS
346: Turn towards the airport.
347: .RE
348: .RS
349: .B "\- [0-9] Number:"
350: .RS
351: The airport number.
352: .RE
353: .RE
354: .RE
355: .RE
356: .RE
357: .SS THE DELAY COMMAND
358: .LP
359: The
360: .B Delay
361: (a/@)
362: command may be appended to any
363: .B Delayable
364: command. It allows the controller to instruct a plane to do an action
365: when the plane reaches a particular beacon (or other objects in future
366: versions).
367: .sp
368: .RS
369: .B "\- a/@ At:"
370: .RS
371: Do the given delayable command when the plane reaches the given beacon.
372: .RE
373: .RS
374: .B "\- b/* Beacon:"
375: .RS
376: This is redundant to allow for expansion.
377: .RE
378: .RS
379: .B "\- [0-9] Number:"
380: .RS
381: The beacon number.
382: .RE
383: .RE
384: .RE
385: .RE
386: .SS "MARKING, UNMARKING AND IGNORING"
387: .LP
388: Planes are
389: .B marked
390: when they enter the arena. This means they are displayed in highlighted
391: mode on the radar display. A plane may also be either
392: .B unmarked
393: or
394: .B ignored.
395: An
396: .B unmarked
397: plane is drawn in unhighlighted mode, and a line of dashes is displayed in
398: the command field of the information area. The plane will remain this
399: way until a mark command has been issued. Any other command will be issued,
400: but the command line will return to a line of dashes when the command
401: is completed.
402: .LP
403: An
404: .B ignored
405: plane is treated the same as an unmarked plane, except that it will
406: automatically switch to
407: .B marked
408: status when a delayed command has been processed. This is useful if
409: you want to forget about a plane for a while, but its flight path has
410: not yet been completely set.
411: .LP
412: As with all of the commands, marking, unmarking and ignoring will take effect
413: at the beginning of the next update. Do not be surprised if the plane does
414: not immediately switch to unhighlighted mode.
415: .SS EXAMPLES
416: .RS
417: .TP 16
418: atlab1
419: a: turn left at beacon #1
420: .TP 16
421: cc
422: C: circle
423: .TP 16
424: gtte4ab2
425: g: turn towards exit #4 at beacon #2
426: .TP 16
427: ma+2
428: m: altitude: climb 2000 feet
429: .TP 16
430: stq
431: S: turn to 315
432: .TP 16
433: xi
434: x: ignore
435: .RE
436: .SH "OTHER INFORMATION"
437: .LP
438: Jets move every update; prop planes move every other update.
439: .LP
440: All planes turn a most 90 degrees per movement.
441: .LP
442: Planes enter at 7000 feet and leave at 9000 feet.
443: .LP
444: Planes flying at an altitude of 0 crash if they are not over an airport.
445: .LP
446: Planes waiting at airports can only be told to take off (climb in altitude).
447: .SH "NEW GAMES"
448: .LP
449: The
450: .B Game_List
451: file lists the currently available play fields. New field description
452: file names must be placed in this file to be 'playable'. If a player
453: specifies a game not in this file, his score will not be logged.
454: .LP
455: The game field description files are broken into two parts. The first
456: part is the definition section. Here, the four tunable game parameters
457: must be set. These variables are set with the syntax:
458: .IP
459: variable = number;
460: .LP
461: Variable may be one of:
462: .B update,
463: indicating the number of seconds between forced updates;
464: .B newplane,
465: indicating (about) the number of updates between new plane entries;
466: .B width,
467: indicating the width of the play field; and
468: .B height,
469: indicating the height of the play field.
470: .LP
471: The second part of the field description files describes the locations
472: of the exits, the beacons, the airports and the lines.
473: The syntax is as follows:
474: .IP
475: beacon: (x y) ... ;
476: .br
477: airport: (x y direction) ... ;
478: .br
479: exit: (x y direction) ... ;
480: .br
481: line: [ (x1 y1) (x2 y2) ] ... ;
482: .LP
483: For beacons, a simple x, y coordinate pair is used (enclosed in parenthesis).
484: Airports and exits require a third value, a direction, which is one
485: of
486: .B wedcxzaq.
487: For airports, this is the direction that planes must be going to take
488: off and land, and for exits, this is the direction that planes will going
489: when they
490: .B enter
491: the arena. This may not seem intuitive, but as there is no restriction on
492: direction of exit, this is appropriate.
493: Lines are slightly different, since they need two coordinate pairs to
494: specify the line endpoints. These endpoints must be enclosed in
495: square brackets.
496: .LP
497: All statements are semi-colon (;) terminated. Multiple item statements
498: accumulate. Each definition must occur exactly once, before any
499: item statements. Comments begin with a hash (#) symbol
500: and terminate with a newline.
501: The coordinates are between zero and width-1 and height-1
502: inclusive. All of the exit coordinates must lie on the borders, and
503: all of the beacons and airports must lie inside of the borders.
504: Line endpoints may be anywhere within the field, so long as
505: the lines are horizontal, vertical or
506: .B "exactly diagonal."
507: .SS "FIELD FILE EXAMPLE"
508: .RS
509: .sp
510: .nf
511: .TA 1i 1i
512: .ta 1i 1i
513: # This is the default game.
514:
515: update = 5;
516: newplane = 5;
517: width = 30;
518: height = 21;
519:
520: exit: ( 12 0 x ) ( 29 0 z ) ( 29 7 a ) ( 29 17 a )
521: ( 9 20 e ) ( 0 13 d ) ( 0 7 d ) ( 0 0 c ) ;
522:
523: beacon: ( 12 7 ) ( 12 17 ) ;
524:
525: airport: ( 20 15 w ) ( 20 18 d ) ;
526:
527: line: [ ( 1 1 ) ( 6 6 ) ]
528: [ ( 12 1 ) ( 12 6 ) ]
529: [ ( 13 7 ) ( 28 7 ) ]
530: [ ( 28 1 ) ( 13 16 ) ]
531: [ ( 1 13 ) ( 11 13 ) ]
532: [ ( 12 8 ) ( 12 16 ) ]
533: [ ( 11 18 ) ( 10 19 ) ]
534: [ ( 13 17 ) ( 28 17 ) ]
535: [ ( 1 7 ) ( 11 7 ) ] ;
536: .fi
537: .RE
538: .SH FILES
539: .LP
540: Files are kept in a special directory. See the OPTIONS for a way to
541: print this path out.
542: .TP 16
543: .B ATC_score
544: Where the scores are kept.
545: .TP 16
546: .B Game_List
547: The list of playable games.
548: .SH AUTHOR
549: .LP
550: Ed James, UC Berkeley: [email protected], ucbvax!edjames
551: .LP
552: This game is based on someone's description of the overall flavor
553: of a game written for some unknown PC many years ago, maybe.
554: .SH BUGS
555: .LP
556: The screen sometimes refreshes after you have quit.
557: .LP
558: Yet Another Curses Bug was discovered during the development of this game.
559: If your curses library clrtobot.o is version 5.1 or earlier,
560: you will have erase problems with the backspace operator in the input
561: window.
562:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.