Trek73 is a computer space-battle simulation based on the original Star Trek television series. As the name suggests, it was created in 1973 by William K. Char, Perry Lee, and Dan Gee. Many young Bay Area residents played the game on a teletype connected to the LHS DECISION computer located at the Lawrence Hall of Science in Berkeley, California. Roderick Perkins was the one who adapted the program for the LHS computer. Dave Pare and Chris Williams translated the BASIC into C and Jeff Okamoto, Peter Yee, and others corrected and enhanced the code. TREK73 was also played at Wilson High School in San Francisco and Howard Chu ported it to Turbo Pascal for MS-DOS at the University of Michigan in 1985 (where the binary and source still reside) and created a C/curses version in 1990.
Versions
January 1973 – William Char begins programming a space battle game in BASIC on a Hewlett-Packard 2000C system.
May 1973 – The first version of $SPACE is introduced.
June 1973 – Char, Perry Lee, and Dan Gee begin programming TREK73.
October 8, 1973 – Trek73 introduced.
1974 – Roderick Perkins adapts TREK73 for the DECISION computer at the Lawrence Hall of Science.
1984 – Dave Pare and Chris Williams at the University of California independently translate TREK73 into C
April 1985 – Jeff Okamoto and Peter Yee combine the two Pare and Williams versions into one.
1985 – Howard Chu creates a Turbo Pascal version of TREK73 at the University of Michigan.
1990 – Howard Chu finishes a C/curses version.
Trek73's History [from Comp.sources.games: Volume 3, Issue 27, 17 Dec 1987] Trek73 was programmed on a Hewlett-Packard 2000C system by William K. Char, Perry Lee, and Dan Gee. In January 1973, Mr. Char started with a few ideas and five months later, in May, introduced $SPACE, his first version. Space had only 14 commands and comprised one 10K program. Response was so great that new ideas flooded in and in June, work on Trek73 was begun. Over 70 recordings of past shows were reviewed to reconstruct dialogue and vessels. On October 8, 1973, Trek73 was introduced. In 1984, Dave Pare at University of California at San Diego and Chris Williams at the University of California at Berkeley independently Xtranslated the BASIC code into C to run under BSD UNIX.\** In April 1985, Jeff Okamoto and Peter Yee, both at the University of California at Berkeley combined the two versions into one, fixing bugs and adding new commands and concepts.
Reviews & Reminiscences
When I was about 10 or 11, I would go to the Lawrence Hall of Science quite frequently. There, on their time-sharing system, I would sit at a Teletype Model 33 and play trek. Sadly, LHS replaced their system and trek went away. It was my intention that it should not be forgotten. I had had a copy of a slightly different version of trek written in BASIC, but it was sadly unimplementable on my Apple computer. When I learned of an implementation of trek written in C, I jumped at the chance to bring it to the systems here at UC Berkeley. At that time, the game was mostly a direct translation of the original BASIC source. Many of the commands and routines were either missing or faulty. With Peter Yee, we worked together to fix up the program and managed to get it running. Once it was running, the time came for improvements. I admit to pulling many concepts from the game Star Fleet Battles, most notably the different races (Hydrans, Lyrans, etc.) and the ship names. This version of the game represents many hours of thinking and debugging. I hope you enjoy playing it as much as I did coding it.
-Jeff Okamoto [from TREK73 Designer Notes, Appendix 5]
My first experience with TREK73 was also at the Lawrence Hall of Science. I had been taking classes in Time-Sharing Basic and noticed that other people always talked about a game called $TREK that was a real CPU hog and was usually turned off. Naturally I was intrigued. Soon I was paying $2.00 an hour for the chance to play that game. Many long hours and quite a few dollars went into playing $TREK, so it was with a certain sadness that I learned that the DG Ecllipse on which $TREK ran was being phased out. I made several attempts to obtain the source before it went away, but I was unable to get it. Fortunately for me, Dave Pare at UC San Diego was also a fan of the game, and more importantly, he had an outdated copy of the source from an HP 2000. Dave had started to implement the game in C to run under 4.2 BSD UNIX. Expressing my interest to Dave, I was able to get a copy of Dave's code and thus the TREK Project at Berkeley was started. I spent endless hours tweaking with Dave's code, implementing some of the fifteen or so commands that he had not yet translated. At about this time, I learned that Christopher Williams, here at Berkeley, had also tried to implement the game in C. What is more, he had a copy of the source (in BASIC) from Berkeley High School, and had implemented most of the commands. Merging the work that Chris had done into my copy of Dave's work led to a fairly complete version of the game. There still remained a large number of bugs, poor ideas, and outright mistakes in the code, but it ran. Jeff Okamoto, being a fan of the game and a Star Fleet Battles player, was greatly interested in hacking on the game to bring up to par with the version that ran at LHS and to extend it even beyond that. Thus our partnership was formed and the current version of the game represents several hundred hours of our joint work (and play). Also represented are the suggestions, modifications and bug fixes we received from numerous people, including (to name a few) Matt Dillon, David Sharnoff, Joel Duisman, all at Berkeley, and Roger Noe at Rockwell International. It is hoped that this implementation of a classic game will bring joy (and perhaps fond remembrances) to all who play. Live Long and Prosper, -Peter Yee [from TREK73 Designer Notes, Appendix 5]
In the late '70s my brother and I would make the trip in to Berkeley to play TREK on a Teletype terminal at the Lawrence Hall of Science. In the next 25 years, I never found a computer game that was as fun to play. Sure it was crude, but that made it that much more intriguing. We would hunch over the terminal and wait for minutes as the HP timeshare computer crunched out our perfect move and finally returned with the result, "chunka, chunka, cunka" line by line. "Hit 45 on Kreiger shield 1." The paper would roll out of the Teletype and spill over the back and onto the floor. At the end of our day, we would tear it off, roll it up and pore over it later to perfect our strategy and plan our next games. I recently found the game residing on the Web and created an "Homage Page". It doesn't seem right to see the output zoom down the screen, but playing again after all these years sure brought back some memories. - Kermit Murray, 1999
The following is adapted from TREK73.DOC (David Soussan)
T R E K 7 3 A Star Trek Battle Simulation Trek73 is a computer-simulated battle based on the famous Star Trek[1] television series and the board game Star Fleet Battles[2]. Via computer terminal, you can clash with enemy battle cruisers, such as Klingon D-7's and Romulan Sparrowhawks, and use the same strategies that Captain Kirk has used. Like Kirk, you control a Federation vessel similar to the Enterprise; a computer program directs the enemy. Victory can fall into several categories: Decisive Victory -- You completely destroy or cripple the attacking force. Tactical Victory -- You out-maneuver the enemy using high-speed escapes, corbomite bluffs, `play dead' tactics; or the enemy surrenders. Moral Victory -- You surrender or self-destruct and destroy each other. All distances are measured in megameters, one million meters (abbreviated `M'). Speed is expressed in `Warp Factors'. Each warp factor equals 100M per second[3]. All angles are expressed in common degrees from zero to 360, measured counter-clockwise from the x-axis[4], similar to reading a protractor. Only two dimensions are used . Play is as follows: 1. You issue one of a number of commands (fire phasers, change course, launch antimatter pods, surrender, etc.) by typing the appropriate code number into the keyboard; 2. The enemy, under programmed instructions, issues a similar command; 3. Both your commands are executed (phasers are fired, probes are launched, damages are assessed, courses changed, etc.) while the vessels move through space; 4. Unless certain end-game conditions are met (you destroy the enemy, the enemy destroys you, your out-maneuver the enemy, you both destroy each other, or one party surrenders) the above steps are repeated. Appendix 1 depicts the Enterprise's power circuits. Appendix 2 displays certain weapon and shield angles. Appendix 3 lists certain weapon and vessel specifications. Appendix 4 lists initial deployment of resources. Appendix 5 contains the designer's notes. The following is a list of codes which can be used while in the command mode aboard your ship: CODE COMMAND ==== ======= 1 Fire Phasers 2 Fire Photon Torpedos 3 Lock Phasers Onto Target 4 Lock Tubes Onto Target 5 Manually Rotate Phasers 6 Manually Rotate Tubes 7 *Phaser Status 8 *Tube Status 9 Load/Unload Torpedo Tubes 10 Launch Antimatter Probe 11 Probe Control (Detonate, Redirect, Lock) 12 *Position Report 13 *Position Display 14 Pursue An Enemy Vessel 15 Run From An Enemy Vessel 16 Manually Change Course And Speed 17 *Damage Report 18 Scan Enemy (Damage Report Of Enemy) 19 Alter Power Distribution 20 Jettison Engineering 21 Detonate Engineering 22 Alter Torpedo And Phaser Firing Parameters 23 Attempt Defenseless Ruse 24 Attempt Corbomite Bluff(s) 25 Surrender 26 Ask Enemy to Surrender 27 Initiate Self-Destruct Sequence 28 Abort Self-Destruct 29 *Survivors Report 30 *Print Version Number 31 *Reprints Above List *Does Not Use A Turn Detailed Descriptions of Each Command What follows is a detailed description of each command. Each command is referred to by a number from 1 to 31. After the name of the command is given, a synopsis of the arguments the command requires is given, if any. These arguments can be entered on the command line, separated by whitespace, if you wish. For instance, to fire phasers 1 through 4 with a spread of 15, you could type '1 1234 15' on the command line. It should be noted that all numbers refer to parameters for the Heavy Cruiser Class ship, and that other ships have slightly different characteristics. 1. Fire Phasers. [Phasers | all] [Spread] Phasers are pure energy units which emit a beam similar to lasers, but of a pulsating nature which can be `phased' to interfere with the wave pattern of any molecular form. Phasers get their power from phaser banks, which in turn, derive their power from the ship's engines. Each phaser bank is capable of holding a charge of 10 units. When firing, these banks discharge, similar to batteries, to spread their destructive power through space. After discharging, these banks are then recharged by the engines. Each phaser can be set to automatically track a target or can be manually rotated. Unless engineering is jettisoned (code 21), phasers only fire from 0-125 and 235-360 degrees, relative to the ship's course. In other words, each vessel has a 110 degree blind side in back of it in which phasers cannot fire. If phasers fired into this blind side, they would destroy the ship's engineering section. The Captain also designates a wide or narrow phaser beam: a wide beam to disrupt many targets; a narrow beam to inflict maximum damage on a single target. The maximum spread of phasers is 45 degrees, the minimum is 10 degrees. The total beam width is twice the designated spread. The firing percentage of each bank is preset to 100. In other words, the bank fully discharges when firing. This can be changed, however, using code 22. The maximum range of phasers is 1000M; the maximum hit factor is 45 with a ten degree spread, 10 with a forty-five degree spread. Phaser hit factors are calculated by the following formula: hit = (bankunits)(firing%)sqrt(1-range/1000)(45/spread) Phasers fire in .2-second intervals starting with bank one. Phasers inflict heavy damage and casualties, but do not destroy shields as much as antimatter explosions do. A phaser is unable to fire if damaged, if firing into your blind side, or if completely discharged. [Return to Command List] 2. Fire Photon Torpedos. [Tubes | all] The Enterprise is equipped with six torpedo tubes, which, as phasers, can be set to automatically track a target or be manually rotated. Unless engineering is jettisoned, tubes only fire from 0-135 and 225- 360 degrees. Each tube fires all its antimatter pods, which are temporarily held suspended in a magno-photon force field. Photon torpedos can be fired directly at an enemy, laid out as a mine field, or scattered in an attacker's path as depth charges. Tubes must be loaded (code 9) prior to firing. Normally, torpedos are launched at warp 12 in .2-second intervals, beginning with tube one. Photon torpedos have a proximity fuse of 200M. All of these values can be changed by using code 22. Torpedos must be launched with care since the antimatter pods which are fired can never be recovered. It is suggested that you not fire more than four torpedos at any one time, since a certain number of them do miss, or are destroyed by the enemy firing phasers at them. It is also suggested that you fire them at distant targets, beyond 1100M, to avoid the explosion radii of your own weapons. Hit factors resulting from antimatter explosions are calculated as follows: hit = 5(#podscontained)sqrt(1-range/(50(#podscontained))) The maximum hit factor of an antimatter device is five times the number of pods contained (in the case of torpedos, 50); its explosion radius is 50 time the number of pods contained (in the case of torpedos, 500). Antimatter explosions heavily weaken shields but do not damage equipment as much as phasers do. This formula also applies to vessels, engineering sections, and antimatter probe explosions. A photon torpedo's proximity fuse will not be activated by a cloaked ship. Tubes are unable to fire if damaged, if firing into your blind side, or if unloaded. [Return to Command List] 3. Lock Phasers. [Phasers | all] [Target Name] Phasers locked on an enemy vessel will automatically aim towards it. Although phasers may track a vessel which is in the firing blind side, they will not fire unless engineering is jettisoned. To fire at vessels in the blind spot, simply change course at least 55 degrees. Once a phaser is locked, it is not disengaged until the target is destroyed (in which case it is then rotated to zero degrees relative), relocked, manually overridden, or damaged. Phasers can not be locked onto cloaked enemy ships as they can not find the target. Phasers that were previously locked onto a non- cloaked ship will track the enemy's last known course and position when that ship cloaks. [Return to Command List] 4. Lock Tubes. [Tubes | all] [Target Name] Tubes lock and unlock in the same manner that phasers do. Tubes suffer the same locking limitations that phasers do in reference to cloaked ships. [Return to Command List] 5. Manually Rotate Phasers. [Phasers | all] [Bearing] Manually rotating phasers disengages any previous locks and positions them as directed, relative to your course. For example, if your course is 30, and phasers are rotated 45 degrees, they will hit a target bearing 75 degrees. Rotating phasers into you blind side is permissible, however, they will not fire. [Return to Command List] 6. Manually Rotate Tubes. [Tubes | all] [Bearing] Manually rotating tubes is similar to rotating phasers. [Return to Command List] 7. Phaser Status. Phaser status reports the control (locks and damages), deployment, levels, firing percentages (normally 100), and charge/discharge rates (normally +10) of all phasers. This command does not use a turn. Cf. Command 22. [Return to Command List] 8. Tube Status. Tube status reports the control, deployment, tube levels, launch speeds (normally 12), proximity delays (normally 200), and time delays (normally 10) of all tubes. This command does not use a turn. Cf. Command 22. [Return to Command List] 9. Load/Unload Tubes. [l | u] [Tubes | all] Each specified tube will be automatically loaded with 10 units or whatever remains in the engines, whichever is less. Tubes can also be unloaded if the need arises. [Return to Command List] 10. Launch Antimatter Probe. [Pods] [Time] [Proximity] [Target | [ Course]] Probes are slow-moving devices equipped with internal guidance systems which allow them to chase an enemy vessel. Probes consist of at least ten antimatter pods which are launched from an undamaged probe launcher at warp three. As with torpedos, probes are set with time and proximity fuses, and use the same hit factor formula as do torpedos. [Return to Command List] 11. Probe Control. [y | [n [Probe] [y | [n [Target | [ Course]]]]]] Probe control allows you to detonate or redirect probes which may have missed. [Return to Command List] 12. Position Report. Position reports are vital since valuable information on courses, bearings and ranges are given to aid the formation of good strategy. Each ship is listed along with its current speed, course, and bearing. Also listed is your relative bearing to that ship. A relative bearing of 0 means you are pointed directly at the ship, whereas a relative bearing of 180 means you are pointed directly away from the ship. Next is the reverse relative bearing, which gives the relative bearing of you with respect to the ship listed. Cloaked ships show up with an asterisk (*) before the name, and the information displayed is the last available information on those ships. If no position report has been performed prior to the enemy ship engages a cloaking device, no information will be available on that ship. This order does not use a turn. [Return to Command List] 13. Position Display. [Radius of scan] Position displays, similar to radar scans, show objects which surround your vessel. The Enterprise is indicated by a `+', jettisoned engineering sections by a `#', probes by a `*', torpedos by a `:', and enemy vessels by the first letter of their names. Enemy vessels that are cloaked appear as lower case letters and remain in their last noted absolute position. [Return to Command List] 14. Pursue An Enemy Vessel. [Target Name] [Warp Factor] This order instructs the ship's navigation to face an enemy vessel whenever possible. Obviously it is impossible to pursue a cloaked vessel. [Return to Command List] 15. Run From An Enemy Vessel. [Target Name] [Warp Factor] This order, just the opposite of order #14, instructs the navigation to keep the stern of the Enterprise towards an enemy vessel whenever possible. Running from a cloaked vessel is not very useful. [Return to Command List] 16. Manually Change Course and Speed. [Course] [Warp Factor] This order instructs navigation to maintain a fixed course and speed. The following information applies to the above three orders: Your maximum rotation rate when turning is: degrees per sec = 5 * (11 - current warp speed) Accordingly, you can turn 55 degrees at warp one, 50 at warp two, and so on down to 10 degrees at warp nine. In other words, the faster your speed, the less maneuverable you are. You are also less maneuverable if your warp drive is damaged or destroyed. Your maximum speed is warp nine, the enemy's is warp eleven. [Return to Command List] 17. Damage Report. This report informs you of certain equipment status. A destroyed computer make orders 3 (lock phasers), 4 (lock torpedos), 14 (pursue), 15 (run), 27 (initiate self-destruct), and 28 (abort self-destruct) impossible to execute. You will be required to manually rotate phasers and torpedos, and manually change course and speed. Destroyed sensors makes orders 13 (position display) and 18 (scan) impossible. A destroyed probe launcher prevents you from launching probes. A destroyed warp drive slows your maximum speed to warp 0.99 and severly limits your maneuverability. See order 20 about jettisoned engineering section. When your crew of 450 dies, your vessel is as good as dead. There are 350 men aboard each enemy vessel. All of the above systems can be partially damaged. A damaged warp drive (common) lowers your maximum speed and maneuverability. A damaged probe launcher (sometimes) may refuse to launch. Damaged sensors (rare) may not be able to return position displays or be able to scan an enemy. A damaged computer (very rare) will sometimes refuse to lock onto targets, and in addition, when damaged, may lose some of the locks held by the weapons or by the helm. Shield percentage is calculated by its energy drain times its operating efficiency. Efficiency starts at 100 and declines with each hit. No damages of any kind are incurred when a shield absorbs its first hit, no matter how great the hit. Shield one is 1.5 times as strong as the other three shields. `Efficiency' indicates the number of energy units being burned per warp-second. This number is initially one (.75 for enemy) and increases per hit. `Regeneration' indicates the number of energy units being gained per second. Initially set at 10, this number decreases per hit. `Fuel capacity' indicates the number of matter-antimatter pods a vessel has aboard. This number rapidly decreases with each torpedo or probe fired. `Fuel' indicates the number of matter-antimatter pods which are filled with energy. This number rapidly decreases when maintaining high warp speeds or firing phasers. [Return to Command List] 18. Scan Enemy (Damage Report of Enemy). [Ship Name | Probe id | #Ship Name] An enemy damage report is essentially the same as the Enterprise's. Sensor reports can not be had for cloaked vessels. By giving the id number of a probe, information about it can be gathered. The same information can be gathered about a ship's (jettisoned) engineering by prepending a '#' before the ship's name. [Return to Command List] 19. Alter Power Distribution. [Shld 1 drain [* | ... Sh 4]] [Phsr 1 drain [* | ... Ph 4]] The synopsis of this command can be confusing. The first set of numbers gives the drains for each shield. All four shield drains can be specified, but if a star is used immediately after a shield drain (eg, 19 0.5 1*), then the remaining shields will all be given a drain equal to the number preceding the '*'. (Thus, in the above example, shield 1's drain is 0.5, whereas shields 2, 3, and 4 have a drain of 1). The same applies to the phaser drains. The power circuits of all vessels are illustrated in Appendix 2. Dilithium crystals produce energy much like generators. This power is then used to maintain warp speeds, recharge antimatter pods in the engine reserve, recharge phaser banks, or maintain shield power. Your initial regeneration is ten, however, the shields normally drain four units and the engines require one unit per each warp-second. Shields can be thought of as electromagnets. The more energy put into them, the stronger their force field becomes. Therefore, a shield's overall percentage is calculated by the following formula: shield percentage = (energy in)(effective %) Notice that dropping power to a shield has the same effect as having it hit. Notice also that if your regeneration drops below four, you may have to discharge your phaser banks to maintain full shield power. Phaser banks, similar to batteries, not only discharge (when firing), but also recharge. Initially, they are set to recharge fully in one second (+10) so that you can continually use them. However, they can discharge fully (-10) in one second to provide extra power to shields, warp engines, or engine reserve. Under most conditions, you need not concern yourself with power distribution unless some special need arises. Distribution, for the most part, is automatic. Regeneration is calculated first; that power is placed in reserve, along with any discharged phaser units. Shield drain is calculated next, then the cloaking device, then phaser and engine drains. Be concerned with wasting power by indiscriminately firing phasers and torpedos, maintaining speeds over warp three, or dumping scores of units onto antimatter probes. Huge power losses cannot be made up in battle. [Return to Command List] 20. Jettison Engineering. Although this order was never executed in the television series, it is quite possible according to its producer. Jettisoning engineering has serious consequences, but it may be your only course of action. One would jettison engineering if being pursed by vessels, probes or torpedos, or as a suicidal gesture. The following things happen when engineering is jettisoned: A: You lose all your fuel and reserve capacity; B: you lose your regeneration; C: you lose your warp drive; D: your lose your probe launcher; E: you lose your shields until you designate phasers to discharge; F: the engineering section itself decelerates to a stop; G: a ten second time delay on it is set (hopefully, when it does explode, you are far from its effects); H: you lose your cloaking device; I: your phasers and torpedos are now free to fire in any direction. [Return to Command List] 21. Detonate Engineering. [nothing | [y | n]] This order, issued after the previous one, manually detonates your engineering section. It may also be issued without the previous order, in which case you will be asked to confirm your (crazy) order. [Return to Command List] 22. Alter Torpedo And Phaser Firing Parameters. [[y [Launch Speed] [Time Delay] [Proximity Fuse]] | n] [[y [Firing Percentage]] | n] This option allows you to change the launch speeds, time and proximity delays of all torpedos. At the beginning of play, torpedos are launched at warp twelve, have ten second time fuses, and 200M proximity fuses. Any vessel or engineering section which comes within the proximity range will cause the torpedo to explode. Phaser firing percentages can also be altered. A phaser bank need not fire its full charge. [Return to Command List] 23. Defenseless Ruse. [e | p] Another name for this tactic is `playing dead'. When issued, your shields are dropped to zero, and power is diverted to your engines or phaser banks. Hopefully, the enemy will believe you dead and come too close or break off their attack. You should then be able to fire or run in the opposite direction. [Return to Command List] 24. Attempt Corbomite Bluff(s). There were two corbomite bluffs in the television series; one was against a midget operating a huge space vessel the other was against Romulan attackers. Both have been incorporated into this game. Whichever bluff issued is selected randomly. [Return to Command List] 25. Surrender, If Possible. This order sends a message to the enemy, saying that you wish to surrender. The enemy will then decide whether or not take you alive. You will have difficulty surrendering to Romulans, who have never accepted one. [Return to Command List] 26. Ask Enemy To Surrender. This order ends a message to the enemy demanding that they surrender. Please bear in mind that Romulans and Orions are the most suicidal. [Return to Command List] 27. Initiate Self-Destruct. This order activates a twenty-second self-destruct sequence. Because final destruct does not occur until ten turns after initialization, it is best to start it early, if at all. When you do explode, you hope that you explosive force will also destroy your attackers. [Return to Command List] 28. Abort Self-Destruct. This order, issued after the previous one, halts the destruct sequence. Self-destruct cannot be aborted withing five seconds to detonation. [Return to Command List] 29. Survivors Report. This order prints out the number of survivors on board all the ships. This order does not use a turn. Cloaked ships are reported as having `???' survivors. [Return to Command List] 30. Print version number This command, which does not use a turn, prints the current version of TREK73. [Return to Command List] 31. Save game This command saves the current game into a file. It can be restarted later by using the command line option `-r'. [DAS: Not yet implemented] [Return to Command List] 32. Reprint Above List. This command, which does not use a turn, lists code numbers and associated descriptions of each. [Return to Command List] 33 And Up. Future options, currently being designed in Trek74, will include Dr. Daystrom's paranoid, M5 multi-tronics computer which will take over while you relax; or battle someone else who is on another terminal; or battle in teams; or have a free-for-all against nine other players. [Return to Command List] Options In TREK73, all the names of crewmembers are taken from the Star Trek series. Through the use of options, the names, as well as other aspects of the game, can be changed to whatever you want. To use the options, you must add the variable TREK73OPTS to your environment. A sample would be (using the C-shell): .br setenv TREK73OPTS 'name=Jerk, ship=Boobyprize, terse' The option string is a list of comma-separated options. Options are designated as either boolean or string options. Boolean options are turned on by typing their name and turned off by prepending 'no' to them. String options are set equal to the string which follows the "=". There follows a list of all the options, what type it is, and an explanation of what they mean. The default for the option is in square brackets following the option. .IP "terse BOOLEAN [noterse]" This option, when set, turns off the information regarding the ship's purpose in the area. It thus reduces the amount of drek on the screen. If you are on a slow terminal, this is a nice option to have set. .IP "shipname STRING [Enterprise]" This option names your ship. .IP "name STRING" This option names the captain of the ship. If this option is not set, then the program will ask for a name. The captain is the one who must make all the decisions of strategy and tactics for the ship. .IP "sex STRING" This option gives the captain a gender. If this option is not set, the program will ask for it's value. If you respond with something that starts with other than "m" or "f", beware! .IP "science STRING [Spock]" This option names the science officer, who is responsible for checking the parameters of the captain's commands. It is also this officer's duty to report damage to the ship as well as scan for enemy damage. .IP "engineer STRING [Scott]" This option names the chief engineer of the ship. It is this officer's duty to report on the status of the ship, especially its energy supply and distribution of the same. The officer also controls the launching of anti-matter probes. .IP "helmsman STRING [Sulu]" This option names the ship's helmsman. This officer's duty is to control the speed of the ship and also controls the firing of the ship's weapons. .IP "nav STRING [Chekov]" This option names the ship's navigator, who is responsible for the navigation of the ship. This officer makes changes to the ship's course as directed by the captain. This officer also controls any anti-matter probes after they have been launched. .IP "com STRING [Uhura]" This option names the ship's communications officer. It is the duty of this officer to handle all communications between the ship and the rest of the universe. .IP "enemy STRING [random]" If this option is set, it tells the program which race you wish to fight. The available races are: Klingon, Romulan, Kzinti, Gorn, Orion, Hydran, Lyran, or Tholian. If the option is not set, the race you will fight is chosen at random. .IP "foename STRING [random]" If this option is set, it specifies the name of the commander of the enemy ship(s). If this option is not specified, the name is chosen at random. .IP "class STRING [CA]" This option specifies the kind of ship you are commanding. Allowable classes are: DN, CA, CL, and DD, standing for dreadnought, heavy cruiser, light cruiser, and destroyer. In general, the larger the ship, the more weapons and stronger shields you have, at the cost of less speed and maneuverability. .IP "foeclass STRING [CA]" This option specifies the kind of ship that you are fighting. The different classes are explained above. .IP "silly BOOLEAN [nosilly]" If this option is set, an additional race is added to the list of possible races to fight. This race is the Monty Pythons. Note that if you wish to always fight the Monty Python's, you merely have to set the enemy option above. .IP "time STRING [30]" Time is used to specify the time between commands. The longer this value, the more time may be used in issuing a command. .IP "teletype BOOLEAN [noteletype]" The teletype option causes some of the output to come out as it did in the original teletype version. .IP "savefile STRING [$HOME/trek73.save]" The savefile option specifies where the data image is to be stored if the game is saved during play. ``~'' is not expanded, so the path should be explicit and fully expanded. 3 Command Line Options In all cases, the arguments you place on the command line will supersede options in the environment. The following is a description of the command line options: .IP \-t Turns on terse mode. No initial scenario description is given. This is useful for terminals running at low baud rates. This option is normally off. .IP \-c Allows the specification of the Federation captain's name. .IP \-s Specify the sex of the captain of the Federation vessel. .IP \-S Specify the name of the Science Officer of the Federation vessel. .IP \-E Specify the name of the Chief Engineer of the Federation vessel. .IP \-C Specify the name of the Communications Officer of the Federation vessel. .IP \-N Specify the name of the Navigator of the Federation vessel. .IP \-H Specify the name of the Helmsman of the Federation vessel. .IP \-f Specify the name of the enemy commanding officer. .IP \-r Specify the race of the enemy. The race should be one of the following: Klingon, Romulan, Kzinti, Gorn, Hydran, Lyran, Tholian, Orion, or Monty Python. .IP \-d Set the delay time for command entry. Higher times can be useful for novices or for playing on very slow terminals. .IP \-y Silly option. Adds the Monty Pythons as a possible enemy race. This option is normally off. .IP \-T Teletype option. Causes certain parts of the output to come out as they did on the original teletype implementation. Doesn't do much for the game on crts. This option is normally off. .IP \-n Specify the name of the Federation vessel. The default name for the Federation vessel is randomly chosen from a set of names. .IP \-F Specify the class of the enemy vessel(s). Allowable classes are Destroyer (DD), Light Cruiser (CL), Heavy Cruiser (CA), and Dreadnought (DN). If the argument is none of the above, the program assumes that this is the name of a file where a player-designed ship is stored. .IP \-l Specify the class of the Federation vessel. Available classes are the same as the enemy's. .IP \-R Restore the game from the savefile. It is assumed that the TREK73OPTS contains the name of the savefile, otherwise it is not possible to restart the game with the -R option. In case the savefile name is not in TREK73OPTS, the game may be restored by issuing the command with the path to the savefile as the first argument. .bp Designer Ships A feature of TREK73 allows you to have more than just the standard four ship types. The program .I shipyard (6) allows new ship types to be created. .I Shipyard in conjunction with the -F and/or -l command line option allows battle between, say, the Enterprise and the Death Star. See the manual page for .I shipyard for more information about designer ships. Simple Strategy If you are a beginner, a simple strategy to follow is A: fight only one attacker; B: pursue him (code 14) at warp factor one; C: lock on all phasers (code 3); D: continuously take position reports (code 12) and watch his range; E: when he gets within 1000M, fire all phasers (code 1) and keep on firing when he is in range; F: When the enemy is out of range, take damage reports and scans of the enemy (codes 17 and 18). After a few trial games using the above strategy, you will want to become as efficient as the enemy at firing photon torpedos. Finally, when you master launching antimatter probes, you can designate more that one attacker. 3 Trek73's History Trek73 was programmed on a Hewlett-Packard 2000C system by William K. Char, Perry Lee, and Dan Gee. In January, 1973, Mr. Char started with a few ideas and five months later, in May, introduced $SPACE, his first version. Space had only 14 commands and comprised one 10K program. Response was so great that new ideas flooded in and in June, work on Trek73 was begun. Over 70 recordings of past shows were reviewed to reconstruct dialogue and vessels. On October 8, 1973, Trek73 was introduced. In 1984, Dave Pare at Univeristy of California at San Diego and Chris Williams at the University of California at Berkeley independently translated the BASIC code into C to run under BSD UNIX[5]. In April 1985, Jeff Okamoto and Peter Yee, both at the University of California at Berkeley combined the two versions into one, fixing bugs and adding new commands and concepts. Ideas and bug reports should be sent to: .br ARPA: okamoto@ucbvax.berkeley.edu and yee@ucbvaxberkeley.edu .br UUCP: ..!ucbvax!okamoto and ..!ucbvax!yee .bp APPENDIX 1 .nf 4 Secondary Hull Primary Hull (engineering) ------- :-----------------------------------------\\ | .5 | . . . . :: N C C - 1 7 0 1 |} |0 / 1|---< . . . . . ::________________________________________/ | | . . . . warp engines ^ | .5 | . . . . +++ |0 / 1|---< . . . . . ===== | fuel | | . . . . |+| + OOOOO reserve | .5 | . . . . |+| ---------> +++ ---> OOOOO --- +++ ---> |0 / 1|---< . . . . . ------- + ***** | | . . . . | | ***** shield | .5 | . . . . ------- | \\ control |0 / 1|---< . . . . . dilithium * \\ ------- . . . . crystal *** +++ shields generator * \\phaser control | -------- : : : | |-10/10|-OOOO>. . : : : | : : <***: <[=====| <---+ |-10/10|-**OO>. . : : : : probe launcher | |-10/10|-****> V |-10/10|-****> =*******= -------- phaser banks photon =*******= torpedo ===******* tubes =======***** ========= ******* ========= ******* + Energy unit O Matter-anti-matter pod * Filled matter-anti-matter pod ---+++---> Energy transfer ---***---> Pod transfer .fi .bp APPENDIX 2Heavy Cruiser .nf 7 Shield 2 | 135 90 \\\\,,,,,,,,''-``,,,,,,,, ,,''\\ .Phaser.Firing An``,, 45 ,' \\ \\125 gles`,/ ,' \\. . Torpedo. . `, :------------------------\\ \\135_-----_ Fir . , :________________________/ _- 1 -_ ing . ` | || / 0 \\ Angles . | Shield | ,_^^_____/| _ 7 | . . | Shield -180| [ { (o) 1 } . . |0- 3 | `-vv-----\\| - C | . . | 1 | || \\ C / . . | :-----------------------\\ -_ N _- . . , :_______________________/ -_____- . . ' `, /225. . . . . . . ,' `, / . ,' \\ ``,/ /235. . . . . . . . ,,'' 315 /`````````,,_,,'''''''' 225 270 | Shield 4 .fi .bpAPPENDIX 3
2Weapon And Vessel Specifications
Destroyer Class Vessel
Enemy exceptions are enclosed within [brackets]
.DS
.ta 2.8iR 3.3iPhasers
Number of banks 2
Max range 1000 megameters
Max spread 90 degrees (45+45)
Min spread 20 degrees (10+10)
Max hit with 45 degree spread 10
Max hit with 10 degree spread 45
Loss of shield 1 per hit hit/3
Loss of shields 2-3-4 per hit hit/2
Firing angles with engineering 0-150, 210-360 degrees
Max charge per bank 10 units
Min charge or discharge time 1 secTubes
Number of tubes 4
Max range 12,000 megameters
max launch speed warp 12
Max time delay 10 seconds
Max proximity delay 500M
Max explosion radius 500M
Max number of pods launched 10
Max hit factor 50
Loss of shield 1 per hit hit/2.25
Loss of shields 2-3-4 per hit hit/1.5
Firing angles with engineering 0-160, 200-360 degreesProbes
Number of probe launchers 1
Max range 3000M
Max launch speed 2
Max time delay 15 sec
Max proximity delay any
Max explosion radius 50 times number of pods
Max pods launched fuel available
Max hit factor 10 times number of pods
Loss of shields per hit same as torpedos
Firing angles with engineering allVessels
Max turning rate 120 degrees
Max speed warp 10 [12]
Min units burned per warp-second .5 [.5]
Crew 200 [150]
.DEWeapon And Vessel Specifications
Light Cruiser Class
Enemy exceptions are enclosed within [brackets]
.DS
.ta 2.8iR 3.3i
.ce
Phasers
Number of banks 4
Max range 1000 megameters
Max spread 90 degrees (45+45)
Min spread 20 degrees (10+10)
Max hit with 45 degree spread 10
Max hit with 10 degree spread 45
Loss of shield 1 per hit hit/4.5
Loss of shields 2-3-4 per hit hit/3
Firing angles with engineering 0-140, 220-360 degrees
Max charge per bank 10 units
Min charge or discharge time 1 secTubes
Number of tubes 4
Max range 12,000 megameters
max launch speed warp 12
Max time delay 10 seconds
Max proximity delay 500M
Max explosion radius 500M
Max number of pods launched 10
Max hit factor 50
Loss of shield 1 per hit hit/3
Loss of shields 2-3-4 per hit hit/2
Firing angles with engineering 0-150, 210-360 degreesProbes
Number of probe launchers 1
Max range 3000M
Max launch speed 2
Max time delay 15 sec
Max proximity delay any
Max explosion radius 50 times number of pods
Max pods launched fuel available
Max hit factor 10 times number of pods
Loss of shields per hit same as torpedos
Firing angles with engineering allVessels
Max turning rate 77 degrees
Max speed warp 9 [11]
Min units burned per warp-second .75 [.5]
Crew 350 [250]
.DEWeapon And Vessel Specifications
Heavy Cruiser Class
Enemy exceptions are enclosed within [brackets]
.DS
.ta 2.8iR 3.3iPhasers
Number of banks 4
Max range 1000 megameters
Max spread 90 degrees (45+45)
Min spread 20 degrees (10+10)
Max hit with 45 degree spread 10
Max hit with 10 degree spread 45
Loss of shield 1 per hit hit/4.5
Loss of shields 2-3-4 per hit hit/3
Firing angles with engineering 0-125, 235-360 degrees
Max charge per bank 10 units
Min charge or discharge time 1 secTubes
Number of tubes 6
Max range 12,000 megameters
max launch speed warp 12
Max time delay 10 seconds
Max proximity delay 500M
Max explosion radius 500M
Max number of pods launched 10
Max hit factor 50
Loss of shield 1 per hit hit/3
Loss of shields 2-3-4 per hit hit/2
Firing angles with engineering 0-135, 225-360 degreesProbes
Number of probe launchers 1
Max range 3000M
Max launch speed 2
Max time delay 15 sec
Max proximity delay any
Max explosion radius 50 times number of pods
Max pods launched fuel available
Max hit factor 10 times number of pods
Loss of shields per hit same as torpedos
Firing angles with engineering allVessels
Max turning rate 55 degrees
Max speed warp 9 [11]
Min units burned per warp-second 1 [.75]
Crew 450 [350]
.DEWeapon And Vessel Specifications
Dreadnought Class
Enemy exceptions are enclosed within [brackets]
.DS
.ta 2.8iR 3.3iPhasers
Number of banks 6
Max range 1000 megameters
Max spread 90 degrees (45+45)
Min spread 20 degrees (10+10)
Max hit with 45 degree spread 10
Max hit with 10 degree spread 45
Loss of shield 1 per hit hit/7.5
Loss of shields 2-3-4 per hit hit/5
Firing angles with engineering 0-125, 235-360 degrees
Max charge per bank 10 units
Min charge or discharge time 1 secTubes
Number of tubes 8
Max range 12,000 megameters
max launch speed warp 12
Max time delay 10 seconds
Max proximity delay 500M
Max explosion radius 500M
Max number of pods launched 10
Max hit factor 50
Loss of shield 1 per hit hit/6
Loss of shields 2-3-4 per hit hit/4
Firing angles with engineering 0-135, 225-360 degreesProbes
Number of probe launchers 1
Max range 3000M
Max launch speed 2
Max time delay 15 sec
Max proximity delay any
Max explosion radius 50 times number of pods
Max pods launched fuel available
Max hit factor 10 times number of pods
Loss of shields per hit same as torpedos
Firing angles with engineering allVessels
Max turning rate 30 degrees
Max speed warp 8 [10]
Min units burned per warp-second 2 [1.5]
Crew 600 [450]
.DEAPPENDIX 4
2Initial Settings
Destroyer class
1Enemy exceptions are enclosed within [brackets]
.DS
.ta 2.8iR 3.3i
Crew 200 [150]
Speed Warp 1
Course 0 [0-360] degrees
Engine Efficiency .5 [.5]
Fuel Level 100
Fuel Capacity 150
Regeneration Rate per Second 8.0
Helm Lock None [None]
Phaser Deployment 0, 0
Phaser Bank Levels 2 x 10 units
Phaser Charge/Discharge Rates 2 x 10 units
Shield Drain 2 x 1 units
Shield Percentage 2 x 100
Torpedo Deployment 60, 0, 0, 300
Tube Levels 4 x Zero
Total Charged Pods Available 190.DE
Initial Settings
Light Cruiser Class
Enemy exceptions are enclosed within [brackets]
.DS
.ta 2.8iR 3.3i
Crew 350 [250]
Speed Warp 1
Course 0 [0-360] degrees
Engine Efficiency .75 [.5]
Fuel Level 125
Fuel Capacity 175
Regeneration Rate per Second 10
Helm Lock None [None]
Phaser Deployment 90, 0, 0, 270
Phaser Bank Levels 4 x 10 units
Phaser Charge/Discharge Rates 4 x 10 units
Shield Drain 4 x 1 units
Shield Percentage 4 x 100
Torpedo Deployment 60, 0, 0, 300
Tube Levels 4 x Zero
Total Charged Pods Available 190.DE
Initial Settings
Heavy Cruiser Class
Enemy exceptions are enclosed within [brackets]
.DS
.ta 2.8iR 3.3i
Crew 450 [350]
Speed Warp 1
Course 0 [0-360] degrees
Engine Efficiency 1 [.75]
Fuel Level 150
Fuel Capacity 200
Regeneration Rate per Second 10
Helm Lock None [None]
Phaser Deployment 90, 0, 0, 270
Phaser Bank Levels 4 x 10 units
Phaser Charge/Discharge Rates 4 x 10 units
Shield Drain 4 x 1 units
Shield Percentage 4 x 100
Torpedo Deployment 120, 60, 0, 0, 300, 240
Tube Levels 6 x Zero
Total Charged Pods Available 190Initial Settings
Dreadnought Class
Enemy exceptions are enclosed within [brackets]
.DS
.ta 2.8iR 3.3i
Crew 600 [450]
Speed Warp 1
Course 0 [0-360] degrees
Engine Efficiency 2 [1.5]
Fuel Level 200
Fuel Capacity 200
Regeneration Rate per Second 15
Helm Lock None [None]
Phaser Deployment 90, 90, 0, 0, 270, 270
Phaser Bank Levels 6 x 10 units
Phaser Charge/Discharge Rates 6 x 10 units
Shield Drain 4 x 1 units
Shield Percentage 4 x 100
Torpedo Deployment 120, 60, 60, 0, 0, 300, 300, 240
Tube Levels 8 x Zero
Total Charged Pods Available 190APPENDIX 5
Designer's Notes
When I was about 10 or 11, I would go to the Lawrence Hall of Science quite frequently. There, on their time-sharing system, I would sit at a Teletype Model 33 and play trek.
Sadly, LHS replaced their system and trek went away. It was my intention that it should not be forgotten. I had had a copy of a slightly different version of trek written in BASIC, but it was sadly unimplementable on my Apple computer.
When I learned of an implementation of trek written in C, I jumped at the chance to bring it to the systems here at UC Berkeley. At that time, the game was mostly a direct translation of the original BASIC source. Many of the commands and routines were either missing or faulty. With Peter Yee, we worked together to fix up the program and managed to get it running.
Once it was running, the time came for improvements. I admit to pulling many concepts from the game Star Fleet Battles, most notably the different races (Hydrans, Lyrans, etc.) and the ship names.
This version of the game represents many hours of thinking and debugging. I hope you enjoy playing it as much as I did coding it.
-Jeff Okamoto
My first experience with TREK73 was also at the Lawrence Hall of Science. I had been taking classes in Time-Sharing Basic and noticed that other people always talked about a game called $TREK that was a real CPU hog and was usually turned off. Naturally I was intrigued. Soon I was paying $2.00 an hour for the chance to play that game. Many long hours and quite a few dollars went into playing $TREK, so it was with a certain sadness that I learned that the DG Ecllipse on which $TREK ran was being phased out. I made several attempts to obtain the source before it went away, but I was unable to get it.
Fortunately for me, Dave Pare at UC San Diego was also a fan of the game, and more importantly, he had an outdated copy of the source from an HP 2000. Dave had started to implement the game in C to run under 4.2 BSD UNIX. Expressing my interest to Dave, I was able to get a copy of Dave's code and thus the TREK Project at Berkeley was started. I spent endless hours tweaking with Dave's code, implementing some of the fifteen or so commands that he had not yet translated.
At about this time, I learned that Christopher Williams, here at Berkeley, had also tried to implement the game in C. What is more, he had a copy of the source (in BASIC) from Berkeley High School, and had implemented most of the commands. Merging the work that Chris had done into my copy of Dave's work led to a fairly complete version of the game. There still remained a large number of bugs, poor ideas, and outright mistakes in the code, but it ran.
Jeff Okamoto, being a fan of the game and a Star Fleet Battles player, was greatly interested in hacking on the game to bring up to par with the version that ran at LHS and to extend it even beyond that. Thus our partnership was formed and the current version of the game represents several hundred hours of our joint work (and play). Also represented are the suggestions, modifications and bug fixes we received from numerous people, including (to name a few) Matt Dillon, David Sharnoff, Joel Duisman, all at Berkeley, and Roger Noe at Rockwell International.
It is hoped that this implementation of a classic game will bring joy (and perhaps fond remembrances) to all who play.
Live Long and Prosper, -Peter Yee
[DAS]
I never knew any of the people mentioned above. I used to play Trek73 from 1977-1981 when I was in high school on our HP2000-F system. I always wanted a version I could run on my own computer, and when I got my first Apple back in 1980 I started converting the program from HP Basic to Applesoft. The Apple version ran so slowly it wasn't worth playing, and I stopped my conversion work.
My brother, who for the two years before I entered high school used to play Trek73, called me up one day and told me that a version written in C had come across the unix network where he worked, which was Bell Laboratories in Naperville, IL.
A week later I stopped in and downloaded all the files to a PC that was sitting around. There were quite a few differences between the version of C that ran under unix and the Lattice C compiler which I had for my PC.
After much work and some cursing, what you see before you had been completed -- Trek73 which ran on the IBM PC as well as the clones.
There are still some problems. The save game feature has not yet been converted, as the unix file calls were different from the calls I had under Lattice. The timer for your inputs has not been set up. Due to the fact that an integer under Lattice is 16 bits wide, it was possible to run off the edge of the universe. This has recently been updated to longer integers and should no longer be an issue. These problems will be cured as I find the time to cure them.
There are still some references to Unix unique things in both the program and in this .DOC file. I released this in its current form to get people to start playing the game and giving some feedback. I will be making changes constantly, so the more feedback I get the better the game will become.
In the original game, there was only one class of ship. This is the ship you will fly or fight if you do not specify any command line options. I suggest you play and master the original before you start experimenting with the options (especially I just finished converting the option parsing routines and haven't fully tested them yet).
Please send any bugs, comments, donations, suggestions, etc. to me. If accompanied by a contribution ($20 suggested, but never required) I'll give it more attention than if it isn't 😉 If the bug appears to exist in the original Unix code, I will forward the information to the original authors.
I can be reached at the following address:
David A. Soussan
368 Rimini Ct.
Palatine, IL 60067
(708) 934-0905 - leave a message.
davids["at"]comm.mot.comI hope you enjoy this game as much as I did (and still do!)
-David
1. Star Trek is a registered trademark of Paramount Pictures.
2. Star Fleet Battles is a trademark held jointly by Task Force Games and Amarillo Design Bureau.[see the Unofficial SFB Home Page]
3. Although technically incorrect, it does save the player from having to compute cube roots.
4. This saves the player from having to work out problems in spherical geometry.
5. UNIX is a registered trademark of Bell Laboratories.