Difference between revisions of "MULTI-TREK"
(Category "SIMH Tutorials" added) |
m (Made "RATFIV" a link) |
||
Line 3: | Line 3: | ||
I used the [[ods2]] tool from the [[SIMH]] [https://github.com/open-simh/simtools tools collection] to transfer the MTREK files to a VMS disk image file. | I used the [[ods2]] tool from the [[SIMH]] [https://github.com/open-simh/simtools tools collection] to transfer the MTREK files to a VMS disk image file. | ||
− | I decided to use the [[FORTRAN]] source files instead of the [[RATFIV]] ones, because I could not get the RATFIV [[compiler]] going (I will try that again later). | + | I decided to use the [[FORTRAN]] source files instead of the [[RATFIV]] ones, because I could not get the [[RATFIV]] [[compiler]] going (I will try that again later). |
The date of the RATFIV source files (28-APR-1982) gave me a clue to try [[VMS]] V3 for MTREK, which proved to be successful. | The date of the RATFIV source files (28-APR-1982) gave me a clue to try [[VMS]] V3 for MTREK, which proved to be successful. |
Latest revision as of 09:53, 19 November 2024
While searching the Internet for information on the VAX TREK7 game, I stumbled over another Star-Trek game called MULTI-TREK or just MTREK in the DECUS collection of VMS software tapes.
I used the ods2 tool from the SIMH tools collection to transfer the MTREK files to a VMS disk image file.
I decided to use the FORTRAN source files instead of the RATFIV ones, because I could not get the RATFIV compiler going (I will try that again later).
The date of the RATFIV source files (28-APR-1982) gave me a clue to try VMS V3 for MTREK, which proved to be successful.
Using the @BUILD command gave some error messages, which were overcome in some steps by trial and error.
The nasty surprise showed up when I started the MTREK program that had compiled and linked so easy. Directly after entering the chosen vessel number, the program "froze" and did not accept anymore input except CTRL-C or CTRL-Y, both of which aborted the game. After studying the sources, and some simple debugging attempts, I decided to employ the VAX debugger to obtain more information as to what was going on.
A helpful chap from the U.K., Dave Roberts, replied to my call for help on the VCFed DEC Forum; and together we attempted to debug and correct the errant behaviour.
The first step to success was the detection of the endless loop that caused the "freezing" of the program. Then Dave found the suspicious subroutine "INCHAR", and after analyzing the QIO calls and their return codes with two VMS manuals I provided, he finally found out that a necessary initialisation routine was commented out for whatever reason. After removing the "C" (for "Comment") in the respective source line, followed by re-compiling and re-linking, MTREK ran as expected. Little cause for a great event ...
Hurray, game time!
This is an example of a player's view at the universe:
Energy : 9848.5 * * Scores Shields : 0.0 R 1 -1000. * Warp : 3.00 * 2 0. Course : 3.00 3 0. 4 0. X co-ord : 38.8 * 5 0. Y co-ord : 89.5 1 6 0. # 7 0. Torps : 10 8 0. Seekers : 4 Hyper : 3 Scan: 2 Def Ship : 2 * Dir : 1.75 Def Direc: 1.75 Dist: 51.08 * Sect: 7, 2 . .
Contents
Introduction to MTREK
File "aareadme.doc" from the MTREK distro:
MULTI-TREK is a game similar to traditional Star-Trek games except that it involves several players (currently up to 8), who play against each other in real time rather than against imaginary Klingons, Romulans or whatever. The MULTI-TREK universe consists of a 100 by 100 matrix, of which an approximate 20 by 20 matrix of each player's immediate area is displayed and continuously updated at their terminal. MULTI-TREK was originally submitted to the New Orleans RSX/IAS sig tape, then to the 1979 San Diego RSX/IAS sig tape with the addition of robot ships. Since then it has been recoded in RATFIV and has significant enhancements and improvements, most notably the addition of energy nets, an improved screen display, much better input-output (any terminal with clear screen and cursor positioning may be used at speeds from 1200 baud on up), use of default ship and direction with most commands ("L" sets the default direction), more competitive scoring, smarter robot ships,reverse polish command sequences (fewer keystrokes), and fewer bugs. This version is being submitted to the Spring 1982 VAX tapes and features the rpn command sequences and fades that don't exactly show up on radar locates. Complete instructions for starting and playing MULTI-TREK are in the file MTREK.DOC. The game consists of a driver task (MTREKD), a player task (MTREK) for each terminal, and a shared global common area for inter-task communication. This version runs on VAX VMS, however, it should run under any system with shared global areas and rudimentary task switching or time-sharing. Real-time systems without time-sharing may have to play with priorities to insure that the driver task gets sufficient CPU time and that all players get an equal amount of time. MULTI-TREK was written with a structured Fortran called RATFIV. The IAS version contains all of the Fortran produced by RATFIV, as well as the RATFIV source (file type .RAT). The VAX VMS version does not include the .FOR files, however the RATFIV compiler is included on both distribution tapes. MTREK will work properly with any terminal with clear screen and cursor positioning. The source code is set up to drive ADM3-A's or VT100's and VT52's. If you are using different terminals, you should modify the file "TERMINAL.RAT" (you could modify "TERMINAL.FTN") to drive your terminal. Modification should be straight-forward as the code is commented on where to change it. To build MTREK, do @BUILD The VAX VMS version places the common area, LEDFOR, on SYS$SHARE and installs it /WRITE/SHARE. It also puts MTREK.EXE, the player task, and MTREKD.EXE, the universe manager task, on SYS$SYSTEM, and installs MTREK.EXE with DETACH and ACNT privileges, so that anyone can start up MTREKD as a detached process (only one copy of MTREKD runs at a time, however). After building MTREK, first run MTREKINI. Then, on VAX VMS systems, say MCR MTREK and you are off and running. On IAS systems, the universe manager MTREKD must be started by hand before MTREK is run. You can run MTREKD on a dedicated terminal or install it and run it /REAL.
Status Quo
How to run MTREK on a real VAX or SIMH VAX
Get the MTREK kit and follow the instructions included.
MTREK Manual
File "mtrek.doc" from the MTREK distro:
1.0 INTRODUCTION This game was written as a tool to test the use of shared global areas with time-shared programs. The game consists of five parts, the shared global area, the driver task (MTREKD) which controls the universe, the MTREK task which interfaces with the players, the initialization program (MTREKINI), and the robot ship program (ROBOT). The source code for the game is intended to be public so that enhancements can be added by any interested party. Those making additions should add their names to those listed as contributors at the start of the MTREKD program. NOTE MTREK was originally developed under IAS but is written almost entirely in RATFOR and should be readily convertible to RSX-11M or, for that matter, to any system that supports shared global areas and time-shared tasks or some equivalent. MTREK was originally written at Boeing Computer Services in Seattle, Washington by Don Ledford, John Lutch, and Ray French. The current game is an enhanced version developed at The Institute For Cancer Research in Philadelphia, Pa. by Bill Wood, Bill Cael, and Bob Stodola. Good luck, and don't get discouraged as the game requires a little practice! 2.0 PLAYING MULTI-TREK The game is very similar to the traditional Star-Trek game with the following exceptions. First, the game involves several players (1-8), each of whom has his own terminal and starship. Second, the game runs in real time as far as the players are concerned. For example, if you are going warp 8 you will continue to move regardless of your activity at the terminal (unless you are destroyed, hit something, run out of energy, or change your warp speed). Each player's status and position as well as the scores of all players is displayed and continuously updated at each player's terminal. (The update rate is 2.5 times per second, but the source code is commented on where to change it should you wish to do so.) Third, at the present time there are no Klingons or Romulans to shoot down, instead you shoot (or at least attempt to shoot) the other players. The universe consists of a 100 by 100 matrix which wraps around itself. Therefore if you move off one end of the universe you appear on the other end. (This is true of phasers and torpedoes also.) The universe is made up of the following items: 1. " " Empty space 2. "-" Universe boundary 3. "*" Star 4. "B" Star-base (ram it to dock and thereby refuel) 5. "H" Hyperspace point (described below) 6. "R" Random hyperspace point (also described below) 7. "+" Torpedo 8. "^" Homing torpedo (seeker) 9. "#" Black hole will pursue nearest player 10. "@" Anti-matter pod 11. "%" Energy net 12. "1"-"8" Player's ships 2.1 Hyperspace Ports When a hyperspace port is hit by a ship the ship is teleported to a new location in the universe. The "H" type of hyperspace port can be used to go to a set location whereas the "R" type of port produces a random jump. The "H" ports are located at fixed locations; these are as follows: ^PORT ^NUMBER ^X ^COORD ^Y ^COORD ----------- ------- ------- 1 20 75 2 50 70 3 80 75 4 20 25 5 50 30 6 80 25 ^THE NETWORK OF PORTS LOOKS LIKE THIS: 1 3 2 5 4 6 By using the "H" command a player can set the port number he wishes to appear beside the next time he goes into hyperspace through an "H" type port. For example, if a player used the "H" command to set his hyperspace setting to 4, the next time he ran into an "H" character he would appear near coordinates 20,25. A player's anti-matter pod can travel through hyper-space also; upon re-emergence in the universe, it blows up. Pods going through random hyperspace reappear randomly; those going through "H" type ports reappear at the pod owner's current hyperspace jump point. 2.2 Scoring The current scores of all players are displayed on the screen. A '*' beside a score indicates an active player. The following actions result in score changes: 1. Torpedo hit on enemy vessel: +500 2. Homer hit on enemy vessel: +300 3. Phaser hit on enemy vessel: +(between 70 and 200 depending on distance) 4. Pod explosion: +(between 300 and 1500 depending on distance) 5. Torpedo hit on base: -200 6. Getting destroyed: -1000 2.3 Energy Consumption 1. Shooting phasers: -50 2. Warp: -.5 * WARP SPEED per time interval 3. Send message: -10 4. Collide with star: -200 5. Collide with ship: -100 6. Cloaking: -25 per time interval (default) 7. Energy net: -75 per net unit constructed (default) 8. Tractor beam: -100 per time interval (default) Energy loss due to weapon hit is a function of shield strength and weapon energy. 2.4 Calculations The following formula are used: 1. Phaser hit energy: ENERGY=900./(4. + DISTANCE) 2. Torpedo hit energy: ENERGY=500. 3. Shield protection: SHIELD ABSORBTION FACTOR=SHIELD ENERGY/1000. (^WITH A MAXIMUM VALUE OF 1.) SHIELD DIRECTION FACTOR= (.5 + ABS(SHIP'S DIREC - WEAPON'S DIREC)/360) SHIELD FACTOR = SHIELD DIRECTION FACTOR * SHIELD ABSORBTION FACTOR SHIELD ENERGY = SHIELD ENERGY - SHIELD FACTOR * ENERGY OF HIT ENERGY OF SHIP = ENERGY OF SHIP - (1.2 - SHIELD FACTOR) * ENERGY OF HIT * 6 4. Tractor beam pull: 8./SQRT(MAX(1., DISTANCE BETWEEN SHIPS-6.)) Anti-matter causes both damage to the scan, and results in an energy hit. Both of these effects are energy dependent. 2.5 MTREK commands All commands consist of one character, and most of them can be preeceded by a numeric argument. This argument can be input with the command character, or can be a default ship or direction. Generally, typing a new ship number or direction changes the default ship or direction, however there are exceptions. In addition, the "L" (long range scan) command changes the default direction to the direction of the scanned ship, which is convenient for firing at the scanned ship. See below for other commands which change the defaults. To use a default value, simply type the command letter. 1. Help "?" Prints a summary of all commands. 2. Shields "S" Raise or lower shields. This may be preceeded by a real number (+ or -). Your default shield change value is reset every time you set positive shields, and this default value may be used by just typing the "S" command. 1000 units is the most that will do any good. But you may want a little reserve. 3. Reset "R" Clears the screen and redraws the entire display. 4. Torpedoes "T" Fire torpedoes. A direction may be specified. "T" fires in the default direction, a number fires in that direction and resets the default. Torpedoes move at warp 10, and destroy anti-matter pods. 5. Phasers "P" Fire phasers. A direction may be specified. "P" fires in the default direction, A number fires in that direction and resets the default. Phasers are instantaneous, have a range of 10 squares, and shoot a band 3 squares wide. They will not destroy torpedoes (except homers). 6. Locate "L" Long range scan for another player. The "L" command sets the default direction to that of the scanned ship. It may be precceded by a ship number as an argument. "L" locates a default ship. If a ship number is given, the default ship is reset to that ship. 7. Message "M" Send a message to another player on subspace radio. "M" sends to the default ship, a ship number sends to that ship. A ship number of zero broadcasts the message to all ships. The default ship is not reset. 8. Warp "W" Set warp speed 0-8. 9. Course "C" Set course 0-12 (clock face). This does not affect your warp speed or default direction. However, the default direction may be used to set the course. All directions are to be specified in "clock face" numbers. For example: 0. is up 9. is left 3. is right 6. is down 7.5 is toward the lower left corner, etc. 10. Quit "Q" Quit. 11. Hyperspace "H" Set hyperspace jump point 1 through 6. 12. Cloak on "F" Fade away. The cloaking device is a continuous energy drain when activated. A cloaked ship cannot move. Typeing "F" will toggle this mode. 13. Cloak off "A" Appear. 14. Energy net on/off "E" Start/stop energy net construction. Energy nets provide a "wall" which other ships will bounce off of, however your ship travels instantaneously through your energy nets. Torpedoes may be used to destroy nets. The black hole is blocked by them. Phasers do not penetrate nets. 15. Seeking torpedo launch "K" If you specify a ship number to home in on the default will be changed. If none is specified then the default ship is located. Homing torpedoes can not be fired at faded ships. Homing torpedoes destroy anti-matter pods. Seeking torpedoes can be shot down with phasers (at least sometimes). 16. Anti-matter launch "Z" If a direction is specified the default direction is reset. Pods move at warp 5. "Z" fires in the default direction, When an anti-matter pod hits a hyper-space port, it travels through it to your current hyperspace jump point and blows up. Pods also travel through random hyper-space ports to a random location and blow up. 17. Anti-matter freeze "N" Stop movement of anti-matter device. (It will become a static mine.) 18. Anti-matter detonate "X" Detonate anti matter pod. This explosion destroys an entire area, except for bases and hyperspace points. The pattern of the explosion is as below. X X X X X X X X X X X X X X X X X X X X X Ships within 4 of an exploding pod lose some energy and have their vision partially obscured. The black hole is randomly relocated when caught in a pod explosion. 19. Tractor beams "B" Set tractor beam target ship (1-8). 0 to stop tractor beam. Tractor beams are used to pull your opponent's ship towards you. The closer the ships are the stronger the pull of the tractor beam. The default ship is reset. 20. Verbose/Non-verbose mode "V" Flip on/off verbose mode. In non-verbose mode, only the first letter of each word is printed. For example, + TORPEDO HIT ALIEN! becomes +THA This is sometimes useful in the heat of battle on a slow (1200 baud) terminal. 21. Flush type-ahead buffer " " The game keeps an internal typeahead buffer of up to 20 characters. Typeing " " will flush this buffer. 3.0 STARTING THE GAME If you are starting a new game, first initialize the universe using MTREKINI: $ RUN MTREKINI It will ask a series of set up questions (defaults are invoked by <CR>): 1. Any random integer between -32k and +32k (default = 0). 2. A star density between 2 and 3 is good (default = 2.0). 3. About 20 to 25 star-bases is ok (default = 20). 4. Usually 5-10 random jump points (default = 6). 5. A cloaking energy drain of 20 to 40 (default = 25). 6. Net construction energy drain of 0 to 2000 (default = 75). 7. Tractor beam energy drain of 0 to 2000 (default = 100). 8. Black hole speed of 2. to 5. (default = 4.5). 3.1 Player Initiation Several crt terminals are required to play the game. The driver program, MTREKD, may be started automatically on your system. (It is at ICR.) If not, it must be started up prior to playing. Then each player should issue the following command at his terminal: $ RUN MTREK A list of unoccupied ships will be displayed, so choose an unoccupied ship and you are ready to play. It is possible for two or more players to control the same ship by selecting an occupied ship, e.g., one player can control navigation and the other weapons. Players may enter and leave the game at any time. 3.2 Robot Ships In addition to playing against human opponents you can turn the unused ships over to computer control. This is done by starting the ROBOT program. You can choose the ships to be controlled and the capability of the ships' robot skippers. Each running ROBOT program can control several ships which will act as a team. If more than one ROBOT program is started then their ships will fight with each other. Robot ships are started with the command: $ RUN ROBOT A list of unoccupied ships will be displayed. Enter the number(s) of the ship(s) to be under robot control. When the robot "team" has been selected, enter <CR> and the ROBOT program will ask several questions to set up the ability of the robot skippers (as with MTREKINI, defaults are invoked by <CR>): 1. Maximum speed of robot ships (default = warp 8). 2. Robot reaction time (default = 1.5). 3. Amount of phaser fire (default = 5). 4. Degree of inaccuracy (default = 0 degrees). 4.0 TERMINATING THE GAME It is important that the last MTREK players clean up the system before they leave. This is done by issuing the following set of commands: 1. Terminate each MTREK program by entering the "Q" command. 2. If you are running any ROBOT programs abort each one as follows: <CNTRL> C Note that the universe manager, MTREKD, stops running about 30 seconds after everyone quits playing. Now mop up the blood, sweat, and tears; logout; and go home.
Some useful additions to the original manual:
5.0 ADDITIONS TO THE MANUAL 5.1 ADDITIONS TO STARTING THE GAME There are two special values for the startup settings which make playing easier for the beginner: 1. Setting star density to 0 results in no stars in your way at all. 2. Setting black hole speed to 0 will create no black holes to eat up your vessel. 5.2 THE UNIVERSE MAP At any time you can generate a map of the complete universe using RUN MAP. The result is put into the file UNIVERSE.MAP. You can either view it on the terminal with TYPE UNIVERSE.MAP or print it with PRINT UNIVERSE.MAP. The map shows everything in the current state of the universe. Furthermore you get the status quo of all 8 ships. A typical map looks like this: ---------------------------------------------------------------*-----------------------*------------ -..*..........*....R...............................*...............................................- -......*......................................................................*....................- -................................................................................B.................- -...............*...............R...............................................................*..- -...............................*..............B..*....................................6........*..- -..............*.......B...................*........................................*...........*..- -..................B...................................................................*...........- -........................+..................................................................B......- -.....................*..................*.........................................................- -......................................*...........................................................- -.........*............*....................B....................................**................- *.................................................*..........................*.....................- -.......*.............*............................................................................- -......*...........................................................................................- -...............................................................*..................................- -..............*...................................................................................- -.....*...............................*.....................................*......................- -...............*..................................................................................- -.................................................*................................................- -....................*......*...................................................................**.- -....................*.....*.........................................*.........*...................- *..........*..R................................*.......B...*...........................*...........- -......*.............................................................................**............- -........................................................*.....*...................................- -..................H.......................*..............*....................H...................- -........*...........*.......................*.................................................*...- -................*.............................................................*...................- -.............................................................B....................................- -..................................................................................................- -................................................H....................*.......*....................- -.................................................................*...................*............- -..................................*.............................R.*................*..............- -.................................................*.................*..*.*........*................- -.*...............................................................*................................- -.......................*................*.*..................................*....................- -...............................................*..................................................- -.................B...................**....................*.............................*.*......- -......*................................*............*..........................4..................- -.....................*............................................................................- -...................................*.....*.............**.........................................- -..................................................................................................- -............................................................................*.....................- -..............................................................*..*.......*.*......................- -..........*..................................................................................*....- -.*......*..................B......................................................................- -..........................................................................*.......................- -............................#..............*......................................................- -..................................................................................................- -....................................................*...........................................B.- -................*.....................................................................*...........- -.......................*.........................................................................*- -...*............................................*...................................*....B.B*.....- -...............*.................................................................................*B -....................................................*.............................................- -.......*....................................*.............................*.......................- -..................................................................................................- -......................................................*..................................*........- -..................................................................................................- -.....................................................................*............B...............- -........*.......................................................*.............*................B..- -...................*.........*..........................*.........................................- -.....................................+............................*.*.............................- -..........................................*..........*.........*..................................- -..................................................................................................- -*.........................................................*...................................*...- -.................................................................................B...............*- -.*................................................................*..................*............* -...................B...........................................................7..................- -................*........................*...........................*............................- -...........*.................*..................H.................................................- -....*...............**............................................................................- -..................................................................................................- -...........................................................*......................................* -...................+...*......R...................................................................- -..................H............................................*..............HR....3.............- -............................................*.......................B.............................- -...................................*..............................*..........*....*.....B.........- -...............................................*....................+...........................*.- -...*.................................................................*............................- *.....................................................*.................................*..........- -..................................................................................................- -.......*....................................+...............................................*.....- -...........................+...................B.......................................*..........- -........*.................................................B.......................................- -...........................................5...........................*..........................- -..*.............................................................................................*.- -................................+.......+............................*.............*..............- -......................*...................................*.......................................- -............................*.....*......................*..........*.............................- -......................................1.2.........................................................- -......................................8...........................................................- -.......*..........................................................................................- -*.....................................................................*...........................- -.....................................................................*..........*............*....- -...................................*........+.....................................................- -......*................................................................................*..........- -.............................................................*....................................- -..................................................................................................- --------------------------------------------------+------*----------------------*--------*-----*---- SHIP: 1 SHIP: 2 SHIP: 3 SHIP: 4 SHIP: 5 SHIP: 6 SHIP: 7 SHIP: 8 SCORE: 2150 SCORE: 0 SCORE: 0 SCORE: 0 SCORE: 0 SCORE: 0 SCORE: 0 SCORE: 1400 X: 40.40 X: 42.50 X: 86.50 X: 81.50 X: 45.50 X: 88.50 X: 81.50 X: 40.59 Y: 10.12 Y: 10.50 Y: 25.50 Y: 62.50 Y: 15.50 Y: 95.50 Y: 32.50 Y: 9.00 WARP: 8.00 WARP: 0.00 WARP: 0.00 WARP: 0.00 WARP: 0.00 WARP: 0.00 WARP: 0.00 WARP: 8.00 DIR: 2.49 DIR: 3.00 DIR: 3.00 DIR: 3.00 DIR: 3.00 DIR: 3.00 DIR: 3.00 DIR: 0.32 ENERGY: 3677 ENERGY:10000 ENERGY:10000 ENERGY:10000 ENERGY:10000 ENERGY:10000 ENERGY:10000 ENERGY: 2332 SHIELD:1200. SHIELD: 0. SHIELD: 0. SHIELD: 0. SHIELD: 0. SHIELD: 0. SHIELD: 0. SHIELD:1200. TORPS: 3 TORPS: 10 TORPS: 10 TORPS: 10 TORPS: 10 TORPS: 10 TORPS: 10 TORPS: 0 SEEKERS: 3 SEEKERS: 4 SEEKERS: 4 SEEKERS: 4 SEEKERS: 4 SEEKERS: 4 SEEKERS: 4 SEEKERS: 0 HYPER: 3 HYPER: 3 HYPER: 3 HYPER: 3 HYPER: 3 HYPER: 3 HYPER: 3 HYPER: 3