ejb@think.ARPA (Erik Bailey) (04/24/86)
This is GALAXY, a 2-player real time game of interstellar domination. Warning -- although this game looks great, I have never used it because it requires ROOT privs. Enjoy... --Erik -------------fold, staple, mutilate, line-eater!---------------------- #!/bin/sh # shar: Shell Archiver # Run the following text with /bin/sh to create: # Manifest # READ_ME # install.sh # install_howto # galaxy.6 # galaxy.man # This archive created: Sat Jun 8 14:16:52 1985 echo shar: extracting Manifest '(1962 characters)' cat << \SHAR_EOF > Manifest Comments on: Why we did what we did and who helped us Mordechai Chachamu Amnnon Horowits 1. Background The idea of galaxy came to me (the first author) few years ago. I felt that the video games, and in general - computerized games, are usually thrilling only for few times. They either depend on swift reactions and/or sheer luck, or implement a computerized versions of old games. Thus I looked for a game that answers two criteria: 1) It is practically impossible to be played without a com- puter. 2) The computer has no influence upon the outcome of the game. The way to satisfy those seemingly contradictory requirements was to create a game that challenges TWO players sitting at TWO different terminals. The game uses the computer merely as a data base manager and as a transmitting media between the two players. Skimming through the game's document will soon reveal that there is no rational way to play this game without a computer. As the game evolved, it became clear that it implements some more principles. Namely - 3) You can never have it all. 4) There is no "best solution". 5) There is always some amount of uncertainity. We feel that although the game is hard to get familiar with, once it's principles and their implementation is understood, GALAXY is a very attractive game. First attempts to write the game were futile, mostly because I lucked knowledge in UNIX. At this stage came to rescue the second author, that managed most of the tricky parts. 2. Acknowledgments Many thanks to the people in the computer lab of Tel Aviv University. Specially helpful (and encouraging) were Nir Peleg, On Paradise and Robert Segall. Mordechai Chachamu (mrdch@taurus) Amnnon Horowits (amnnon@taurus) SHAR_EOF if test 1962 -ne "`wc -c Manifest`" then echo shar: error transmitting Manifest '(should have been 1962 characters)' fi echo shar: extracting READ_ME '(968 characters)' cat << \SHAR_EOF > READ_ME What have we got here: This directory contains ALL what it takes to install, run and (hopefully) understand the game of GALAXY. Files: Manifest - some background motivation and "history". install_howto - detailed description of installing procedure. install.sh - a shell script that does it all. Read it first!!! Directories: src - GALAXY main source. src1 - secondary source. command files, response stuff, etc. man - manual page. doc - galaxy's document. online - galaxy's document as it apears on line during the game. We will be *VERY* glad to receive ANY comment. Mail to: {mrdch,amnnon}@taurus (BITNET) {mrdch,amnnon}@taurus.bitnet@berkely (ARPA) {mrdch,amnnon}%taurus.bitnet@wiscvm.ARPA (CSNET) and if all fails, then ...!decvax!humus!taurus!{mrdch,amnnon} (UUCP) SHAR_EOF if test 968 -ne "`wc -c READ_ME`" then echo shar: error transmitting READ_ME '(should have been 968 characters)' fi echo shar: extracting install.sh '(1909 characters)' cat << \SHAR_EOF > install.sh # This is the galaxy maker. # Be sure to set the following shell-variables before you run this # command file. # Since this file has to use super-user privileges, be sure to read # it before you use it. # Good luck. SDIR=. #SDIR=/users/guest/galaxy/distr SOURCES=$SDIR/src SOURCES1=$SDIR/src1 LIBDIR=/usr/games/lib/galaxy MAN=$SDIR/man DOC=$SDIR/doc ONLINE=$SDIR/online cat << Funny Warning: Read this file before running it! Warning: This file must be run with super_user priviliges. Before running it , create a user named galaxy, group - games. Shall I proceed ? Funny read answer if [ "$answer" != y ]; then echo GoodBye exit 1 fi if [ ! -d $LIBDIR ]; then mkdir $LIBDIR chuser galaxy $LIBDIR exit 1 fi cd $SOURCES; make galaxy cd $SOURCES1; make all mkdir $LIBDIR/online ; chuser galaxy $LIBDIR/online cp $ONLINE/* $LIBDIR/online ; chuser galaxy $LIBDIR/online/* # install all files in library directory.... cd $LIBDIR cp $SOURCES/galaxy galaxy.out # galaxy main program chuser galaxy galaxy.out chmod 4111 galaxy.out cp $SOURCES1/pager pager # call the second user chuser galaxy pager cp $SOURCES1/local local # 2 terminal I/O handler chuser galaxy local cp $SOURCES1/galaxy.motd galaxy.motd # general note chuser galaxy galaxy.motd cp $SOURCES1/galaxy.csh /usr/games/galaxy # command file. chuser galaxy /usr/games/galaxy chmod 755 /usr/games/galaxy cp $SOURCES1/okgalaxy /usr/games/okgalaxy # response program chuser galaxy /usr/games/okgalaxy echo > galaxy.scor # score file. chuser galaxy galaxy.scor echo > wizards # wizard file. chmod 644 wizards chuser galaxy wizards cp $MAN/galaxy.6 /usr/man/man6/galaxy.6 # manual cp $DOC/galaxy.doc /usr/doc/galaxy # document SHAR_EOF if test 1909 -ne "`wc -c install.sh`" then echo shar: error transmitting install.sh '(should have been 1909 characters)' fi echo shar: extracting install_howto '(7263 characters)' cat << \SHAR_EOF > install_howto *************************************************************** * PLEASE NOTICE THE FOLLOWING CONDITIONS * *************************************************************** As the authors of the game, we would like to make some requests and remarks concerning the game installation. 1. The sources contained hereby are distributed free, for the much hoped enjoyment of all game lovers. 2. Being in public domain, anyone is entitled to change/add/delete anything he wishes. 3. We make a distinction between two kinds of changes: "Bug fix" - a change that brings the game to act closer to the way it should. (As defined in the document). "Enhancement" - a change that alters the way a player THINKS during the play. As a test to distinguish between the two, one should answer the question: "Will I play differently BECAUSE of that change?" 4. We would appreciate hearing about changes of the first kind. If possible, please mail them to us. 5. If a change of the second kind is introduced, we expect the person to compile it under a DIFFERENT name. (However similar to the origin). In addition, we would like to hear about it, and the reasoning behind it. 7. The game may be redistributed on the condition that no file from the original distribution will be left out. 8. The reason for the requests above is: Galaxy is different from many computer games, by involving TWO players at the same time. It is our wish that two people from different SITES will be able to compete one against the other. This can be achieved ONLY if the rules and conditions specified in the document remain intact. 9. On the other hand, we are eagerly waiting for reactions of any kind. If there will be some public opinion concerning the way the game SHOULD be, we will correct it on future versions. *************************************************************** * END OF CONDITIONS. NOW THE FUN. * *************************************************************** Installing galaxy - Three ways to treat a lady. 1. Run the install.sh in this directory. It must be run with Super User privileges, so at least read it before typing the command. 2. Refer to the end of this document, which outlines a step by step procedure. 3. Read further, and possibly gain more insight to the structure of this game. Contents of the distribution directory. The distribution directory contains several subdirectories: "Src" holds the source for the main program and "src1" has the source for miscellaneous programs. "Man" holds the manual page, for general reference. "Doc" contains the complete documentation for the novice and experienced player. "Online" is the same document in small pieces, that can be viewed during the game. After compiling the source two programs are obtained: "Galaxy" and "okgalaxy". "Galaxy" is the game itself. Whenever a user wishes to challenge somebody to this play, he should run "galaxy". If the offer is accepted, the other user runs "okgalaxy". Protection In order to enjoy the game to it's full potential, ALL relevant files should have their access bits set so that NO forgery is possible. When a game is saved, the saved file belongs to "galaxy", and it's mode set to 600. The two runable modules belong to galaxy. Their mode should be 4111. The directory "/usr/games/lib/galaxy" is to be owned by galaxy too, and have it's mode bits set to 700. Manuals "Nroff" the document and the manual page. Place them in their appropriate place. (The "galaxy.doc" at "/usr/doc" and "galaxy.nrf" in "/usr/doc/nroffed"). The "online" holds the entries for the online "help" facility of the game. It should be copied entirely to "/usr/games/lib/galaxy/online" directory. Terminals The screen is a vital instrument here. The game looks for the type of terminal used, as defined by TERM in the environment. It then extracts some entries from the "termcap" data base. If the terminal lacks some basic capabilities, the session will be aborted. ***** High baud rates are recommended. ***** One feature of the game is it's ability to make good use of 2 screens terminals. There is NO entry for "FLip to the next page" and "Flip Back to the previous page" in termcap(5). In many new terminals such capability exists. If such is the case at your place, add those two entries. We have defined them as "fl" and "fb" respectively. Installation - step by step The procedure outlined here is a detailed version of the command file install.sh in this directory. It is assumed that a uid named "galaxy" is created, within the "games" group. To avoid use of super user privileges, all files belong to galaxy. The variables outlined here can be freely changed. SDIR = /users/guest/galaxy/distr ; the "home" dir. ; subdirectories within "home" directory. SOURCES = $SDIR/src SOURCES1 = $SDIR/src1 MAN = $SDIR/man DOC = $SDIR/doc ONLINE = $SDIR/online ; where most of the game will reside LIBDIR = /usr/games/lib/galaxy ; create LIBDIR with galaxy ownership mkdir $LIBDIR chuser galaxy $LIBDIR ; compile the programs cd $SOURCES; make galaxy cd $SOURCES1; make all ; transfer them to their place and take care of mode bits cd $LIBDIR cp $SOURCES/galaxy galaxy.out # galaxy main program chuser galaxy galaxy.out chmod 4111 galaxy.out cp $SOURCES1/pager pager # call the second user chuser galaxy pager cp $SOURCES1/local local # 2 terminal I/O handler chuser galaxy local cp $SOURCES1/galaxy.csh /usr/games/galaxy # command file. chuser galaxy /usr/games/galaxy chmod 755 /usr/games/galaxy cp $SOURCES1/okgalaxy /usr/games/okgalaxy # response program chuser galaxy /usr/games/okgalaxy ; create the score file echo > galaxy.scor # score file. chuser galaxy galaxy.scor ; take care of documentation cp $MAN/galaxy.6 /usr/man/man6/galaxy.6 # manual cp $DOC/galaxy.doc /usr/doc/galaxy # document ; and the online documentation mkdir $LIBDIR/online ; chuser galaxy $LIBDIR/online cp $ONLINE/* $LIBDIR/online ; chuser galaxy $LIBDIR/online/* ; The following suggestions are not essential, but recommended. make a file in /usr/games/lib/galaxy by the name "wizards". This file should contain login names of people who would like to experiment and debug (???) things in that game. Copy the sources to /usr/src/games/galaxy Read the "Terminals" paragraph above, and see if you can do something about it. We cannot over-emphasize our request for comments criticism and, yes, even encouragements. Please mail them to Our address: {mrdch,amnnon}@taurus (BITNET) {mrdch,amnnon}@taurus.bitnet@berkeley (ARPA) {mrdch,amnnon}%taurus.bitnet@wiscvm.ARPA (CSNET) and if all fails, then ...!decvax!humus!taurus!{mrdch,amnnon} (UUCP) Mordechai Chachamu Amnon Horowits SHAR_EOF if test 7263 -ne "`wc -c install_howto`" then echo shar: error transmitting install_howto '(should have been 7263 characters)' fi echo shar: extracting galaxy.6 '(2121 characters)' cat << \SHAR_EOF > galaxy.6 .TH GALAXY 6 MRDCH&AMNNON .SH NAME galaxy, okgalaxy \- A two player duel in space .SH SYNOPSIS .B /usr/games/galaxy [ \-t \-a \-m user ] .br .B /usr/games/okgalaxy .SH DESCRIPTION .I Galaxy is a game of strategy and cunning for two players. It is played on two different CRT terminals, which must be from among those supported by vi(1). The game displays a map of a remote part of the universe, with two identical galaxies on each terminal. Each player owns one galaxy. The aim of the game is to conquer the opponent's Capital, which is the center of his galaxy. .I Both players give commands simultaneously, without knowing the enemy's position and intentions. .br There are quite a few commands, that enable each player to perform various tasks. Refer to the .I Galaxy's document for specification. The "help" command enables online review of major parts from that document. .PP To play the .I galaxy game, run /usr/games/galaxy. You will be asked who do you want to play with. You should specify a logged in user name. That user will receive a message asking him to accept the challenge. If he accepts, he should run /usr/games/okgalaxy within some reasonable time. Only then the game starts. .PP If you wish to practice .I galaxy you can enter "-null" instead of a real user name. You then have the ability to see and/or command the "other" side by giving the "cp" (change player) command. You can switch back easily by the same command. .PP To see the scores obtained so far, run /usr/games/galaxy with the following options: .br \-t \- show the top 10 players and related statistics. .br \-a \- show all games played so far. .br \-m \- show all the games played by you. .br user \- show all games played by 'user'. .br Further documentation may be found in .I Galaxy's document. .SH FILES /usr/games/lib/galaxy library directory. .SH SEE ALSO M. Chachamu and A. Horowits .I Galactical War .SH BUGS Infinity is a good approximtion. The document is lengthy and lacks humor. .br .I Please mail any bugs or comments to the authors at taurus. .SH AUTHORS Mordechai Chachamu .br Amnon Horowits. SHAR_EOF if test 2121 -ne "`wc -c galaxy.6`" then echo shar: error transmitting galaxy.6 '(should have been 2121 characters)' fi echo shar: extracting galaxy.man '(2661 characters)' cat << \SHAR_EOF > galaxy.man GALAXY(6) UNIX Programmer's Manual GALAXY(6) NAME galaxy, okgalaxy - A two player duel in space SYNOPSIS /usr/games/galaxy [ -t -a -m user ] /usr/games/okgalaxy DESCRIPTION _G_a_l_a_x_y is a game of strategy and cunning for two players. It is played on two different CRT terminals, which must be from among those supported by vi(1). The game displays a map of a remote part of the universe, with two identical galax- ies on each terminal. Each player owns one galaxy. The aim of the game is to conquer the opponent's Capital, which is the center of his galaxy. _B_o_t_h _p_l_a_y_e_r_s give commands simul- taneously, without knowing the enemy's position and inten- tions. There are quite a few commands, that enable each player to perform various tasks. Refer to the _G_a_l_a_x_y'_s document for specification. The "help" command enables online review of major parts from that document. To play the _g_a_l_a_x_y game, run /usr/games/galaxy. You will be asked who do you want to play with. You should specify a logged in user name. That user will receive a message ask- ing him to accept the challenge. If he accepts, he should run /usr/games/okgalaxy within some reasonable time. Only then the game starts. If you wish to practice _g_a_l_a_x_y you can enter "-null" instead of a real user name. You then have the ability to see and/or command the "other" side by giving the "cp" (change player) command. You can switch back easily by the same command. To see the scores obtained so far, run /usr/games/galaxy with the following options: -t - show the top 10 players and related statistics. -a - show all games played so far. -m - show all the games played by you. user - show all games played by 'user'. Further documentation may be found in _G_a_l_a_x_y'_s document. FILES /usr/games/lib/galaxy library directory. SEE ALSO M. Chachamu and A. Horowits _G_a_l_a_c_t_i_c_a_l _W_a_r BUGS Infinity is a good approximtion. The document is lengthy and lacks humor. _P_l_e_a_s_e mail any bugs or comments to the authors at taurus. Printed 6/8/85 MRDCH&AMNNON 1 GALAXY(6) UNIX Programmer's Manual GALAXY(6) AUTHORS Mordechai Chachamu Amnon Horowits. Printed 6/8/85 MRDCH&AMNNON 2 SHAR_EOF if test 2661 -ne "`wc -c galaxy.man`" then echo shar: error transmitting galaxy.man '(should have been 2661 characters)' fi # End of shell archive exit 0 -- Erik Bailey -- 7 Oak Knoll (USENET courtesy of ihnp4!think!ejb Arlington, MA 02174 Thinking Machines Corp. ejb@think.com (617) 643-0732 Cambridge, MA) It takes thought to make a program that thinks. But it takes work to make a program that works.