TECHNICAL NOTES


To produce a game which can be played in a reasonable time it has, of course, been necessary to use planet masses, spaceship velocities, and a gravitational constant very different from those in a real solar system. Given that, the computation of trajectories follows that generally adopted in modern 'N-body codes'. For each principal step of duration T the program derives position and velocity components for a succession of sub-steps of duration, T/2, T/3, T/4.... Thus there is one step of duration T, two of duration T/2, three of duration T/3, and so on. An extrapolation is made to obtain the position and velocity which would result if the sub-steps had zero length. The extrapolating function is a quartic polynomial. For this application this seems to give somewhat better results than the often promoted 'rational functions' which are quotients of two polynomials.

Testing N-body codes is very difficult because only the two-body case has analytic solutions which can be used for comparison purposes. However, the method described yields very good agreement with theory in the two-body case. For example, elliptical orbits can be maintained unchanged over very long trial runs.

Collision with planets other than the home planet are detected and reported, but collision with the home planet is assumed to be a soft landing. Perhaps the fuel saved by having no mid-course corrections is used for this purpose! Please note that collisions may be reported when the spaceship is apparently several pixels away from a planet. This is necessary because the trajectory computations can break down very close to a planet, producing an unrealistic acceleration of the spaceship. An extremely close approach will occasionally produce a huge acceleration and, when the ship leaves the screen, you may see a report that the flight time limit has been exceeded (the ship would never return to the screen).

Unfortunately, in this version, the player cannot choose to abort a flight prematurely. Such a facility will require the use of thread programming.

Note that when the spaceship leaves the screen it will usually reappear very quickly. This is because no computer time is consumed in sending data to the display.

Every scenario has at least one solution, and probably several.