chiark / gitweb /
Version bump.
[rocl] / README
1 RIGHT ON COMMAND-LINE
2   Elite tools for the discerning player
3
4 1. Installation
5
6         You need a C compiler and a working Tcl/Tk installation.  (The
7         elite-editor program needs Tk; the rest of the tools don't.)
8         The Makefile works on my Debian GNU/Linux box, but I'm not
9         making any promises about anyone else's.  I've successfully
10         built earlier versions of everything under Cygwin, against
11         ActiveState's Tcl 8.4, but I've forgotten the Holy Runes.  I do
12         have the `.def' file I used to build the DLL, though, for
13         whatever that's worth.  (If you want to hack the Makefile to
14         work under Windows, I'll take a patch.)
15
16         The theory is that you should edit the Makefile for your system
17         and say `make'; then, as some suitably privileged person, say
18         `make install' and stand well back.  Everything should then be
19         installed.
20
21         In practice:
22
23           * If you can't build `pkgIndex.tcl', run `tclsh' and say
24
25               % pkg_mkIndex -verbose -direct . elite.so elite.tcl
26
27             to it.  (Use `elite.dll' if you're on Windows.)  Say
28
29               % set tcl_pkgPath
30
31             to see a list of suitable places for putting the kit.  Pick
32             one.  The directory `/usr/local/lib' appears in my
33             installation, so that's what I use.
34
35           * Make a subdirectory in the place you chose, and copy
36             `elite.so', `elite.tcl' and `pkgIndex.tcl' into it.  All
37             should now be hunky-dory.
38
39           * Run (say) `elite-describe lave' to check that things are set
40             up properly.
41
42
43 2. The command-line tools
44
45         A `galaxy-spec' is
46
47           * a number, between 1 and 8, for one of the standard eight
48             galaxies; 
49
50           * a `galaxy seed' of 12 hex digits (a 48-bit value), for any
51             arbitrary galaxy; or
52
53           * a string `SEED:N' where SEED is a galaxy seed and N is a
54             number between 1 and 8, for the Nth galaxy in some custom
55             universe.
56
57         A `planet-spec' is interpreted relative to some parent galaxy.
58         It may be
59
60           * a number N, for the Nth planet in the galaxy (planets are
61             numbered pseudorandomly -- this is not often a helpful
62             option);
63
64           * a `planet seed' of 12 hex digits (a 48-bit value), for any
65             arbitrary planet;
66
67           * a pair of numbers `X,Y', for the planet nearest the point X
68             decilightyears rightwards and T decilightyears down from the
69             top left of the galaxy;
70
71           * a glob pattern (a string containing `*' and `?' wildcards,
72             matching any substring or any single character,
73             respectively), for the first planet whose name matches the
74             pattern; or
75
76           * a string `GAL:P', where GAL is a galaxy-spec and P is a
77             planet-spec, for the planet P in galaxy GAL.
78
79
80   elite-describe [-g GAL] PLANET ...
81
82         For each PLANET, print the planet data for that PLANET.  The
83         PLANETs are interpreted relative to GAL, or standard galaxy 1 if
84         GAL is not specified.
85
86
87   elite-map [-qv] [-g GALAXY] [-d DIST] [-w WEIGHT] [-W WD,HT] [-a ASP]
88         [PLANET ...]
89
90         Prints a map of (part of) a galaxy to the terminal.
91
92         If PLANET is specified (which it usually is), a map of the area
93         around PLANET in GALAXY (default standard galaxy 1) is printed,
94         showing other planets within a box extending about DIST
95         lightyears around the PLANETs.
96
97         If no PLANETs are not specified, the entire galaxy is printed.
98         This is usually unhelpful.
99
100         The `-w' option plots a route through the listed planets,
101         highlighting the waypoints.  See `elite-path' for the possible
102         weightings.
103
104         Planets are shown as numbers or letters (or, occasionally a
105         sequence of letters).  If there is only one PLANET, it is shown
106         as a `*'; otherwise, they're labelled `*0', `*1', etc.  Planets
107         on the path are labelled `+0', `+1', ..., in the order you're
108         meant to visit them.  (Note that if the path doubles back on
109         itself, the planets involved /won't/ be listed twice.  Use
110         `elite-path' for a full guide on where to go, and `elite-map' to
111         visualize the route.)
112
113         The `-q' and `-v' options allow optional suppression of the key
114         below the map.  The defaults are as follows:
115
116           * A galactic map shows no key.
117
118           * A route map (with the `-w' option) shows the waypoints
119             (named PLANETs) and the planets on the path.
120
121           * An area map (around named planets) shows the names of all
122             planets shown.
123
124         The key can be made more verbose by giving the `-v' option, or
125         less verbose by `-q'.  Note that the options parser is currently
126         really shoddy, and won't let you say things like `-qqq'.
127
128         The size of the map may be controlled by the -W option -- set WD
129         to the maximum allowable width, and HT to the maximum allowable
130         height (in columns and rows, respectively).  The map will be
131         scaled so as to fit.  The -a option sets the aspect ratio of
132         your characters, height to width (the default is about 2, and
133         seems right for viewing in an xterm with the standard fixed
134         font).
135
136
137
138   elite-path [-g GALAXY] [-w WEIGHT] PLANET PLANET ...
139
140         Computes a route through a GALAXY (default is standard galaxy
141         1), starting at the first PLANET listed, via the second, via the
142         third, etc., and ending at the last.  For each planet you're
143         meant to stop at on the way, a summary line is printed giving
144         the planet's name, position, government type, economy type and
145         tech level.
146
147         You can affect how elite-path selects its routes using the `-w'
148         option.  The default is to minimize the number of hops.  Other
149         possibilities are:
150
151         hops            Minimize number of hops.  This is the default.
152
153         safety          Maximize stability of the planets in the route,
154                         to attempt to improve safety.  Useful during the
155                         early stages of the game.
156
157         encounters      The opposite of `safety' -- minimizes stability
158                         of planets in the route.  Useful if you want to
159                         maximize kills.
160
161         trading         Maximize the difference in economy type between
162                         successive planets in the route.  This should
163                         give you an opportunity to make a good profit as
164                         you go.
165
166         fuel            Minimize absolute distance.  For those on a
167                         tight budget.
168
169
170   elite-reach [-d DIST] [GALAXY ...]
171
172         For each GALAXY (default is the 8 standard ones), print summary
173         information for each planet, with blank lines separating
174         disconnected groups of planets, i.e., groups where a ship
175         capable of travelling DIST lightyears (default 7) can't get from
176         one to the other.
177
178
179   elite-find [-g GALAXY] [EXPR]
180
181         Without EXPR, simply prints summary information for each planet
182         in GALAXY (default standard 1).
183
184         If EXPR is specified, it must be a Tcl expression (as for the
185         `expr' command).  Information is printed for each planet for
186         which EXPR returns nonzero.  The EXPR may use the following
187         variables:
188
189         name            The planet name, with initial capital letter.
190
191         x, y            X and Y coordinates, from top left, in
192                         decilightyears.
193
194         economy         From 0 (rich industrial) to 7 (poor
195                         agricultural).
196
197         government      From 0 (anarchy) to 7 (corporate state).
198
199         techlevel       From 1 to 15.
200
201         radius          In kilometres.
202
203         productivity    In millions of credits.
204
205         population      In hundreds of millions.
206
207         inhabitants     A Tcl list of words describing the inhabitants.
208
209         description     As a Tcl list of words.
210
211
212   elite-pairs [-g GALAXY] [-d DIST] AEXPR BEXPR
213
214         Prints the names of pairs of planets A and B in GALAXY (default
215         standard 1), no further than DIST (default 7) lightyears apart,
216         such that AEXPR returns nonzero for planet A and BEXPR returns
217         nonzero for planet B.
218
219         The expressions AEXPR and BEXPR may use the same variables as
220         for elite-find.  In addition, BEXPR may use
221
222         d               The distance between planets A and B.
223
224         a               An array containing the information about planet
225                         A.  The indices have the same names and meanings
226                         as the variables described above.
227
228
229   elite-cmdr [FILE] [-OPTION | ATTR | ATTR=VALUE | FILE] ...
230
231         A command-line Elite commander editor and viewer.  With a single
232         argument, reads a commander file and displays its contents as a
233         human readable table.  The arguments may be special options,
234         attribute names, attribute assignments, or filenames.
235
236         The special options are:
237
238         -show           Write the commander data to standard output as a
239                         human-readable table.  This is the default if no
240                         other output action is requested.
241
242         -load FILE      Read the commander file named FILE.
243
244         -save FILE      Write the modified commander data to FILE.
245
246         -reset          Reset the commander to the default `JAMESON'
247                         settings.
248
249         -dump           Write the commander data to standard output in
250                         the form of a script which can be read back by
251                         the `-read' option.
252
253         -read FILE      Read attribute/value pairs from FILE, and modify
254                         the commander accordingly.
255
256         An attribute name on its own is a request to print the current
257         value of that attribute.  An assignment ATTR=VALUE makes ATTR
258         have the requested VALUE.
259
260         The attributes, their meanings, and the acceptable values are as
261         follows:
262
263         mission         The commander's current mission.  (0 is no
264                         mission; 1 is searching for the Constrictor; 2
265                         is killed the Constrictor; 3 is waiting for the
266                         second mission; 4 is heading for Ceerdi; 5 is
267                         heading for Birera; and 6 is all missions
268                         completed.)  Must be an integer between 0 and
269                         255.
270
271         score           Current number of kills.  Must be an integer
272                         between 0 a 65535, or one of the strings
273                         `harmless', `mostly-harmless', `poor',
274                         `average', `above-average', `competent',
275                         `dangerous', `deadly', or `elite'.
276
277         credits         Number of credits.  Must be between 0 and
278                         429496729.5.
279
280         cargo           Size of cargo bay.  Must be between 4 and 255.
281
282         gal-number      Number of the current galaxy.  Note that this
283                         doesn't affect which galaxy the commander is
284                         actually in -- set gal-seed for that.  Must be
285                         between 1 and 8.
286
287         gal-seed        Which galaxy the commander is in.  May be any
288                         galaxy-spec.
289
290         world           Which world the commander is docked at.  May be
291                         any planet-spec describing a world in the
292                         correct galaxy.  (Note that, since the commander
293                         file actually stores the location as an x, y
294                         pair and chooses the closest world to those
295                         coordinates, and there are coincident pairs of
296                         worlds, it is not possible to have a commander
297                         start at some worlds.)
298
299         market-fluc     The market fluctuation byte.  Affects prices at
300                         the space station.  Must be an integer between 0
301                         and 255.
302
303         fuel            Amount of fuel.  Must be between 0 and 25.5.
304
305         energy-unit     Strength of the ship's energy unit.  May be an
306                         integer between 0 (none) and 255 (scary cheat)
307                         or one of the strings `none', `standard', or
308                         `naval'.
309
310         front-laser, rear-laser, left-laser, light-laser
311                         Strength of appropriate laser.  May be an
312                         integer between 0 (none) and 255 (scary cheat)
313                         or one of the strings `none', `pulse', `beam',
314                         `mining', or `military'.
315
316         ecm, fuel-scroop, enery-bomb, escape-pod,
317         docking-computer, gal-hyperdrive
318                         Whether the ship has various bits of equipment.
319                         One of `yes', `true', or `on' for yes, or `no',
320                         `false' or `off' for no.
321
322         missiles        Number of missiles carried.  Must be an integer
323                         between 0 and 255.
324
325         hold-ITEM, station-ITEM
326                         Quantity of some item in the ship's hold, or at
327                         the station.  Must be an integer between 0 and
328                         255.  ITEM must be one of `food', `textiles',
329                         `radioactives', `slaves', `liquor-wines',
330                         `luxuries', `narcotics', `computers',
331                         `machinery', `alloys', `firearms', `furs',
332                         `minerals', `gold', `platinum', `gem-stones', or
333                         `alien-items'.
334
335         #               A special attribute which is never printed.  Its
336                         value is ignored.  This may be used to insert
337                         comments in script files.
338
339         Anything else is assumed to be a filename, and loaded as for the
340         `-load' option.
341
342
343   elite-prices [-g GALAXY] [-s SORT] [FROM TO]
344
345         Shows minimum, average and maximum profit (in that order, in
346         credits per unit) for the various commodities, starting at one
347         kind of world and ending at another.
348
349         By default, the commodities are listed in standard order, and
350         the profits are computed going from a poor agricultural world to
351         a rich industrial one.
352
353         You can change the worlds under consideration by typing a pair
354         of planet-specs or economy types (as printed by `elite-find').
355         Any planet-specs are obviously taken relative to GALAXY.
356
357         The SORT parameter may be one of `min', `max', or `avg' to sort
358         by minimum, maximum or average profit (highest at the top).
359
360
361 3. The graphical editor
362
363   elite-editor [GALAXY | FILE | -jameson]
364
365         Starts the RIGHT ON COMMAND-LINE Commander Editor and Map.  This
366         is a Tk program -- you'll need that installed to run it.
367
368         I'll not go into excruciating detail about how to work the
369         program.  It's fairly simple, really.
370
371         The map view lets you colour-code planets according to
372         techlevel, government or economy.  The colours ought to be as
373         follows:
374
375         Colour          Government      Economy         Techlevel
376
377         Red             Anarchy         Poor agri       1
378         Orange          Feudal          Average agri    2 or 3
379         Yellow          Multi-gov       Rich agri       4 or 5
380         Green           Dictatorship    Mainly agri     6 or 7
381         Blue            Communist       Mainly indust   8 or 9
382         Magenta         Confederacy     Poor indust     10 or 11
383         Violet          Democracy       Average indust  12 or 13
384         White           Corporate       Rich indust     14 or 15
385
386         The connectivity map shows how you can get around the galaxy
387         using hops of up to 7 light years.
388
389         Planet names are unhelpful except at small scales.  The
390         placement algorithm could do with a lot of work.
391
392         Clicking on the map with button 1 (usually the left one) sets
393         the destination world, marked with an orange cross.  Clicking
394         with button 3 (usually the right one) sets the home world,
395         marked with a red cross, and with a green hyperspace-range
396         circle around it.  (The circle doesn't actually correspond
397         exactly with hyperspace reachability, because there are rounding
398         errors in the distance computation.  ROCL correctly emulates the
399         rounding errors from the original game.)
400
401         Double-clicking opens a window showing information about a
402         planet.  Two info windows can be open at any time, one for the
403         home world and one for the destination.
404
405         The bar along the bottom of the map window shows the names of
406         the home and destination worlds, and the distance between them.
407         You can type new names (or any old planet spec) into either to
408         select different planets.  The change will take place when you
409         press return or when the input focus moves.
410
411         The `Compute path' lets you do the same kinds of computations as
412         the elite-path tool.  It plots a route from the home to the
413         destination.  The path is shown in orange on the map.
414
415         The commander editor should be self-explanatory, but maybe a few
416         pointers might be helpful.
417
418         The entry fields for items with pop-up menus are disabled when
419         the menus show values other than `Custom', so you must first
420         choose `Custom' from the menu if you want a fancy value.
421
422         The `Show galaxy map' button opens a map which will be tied to
423         the commander window.  When you select a home world (button 3),
424         this will set the world where the commander will start.  Note
425         that the market prices (in the `Cargo' window) update
426         automatically as you move about the universe.  It is quite
427         possible to travel about entirely new universes by turning off
428         the `Standard galaxy' button and typing some hex number into the
429         `Galaxy seed' box.  All of the ROCL tools work in these custom
430         universes.  Note that your docked planet is recorded as an x, y
431         coordinate pair, so Elite can't tell which of two coincident
432         planets you're docked at (yes, there are such pairs).  ROCL
433         won't cope with this at the moment.
434
435         Lasers are a bit odd.  Bit 7 is a `rapid-fire' bit.  It doesn't
436         affect the strength of the laser, but means that there's no
437         delay between shots.  The low 7 bits control the strength, but
438         without the rapid-fire bit, powerful lasers will tend to fire
439         more slowly than weak ones.  Some comparisons in the program are
440         for exact laser power: you can't damage the Constrictor or
441         Cougar ships unless you have military (or 0x17 slow-firing)
442         lasers; and you can't fragment asteroids unless you have mining
443         or 0xb2 rapid-fire lasers.  (The 0xb2's pack a serious punch.  I
444         recommend them as an upgrade for commanders who don't wish to
445         cheat completely.)
446
447         One suggestion I've heard of, if Elite is too easy, is to start
448         at Lave (as usual), with no money, lasers, missiles, or fuel.
449         You can get your first money by ramming asteroids (easy but
450         unrewarding) or pirates (risky and tedious), and start trading
451         food and other cheap items.
452
453 $Id: README,v 1.5 2003/03/02 12:28:14 mdw Exp $
454 \f
455 Local variables:
456 mode: text
457 End: