home *** CD-ROM | disk | FTP | other *** search
/ Game Killer / Game_Killer.bin / 132.DOCS.TXT < prev    next >
Text File  |  1992-07-27  |  49KB  |  939 lines

  1. Documentation (heh!) for the Trade Wars Viewer programs -- DOS version
  2. Last revision: 7/26/92 by Woody
  3.  
  4. Abstract:
  5. ---------
  6.  
  7. The game Trade Wars is a delightful mix of economic strategy, exploration,
  8. and military conquest.  To design your economic tactics, you need to know
  9. where the ports are located in space, and what and how much they are
  10. trading.  For exploration, you need to know where the unexplored sectors are
  11. located, and where the closest ones are.  For military conquest, you have to
  12. be able to find your enemies planets amid the many sectors of space, and
  13. prevent him from retreating his forces away. ... Unfortunately, keeping all
  14. the information about which sectors you've visited, which are ports, and
  15. which is connected to which can become a nightmare.  The good news is that
  16. record keeping is a task ideally suited to computers!  It is with that
  17. thought that this suite of programs have been developed.
  18.  
  19. The first program, CONVERT, creates a data base of explored sectors, warps
  20. for each sector, if it is a port or not, and if a port, what it is selling.
  21. It allows you to maintain that information, to keep it current, and is able
  22. to tell when ports become "blocked" (by enemy fighters) or "unblocked".
  23. It is able to use the "interrogation" mode of your Crai, to enable fairly
  24. rapid and simple collection of data about the universe.
  25.  
  26. The second, EXAMINE, allows you to look at that data base in a variety of
  27. ways, from visual graphing of the data to asking questions about nearby ports
  28. and so on.  It allows you to maintain records -- both notes on sectors,
  29. ports, fighter locations, date of last "bust", etc.  It is the primary
  30. program one uses while playing the game.  If you have the ability to run
  31. under a multitasker such as DesqView or Windows, this is a good one to keep
  32. running alongside your terminal program.
  33.  
  34. A third, OFFLINE, performs various inquiry tasks and other sorts of
  35. management routines.  It allows you to design optimal paths for various
  36. sorts of tasks.  This is a program that mostly you would use in an offline
  37. mode -- i.e., to help you prepare for your later game.
  38.  
  39.  
  40. What you need to run the programs:
  41. ----------------------------------
  42.  
  43. To create the data base, you need to be in a terminal program that allows
  44. ASCII uploads and ASCII captures.  The best situation is one that allows you
  45. to do them simultaneously, i.e., capture input while uploading a file.
  46. Second best is to have a large scrollback buffer, that allows you to take
  47. pieces out of the scrollback and append them to a file.
  48.  
  49. I've compiled two versions of the programs, one for DOS machines and another
  50. for Macs.  (Source code is included in the TWVIEW package.)  A port has been
  51. made to the Amiga: look for a file TWVIEWxx.LHA.  If you are running the DOS
  52. version, you will need the device driver (.BGI files) suitable for your
  53. machine.  These files should simply reside in the default directory -- they
  54. are not installable drivers for your config.sys.
  55.  
  56. The three executables will take up a little over 200K.  Each database for a
  57. universe will take up perhaps 60K when your universe is fully explored.  The
  58. program likes to make backup files, so take that into account.
  59.  
  60.  
  61. HOW TO CREATE AND MAINTAIN THE ORIGINAL DATA BASE:
  62. --------------------------------------------------
  63.  
  64. There are two methods to develop the data base.  Which you use depends on (i)
  65. how good you are at flinging files about and (ii) how much new information you
  66. are trying to collect.  If you just want to find out about a few sectors, use
  67. the "old" method.  If you want to collect a full set of data, use the "new"
  68. computer interrogation mode.  Generally speaking, I will download a fighter
  69. report (G from the main menu) and a full port report (R from Computer
  70. Interrogation Mode) at the start of play, and if I've done some exploring
  71. during the play will use the "old" method to find out the contents of new
  72. sectors.  I will write down any ports I'm unblocked (by destroying enemy
  73. fighters) and use the "old" method adding them to the log file, before going
  74. on to a new strategy that day.  However, I do like getting a full port
  75. report at the end of play, so that I can compare it with the port report
  76. from the start of the next day, and see what changes have occurred (to see
  77. where the other players are trading).
  78.  
  79. In both modes, you should should turn ANSI off at least for the duration of
  80. the transfer.  Do this with <N> from the main computer menu.  I've found
  81. this speeds up the transfers by as much as a factor of three!  Once you've
  82. played a while, there isn't much point to the ansi displays, except when you
  83. are exploring and need the unexplored sectors highlighted in red.
  84.  
  85. For those of you used to older versions: when reading in the data base, the
  86. prompts have changed a little bit.  You can specify the name of the data
  87. base in the command line -- for example
  88.  
  89. C:\> convert stmarys.dat
  90.  
  91. and the program will start up and run CONVERT on the data base for
  92. stmarys.dat.  If you mistype something, the program will tell you that it
  93. can't find the file.  If you are running CONVERT, it will assume you are
  94. trying to create a new data base.  If you are running one of the others, it
  95. will assume you screwed up, and will offer to quit.  In both cases, it will
  96. allow you to specify things again.
  97.  
  98. When the files are read in, the location of the stardock, if known, will be
  99. printed.  Also printed will be the number of known sectors, the number of
  100. known port sales info (which will in general be the number of ports, except
  101. for the three class 0 ports which, since they are selling holds, fighters,
  102. and shields, do not have sales info), and the number of "etc"'s -- this is a
  103. reference to a flag set on sectors: this would include any sector with a
  104. port, a note, fighters, an avoid set, and so on.
  105.  
  106.  
  107. The "Old" method -- inquiry of the Crai via uploaded files
  108. -----------------
  109.  
  110. First, log into the game and invoke the ship's computer.  Tell the computer
  111. you want the known universe report, by hitting K.  Now start an ASCII capture.
  112. If you have explored more than half the universe, tell the computer that you
  113. want unexplored sectors by hitting U and return.  The computer will list your
  114. unexplored sectors.  If you have explored less than half, tell the computer
  115. you want explored sectors by hitting E and return.  The computer will list
  116. your known sectors.  If you've explored a lot of sectors, there may be a
  117. [PAUSE] in the listing; just hit the space bar and go on past it.  (It's okay
  118. if it shows up in your ASCII download.)  When the listing is finished, turn
  119. off the capture.  Your captured file must contain either the line that says:
  120. "You have explored the following sectors:", or "You have NOT explored the
  121. following sectors:", and at least one blank line after the sectors.  (A little
  122. more before or after is okay too.)
  123.  
  124. Now shift from your terminal program to the program "Convert".  At the first
  125. prompt, it is asking for your initial data base.  If you've already developed
  126. a data base, and are just updating it, give the name of your old base; if you
  127. don't have an existing data base, just hit a return.  Next, it will ask if it
  128. should be reading a list of explored sectors, a log of inter-warp and port
  129. information, and so on.  Choose option 1.  Next, it'll ask for your "Explored
  130. Sectors" or "Unexplored Sectors" file.  Next, it will ask you to name the
  131. file to generate: use anything you like here but being careful to not
  132. accidentally overwrite something you want to keep.  (The program is smart
  133. enough to ask if you really mean to clobber a file, and offer to back it up
  134. as needed.)
  135.  
  136. What this step will do is create a file that you can upload to generate lots
  137. of printouts.  Essentially, what it creates is a file with I<sector number>
  138. and R<sector number> for every new sector.  The nice thing is that this will
  139. interface well with the Crai on board your ship.
  140.  
  141. Now back to Tradewars.  You are probably still in Computer mode; if not, get
  142. there.  What you want to do is upload the contents of the file you just
  143. generated with the Convert program into the Crai on your ship, and store the
  144. output to a .log file.  If you can do that while doing an ASCII capture,
  145. start the capture and then start the upload.  Otherwise, you may have to
  146. start the upload and then retrieve the results later from your scrollback
  147. buffer.  In any case, your captured file should contain all the I reports
  148. (sector nnn has warps to : xxx - yyy - zzz etc) and all the R reports
  149. (Commerce report for ...).  There will be lots of "I have no record of a
  150. port in that sector."'s: that's okay -- the program has to find out if there
  151. is a port there or not.  If there are a couple of ports that you are
  152. interested in that aren't in the upload file, that's fine -- the program will
  153. be happy to parse that too.  Just make sure that when you hit your R you
  154. don't just hit a carriage return but explicitly type in the sector number.
  155.  
  156. Back to the "Convert" program.  Again, tell the program your old data file
  157. (or hit return to start fresh) and this time we are in part 2.  Tell it the
  158. name of the ASCII download or capture you just made, and the name you want to
  159. use for your database.  The program will generate the data base.
  160.  
  161.  
  162. The "New" method -- using Computer Interrogation Mode (CIM)
  163. -----------------
  164.  
  165. I should mention at this point that there is a collection of utilities,
  166. TWUTILxx, one of which will automatically gather the two .SCT and .PRT files
  167. described below.  The collection also includes some routines that this
  168. program does not do -- in particular, it includes routines to make good
  169. guesses as to the location of the StarDock and class 0 ports even though you
  170. have not done any exploration.  I have not used these programs, but the
  171. documentation is clear and well written (unlike this, sorry) and so you
  172. might want to check them out.  The programs are written by Joel Downer, an
  173. active participant on the Fidonet Trade Wars echo.
  174.  
  175. First you have to get into CIM on your Crai.  To do this, you need to send
  176. ASCII characters 200 through 205 to the Crai.  There is a file "ON.TXT"
  177. included in this package -- do an ASCII upload of ON.TXT after you have
  178. activated the Crai, and you will see a ":" appear.  Alternatively, if you
  179. are on an IBM, you can hold down the Alt key, then from the numeric keypad
  180. type 200, release, hold down alt, type 201, release, through 205.
  181.  
  182. Now that you are in interrogation mode, start your ASCII capture; I recommend
  183. using an extension of .SCT.  (For example, on the St. Mary's BBS my main
  184. data file is STMARYS.DAT, and my sector report file is STMARYS.SCT.)  Type
  185. I, and the computer will immediately begin spewing out sector numbers and
  186. warps.  When that finishes, stop the capture, and start another capture,
  187. this time using an extention of .PRT.  Type R, and the computer will begin
  188. spewing out port information.  When that finishes, stop that capture, shell
  189. to DOS, and run the program "CONVERT."
  190.  
  191. There are two new options in CONVERT: option 8, which parses the .SCT report
  192. you prepared, and option 9 which parses the .PRT report.  Invoke them, then
  193. exit CONVERT and your data base is complete.
  194.  
  195. This "new" method does not identify class 0 ports (Terra, for one), nor does
  196. it identify the star dock (as the old method did from logs).  That information
  197. is not available from interrogation mode, so you have to add them manually by
  198. using the edit mode of "CONVERT."
  199.  
  200. There is information available from option 9 that can not be obtained
  201. elsewhere.  When it is processing the sectors, it recognizes if a port
  202. should be there but no report was given -- if last time it processed reports
  203. the port was accessible but now it isn't, the message "Port recently blocked
  204. in xxxx" is displayed.  This is a good hint that either the Ferrengi are
  205. being pests, or your opponent is making his move.  Also, if a port was not
  206. in the last report but suddenly appears, you will get the message "Port
  207. recently unblocked in xxxx".  This message will show up if you haven't seen
  208. that sector before -- but otherwise, it means that fighters that used to be
  209. there aren't anymore.  A good sign your opponent is moving about but trying
  210. to remain hidden.
  211.  
  212.  
  213. OTHER CONVERT OPTIONS
  214. ---------------------
  215.  
  216. This takes care of 1 & 2 (old style sector/port info processing) and 8 & 9
  217. (new style sector/port info processing).  To have the program remember where
  218. you have left fighters, capture a <G> report from the main menu (remember,
  219. with ANSI turned off) and then feed that through option 3.
  220.  
  221. For the Major Space Lanes data (those sectors that get cleared by the Feds
  222. each night) I have a problem.  It turns out that the Martin's haven't used
  223. any of the standard shortest path algorithms in their program.  (Saints
  224. preserve us from the talented amateur!)  So we have to get the Crai to do
  225. the shortest path computation.  To do the computation, you have to know the
  226. location of the StarDock, and the two other ports that sell fighters and
  227. shields other than Terra.  Option 4 will generate an upload file, that
  228. option 5 will then parse.
  229.  
  230. Many people have reported problems getting the upload file to work properly.
  231. There are two solutions: either fiddle with your ASCII upload so that it
  232. doesn't send out more characters until the computer finishes working with
  233. the previous set, or just enter the file generated in #4 by hand yourself.
  234. It's a fairly small file to type.
  235.  
  236. Option 6 allows fellow teammates to collaborate.  You can feed in their
  237. information about sectors, ports, and so on, and use it for yourself.  Of
  238. course, ports that you haven't visited will be marked as "blocked" next time
  239. you do a port scan (since you aren't receiving info from them) but you will
  240. be able to see what kind of port they are, and approximately how much they
  241. are selling.
  242.  
  243. Option 7 allows direct editing.  This is important if, for example, you've
  244. been using the "New" method only, and you know where the ports that sell
  245. Holds, Fighters, and Shields are; if you know the location of the Stardock;
  246. if someone in the game destroys a port you've visited (and you want to mark
  247. that as empty space again); if you create a port; and a feature new to 0.91,
  248. if you want to mark a sector as to be avoided (so TWVIEW won't plot a path
  249. across that sector or show paths from it on the display).  Just choose 7 and
  250. follow the prompts.  You can also clear ".etc" flags if you want to share
  251. your database with others and don't want them to know about your fighters and
  252. such.  Hopefully, all will be clear from the prompts.
  253.  
  254.  
  255. STRUCTURE OF THE DATA BASE
  256. --------------------------
  257.  
  258. If you don't expect to do any hand editing, and don't want to worry about
  259. the internal structure of the database, you can skip this section.  For what
  260. its worth, the data is in a plain text format, so your data files can be
  261. typed out if you wish.
  262.  
  263. Information is divided into several categories.  First, are the two lines:
  264.  
  265.      ::Tradewars Data file::
  266.      SpaceDock is   200
  267.  
  268. or whatever the corresponding sector is if you have visited the space dock,
  269. or possibly "SpaceDock is 0" if you have not visited it or do not know the
  270. location of the space dock sector.
  271.  
  272. Next is a line of the form:
  273.  
  274.      7  <- number of notes
  275.  
  276. where the integer represents how many "Notes" you've stored for the game.
  277.  
  278. A note has the form:
  279.  
  280.      13 Don't Go Near This Sector!!!!
  281.  
  282. i.e., a sector number, and a short bit of text.  You can add or delete notes
  283. from within the EXAMINE program, as well as display those sectors for which
  284. you've recorded notes.  If you add a note manually, be sure to update the
  285. "etc" field of the corresponding sector, or the note will never be printed
  286. out.
  287.  
  288. Next is a line of the form:
  289.  
  290.      105  <- number of Port Infos
  291.  
  292. followed by lines of the form:
  293.  
  294.      120 3000 3280 -2530 100 32 100 -60 270 -1024 198
  295.  
  296. where the first integer is the sector number for the port; next are the
  297. levels for the three trade goods "Fuel Ore," "Organics," and "Equipment."  A
  298. positive number means that the port is selling the stuff, and a negative
  299. number means the port is buying up to that much of the stuff.  (Remember
  300. that the larger the magnitude of the number, the better the price you get --
  301. ports are more willing to stretch when the numbers are higher!)  The next
  302. three numbers are percentages of maximum use: a value of 100 means the port
  303. is fully refreshed for that good, 0 means they are all sold out or are not
  304. interested in buying anything.  
  305.  
  306. Special Note: If a port doesn't show up on the R report, but there had been
  307. port information stored for it, the previous sales levels are preserved, but
  308. the port usages are all set to zero.  This allows you to identify "blocked"
  309. ports -- ports captured by the Ferrengi or opposing players.
  310.  
  311. The next three numbers show the absolute change in goods since the previous
  312. port update.  These numbers are used in the Net change <X> report.
  313.  
  314.   Finally, the last number is the "bust date", actually measured as days
  315. since January 1, 1992.  If the last number is 0, it means that there is no
  316. bust date.
  317.  
  318. The ports are generally sorted by sector number.  If you want to do hand
  319. editing using a text editor, the order is irrelevant (the read routines
  320. don't care, and the write routines sort before storage) but there must be as
  321. many lines as specified in the "<- number of Port Infos."  If you do hand
  322. editing, be sure to update the port class and "etc" fields on the sectors.
  323.  
  324. Next is a line of the form:
  325.  
  326.      Sector data starts here ...
  327.  
  328. followed by lines of the form:
  329.     1  6    2    3    4    5    6    7  8    10
  330.     |  |    +-----------------+      |  +--+  +--------------+
  331.     |  +---------|            |      +---| +-------|         |
  332. <sector> <number of warps> <warp1> ... <warpn> <port code> <etc code>
  333.  
  334. Here, for example, is a report for sector 1: it has six warps, to positions 2
  335. through 7, a port code of 8 (which actually corresponds to class 0) and an
  336. "etc" code of 10.  A "Port Code" corresponds to -1, if the sector is not a
  337. port, 0 through 7 based upon a three bit representation of selling or buying
  338. (for example, if a port is selling Ore and Organics and buying Equipment its
  339. port code would be 1 * 1 + 1 * 2 + 0 * 4 = 3; don't worry about it, the
  340. program handles figuring out port codes and so on).  The "etc" code tells
  341. about various pieces of information, again depending on bit representation.
  342. Currently the codes in use are:
  343.  
  344.      NoteExists = 1;
  345.      IsPort     = 2;
  346.      HasFighters= 4;
  347.      SpaceLane  = 8;
  348.      Avoid      = 16;
  349.      Stardock   = 128;
  350.      Busted     = 256;
  351.  
  352. but others will probably follow.  In the example above, sector 1 is a port
  353. (class 0 = HFS, "porttype" 8) and is a spacelane, so its .etc code is 2 + 8.
  354. (Note that the Stardock is also a port; so its etc code is 128 + 8 + 2 =
  355. 138; if a random port had a note attached, its code would be 2 + 1 = 3.)
  356.  
  357.  
  358. HOW TO USE THE DATA BASE VIEWER
  359. -------------------------------
  360.  
  361. Its pretty well impossible to draw a decent map with all 1000 sectors, so the
  362. data base viewer doesn't try to do that.  Run EXAMINE, and tell it the name
  363. of your data base.  You will be presented with a list of options.  In version
  364. 0.94, you get to choose from the following list:
  365.  
  366.                          <A>dd note                         <B>usiest ports
  367.                    <C>lassify ports                           <D>elete note
  368.             <E>vil pair [SxS & xxB]         Closest place to buy <F>ighters
  369.       <G>et blocked ports for avoid                     <H>ard luck, busted
  370.                  Note <I>nformation     <L>ength & path between two sectors
  371.               <M>isc config options                          <N>earest port
  372.                      <P>aired ports                                  <Q>uit
  373.                   Nearest <S>ectors                        <T>ranswarp menu
  374.        Nearest <U>nexplored sectors          <V>iew space in graphic format
  375.    <W>here is nearest fighter cloud                          Net change <X>
  376. <Y>ou asked for non-adjacent trading pairs?
  377.  
  378. Here is what the commands will do:
  379.  
  380.      <A>dd note
  381.      <D>elete note
  382.      Note <I>nformation
  383. These manage the notes that you may have stored on your universe.  Typical
  384. notes might be "enemy base here!", "great trading spot", "Fedspace", or
  385. whatever.  Option "A" will add a note to a sector, option "D" will delete a
  386. note from a sector, and option "I" will present you with a list of the notes
  387. you've made, sorted by distance from a current sector.
  388.  
  389.  
  390.  
  391.      <B>usiest ports
  392. This will offer a display of your ports, sorted by usage.  First to be listed
  393. will be all class 0 ports and all ports with a usage field of 0.  (In
  394. particular, any port that has been previously scanned, but for which you can
  395. not now obtain a scan will appear here.)  Then will occur all ports sorted by
  396. fraction of maximum use.  This is useful for several reasons.  If you are
  397. evil, these are good places to try to rob -- they are doing a lot of
  398. business, so there are lots of credits...  If you are good, these might be
  399. natural ports to try to take over, or at least leave a few mines scattered
  400. nearby...  Also, if you see busy ports that are very low on fuel or or
  401. organic but haven't scratched much in the way of equipment, they have likely
  402. been used for Planetary Contracts, and so planets are nearby.
  403.  
  404.  
  405.      <C>lassify ports
  406. Want to know where all the BBB ports are?  This is the command for you.  It
  407. will list all known ports of a specific class.  Choose the class from the
  408. menu, and you get the regular port listing.
  409.  
  410.  
  411.  
  412.      <E>vil pair 
  413. This idea comes from Joel Downer's TWUTIL package.  Suppose you are an evil
  414. player and want to do the trade/steal routine.  What do you want?  You need
  415. to transwarp to someplace where you can pick up some equipment, then move
  416. someplace where you can sell the equipment to do the trade/steal cycle.  You
  417. would probably continue this until you get busted:  you then want to go to
  418. someplace to pick up ore so you can transwarp to some a class 0 port to get
  419. replacement holds.  So, what this routine identifies is a port that sells
  420. ore and equipment, near to a port that buys equipment.
  421.  
  422.  
  423.  
  424.      Closest place to buy <F>ighters, shields, and holds
  425. Invoke this option, and you will be asked for your current sector.  The
  426. computer will then display the path from that sector to any place it knows of
  427. to buy fighters: if the only class 0 port you know is Terra, that is the only
  428. one it will display, but if you know of the others, it will display a shortest
  429. path to the closest of those sectors, or the Stardock.
  430.  
  431.  
  432.  
  433.        <G>et blocked ports for avoid
  434. If you are going to be doing some etherprobe exploring, this will drop you
  435. into a menu that will help with that task.  Essentially, you want to make
  436. sure that your etherprobes don't run into enemy fighters (and get destroyed)
  437. or at least enemy fighters you already know about.  So, ideally, you would
  438. mark as avoid all blocked ports -- since you already know there are fighters
  439. there.  Of course, that might well involve a lot of typing in an active
  440. game.  Also, it rather screws up your avoid list -- you don't want to lose
  441. your real avoids!  You will get a submenu with the following choices:
  442.  
  443.   Store list of <B>locked ports to disk for upload
  444.   Store <C>urrent avoids to disk for later upload
  445.   <Q>uit
  446.  
  447. The first will generate a text file that consists of "Vxxx" where xxx runs
  448. over all the sector numbers of blocked ports.  This is just what is needed
  449. to feed into the Crai to avoid all ports.  The second option will parse a
  450. text file that you create by capturing the "current avoid list" info, and
  451. generate a "Vxxx" for each of your current avoids.
  452.  
  453. So, what you do is get into computer mode, start an ASCII capture, hit X (to
  454. display current avoids), end capture, (optionally, clear them unless they
  455. are avoided for good cause!), generate the G, B report, ASCII upload it, do
  456. your etherprobing, clear the avoids, then generate the G, C report and ASCII
  457. upload it.  You will have your etherprobe data, and only lose probes to
  458. newly discovered enemy fighters.
  459.  
  460.  
  461.  
  462.        <H>ard luck, busted
  463. This is for the evil types among us, and deals with managing ports at which
  464. you've been busted.  Starting with version 0.94, a new field was added to
  465. the port record that stores the date you were last busted.  These are
  466. reflected in the sector and port displays with "busted" (verbose mode) or
  467. "X" (terse mode).  These options allow you to control those markers.  Choose
  468. this option, and you get the submenu
  469.  
  470.   record <B>usted sector
  471.   <C>lear bust
  472.   <U>pdate all bust flags
  473.  
  474. The first stores a new bust, the second clears a bust (if your partner was
  475. just busted there, say, then you won't be recognized and are safe to rob
  476. it), and the last option clears all busts that are two weeks old.
  477.  
  478.  
  479.  
  480.      <L>ength & path between two sectors
  481. You specify two sectors, and it will tell you the shortest way it knows of to
  482. get between those two sectors.  Note that this may NOT be the actual shortest
  483. path if there are sectors you have not yet explored that might give you a
  484. better route.  It gives you the shortest path YOU'VE EXPLORED between those
  485. two sectors.  It will not route your path across an avoid.  The program will
  486. actually list the path in both directions, with a pause (for a return) in
  487. between.
  488.  
  489.  
  490.  
  491.      <M>isc config options
  492. Currently, there are two allowed configuration options.  You can turn the
  493. color off: this prints everything in monochrome, and changes port colors to
  494. small printouts of the actual ports.  It looks good on my laptop ... your
  495. mileage may vary.  (Suggestions?)  Anyway, if you load GRAPHICS.COM, this
  496. allows you to print the screen and still see port sector numbers.  The other
  497. option is for verbose or terse sector descriptors.  In verbose mode, it will
  498. print "Fighters", "Space Lane", "Dead End", "Avoid", etc.  In terse mode, it
  499. will print "F", "SL", "DE", "AV" and so shouldn't overflow the line.  I'd
  500. recommend using verbose mode, until you are used to the display, then
  501. switching to terse.
  502.  
  503. *IMPORTANT NOTE: If a file "TWVIEW.CFG" exists in your default directory, it
  504. will be read for configuration information.  Right now, what you can
  505. configure are these startup defaults.  For example, my twview.cfg reads
  506.  
  507.                 CONTENTS OF TWVIEW.CFG
  508.                 ----------------------
  509.                    verbose = false
  510.                    monochrome = true
  511.  
  512. The file should be in ASCII text, one option per line.  Whitespace is
  513. ignored, and case is unimportant.  You should state "verbose" or
  514. "monochrome", an equal sign, and either true or false. (Or 1 or 0, actually.)
  515.  
  516.  
  517.  
  518.      <N>earest port
  519.       Nearest <S>ectors
  520.       Nearest <U>nexplored sectors
  521. These displays will give you information about what is close to your current
  522. position.  Information displayed includes if the sector has been explored, any
  523. notes, if it's a port, its status (SSB for example, means selling Ore, selling
  524. Organics, and buying Equipment) and levels of production.  If you ask for the
  525. "Nearest Port" report, only ports are listed.  I find the "Nearest Unexplored
  526. sectors" report VERY useful for exploration purposes: I can just head toward
  527. the nearest unexplored sector easily this way.
  528.  
  529.  
  530.  
  531.      <P>aired ports 
  532. This is one of my favorites.  What it does is go through the data base and
  533. find ports that are adjacent (i.e. you can warp between them using normal
  534. space in one turn) and are compatible (i.e. at port A you can buy a good
  535. that is sold at port B, and you can sell a good that is bought at port B).
  536. You can be selective (greedy) and only specify ports that are compatible in
  537. the very profitable Organic-Equipment trade, or if those are starting to
  538. wear out ask for some other trade pair, or if you don't care about the type
  539. but just want the closest pair, you can ask for all compatible pairs.  The
  540. program will offer you the opportunity to have the results sent to a text
  541. file, which you can print later (if you can't run the program simultaneously
  542. with your terminal emulator, you can get hard copy of the "hot sectors") and
  543. you can have the results sent to a text file that is compatible for upload
  544. (i.e. part 2 of the "CONVERT" program so you can keep an eye on trading
  545. levels at these critical ports).  Displayed to the screen are two integer
  546. "factors": the first is the total amount of goods you can trade (the
  547. smallest number occurring in the trade goods) and the smallest percentage of
  548. use at the ports.  Your best deals will occur at ports with high
  549. percentages.  High trade quantities generally mean that the initially
  550. offered price will not be as good as other ports (best deals occur at 100%
  551. ports with small stocks) but there will be less degradation in price as you
  552. trade over at the port and stocks are diminished.
  553.  
  554.  
  555.  
  556.      <T>ranswarp menu
  557. This drops down to a submenu that deals with locations of deployed fighters
  558. and using a transwarp drive.  Most submenu items are pretty obvious: you
  559. specify where you have deployed fighters, or tell the data base that some
  560. #%!%@$ has shot up your deployed fighters, or list the places the data base
  561. knows you've deployed your fighters.  The only thing that needs mentioning
  562. is the shortest route submenu item: you specify where you are, and where you
  563. want to go.  It figures out, based upon where your fighters are located, the
  564. fastest route to get there (using a transwarp jump and then normal autopilot).
  565. It may say to transwarp to your current sector -- that just means the shortest
  566. route lies through normal space.  Another thing of interest is that with
  567. Transwarp, the equivalent of "paired ports" are ports that you can hop
  568. between buying a little fuel ore for the engines and still trade
  569. organics/equipment.  Best is SBS & SSB: you can buy just enough fuel to make
  570. it to the other port.  Alternatively, you can buy enough fuel for a round
  571. trip: best is then SSB & BBS (so you sell as much equipment as possible)
  572. although SBS & BSB is also profitable.  These trade pairs are listed in this
  573. submenu.
  574.  
  575.  
  576.  
  577.      <V>iew space in graphic format
  578. Viewing the data will attempt a graphic display on your screen of space: you
  579. tell it about how many rows across and columns up and down of sectors to use
  580. (maximums are given in the program: hit a return, and you get a default value
  581. that is about 3/4 of maximum); you tell it the base sector you want in the
  582. center of the screen (it has to be a sector you've visited!); and you tell it
  583. how large a radius to display (all sectors it is aware of no more than that
  584. distance away from your base sector).  It will try to display the collection
  585. of warps that make up your known space.  Ordinary, visited sectors are shown
  586. as circles, ports as rectangles.  (Unexplored sectors just have their numbers
  587. floating in space, and if you have color are in yellow.)  Lines connecting
  588. sectors means there is a warp connecting one with the other.  Dashed lines
  589. mean that you don't know if the warp is two way or not: if one end of the line
  590. connects to an unexplored sector, you will have a dashed line.  If both of the
  591. sectors at each end are explored, the warp really is one way!  (Try graphing
  592. around the StarDock and around the class 0 ports.)  Don't try to graph too
  593. many sectors at once: the screen gets too busy, and you won't be able to tell
  594. what connects to what.
  595.  
  596.   There is no known way of generating a "best" display, even for graphs that
  597. can be drawn on paper without edges crossing -- for the directed graphs
  598. generated by Tradewars, its even worse.  Consequently, there is an element
  599. of randomness in this display.  It tries to put sectors close to where
  600. others were located, and fills in space around a sector clockwise.  If you
  601. don't like your current display, as for the same display again with the same
  602. parameters, and you will get a slightly different perspective.
  603.  
  604.   When you have the display up, if you type a number and hit return, it will
  605. ask again for the distance and then redraw (with the same graphic
  606. parameters) around the new number.  This is good for "walking" through the
  607. galaxy to find good trade routes.
  608.  
  609.  
  610.  
  611.      Net change <X>
  612. This display shows the change in port quantities since you last updated that
  613. port info (via CIM's .PRT or the old captured .LOG files).  The display
  614. sorts ports based upon total net change, and does not print a port at which
  615. there was no net change.  I find the best use of this display occurs if I
  616. take a CIM as the last action of the game, then a CIM early after log in:
  617. this way my own activities are not displayed, and my opponents activities
  618. stand out clearly.  This is very helpful at identifying ports with activity
  619. -- a port that has a huge buy of organics and fuel has almost surely been
  620. involved in a planetary trade contract, and gives a good place to start
  621. hunting; trading pairs that have been recently drained make good place to
  622. dump mines, and so on.
  623.  
  624.  
  625.  
  626.      <Y>ou asked for non-adjacent trading pairs?
  627. Some people had observed that my program worked too well: in their games
  628. they couldn't find any paired ports at which to trade.  They wanted "almost
  629. adjacent" ports.  Well, I can't really believe these things are going to be
  630. profitable (can't you just spend time hauling colonists until the ports
  631. regenerate?) but hey, if they really want to spend the turns... .
  632.  
  633.  
  634.  
  635. Use of the OFFLINE program 
  636. -------------------------- 
  637.  
  638. The OFFLINE program is envisioned as something you use while not logged into
  639. the game, to decide upon strategy and the like.  Version 0.94 gives the
  640. following menu:
  641.  
  642.  
  643. <C>ontrolled sector status
  644. <D>ead end analysis
  645. suggest <E>therprobe targets
  646. <L>ist bust records
  647. visit <M>ultiple sectors efficiently
  648. <O>ne way warps
  649. <P>arse captured ASCII text
  650. <Q>uit
  651. <R>obbing path
  652. <S>tellar dispersion
  653. <T>raffic area analysis
  654. <U>known sectors
  655. <V>isit every sector
  656.  
  657.  
  658. The <C>ontrolled sector status display is useful to look for backdoors or
  659. sectors that you have missed in setting out a domain.  Essentially, you
  660. specify militarized sectors that mark the perimeter of your domain, and then
  661. a sector that is "inside".  It runs through the area you can get to without
  662. running a militarized gauntlet.  If it finds an opening out into the major
  663. space lanes, there is a problem...
  664.  
  665.  
  666.  
  667. The <D>ead end analysis provides you with the dispersion of the dead ends by
  668. tunnel length.  A tunnel is a sequence of sectors adjacent to only two
  669. sectors, the last of which is a dead end.  These are convenient places to
  670. place your citadels, as you can fortify the citadel and make someone fire
  671. off lots of photon torpedos or fight through lots of defenses to get to your
  672. home sector.  After displaying the dispersion, it asks for a tunnel length,
  673. and then will display all tunnels of that length.  It checks for "back
  674. door"s, i.e., one way warps into your tunnel, then displays the distance of
  675. the home sector from terra.
  676.  
  677. Starting with 0.94, the definition of "dead end" is a sector with only one
  678. way in.  Note that this is what one really wants: if there are two ways into
  679. a sector, that means you have to protect both of them.  Some of the dead
  680. ends will be marked "escape".  This means a dead end sector with a one-way
  681. warp out.  One disadvantage of this sort of dead end sector is that the CRAI
  682. may well warp people through your homeland, which wouldn't happen in a dead
  683. end without escape unless they were specifically headed for that sector.
  684. On the other hand, it makes it harder for your enemy to bottle you up, since
  685. you have that extra escape warp.  
  686.  
  687.  
  688.  
  689. suggest <E>therprobe targets and <V>isit every sector efficiently are two
  690. commands that you might use in the endgame.  Lets assume you have already
  691. mapped all the sectors and are just looking for where your opponents have
  692. built up their citadels.  What these allow is building up of a "map" of
  693. sectors you have visited/scanned recently, so you can tell where your
  694. opponents are hiding.  The former will make a suggestion to sectors that
  695. will show lots of new sectors for you, and the last will actually offer a
  696. circular path through the galaxy that will allow you to visit or scan every
  697. possible sector.  (Incidentally, a galactic tour, from scratch, takes about
  698. 1000 moves.  A scout can easily do that in a week.  If you use up a 350
  699. etherprobes or so, you can do it in a long (and expensive) day.)
  700.  
  701. A command that helps with the above is the <P>arse captured ASCII text.  It
  702. allows you to automate the development of the "map" mentioned above.  So,
  703. the standard routine is to get a list of places to fire etherprobes, start
  704. an ASCII capture, fire the probes, turn the capture off and parse the text,
  705. updating the map, then delete the text and repeat until you find what you
  706. are looking for or run out of money for probes.
  707.  
  708.  
  709.  
  710. <L>ist bust records will show you the ports at which you've been busted, and
  711. how many days old the bust is.  Anything over 14 is an expired bust, of
  712. course, so this will help you plan ahead so you will know when the ports
  713. will allow you to steal from them again.
  714.  
  715.  
  716.  
  717. visit <M>ultiple sectors efficiently is intended to provide the following:
  718. you know that you want to hit sectors A, B, C, D, and are going to go through
  719. normal space -- the program will suggest which is the best order to visit
  720. those sectors in the fewest moves.  You can specify if you want to return to
  721. your original starting point, or just end at one of the targets.  (This
  722. allows you to make long chains, if you want to hit thirty or forty ports.)
  723.  
  724. This is often used in connection with the "steal holds" <R>obbing path
  725. option.  You specify the following information:
  726.  
  727. Maximum number of targets? [max 25] 
  728.  -- this is the number of ports you want to visit on your trip.
  729. Maximum number of turns? 
  730.  -- this is the maximum number of turns allowed for the trip
  731. Starting Sector? [0 to abort]  
  732.  -- starting point of the trip
  733. Closed path? 
  734.  -- yes or no: do you want the trip to return back to the starting point?
  735. Trading spree path?  (alternate trading equip/organic) 
  736.  -- yes or no: yes is a sequence of ports that buy equip and sell organic,
  737.     alternating with a sequence of ports that buy organic and sell equipment.
  738.     If the answer is no, you get the Okay, will choose ports to "rob holds".
  739.     This is for the "rob holds" bug: ports that have available 365 holds of
  740.     equipment or 660 holds of organics.
  741.  
  742. What you get back is a sequence of ports that fit the above criterion and
  743. will be only as long as you specify.  [Note that if you plan on using 35
  744. moves, leaving from the Star Dock, rob holds at seven ports, then return to
  745. the Star Dock to sell your ship, specify 7 targets and 27 turns (because you
  746. will burn 8 moves at the seven ports and star dock).]
  747.  
  748. The algorithm used here is the "greedy" algorithm -- it just takes the first
  749. port it finds meeting the above criterion.  It's a fairly good approach, but
  750. not in general optimal.  In particular, if the first port available is far
  751. away from other ports, you may get a rotten path.  After you fill in the
  752. questions above, you are asked:
  753.  
  754. Ports to avoid (in addition to busted ports):
  755.  
  756. I would first specify nothing (unless there are sectors that you just dare
  757. not go, because of enemy fighters or the like) and see what you get.  Then
  758. look at the path, and see if any of them are particularly long -- especially
  759. the path from the first target to the second or third.  Then run it again,
  760. marking the first port to be avoided.  Do this several times, marking
  761. various combinations to be avoided.  Then, when you get something that looks
  762. good, use the visit <M>ultiple sectors efficiently option, specifying your
  763. base point and the targets, and you will be presented with the actual
  764. shortest path that hits all these ports starting where you specify.
  765.  
  766. In practise, I will run <R>obbing path, specifying nothing to avoid, and see
  767. what I get.  Then, run it again marking the first sector it found not for
  768. visitation, and see what comes out.  Then mark the first sector of this
  769. route in addition to that previous sector, and repeat.  I continue this
  770. until I'm happy or the first port is so far away from my base point that the
  771. task is hopeless.  In practise, what seems to be most common is to find
  772. clusters of ports that are close together, and the optimal path is to go
  773. directly to that cluster, traverse the cluster, then return to the starting
  774. point.  This best route appears often only after blocking out the first five
  775. or six closest ports, particularly after you have made several passes and
  776. most of the convenient ports are unavailable because of arrests.
  777.  
  778.  
  779.  
  780. <O>ne way warps gives you a listing of known one-way warps.  Not terribly
  781. useful at the moment, but it is interesting, eh?
  782.  
  783.  
  784.  
  785. <S>tellar dispersion will provide the dispersion of sectors from a given
  786. sector.  This will give you a general feel for whether a sector is near the
  787. middle of the galaxy (lots of sectors at distance 3, 4, 5, 6) or on the rim
  788. of the galaxy (lots of sectors at distance 11, 12, 13, 14).  Useful,
  789. somewhat, in deciding where to hide citadels or place threatening fighter
  790. clouds.
  791.  
  792.  
  793.  
  794. <T>raffic area analysis will take a long time to compute ... but when it
  795. finishes, it will determine via connectivity what the most likely sector to
  796. find a trader is.  Basically, it runs through all million paths between
  797. pairs of sectors, weights the path by its ends (in "uniform" weights, the
  798. weight is 1; in "port heavy" weights, the weights are
  799.  
  800.       Port Type     Weight
  801.       blank sector     0
  802.       BBB, SSS         1
  803.       SBB, BSS         2
  804.       BSB, BBS         4
  805.       SSB, SBS         4
  806.       HFS             10
  807.       Terra           20
  808.       StarDock        50
  809.  
  810. The number that comes out is the number of paths through that given sector,
  811. with paths weighted as above.  High numbers are good places to put
  812. fighter/mine blockades; or small numbers of fighters to collect tolls or
  813. just track the trader traveling through the sector.  A particularly
  814. dastardly trick is just to leave 99 mines and no fighters.  LOTS of people
  815. will run across them, and with no fighters left behind, no one will know
  816. whom to blame ... .
  817.  
  818.  
  819.  
  820. Generally, when you are in a reasonably established game, a turn is worth a
  821. lot more than 3,000 credits, so you use etherprobes to explore.  How do you
  822. best use the etherprobes?  Well, you can spend a lot of time with the Crai
  823. ... or you can use the <U>known sectors list.  These will be sectors that
  824. you don't have attached to any sector you've encountered.  If they are
  825. connected to the universe at all (the universe generation has a bug in that
  826. there can be sectors that you can't warp into; the only way to find this is
  827. to turn all avoids off, and ask for the shortest path to that sector --
  828. don't try to use an etherprobe targeted at that sector, it will just waste
  829. the etherprobe) and you fire an etherprobe at it, you will pick up at least
  830. two sectors.  I find that once I'm at 70% explored or so, this list will be
  831. sufficiently small that I can use the Crai just on these sectors, and use up
  832. some etherprobes efficiently.
  833.  
  834.  
  835.  
  836. FINIS
  837. -----
  838.  
  839. The program is compiled under Turbo Pascal 6.0 by Borland Inc.  (Borland is
  840. a trademark.  People always seem to mention trademarks, so I guess I better.)
  841. It doesn't use much more than Standard Pascal, except for file handling and
  842. I/O.  Originally, this was developed on a Mac (also Turbo Pascal, version 1.1
  843. I think) but around version 0.86 I switched to working on an IBM laptop.
  844. [The name of my laptop is "Flowers of Evil".  I'm rather fond of Zelazny's
  845. work.  Also Baudelaire, but that isn't important.]  There are three files with
  846. extension .PAS that are used to generate the executables -- they are little
  847. more than a reference to all the files, statement of global variables, and
  848. the main event loop.  There are many files with extension .INC that contain
  849. procedures called by the main event and each other; lots of code is shared.
  850. Here is the information reported by "Get Info" from inside the Borland IDE:
  851.  
  852. For CONVERT.PAS
  853.  ─────────── Program ────────────   ─── Memory ────
  854.  Source compiled:      1868 lines   DOS:        75K
  855.  Code size:           51280 bytes   TURBO:     268K
  856.  Data size:           43700 bytes   Symbols:    60K
  857.  Stack size:          16384 bytes   Program:     0K
  858.  Minimum heap size:       0 bytes   Free:      236K
  859.  Maximum heap size:  655360 bytes
  860.  
  861. For EXAMINE.PAS
  862. ─────────── Program ────────────   ─── Memory ────
  863. Source compiled:      3377 lines   DOS:        75K
  864. Code size:           96144 bytes   TURBO:     268K
  865. Data size:           64552 bytes   Symbols:   147K
  866. Stack size:          16384 bytes   Program:     0K
  867. Minimum heap size:       0 bytes   Free:      150K
  868. Maximum heap size:  655360 bytes   
  869.  
  870. For OFFLINE.PAS
  871. ─────────── Program ────────────   ─── Memory ────
  872. Source compiled:      2990 lines   DOS:        75K
  873. Code size:           49872 bytes   TURBO:     268K
  874. Data size:           63164 bytes   Symbols:    24K
  875. Stack size:          32767 bytes   Program:     0K
  876. Minimum heap size:       0 bytes   Free:      272K
  877. Maximum heap size:   65520 bytes
  878.  
  879. The code isn't very tightly written.  In fact, I tend to just go off and
  880. doodle for a while.  That's the breaks.  I think its reasonably legible,
  881. however.  If you have difficulty understanding the code, I'd be happy to
  882. explain it to you -- see FEEDBACK below.  Lots of people have asked about
  883. the shortest path algorithm: its a very standard routine and can be found in
  884. most introductory computer science texts dealing with directed graphs.  I
  885. did swipe the permutation generating routine (for the "visit multiple
  886. sectors optimally") from B. R. Heap's recursive routine.  Everything else is
  887. dead standard and not terribly inspired.  And the whole thing reeks of
  888. creeping featuritis.  It really should be rewritten from scratch, using an
  889. oops toolbox in C++.  And gosh, I could make it a Windows program, and
  890. DesqView-aware, and...  ;-)
  891.  
  892. So, that is the program at the moment.  There are still lots of things I
  893. want to add, but I make my living as a professor, not a programmer ... this
  894. is supposed to be fun, see?  :-) Still, the program will probably make it to
  895. version 1.0, so I can stop dealing with it, someday ...
  896.  
  897.  
  898.  
  899. FEEDBACK
  900. --------
  901.  
  902. WWIVnet:  I run a BBS at 510-376-1554; leave mail to number 1.  The board
  903.           is, in theory, open 24 hours a day, but it goes down a lot.
  904.           Since the board is at work, it occasionally stays down a couple of
  905.           days at a time.  (It seems to know when I go on vacation ...)
  906.           If you are part of a WWIVnet board, you can mail 1@5056.
  907.  
  908. Internet: I can be reached as woody@galileo.stmarys-ca.edu.  I generally
  909.       read my email twice a day.  The current version of the program is
  910.       also available by anonymous ftp from galileo.stmarys-ca.edu
  911.       (149.137.1.1) under /pub/tradewars, In fact, Richard Byron Ward has
  912.       been collecting a variety of Trade Wars utilities, and storing
  913.       them there.  So you might find some utility you don't have there.
  914.       If you are a utility writer, I would be most happy to store your
  915.       work and make it available to the Internet.
  916.  
  917. Yes, I do consider suggestions.  Sometimes the answer is "no".  Sometimes it
  918. works its way into the program.  If you want your suggestion to almost
  919. surely be included in the code, include a source patch!  ;-)
  920.  
  921.  
  922.  
  923. ACKNOWLEDGEMENTS
  924. ----------------
  925.  
  926. Thanks, of course, to the Martins for such an entertaining game!
  927. Thanks also to TMASTER for proofing this document and helping with the alpha
  928. testing.
  929.  
  930. COPYRIGHT AND LICENSING STUFF
  931. -----------------------------
  932.  
  933. Copyright 1991, 1992 by Robert Weaver.  All Rights Reserved.  You may not
  934. distribute this for any fee beyond the reasonable costs of distribution.
  935. Permission is granted to distribute this document and the related
  936. executables and source code provided this notice is preserved, and anyone
  937. you give the executable has the ability to obtain this documentation and the
  938. accompanying source files.
  939.