home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Game Killer
/
Game_Killer.bin
/
132.DOCS.TXT
< prev
next >
Wrap
Text File
|
1992-07-27
|
49KB
|
939 lines
Documentation (heh!) for the Trade Wars Viewer programs -- DOS version
Last revision: 7/26/92 by Woody
Abstract:
---------
The game Trade Wars is a delightful mix of economic strategy, exploration,
and military conquest. To design your economic tactics, you need to know
where the ports are located in space, and what and how much they are
trading. For exploration, you need to know where the unexplored sectors are
located, and where the closest ones are. For military conquest, you have to
be able to find your enemies planets amid the many sectors of space, and
prevent him from retreating his forces away. ... Unfortunately, keeping all
the information about which sectors you've visited, which are ports, and
which is connected to which can become a nightmare. The good news is that
record keeping is a task ideally suited to computers! It is with that
thought that this suite of programs have been developed.
The first program, CONVERT, creates a data base of explored sectors, warps
for each sector, if it is a port or not, and if a port, what it is selling.
It allows you to maintain that information, to keep it current, and is able
to tell when ports become "blocked" (by enemy fighters) or "unblocked".
It is able to use the "interrogation" mode of your Crai, to enable fairly
rapid and simple collection of data about the universe.
The second, EXAMINE, allows you to look at that data base in a variety of
ways, from visual graphing of the data to asking questions about nearby ports
and so on. It allows you to maintain records -- both notes on sectors,
ports, fighter locations, date of last "bust", etc. It is the primary
program one uses while playing the game. If you have the ability to run
under a multitasker such as DesqView or Windows, this is a good one to keep
running alongside your terminal program.
A third, OFFLINE, performs various inquiry tasks and other sorts of
management routines. It allows you to design optimal paths for various
sorts of tasks. This is a program that mostly you would use in an offline
mode -- i.e., to help you prepare for your later game.
What you need to run the programs:
----------------------------------
To create the data base, you need to be in a terminal program that allows
ASCII uploads and ASCII captures. The best situation is one that allows you
to do them simultaneously, i.e., capture input while uploading a file.
Second best is to have a large scrollback buffer, that allows you to take
pieces out of the scrollback and append them to a file.
I've compiled two versions of the programs, one for DOS machines and another
for Macs. (Source code is included in the TWVIEW package.) A port has been
made to the Amiga: look for a file TWVIEWxx.LHA. If you are running the DOS
version, you will need the device driver (.BGI files) suitable for your
machine. These files should simply reside in the default directory -- they
are not installable drivers for your config.sys.
The three executables will take up a little over 200K. Each database for a
universe will take up perhaps 60K when your universe is fully explored. The
program likes to make backup files, so take that into account.
HOW TO CREATE AND MAINTAIN THE ORIGINAL DATA BASE:
--------------------------------------------------
There are two methods to develop the data base. Which you use depends on (i)
how good you are at flinging files about and (ii) how much new information you
are trying to collect. If you just want to find out about a few sectors, use
the "old" method. If you want to collect a full set of data, use the "new"
computer interrogation mode. Generally speaking, I will download a fighter
report (G from the main menu) and a full port report (R from Computer
Interrogation Mode) at the start of play, and if I've done some exploring
during the play will use the "old" method to find out the contents of new
sectors. I will write down any ports I'm unblocked (by destroying enemy
fighters) and use the "old" method adding them to the log file, before going
on to a new strategy that day. However, I do like getting a full port
report at the end of play, so that I can compare it with the port report
from the start of the next day, and see what changes have occurred (to see
where the other players are trading).
In both modes, you should should turn ANSI off at least for the duration of
the transfer. Do this with <N> from the main computer menu. I've found
this speeds up the transfers by as much as a factor of three! Once you've
played a while, there isn't much point to the ansi displays, except when you
are exploring and need the unexplored sectors highlighted in red.
For those of you used to older versions: when reading in the data base, the
prompts have changed a little bit. You can specify the name of the data
base in the command line -- for example
C:\> convert stmarys.dat
and the program will start up and run CONVERT on the data base for
stmarys.dat. If you mistype something, the program will tell you that it
can't find the file. If you are running CONVERT, it will assume you are
trying to create a new data base. If you are running one of the others, it
will assume you screwed up, and will offer to quit. In both cases, it will
allow you to specify things again.
When the files are read in, the location of the stardock, if known, will be
printed. Also printed will be the number of known sectors, the number of
known port sales info (which will in general be the number of ports, except
for the three class 0 ports which, since they are selling holds, fighters,
and shields, do not have sales info), and the number of "etc"'s -- this is a
reference to a flag set on sectors: this would include any sector with a
port, a note, fighters, an avoid set, and so on.
The "Old" method -- inquiry of the Crai via uploaded files
-----------------
First, log into the game and invoke the ship's computer. Tell the computer
you want the known universe report, by hitting K. Now start an ASCII capture.
If you have explored more than half the universe, tell the computer that you
want unexplored sectors by hitting U and return. The computer will list your
unexplored sectors. If you have explored less than half, tell the computer
you want explored sectors by hitting E and return. The computer will list
your known sectors. If you've explored a lot of sectors, there may be a
[PAUSE] in the listing; just hit the space bar and go on past it. (It's okay
if it shows up in your ASCII download.) When the listing is finished, turn
off the capture. Your captured file must contain either the line that says:
"You have explored the following sectors:", or "You have NOT explored the
following sectors:", and at least one blank line after the sectors. (A little
more before or after is okay too.)
Now shift from your terminal program to the program "Convert". At the first
prompt, it is asking for your initial data base. If you've already developed
a data base, and are just updating it, give the name of your old base; if you
don't have an existing data base, just hit a return. Next, it will ask if it
should be reading a list of explored sectors, a log of inter-warp and port
information, and so on. Choose option 1. Next, it'll ask for your "Explored
Sectors" or "Unexplored Sectors" file. Next, it will ask you to name the
file to generate: use anything you like here but being careful to not
accidentally overwrite something you want to keep. (The program is smart
enough to ask if you really mean to clobber a file, and offer to back it up
as needed.)
What this step will do is create a file that you can upload to generate lots
of printouts. Essentially, what it creates is a file with I<sector number>
and R<sector number> for every new sector. The nice thing is that this will
interface well with the Crai on board your ship.
Now back to Tradewars. You are probably still in Computer mode; if not, get
there. What you want to do is upload the contents of the file you just
generated with the Convert program into the Crai on your ship, and store the
output to a .log file. If you can do that while doing an ASCII capture,
start the capture and then start the upload. Otherwise, you may have to
start the upload and then retrieve the results later from your scrollback
buffer. In any case, your captured file should contain all the I reports
(sector nnn has warps to : xxx - yyy - zzz etc) and all the R reports
(Commerce report for ...). There will be lots of "I have no record of a
port in that sector."'s: that's okay -- the program has to find out if there
is a port there or not. If there are a couple of ports that you are
interested in that aren't in the upload file, that's fine -- the program will
be happy to parse that too. Just make sure that when you hit your R you
don't just hit a carriage return but explicitly type in the sector number.
Back to the "Convert" program. Again, tell the program your old data file
(or hit return to start fresh) and this time we are in part 2. Tell it the
name of the ASCII download or capture you just made, and the name you want to
use for your database. The program will generate the data base.
The "New" method -- using Computer Interrogation Mode (CIM)
-----------------
I should mention at this point that there is a collection of utilities,
TWUTILxx, one of which will automatically gather the two .SCT and .PRT files
described below. The collection also includes some routines that this
program does not do -- in particular, it includes routines to make good
guesses as to the location of the StarDock and class 0 ports even though you
have not done any exploration. I have not used these programs, but the
documentation is clear and well written (unlike this, sorry) and so you
might want to check them out. The programs are written by Joel Downer, an
active participant on the Fidonet Trade Wars echo.
First you have to get into CIM on your Crai. To do this, you need to send
ASCII characters 200 through 205 to the Crai. There is a file "ON.TXT"
included in this package -- do an ASCII upload of ON.TXT after you have
activated the Crai, and you will see a ":" appear. Alternatively, if you
are on an IBM, you can hold down the Alt key, then from the numeric keypad
type 200, release, hold down alt, type 201, release, through 205.
Now that you are in interrogation mode, start your ASCII capture; I recommend
using an extension of .SCT. (For example, on the St. Mary's BBS my main
data file is STMARYS.DAT, and my sector report file is STMARYS.SCT.) Type
I, and the computer will immediately begin spewing out sector numbers and
warps. When that finishes, stop the capture, and start another capture,
this time using an extention of .PRT. Type R, and the computer will begin
spewing out port information. When that finishes, stop that capture, shell
to DOS, and run the program "CONVERT."
There are two new options in CONVERT: option 8, which parses the .SCT report
you prepared, and option 9 which parses the .PRT report. Invoke them, then
exit CONVERT and your data base is complete.
This "new" method does not identify class 0 ports (Terra, for one), nor does
it identify the star dock (as the old method did from logs). That information
is not available from interrogation mode, so you have to add them manually by
using the edit mode of "CONVERT."
There is information available from option 9 that can not be obtained
elsewhere. When it is processing the sectors, it recognizes if a port
should be there but no report was given -- if last time it processed reports
the port was accessible but now it isn't, the message "Port recently blocked
in xxxx" is displayed. This is a good hint that either the Ferrengi are
being pests, or your opponent is making his move. Also, if a port was not
in the last report but suddenly appears, you will get the message "Port
recently unblocked in xxxx". This message will show up if you haven't seen
that sector before -- but otherwise, it means that fighters that used to be
there aren't anymore. A good sign your opponent is moving about but trying
to remain hidden.
OTHER CONVERT OPTIONS
---------------------
This takes care of 1 & 2 (old style sector/port info processing) and 8 & 9
(new style sector/port info processing). To have the program remember where
you have left fighters, capture a <G> report from the main menu (remember,
with ANSI turned off) and then feed that through option 3.
For the Major Space Lanes data (those sectors that get cleared by the Feds
each night) I have a problem. It turns out that the Martin's haven't used
any of the standard shortest path algorithms in their program. (Saints
preserve us from the talented amateur!) So we have to get the Crai to do
the shortest path computation. To do the computation, you have to know the
location of the StarDock, and the two other ports that sell fighters and
shields other than Terra. Option 4 will generate an upload file, that
option 5 will then parse.
Many people have reported problems getting the upload file to work properly.
There are two solutions: either fiddle with your ASCII upload so that it
doesn't send out more characters until the computer finishes working with
the previous set, or just enter the file generated in #4 by hand yourself.
It's a fairly small file to type.
Option 6 allows fellow teammates to collaborate. You can feed in their
information about sectors, ports, and so on, and use it for yourself. Of
course, ports that you haven't visited will be marked as "blocked" next time
you do a port scan (since you aren't receiving info from them) but you will
be able to see what kind of port they are, and approximately how much they
are selling.
Option 7 allows direct editing. This is important if, for example, you've
been using the "New" method only, and you know where the ports that sell
Holds, Fighters, and Shields are; if you know the location of the Stardock;
if someone in the game destroys a port you've visited (and you want to mark
that as empty space again); if you create a port; and a feature new to 0.91,
if you want to mark a sector as to be avoided (so TWVIEW won't plot a path
across that sector or show paths from it on the display). Just choose 7 and
follow the prompts. You can also clear ".etc" flags if you want to share
your database with others and don't want them to know about your fighters and
such. Hopefully, all will be clear from the prompts.
STRUCTURE OF THE DATA BASE
--------------------------
If you don't expect to do any hand editing, and don't want to worry about
the internal structure of the database, you can skip this section. For what
its worth, the data is in a plain text format, so your data files can be
typed out if you wish.
Information is divided into several categories. First, are the two lines:
::Tradewars Data file::
SpaceDock is 200
or whatever the corresponding sector is if you have visited the space dock,
or possibly "SpaceDock is 0" if you have not visited it or do not know the
location of the space dock sector.
Next is a line of the form:
7 <- number of notes
where the integer represents how many "Notes" you've stored for the game.
A note has the form:
13 Don't Go Near This Sector!!!!
i.e., a sector number, and a short bit of text. You can add or delete notes
from within the EXAMINE program, as well as display those sectors for which
you've recorded notes. If you add a note manually, be sure to update the
"etc" field of the corresponding sector, or the note will never be printed
out.
Next is a line of the form:
105 <- number of Port Infos
followed by lines of the form:
120 3000 3280 -2530 100 32 100 -60 270 -1024 198
where the first integer is the sector number for the port; next are the
levels for the three trade goods "Fuel Ore," "Organics," and "Equipment." A
positive number means that the port is selling the stuff, and a negative
number means the port is buying up to that much of the stuff. (Remember
that the larger the magnitude of the number, the better the price you get --
ports are more willing to stretch when the numbers are higher!) The next
three numbers are percentages of maximum use: a value of 100 means the port
is fully refreshed for that good, 0 means they are all sold out or are not
interested in buying anything.
Special Note: If a port doesn't show up on the R report, but there had been
port information stored for it, the previous sales levels are preserved, but
the port usages are all set to zero. This allows you to identify "blocked"
ports -- ports captured by the Ferrengi or opposing players.
The next three numbers show the absolute change in goods since the previous
port update. These numbers are used in the Net change <X> report.
Finally, the last number is the "bust date", actually measured as days
since January 1, 1992. If the last number is 0, it means that there is no
bust date.
The ports are generally sorted by sector number. If you want to do hand
editing using a text editor, the order is irrelevant (the read routines
don't care, and the write routines sort before storage) but there must be as
many lines as specified in the "<- number of Port Infos." If you do hand
editing, be sure to update the port class and "etc" fields on the sectors.
Next is a line of the form:
Sector data starts here ...
followed by lines of the form:
1 6 2 3 4 5 6 7 8 10
| | +-----------------+ | +--+ +--------------+
| +---------| | +---| +-------| |
<sector> <number of warps> <warp1> ... <warpn> <port code> <etc code>
Here, for example, is a report for sector 1: it has six warps, to positions 2
through 7, a port code of 8 (which actually corresponds to class 0) and an
"etc" code of 10. A "Port Code" corresponds to -1, if the sector is not a
port, 0 through 7 based upon a three bit representation of selling or buying
(for example, if a port is selling Ore and Organics and buying Equipment its
port code would be 1 * 1 + 1 * 2 + 0 * 4 = 3; don't worry about it, the
program handles figuring out port codes and so on). The "etc" code tells
about various pieces of information, again depending on bit representation.
Currently the codes in use are:
NoteExists = 1;
IsPort = 2;
HasFighters= 4;
SpaceLane = 8;
Avoid = 16;
Stardock = 128;
Busted = 256;
but others will probably follow. In the example above, sector 1 is a port
(class 0 = HFS, "porttype" 8) and is a spacelane, so its .etc code is 2 + 8.
(Note that the Stardock is also a port; so its etc code is 128 + 8 + 2 =
138; if a random port had a note attached, its code would be 2 + 1 = 3.)
HOW TO USE THE DATA BASE VIEWER
-------------------------------
Its pretty well impossible to draw a decent map with all 1000 sectors, so the
data base viewer doesn't try to do that. Run EXAMINE, and tell it the name
of your data base. You will be presented with a list of options. In version
0.94, you get to choose from the following list:
<A>dd note <B>usiest ports
<C>lassify ports <D>elete note
<E>vil pair [SxS & xxB] Closest place to buy <F>ighters
<G>et blocked ports for avoid <H>ard luck, busted
Note <I>nformation <L>ength & path between two sectors
<M>isc config options <N>earest port
<P>aired ports <Q>uit
Nearest <S>ectors <T>ranswarp menu
Nearest <U>nexplored sectors <V>iew space in graphic format
<W>here is nearest fighter cloud Net change <X>
<Y>ou asked for non-adjacent trading pairs?
Here is what the commands will do:
<A>dd note
<D>elete note
Note <I>nformation
These manage the notes that you may have stored on your universe. Typical
notes might be "enemy base here!", "great trading spot", "Fedspace", or
whatever. Option "A" will add a note to a sector, option "D" will delete a
note from a sector, and option "I" will present you with a list of the notes
you've made, sorted by distance from a current sector.
<B>usiest ports
This will offer a display of your ports, sorted by usage. First to be listed
will be all class 0 ports and all ports with a usage field of 0. (In
particular, any port that has been previously scanned, but for which you can
not now obtain a scan will appear here.) Then will occur all ports sorted by
fraction of maximum use. This is useful for several reasons. If you are
evil, these are good places to try to rob -- they are doing a lot of
business, so there are lots of credits... If you are good, these might be
natural ports to try to take over, or at least leave a few mines scattered
nearby... Also, if you see busy ports that are very low on fuel or or
organic but haven't scratched much in the way of equipment, they have likely
been used for Planetary Contracts, and so planets are nearby.
<C>lassify ports
Want to know where all the BBB ports are? This is the command for you. It
will list all known ports of a specific class. Choose the class from the
menu, and you get the regular port listing.
<E>vil pair
This idea comes from Joel Downer's TWUTIL package. Suppose you are an evil
player and want to do the trade/steal routine. What do you want? You need
to transwarp to someplace where you can pick up some equipment, then move
someplace where you can sell the equipment to do the trade/steal cycle. You
would probably continue this until you get busted: you then want to go to
someplace to pick up ore so you can transwarp to some a class 0 port to get
replacement holds. So, what this routine identifies is a port that sells
ore and equipment, near to a port that buys equipment.
Closest place to buy <F>ighters, shields, and holds
Invoke this option, and you will be asked for your current sector. The
computer will then display the path from that sector to any place it knows of
to buy fighters: if the only class 0 port you know is Terra, that is the only
one it will display, but if you know of the others, it will display a shortest
path to the closest of those sectors, or the Stardock.
<G>et blocked ports for avoid
If you are going to be doing some etherprobe exploring, this will drop you
into a menu that will help with that task. Essentially, you want to make
sure that your etherprobes don't run into enemy fighters (and get destroyed)
or at least enemy fighters you already know about. So, ideally, you would
mark as avoid all blocked ports -- since you already know there are fighters
there. Of course, that might well involve a lot of typing in an active
game. Also, it rather screws up your avoid list -- you don't want to lose
your real avoids! You will get a submenu with the following choices:
Store list of <B>locked ports to disk for upload
Store <C>urrent avoids to disk for later upload
<Q>uit
The first will generate a text file that consists of "Vxxx" where xxx runs
over all the sector numbers of blocked ports. This is just what is needed
to feed into the Crai to avoid all ports. The second option will parse a
text file that you create by capturing the "current avoid list" info, and
generate a "Vxxx" for each of your current avoids.
So, what you do is get into computer mode, start an ASCII capture, hit X (to
display current avoids), end capture, (optionally, clear them unless they
are avoided for good cause!), generate the G, B report, ASCII upload it, do
your etherprobing, clear the avoids, then generate the G, C report and ASCII
upload it. You will have your etherprobe data, and only lose probes to
newly discovered enemy fighters.
<H>ard luck, busted
This is for the evil types among us, and deals with managing ports at which
you've been busted. Starting with version 0.94, a new field was added to
the port record that stores the date you were last busted. These are
reflected in the sector and port displays with "busted" (verbose mode) or
"X" (terse mode). These options allow you to control those markers. Choose
this option, and you get the submenu
record <B>usted sector
<C>lear bust
<U>pdate all bust flags
The first stores a new bust, the second clears a bust (if your partner was
just busted there, say, then you won't be recognized and are safe to rob
it), and the last option clears all busts that are two weeks old.
<L>ength & path between two sectors
You specify two sectors, and it will tell you the shortest way it knows of to
get between those two sectors. Note that this may NOT be the actual shortest
path if there are sectors you have not yet explored that might give you a
better route. It gives you the shortest path YOU'VE EXPLORED between those
two sectors. It will not route your path across an avoid. The program will
actually list the path in both directions, with a pause (for a return) in
between.
<M>isc config options
Currently, there are two allowed configuration options. You can turn the
color off: this prints everything in monochrome, and changes port colors to
small printouts of the actual ports. It looks good on my laptop ... your
mileage may vary. (Suggestions?) Anyway, if you load GRAPHICS.COM, this
allows you to print the screen and still see port sector numbers. The other
option is for verbose or terse sector descriptors. In verbose mode, it will
print "Fighters", "Space Lane", "Dead End", "Avoid", etc. In terse mode, it
will print "F", "SL", "DE", "AV" and so shouldn't overflow the line. I'd
recommend using verbose mode, until you are used to the display, then
switching to terse.
*IMPORTANT NOTE: If a file "TWVIEW.CFG" exists in your default directory, it
will be read for configuration information. Right now, what you can
configure are these startup defaults. For example, my twview.cfg reads
CONTENTS OF TWVIEW.CFG
----------------------
verbose = false
monochrome = true
The file should be in ASCII text, one option per line. Whitespace is
ignored, and case is unimportant. You should state "verbose" or
"monochrome", an equal sign, and either true or false. (Or 1 or 0, actually.)
<N>earest port
Nearest <S>ectors
Nearest <U>nexplored sectors
These displays will give you information about what is close to your current
position. Information displayed includes if the sector has been explored, any
notes, if it's a port, its status (SSB for example, means selling Ore, selling
Organics, and buying Equipment) and levels of production. If you ask for the
"Nearest Port" report, only ports are listed. I find the "Nearest Unexplored
sectors" report VERY useful for exploration purposes: I can just head toward
the nearest unexplored sector easily this way.
<P>aired ports
This is one of my favorites. What it does is go through the data base and
find ports that are adjacent (i.e. you can warp between them using normal
space in one turn) and are compatible (i.e. at port A you can buy a good
that is sold at port B, and you can sell a good that is bought at port B).
You can be selective (greedy) and only specify ports that are compatible in
the very profitable Organic-Equipment trade, or if those are starting to
wear out ask for some other trade pair, or if you don't care about the type
but just want the closest pair, you can ask for all compatible pairs. The
program will offer you the opportunity to have the results sent to a text
file, which you can print later (if you can't run the program simultaneously
with your terminal emulator, you can get hard copy of the "hot sectors") and
you can have the results sent to a text file that is compatible for upload
(i.e. part 2 of the "CONVERT" program so you can keep an eye on trading
levels at these critical ports). Displayed to the screen are two integer
"factors": the first is the total amount of goods you can trade (the
smallest number occurring in the trade goods) and the smallest percentage of
use at the ports. Your best deals will occur at ports with high
percentages. High trade quantities generally mean that the initially
offered price will not be as good as other ports (best deals occur at 100%
ports with small stocks) but there will be less degradation in price as you
trade over at the port and stocks are diminished.
<T>ranswarp menu
This drops down to a submenu that deals with locations of deployed fighters
and using a transwarp drive. Most submenu items are pretty obvious: you
specify where you have deployed fighters, or tell the data base that some
#%!%@$ has shot up your deployed fighters, or list the places the data base
knows you've deployed your fighters. The only thing that needs mentioning
is the shortest route submenu item: you specify where you are, and where you
want to go. It figures out, based upon where your fighters are located, the
fastest route to get there (using a transwarp jump and then normal autopilot).
It may say to transwarp to your current sector -- that just means the shortest
route lies through normal space. Another thing of interest is that with
Transwarp, the equivalent of "paired ports" are ports that you can hop
between buying a little fuel ore for the engines and still trade
organics/equipment. Best is SBS & SSB: you can buy just enough fuel to make
it to the other port. Alternatively, you can buy enough fuel for a round
trip: best is then SSB & BBS (so you sell as much equipment as possible)
although SBS & BSB is also profitable. These trade pairs are listed in this
submenu.
<V>iew space in graphic format
Viewing the data will attempt a graphic display on your screen of space: you
tell it about how many rows across and columns up and down of sectors to use
(maximums are given in the program: hit a return, and you get a default value
that is about 3/4 of maximum); you tell it the base sector you want in the
center of the screen (it has to be a sector you've visited!); and you tell it
how large a radius to display (all sectors it is aware of no more than that
distance away from your base sector). It will try to display the collection
of warps that make up your known space. Ordinary, visited sectors are shown
as circles, ports as rectangles. (Unexplored sectors just have their numbers
floating in space, and if you have color are in yellow.) Lines connecting
sectors means there is a warp connecting one with the other. Dashed lines
mean that you don't know if the warp is two way or not: if one end of the line
connects to an unexplored sector, you will have a dashed line. If both of the
sectors at each end are explored, the warp really is one way! (Try graphing
around the StarDock and around the class 0 ports.) Don't try to graph too
many sectors at once: the screen gets too busy, and you won't be able to tell
what connects to what.
There is no known way of generating a "best" display, even for graphs that
can be drawn on paper without edges crossing -- for the directed graphs
generated by Tradewars, its even worse. Consequently, there is an element
of randomness in this display. It tries to put sectors close to where
others were located, and fills in space around a sector clockwise. If you
don't like your current display, as for the same display again with the same
parameters, and you will get a slightly different perspective.
When you have the display up, if you type a number and hit return, it will
ask again for the distance and then redraw (with the same graphic
parameters) around the new number. This is good for "walking" through the
galaxy to find good trade routes.
Net change <X>
This display shows the change in port quantities since you last updated that
port info (via CIM's .PRT or the old captured .LOG files). The display
sorts ports based upon total net change, and does not print a port at which
there was no net change. I find the best use of this display occurs if I
take a CIM as the last action of the game, then a CIM early after log in:
this way my own activities are not displayed, and my opponents activities
stand out clearly. This is very helpful at identifying ports with activity
-- a port that has a huge buy of organics and fuel has almost surely been
involved in a planetary trade contract, and gives a good place to start
hunting; trading pairs that have been recently drained make good place to
dump mines, and so on.
<Y>ou asked for non-adjacent trading pairs?
Some people had observed that my program worked too well: in their games
they couldn't find any paired ports at which to trade. They wanted "almost
adjacent" ports. Well, I can't really believe these things are going to be
profitable (can't you just spend time hauling colonists until the ports
regenerate?) but hey, if they really want to spend the turns... .
Use of the OFFLINE program
--------------------------
The OFFLINE program is envisioned as something you use while not logged into
the game, to decide upon strategy and the like. Version 0.94 gives the
following menu:
<C>ontrolled sector status
<D>ead end analysis
suggest <E>therprobe targets
<L>ist bust records
visit <M>ultiple sectors efficiently
<O>ne way warps
<P>arse captured ASCII text
<Q>uit
<R>obbing path
<S>tellar dispersion
<T>raffic area analysis
<U>known sectors
<V>isit every sector
The <C>ontrolled sector status display is useful to look for backdoors or
sectors that you have missed in setting out a domain. Essentially, you
specify militarized sectors that mark the perimeter of your domain, and then
a sector that is "inside". It runs through the area you can get to without
running a militarized gauntlet. If it finds an opening out into the major
space lanes, there is a problem...
The <D>ead end analysis provides you with the dispersion of the dead ends by
tunnel length. A tunnel is a sequence of sectors adjacent to only two
sectors, the last of which is a dead end. These are convenient places to
place your citadels, as you can fortify the citadel and make someone fire
off lots of photon torpedos or fight through lots of defenses to get to your
home sector. After displaying the dispersion, it asks for a tunnel length,
and then will display all tunnels of that length. It checks for "back
door"s, i.e., one way warps into your tunnel, then displays the distance of
the home sector from terra.
Starting with 0.94, the definition of "dead end" is a sector with only one
way in. Note that this is what one really wants: if there are two ways into
a sector, that means you have to protect both of them. Some of the dead
ends will be marked "escape". This means a dead end sector with a one-way
warp out. One disadvantage of this sort of dead end sector is that the CRAI
may well warp people through your homeland, which wouldn't happen in a dead
end without escape unless they were specifically headed for that sector.
On the other hand, it makes it harder for your enemy to bottle you up, since
you have that extra escape warp.
suggest <E>therprobe targets and <V>isit every sector efficiently are two
commands that you might use in the endgame. Lets assume you have already
mapped all the sectors and are just looking for where your opponents have
built up their citadels. What these allow is building up of a "map" of
sectors you have visited/scanned recently, so you can tell where your
opponents are hiding. The former will make a suggestion to sectors that
will show lots of new sectors for you, and the last will actually offer a
circular path through the galaxy that will allow you to visit or scan every
possible sector. (Incidentally, a galactic tour, from scratch, takes about
1000 moves. A scout can easily do that in a week. If you use up a 350
etherprobes or so, you can do it in a long (and expensive) day.)
A command that helps with the above is the <P>arse captured ASCII text. It
allows you to automate the development of the "map" mentioned above. So,
the standard routine is to get a list of places to fire etherprobes, start
an ASCII capture, fire the probes, turn the capture off and parse the text,
updating the map, then delete the text and repeat until you find what you
are looking for or run out of money for probes.
<L>ist bust records will show you the ports at which you've been busted, and
how many days old the bust is. Anything over 14 is an expired bust, of
course, so this will help you plan ahead so you will know when the ports
will allow you to steal from them again.
visit <M>ultiple sectors efficiently is intended to provide the following:
you know that you want to hit sectors A, B, C, D, and are going to go through
normal space -- the program will suggest which is the best order to visit
those sectors in the fewest moves. You can specify if you want to return to
your original starting point, or just end at one of the targets. (This
allows you to make long chains, if you want to hit thirty or forty ports.)
This is often used in connection with the "steal holds" <R>obbing path
option. You specify the following information:
Maximum number of targets? [max 25]
-- this is the number of ports you want to visit on your trip.
Maximum number of turns?
-- this is the maximum number of turns allowed for the trip
Starting Sector? [0 to abort]
-- starting point of the trip
Closed path?
-- yes or no: do you want the trip to return back to the starting point?
Trading spree path? (alternate trading equip/organic)
-- yes or no: yes is a sequence of ports that buy equip and sell organic,
alternating with a sequence of ports that buy organic and sell equipment.
If the answer is no, you get the Okay, will choose ports to "rob holds".
This is for the "rob holds" bug: ports that have available 365 holds of
equipment or 660 holds of organics.
What you get back is a sequence of ports that fit the above criterion and
will be only as long as you specify. [Note that if you plan on using 35
moves, leaving from the Star Dock, rob holds at seven ports, then return to
the Star Dock to sell your ship, specify 7 targets and 27 turns (because you
will burn 8 moves at the seven ports and star dock).]
The algorithm used here is the "greedy" algorithm -- it just takes the first
port it finds meeting the above criterion. It's a fairly good approach, but
not in general optimal. In particular, if the first port available is far
away from other ports, you may get a rotten path. After you fill in the
questions above, you are asked:
Ports to avoid (in addition to busted ports):
I would first specify nothing (unless there are sectors that you just dare
not go, because of enemy fighters or the like) and see what you get. Then
look at the path, and see if any of them are particularly long -- especially
the path from the first target to the second or third. Then run it again,
marking the first port to be avoided. Do this several times, marking
various combinations to be avoided. Then, when you get something that looks
good, use the visit <M>ultiple sectors efficiently option, specifying your
base point and the targets, and you will be presented with the actual
shortest path that hits all these ports starting where you specify.
In practise, I will run <R>obbing path, specifying nothing to avoid, and see
what I get. Then, run it again marking the first sector it found not for
visitation, and see what comes out. Then mark the first sector of this
route in addition to that previous sector, and repeat. I continue this
until I'm happy or the first port is so far away from my base point that the
task is hopeless. In practise, what seems to be most common is to find
clusters of ports that are close together, and the optimal path is to go
directly to that cluster, traverse the cluster, then return to the starting
point. This best route appears often only after blocking out the first five
or six closest ports, particularly after you have made several passes and
most of the convenient ports are unavailable because of arrests.
<O>ne way warps gives you a listing of known one-way warps. Not terribly
useful at the moment, but it is interesting, eh?
<S>tellar dispersion will provide the dispersion of sectors from a given
sector. This will give you a general feel for whether a sector is near the
middle of the galaxy (lots of sectors at distance 3, 4, 5, 6) or on the rim
of the galaxy (lots of sectors at distance 11, 12, 13, 14). Useful,
somewhat, in deciding where to hide citadels or place threatening fighter
clouds.
<T>raffic area analysis will take a long time to compute ... but when it
finishes, it will determine via connectivity what the most likely sector to
find a trader is. Basically, it runs through all million paths between
pairs of sectors, weights the path by its ends (in "uniform" weights, the
weight is 1; in "port heavy" weights, the weights are
Port Type Weight
blank sector 0
BBB, SSS 1
SBB, BSS 2
BSB, BBS 4
SSB, SBS 4
HFS 10
Terra 20
StarDock 50
The number that comes out is the number of paths through that given sector,
with paths weighted as above. High numbers are good places to put
fighter/mine blockades; or small numbers of fighters to collect tolls or
just track the trader traveling through the sector. A particularly
dastardly trick is just to leave 99 mines and no fighters. LOTS of people
will run across them, and with no fighters left behind, no one will know
whom to blame ... .
Generally, when you are in a reasonably established game, a turn is worth a
lot more than 3,000 credits, so you use etherprobes to explore. How do you
best use the etherprobes? Well, you can spend a lot of time with the Crai
... or you can use the <U>known sectors list. These will be sectors that
you don't have attached to any sector you've encountered. If they are
connected to the universe at all (the universe generation has a bug in that
there can be sectors that you can't warp into; the only way to find this is
to turn all avoids off, and ask for the shortest path to that sector --
don't try to use an etherprobe targeted at that sector, it will just waste
the etherprobe) and you fire an etherprobe at it, you will pick up at least
two sectors. I find that once I'm at 70% explored or so, this list will be
sufficiently small that I can use the Crai just on these sectors, and use up
some etherprobes efficiently.
FINIS
-----
The program is compiled under Turbo Pascal 6.0 by Borland Inc. (Borland is
a trademark. People always seem to mention trademarks, so I guess I better.)
It doesn't use much more than Standard Pascal, except for file handling and
I/O. Originally, this was developed on a Mac (also Turbo Pascal, version 1.1
I think) but around version 0.86 I switched to working on an IBM laptop.
[The name of my laptop is "Flowers of Evil". I'm rather fond of Zelazny's
work. Also Baudelaire, but that isn't important.] There are three files with
extension .PAS that are used to generate the executables -- they are little
more than a reference to all the files, statement of global variables, and
the main event loop. There are many files with extension .INC that contain
procedures called by the main event and each other; lots of code is shared.
Here is the information reported by "Get Info" from inside the Borland IDE:
For CONVERT.PAS
─────────── Program ──────────── ─── Memory ────
Source compiled: 1868 lines DOS: 75K
Code size: 51280 bytes TURBO: 268K
Data size: 43700 bytes Symbols: 60K
Stack size: 16384 bytes Program: 0K
Minimum heap size: 0 bytes Free: 236K
Maximum heap size: 655360 bytes
For EXAMINE.PAS
─────────── Program ──────────── ─── Memory ────
Source compiled: 3377 lines DOS: 75K
Code size: 96144 bytes TURBO: 268K
Data size: 64552 bytes Symbols: 147K
Stack size: 16384 bytes Program: 0K
Minimum heap size: 0 bytes Free: 150K
Maximum heap size: 655360 bytes
For OFFLINE.PAS
─────────── Program ──────────── ─── Memory ────
Source compiled: 2990 lines DOS: 75K
Code size: 49872 bytes TURBO: 268K
Data size: 63164 bytes Symbols: 24K
Stack size: 32767 bytes Program: 0K
Minimum heap size: 0 bytes Free: 272K
Maximum heap size: 65520 bytes
The code isn't very tightly written. In fact, I tend to just go off and
doodle for a while. That's the breaks. I think its reasonably legible,
however. If you have difficulty understanding the code, I'd be happy to
explain it to you -- see FEEDBACK below. Lots of people have asked about
the shortest path algorithm: its a very standard routine and can be found in
most introductory computer science texts dealing with directed graphs. I
did swipe the permutation generating routine (for the "visit multiple
sectors optimally") from B. R. Heap's recursive routine. Everything else is
dead standard and not terribly inspired. And the whole thing reeks of
creeping featuritis. It really should be rewritten from scratch, using an
oops toolbox in C++. And gosh, I could make it a Windows program, and
DesqView-aware, and... ;-)
So, that is the program at the moment. There are still lots of things I
want to add, but I make my living as a professor, not a programmer ... this
is supposed to be fun, see? :-) Still, the program will probably make it to
version 1.0, so I can stop dealing with it, someday ...
FEEDBACK
--------
WWIVnet: I run a BBS at 510-376-1554; leave mail to number 1. The board
is, in theory, open 24 hours a day, but it goes down a lot.
Since the board is at work, it occasionally stays down a couple of
days at a time. (It seems to know when I go on vacation ...)
If you are part of a WWIVnet board, you can mail 1@5056.
Internet: I can be reached as woody@galileo.stmarys-ca.edu. I generally
read my email twice a day. The current version of the program is
also available by anonymous ftp from galileo.stmarys-ca.edu
(149.137.1.1) under /pub/tradewars, In fact, Richard Byron Ward has
been collecting a variety of Trade Wars utilities, and storing
them there. So you might find some utility you don't have there.
If you are a utility writer, I would be most happy to store your
work and make it available to the Internet.
Yes, I do consider suggestions. Sometimes the answer is "no". Sometimes it
works its way into the program. If you want your suggestion to almost
surely be included in the code, include a source patch! ;-)
ACKNOWLEDGEMENTS
----------------
Thanks, of course, to the Martins for such an entertaining game!
Thanks also to TMASTER for proofing this document and helping with the alpha
testing.
COPYRIGHT AND LICENSING STUFF
-----------------------------
Copyright 1991, 1992 by Robert Weaver. All Rights Reserved. You may not
distribute this for any fee beyond the reasonable costs of distribution.
Permission is granted to distribute this document and the related
executables and source code provided this notice is preserved, and anyone
you give the executable has the ability to obtain this documentation and the
accompanying source files.