These design documents were devised to assist in development of similar Starflight style or any space simulation games. Authored by an interested fan lacking any real resources into how either Starflight 1 or Starflight 2 was designed, they are a combination of gameplay observations, reverse engineering discoveries and outright speculation. Information is focused on underlying game logic and avoids discussion of any particular interface and storyline/plot. All material is original work and copyright (C) 2006 SWirsz  and may be used freely as long as it is credited. Feel free to suggest any other topics.

Sources include discoveries recorded on this web site, the Early design documentation for Starflight 1 released by T.C.Lee, and the Microsoft Excel data tables created by Jason Horner for Starflight 1 and Starflight 2  This document also glosses over basic gameplay details which can be found in the Starflight 1 and Starflight 2 manuals.

These documents do not describe any Starflight game in existence, but attempt to promote and break down ideas which could be used for future Starflight-style games.  As with most design documents not everything here may be completely feasible to implement. 

Starport - v1.0 - 10/22/06

I. External data (* non-preset variables or local variables)

Crew Records (number of crew, race, durability, role assigned for each crewmember)
Derived skills in each ship role to determine ship operation
Ship Type
Ship Characteristics

  • Derived Turning Speed (turning jets and ship type)
  • Derived Acceleration (thrusters, ship mass determined by class and equipment)
  • Weapon Types and Classes
  • Shield Class (displayed on screen)
  • Armor Class (displayed on screen)
  • Cargo Capacity (number of cargo pods*50 + 50 base cargo capacity)

II. Operations

Notices from Interstel given over time or given in response to major plot events.  The purpose of these notices is to give the player hints to start off with, announce major events, give the player a sense of accomplishment and demonstrate consequences of actions, and of course humor.

Evaluations are messages from Interstel to the player usually with a monetary reward or penalty.  Examples include colony recommendation rewards and penalties, loss of a terrain vehicle and notice of its replacement, rewards for major plot events, etc.

III. Personnel and Crew Assignment

Although there is no limit on how many crew can be hired and trained, only six crew can be used on a ship at once as there are only six roles that crew can fill.  One crew person can fill multiple roles however so there is no fixed requirement on the number of crew any ship is required to use.  Crew can be hired at starport or they can be obtained through exchanges with alien races.

CAPTAIN 10% skill bonus to all other roles.  For example if communication skill is 200, 20 skill points are added to the effective communication officers skill
SCIENCE Accuracy in sensors and analysis, detection of alien ship movements
NAVIGATION Accuracy of weapons and chance to get lost in planetary storms and continuum fluxes.
ENGINEERING Speed of repairs to the ship
COMMUNICATIONS Determines % of untranslated communication
MEDICINE Speed of healing patients

Crew must be assigned to fill all of these roles before the ship can leave starport.  If a crew member dies or becomes comatose, the next most highly skilled crewmember takes over there role.  The player should have the ability to create, delete, assign, train, and cancel training of each crew member.

The ship's ability to function in each of the above roles is calculated based on the following formula:

Effective Ship Skill = (assigned officers skill + Captain skill / 10 + other mods) * assigned officers health percentage


All alien races have a minimum and a maximum training values that vary by individual.  All individuals have a initial skill value somewhere near their initial racial skill values and a training maximum somewhere near their racial training maximum.  The initial training values are visible when the person is hired but the two maximums are hidden.  For example the Veloxi have normally a high potential skill in navigation and engineering.  Initial values are random and have no relevance on the other two maximum values.  Skill ranges from 0 to 250 and initial training only counts so far before real world experience is required. Initial training takes time and money and is dependent on the the individuals learn rate (may very +-1 of the racial learn rate)


There are five skill areas in which training can occur.  Every new hire has three random values for every skill area.  The first is initial training.  Initial training value is between 0 and 70 points or 100% to 300% of the racial initial value, whichever is greater.  For example if hiring a Veloxi the racial initial value of navigation is 50.  Any Veloxi hired will have a value of 50 to 150 in navigation.  The second value is the training limit.  This value is also random and has no relationship to the initial value.  This value is randomly determined between 70% and 90% of the maximum racial training value.  This is the limit where training at starport is capable of training a recruit.  The third value is the individual's maximum ability.  This value is randomly determined between 90% and 110% percent of the racial maximum (capped at 250)

  Human Veloxi  Thrynn Elowan Synthetic Dweenle * G'nunk *
DURABILITY 6 8 6 2 10 4 10
LEARN RATE 9 6 7 10 0 2 8
TYPE mammalian insectoid reptilian plant synthetic pathetic unknown
AVG. HEIGHT 2.0 M 1.0 M 1.5 M 2.5 M 2.0 M 1.0 M 2.0 M
AVG WEIGHT 80 KG 60 KG 80 KG 40 KG 120 KG 10 KG 200 KG
SCIENCE 50-250 30-200 30-200 10-150 50 unknown unknown
NAVIGATION 30-200 50-250 30-200 30-200 150 unknown unknown
ENGINEERING 30-200 50-250 30-200 10-150 100 unknown unknown
COMMUNICATION 30-200 0-100 50-250 50-250 0 unknown unknown
MEDICINE 30-200 0-100 0-100 50-250 20 unknown unknown

* In Starflight 2, these races had undefined default skill levels.  Their initial skill levels depended on the crewmember that was traded for them, and they had a maximum skill of 250 in all areas.  If they can be hired at starport their skills need to be better defined and toned down.


Training takes time and money.  Both are determined by the learn rate.  Let us again take an example of a Veloxi.  The learn rate of the Veloxi race is 6, and this particular individual has a learning rate of 7.  The initial navigation skill is 100 and the player wants to train this crew member in navigation.  When the player chooses train on the personal menu, they then choose the navigation skill and are prompted for how many training sessions.  The computer takes the highest possible 90% percent maximum train value (225), calculates the difference (125) and divides by the learning rate and rounds up (18).  The user is prompted then for how many training sessions (0-18) and then pays for the training sessions and a crew member is unassigned any ship position and put into training mode ("In Training" logo appears across the character record).  That character becomes unavailable for as many days as training sessions are selected.  Every day that passes the character will increase and skill equal to his or her learn rate.  If training is selected when the character is already in training, the option "Cancel Training?"  appears and if the player selects yes then all unused training sessions are refunded and the character becomes available to be assigned.

Now let's say the player chose 18 training sessions but the individuals maximum training ability is determined to be only 80% (200).  This means instead of 18 training sessions this crewmember will reach their maximum ability in 15 training sessions. (200-100 = 100/7 = 15)  After 15 days the computer will refund the player for the 3 unused training sessions and set the character to their maximum training level in that area. (200)


Only real experience on board a ship will allow a recruit to increase their skill past the training limit to the individuals maximum ability.  The following table describes the actions that increase a crew member's skill.

SCIENCE 1.0 scanning and analyzing an unvisited planet
0.2 one hour spent tracking alien ship movements
NAVIGATION 0.2 firing a weapon
0.2 one hour spent traveling in the terrain vehicle
1.0 traveling through a unique continuum flux
ENGINEERING 4.0 completely repairing one ship system
COMMUNICATIONS 10.0 communication session with a new alien race
2.0 communication session with a known alien race
MEDICINE 3.0 completely healing a patient

IV.  Trade Depot

Mirror of trade center documentation, perhaps with no bartering.  Starport also sells repair minerals at double their standard trade value.  (Promethium, Titanium, Aluminum, Molybdenum, Cobalt)

V.  Ship Configuration


Three classes of ships that may be purchased.  Each subsequent ship allows higher equipment class options at the expense of ship mass.  Ship mass affects acceleration in combat and fuel usage (hyperspace and landing on planets) All ship equipment regardless of class except for engines and armor has the same mass.  Changing ship type causes all equipment to be sold at market rates and then the change in relative price is either added or subtracted to the player's account.

  Scout Interceptor Warship
Relative Price 0 100,000 500,000
Base Mass 10 tons 50 tons 250 tons
Cargo Pods 0-8 0-16 0-6
Thrusters 0-4 0-8 0-16
Turning Jets 0-6 0-8 0-12


Cargo Pods: 10 tons each (50 cm^3)
Thrusters: 3 tons each (boosts combat and solar system flight speed and acceleration)
Turning Jets: 3 tons each (boosts combat and solar system turning speed)
Shields: 5 tons
Missiles: 5 tons per launcher
Lasers: 5 tons per turret

Scout Ship Engines: 10 tons
Interceptor Engines: 50 tons
Warship Engines: 250 tons

  Scout Interceptor Warship
Armor Class 1 4 tons (2²) 9 tons (3²) 16 tons (4²)
Armor Class 2 16 tons (4²) 36 tons (6²) 64 tons (8²)
Armor Class 3 36 tons (6²) 81 tons (9²) 144 tons (12²)
Armor Class 4 64 tons (8²) 144 tons (12²) 256 tons (16²)
Armor Class 5 100 tons (10²) 225 tons (15²) 400 tons (20²)

Acceleration is displayed to the user in terms of G's. The interceptor for example has a minimum mass of 100 tons consisting of 50 tons of ship frame and 50 tons of engines.  Additional weight beyond this level had the following effect on acceleration:

Interceptor Acceleration 100 tons Acc. Formula
Engine Class 1 25 G's 25 - squareroot(Mass - 100)
Engine Class 2 20 G's 20 - squareroot(Mass - 100)*0.8
Engine Class 3 15 G's 15 - squareroot(Mass - 100)*0.6
Engine Class 4 10 G's 10 - squareroot(Mass - 100)*0.4
Engine Class 5 5 G's 5 - squareroot(Mass - 100)*0.2

Acceleration of other ships relative to the interceptor should be determined by prototyping and game testing.


Cargo pods, thrusters, and turning jets have the same purchase and sale price.  All other equipment fully repaired is sold for 90% of its original value.  Perform a check when selling cargo pods to ensure the player can not sell a partially full or full cargo pod.  The ship has a base storage of 50 m³ and each cargo pod stores 50 m³. This minimum number of cargo pods = (Total Amount of Cargo - 50) / 50.  

Cargo Pods: 500 each
Thrusters: 2000 each
Turning Jets: 1500 each

  Class 1 Class 2 Class 3 Class 4 Class 5
Engines      1,000      8,000    20,000    40,000  100,000
Shielding      4,000    12,000    32,000    70,000  125,000
Armor      1,500      3,100      6,200    12,500    25,000
Missile Launcher    12,000    28,000    60,000  120,000  200,000
Laser Cannon      8,000    20,000    54,000    90,000  150,000


Drydock repairs are available for instantly repairing ships systems.  Cost is determined by equipment initial value X percent damaged X 1.25.  The communication system and sensors are evaluated at 8000 each.

Ship Operations - v1.1 - 10/25/06

All interface controls should be accessible in three different ways.  The classic the system is a basic menu interface, accessible when that game is paused.  Likewise a series of relevant icons clicked on by the mouse can also provide controls.  Finally a set of customizable hotkeys is highly useful especially for combat controls in particular.  Controls only need to be visible and accessible in certain context areas.  One suggestion would be to use the function keys lining a roll of icons on the top of the screen that changes for every area the ship is in.


These functions can be hotkeys, function keys, or involuntary results of actions (moving on top of object)


  • Cargo/Inventory List (categorized list, jettison option, read saved messages)
  • Notepad/Ships Log
  • Detailed Status Window (date, damage, cargo percent used, energy/fuel available, shield and armor status bars, shield and weapons status)
  • View Star Map (see description in hyperspace design)
  • Raise/Lower Shields
  • Raise/Lower Weapons
  • Display and Select Ship System to Repair (hull, engines, sensors, communications, shields, missiles, lasers)
  • Display and Select Crew Member to Heal
  • Send Distress Call/Enter Cryostasis


  • Enter Orbit
  • Enter Hyperspace
  • Enter Encounter
  • Enter Space Station/Starport


  • Land on Planet
  • Log Planet
  • Sensors/Analysis
  • Cultural Information
  • Enter Solar System


  • Launch to Orbit
  • Disembark to Terrain Vehicle
  • Log Planet
  • Sensors/Analysis
  • Cultural Information


  • Use Jump Pod
  • Enter Solar System
  • Enter Encounter
  • Enter Continuum Flux


  • Sensors/Analysis
  • Fire Weapons
  • Hail/Respond to communications
  • Tractor in Debris
  • Return to Hyperspace/Solar System
  • Enter Orbit if Encounter was around Planet


Crew members have a natural healing rate depending on their health and their location: 

  Health<25%  Health=25%-70% Health=70%-100%
Terrain Vehicle -1 pt every 3 hrs 1 pt every 12 hrs 1 pt every 4 hrs
Ship 0 per hour 1 pt every 6 hrs 1 pt every 2 hrs

Doctor treatments of patients use the following formula:

Ship Treatments = Natural Healing + round down(doctor skill/50) healing per hour
Terrain Vehicles = Natural Healing + round down((doctor skill/50) healing per hour / 2)

Let's take for example a patient with 50% health in a terrain vehicle being treated by a doctor with 210 skill.  The patient's natural healing will heal one point every 12 hours and at the same time the doctor will heal (210/50)/2 = 4.2/2 = 2.1, round down to 2 health points every hour on top of that.

Crew left unassigned any role and abandoned at starport heal as if they were being treated by a fully qualified (250 skill) doctor onboard a ship.


A number conditions may leave the player stranded with no possibility of further actions.  Examples include running out of fuel or having destroyed or inoperative engines which cannot be repaired.  In this case the player has the option to put the crew into cryogenics (sleep pods) and sending a emergency distress call to Interstel for rescue.  From the players point of view the transition from where they are to starport is instantaneous.  An animation may be played here for the return to starport, either simply a fade to black and reappearance at starport, or a high-speed travel animation, or a fallout style moving animation of a cryogenics pod.

Time Passage: measure hyperspace distance to Arth or to the starport in the sector and multiply normal hyperspace travel time by three.

Towing Cost: Determine as a factor of the players engine class and the hyperspace distance towed to starport.  Use a factor multiplied by the fuel cost calculation of the star map for simplicity.  Balance this value out so a player with class five engines towed halfway across the galaxy will pay roughly 100,000.  Towing charges are assessed at operations/evaluation.  The player is required to view the evaluation before they launch.  Towing charges may make a player's financial status negative.


Damage is first applied to shields, then armor, and then structural items and crew.  Damage to structure is divided randomly between seven categories.  If any of these categories are missing, then damage will be applied to the remaining categories at a higher rate due to statistical distribution.  Damaged items have the possibility of failure and becoming inoperative every time that component is used.  Ship systems are displayed as being 100% operational initially and operational percentage is reduced by damage. The percentage chance of a component becoming inoperational is described in the table below.  An inoperative component has a 5% chance of becoming operative again every single time 1% of its damage is repaired.

  Repair Time (optimum)  100% repair time (optimum) * Failure Check
HULL 4% / hour 25 hours none
ENGINES 10% / hour 10 hours (% damage/5) every time thrusters are engaged **
SENSORS 20% / hour 5 hours (% damage/2) every time sensors are used
COMMUNICATIONS 20% / hour 5 hours (% damage/1) every time a hail or response to a hail is sent
SHIELDS 10% / hour 10 hours (% damage/1) every time shields are raised
MISSILES/PLASMA 12.5% / hour 8 hours (% damage/10) every time a missile or a plasma bolt is fired or weapons are armed
LASERS 12.5% / hour 8 hours (same as missiles/plasma)

Similar to the doctors skill, calculating repair time for ship systems is a function of the engineers repair skill rounded down.  Using the table above which gives the best optimistic repair times, calculating repair time based on the engineers skill is based on the following:

Repair Time = Optimum Repair Time * round up(6 - engineer skill/50).  Again the same captain's bonus to the engineer skill applies, but if the derived engineering skill after the bonus is 249, the engineer will take twice as long as an engineer with the derived engineering skill of 250.

Damaged systems never repair themselves unlike injured crewmembers.  Destroyed systems are 100% inoperational immediately without any failure check.  Also when a system is being repaired there is a 7% - round down(engineer skill/50) chance (range of 2% - 7%) of needing between 1-10 cubic meters of a random repair mineral every single time 1% of the system is fixed.  The player is notified every time a mineral is required for repairs.  If that mineral is in cargo a question will be asked "Shall I take this from cargo?  Y/N"  If the player says no or if the mineral is not in cargo then a message ceasing repair appears and repairs that component stop.  If the engineer is told to repair a different system while currently working on another one, the message "I am currently repairing system X, shall I stop and start repairing system Y?"  appears with obvious consequences.

* When a ship system is 100% damaged it is considered destroyed and unrepairable, so these time estimates are really only the period of time it would take to repair 100% of a ship system, repairable damage is never greater than 99%.  Destroyed systems can only be repaired in dry dock at starport or by selling and replacing the system.  When hull damage reaches 100% the ship is destroyed and the game is over.

** Chance of failure on using engines is only rechecked when the ship has not been moved in five seconds of real time.  Engines will not fail if a player is constantly thrusting and moving, only when he starts to thrust and move.  An example would be if engines are 60% operational, then (1 - 60%) / 5 = 8% chance of engine failure every single time the ship starts moving.


One hour of game time for every 10 seconds of real-time except when the game is paused, at starport, in communications, or in a trade center.  Encounter game time may also be slowed or stopped.

Star System/Orbit  - v1.0 - 10/24/06

Entering a solar system will give the player a spherical or oval mini map view  (rectangular view in previous games) of the star and a number of planets orbiting it and a larger view zoomed in close on the players ship and the immediate space around it. A player may enter the solar system either from hyperspace which drops them on the edge of the solar system, or from leaving a planet's surface, which drops them roughly on top of the visual graphic of the planet.  Players can also enter and leave this view by entering an alien encounter.  

Moving on top of a planet will either cause the player to enter orbit around that planet (perform a check to see if player encounters a fleet around that same planet), or if the planet is orbited by moons, move the player to a new area which depicts a zoomed in view of the planet at the center of the screen with the moons orbiting it.  On this screen if the player moves on top of the planet or on top of one of its moons, then the player will go into orbital center


The solar system is composed of one or more suns, and since the majority of stars in the Milky Way are binary systems, hopefully a few binary systems will exist.  To simplify orbits and planetary conditions, it is recommended at any depicted binary stars show both stars as relatively close with the first few orbital positions devoid of planets.  The equivalent stellar class of a binary system is either two classes higher than the brightest star of the group if the stars are within one class of each other, or else just one class higher than the brightest star of the group.  Other components of a solar system include planets occupying orbital positions around the star(s), moons orbiting around individual planets, alien ship fleets traveling around the solar system or orbiting planets in the solar system, and any incidental background graphics such as asteroid fields which the player cannot interact with.

The background space will either be black or nebula depending on if the player is in a nebula when they enter the solar system from hyperspace.  If the solar system is a nebula then nebula conditions exist (shields inoperative) and the nebula graphic will be used instead of the starry black background for the star system view and for the background planet view from orbit.

Each planet type has multiple color and design schemes within that type which reflect their images on the solar system map.  Examples of this are "rock:greenish" "rock: grayish" "rock:desert brown", etc.  These planetary images could be chosen automatically by calculating the highest percentage of the planet surface that exists within one topographical range or they could simply be calculated randomly, i.e."liquid:dark blue" "liquid:light blue"


Every solar system consists of eight planetary orbits, all spherical and coplanar for simplicity's sake.  Planets may or may not occupy each of these orbital positions.  There is an overall 25% chance per orbital position that a planet will exist there.  If a planet exists, examine the probability table below to determine which type of planet to place.  When the player enters a solar system, the planets are placed in random positions on their orbital pathways.  Either immediately or after a period of time, such as 10 days outside the solar system, these orbital positions are rerandomized and the player will see planets in a different configuration when they reenter the system.

Planets have a probability to exist based on their position in that stars ecosystem.  These probabilities can easily be overridden by manually placing planet types.  Because each star has a different ecosystem range, these probabilities are ultimately determined by stellar class:

Class Color Ecosystem
M Red 1-3
K Orange 1-4
G Yellow 2-5
F White 3-6
A Green 4-7
B Light Blue 5-8
O Dark Blue 6-8


Type Pre-Ecosystem-3 Pre-Ecosystem Ecosystem Post Ecosystem Post ecosystem+3
Molten 0% 70% 20% 0% 0%
Liquid / Rock 0% 30% 70% 20% 0%
Ice 0% 0% 10% 50% 40%
Gaseous 0% 0% 0% 30% 60%


The players ship is represented by a small icon representing there ship class.  Movement in the solar system is determined by Newtonian physics.  The player can spin or rotate their ship at a speed determined by the ship class and the number of turning jets.  Turning the ship simply spins the icon in place, movement only occurs by thrusting.  When thrusting the players movement is determined through vector addition by taking into account the ship's mass, thrusting force, and existing momentum a to the ship's maximum speed which is also determined by ship class & number of thrusters.  When the player hits the center button on the keypad, the ship's thrusters work automatically to cancel all movement.  Objects such as planets or moons create a slight inward vector to simulate gravity.  This force can easily be compensated by applying minimal thrust.  The player cannot "crash" into objects as he or she will simply enter orbit upon "impact."  When leaving orbit around a planet or moon, the players ship icon will appear centered over the planet or moon at the point where there is no "gravity" and cannot reenter orbit unless they travel a decent distance away from the icon and then return to it.


Any number of alien fleets can be placed in the system.  Each fleet has a number of important flags:

  • Race Type
  • Number of Ships: random or set at a certain number
  • Include Warships Y/N
  • Include Scout Ships Y/N
  • Include Transport Ships Y/N
  • Immobile or Will Chase Player
  • Starting Location: random or set around a certain planet or moon

Alien ships in the solar system can be represented by one of three possible systems: invisible icons that can only encounter the player ship if they are on top of the player ship on the mini map the exact moment of an 2 hour change.  This system was used in the previous two Starflight games and artifacts such as the system scanner overlaid a static dot on the map for each ship detected similar to a radar ping when the artifact was used.  If the system is used and alien ships must travel at a speed of roughly 1/4 to 1/3rd of the players ships speed.  The second possible system would be to use a hybrid slowly updating set of icons on the mini map showing alien ship movement and then display a actively chasing icon representing the alien ship once the ship gets close enough to appear in the zoomed in map.  The third method would be to keep actively updating and moving icons on the mini map and keep the actual alien ship hidden on the larger view map, making the actual encounter more random and unavoidable if the alien ship is very near (probability count for counter rather than intersection of an alien ship image on top of the players ship)  These last two methods allow alien chips to chase a player at a much faster rate.

Alien ships not specifically specified to exist in the solar system will be generated by the computer if the solar system is within that alien territories sphere of influence.  If that sphere of influence moves, grows, or shrinks then the presence of alien ships in a solar system may be reduced, disappear completely, or be replaced by aliens of another race.


If the first method is used then alien ships can be set to always chase a player.  To simulate more accurate behavior with either of the other methods than three state conditions may apply.  Behavior in each condition is identical but the conditions are modified.  When the alien ship is within a certain radius, it will turn to chase the player.  Outside that radius it will ignore the player and simply wander or orbit a planet.  When the player first enters a system all ships are in a neutral condition and will chase a player if they are within a moderate radius.  If the first encounter ends in combat then all ships in the solar system enter a hostile condition and will chase the player as if the chase radius was infinite.  If the first encounter ends peacefully, all ships in the system enter a friendly condition and the chase radius is greatly reduced.  Any subsequent encounters ending in combat or not may change the classification from friendly to hostile or vice versa.  This condition has no relevance to an alien's emotional index as used in the communication system.

After an alien encounter there should be a minimum time allowing the player to escape if he wishes before he meets another alien encounter or perhaps the same alien encounter a second time.  Two different time counters, a larger one for meeting the same alien again and a smaller one for meeting a different alien encounter could be justified.  Another method is to freeze an alien encounter that was just left and make it immobile for a second or two.


Alien ships can also be hidden in orbit around a certain planet or moon, only encounterable when the player attempts to orbit.  For these encounters two flags exist: infinite stack (aliens will call for reinforcements indefinitely and never run out of ships) and block orbit (fleeing the encounter forces the player to leave orbit, the player may not not enter orbit until all the ships are destroyed or the block orbit flight is changed.)


When in orbit or landed the player can perform a number of functions. (see ship operations)  While in orbit a tiled topographical map of the planet surface with random cloud cover will be visible.  Atmospheric thickness determines percentage of cloud cover. This topographical map will be overlaid on a sphere roughly a size proportional to the mass of the planet rotating continuously.  The angle of the planets axis is a randomly determined value between -90° and +90°.  This angle will be visible as the angle seen from the planets orbit, which always approaches along the solar plane.  When the player chooses to descend the topographical map will be stretched into a mercator map view without the cloud cover giving the player a chance to select the longitude and the latitude where to descend.  The selector bar is a smooth process, showing tiny increments of longitude and latitude to four decimal points.  A certain centerpoint is defined on the map and from this point measurements are taken between 0°-180° east or west, and between 0°-90° north or south.


The landing sequence is a three-step animation which occurs with the players controls locked.  The first step is the approach to a partially cloud covered sphere.  When close enough to hide the transition convert to a flat mercator view and continue filling in fractal generated details as the planet gets closer.  The cloud cover layer should be pierced during this transition.  The third step is converting flat detail to a three dimensional image of the terrain surface.  When this occurs slowly rotate the player's viewpoint either to the right or to the left (determined randomly) and start to tilt the camera view downward while slowing descent.  By the time the ship has "landed" the viewpoint should be 90° left or 90° right of the original angle and the camera viewpoint should be perfectly flat showing the terrain for a reasonable distance.  


This view shows the last step of the landing sequence, the mottled terrain directly outside the ship and the sky color.  See Planet Generation notes for steps for determining the color of the sky.  Launching obviously follows the exact reverse animation as the landing sequence.

Planet Generation Design Documentation - v1.2 - 10/24/06
See star systems tab in Jason Horner's data tables spreadsheet for further information

I. External data (* non-preset variables or local variables)

Star Spectral class
orbital positions available in star system (filled sequentially)
planet type (see planet tables below)
* derived orbital position

Planet Type Table (with sample mass and gravity from SF2)

The mass and the gravity readings in this table are all from a single planet that has had its planet type changed.  As you can see each planet type has a certain defined range of mass which is multiplied by a constant generated randomly for each planet.  This ensures that all planets of a certain type fall within a certain mass range.

01 = molten (small) = 2x10^21 (0.45g)
02 = molten (medium) = 5x10^21 (0.86g)
03 = molten (large) = 5x10^21 (0.97g)
04 = molten (huge) = 2x10^22 (3.89g)
05 = rock (small) = 0.48g
06 = rock (medium) = 0.88g
07 = rock (large) = 1.09g
08 = rock (huge) = 8.90g
09 = liquid (small) = 0.48g
0A = liquid (medium) = 0.88g
0B = liquid (large)= 1.09g
0C = liquid (huge)= 8.90g
0D = frozen (tiny) = 6x10^19 (0.01g)
0E = frozen (medium) = 4x10^21 (0.80g)
0F = frozen (large) = 6x10^21 (1.01g)
10 = frozen (huge) = 4-5x10^22 (6.93g - 8.7g)
11 = gas (any size)

... Extra planet types designated as custom planets used in plot

Sample Derived Planetary Data

149 x 133: 1 (large red planet)
Bio: 0 Min: 92
Mass: 9x10^22
Hydrosphere: NONE
Primary Surface: ROCK
Surface Gravity: 1.5G
Atmospheric Density: THIN
Temperature: INFERNO to INFERNO
Global Climate: MODERATE 

II. Derived Planetary Data

Generate planetary surface using a stored random seed passed to a fractal surface generation routine. Submit a few dozen fixed seed values to a diamond-square algorithm.  Overlay a grid on that map and average out the altitude inside of each grid and display the internal section of each grid as a constant color on the global planet view map. Now let us say that you land somewhere on that map. Simply take the average elevation of that grid square and repeat the process, defining a number of high and low altitude points on the terrain and slanting the terrain around it. At both poles use a straight line or a line of points with all the identical altitudes. As the terrain vehicle travels over the land it is simple enough to load the next grid from the planet map and then repeat the process, dynamically generating the terrain as you go. To simulate water, allow negative altitude points and any terrain under zero simply show as a flat surface of water.  Use the altitude and the type of planet to determine what landscape graphic tile to use, similar to a detailed topographical map.

Surface consists of a topographical map more the lowest surface is liquid. Liquid and a rock planets have identical characteristics.  When entering a solar system containing liquid or rock planets, precalculate the percentage of the surface of each liquid and rock planet. If the planet is more than 50% rock surface, use a rock surface graphic on the system display. If the planet is more than 50% liquid surface, use a liquid surface graphic on the system display. To do this easily simply average out the seed altitude points given to the planetary generator.  Negative altitude points correspond to layers of liquid and positive altitude points correspond to high terrain.  If the overall average is negative then a greater percentage of the planet surface will be underwater and the planet should be categorized as liquid.  If the average is positive than a greater percentage of the planet surface will be land and the planet should be categorized as rock.  The same seed may be used to randomize the exact planetary mass within the range of that planet's size (as determined by planetary type).  Topographical map of liquid and rock planets consists of the following spectrum: dark blue, yellow, brown, dark gray, gray, white.  Random forest green tiles, swamp tiles, etc. can be used in low terrain areas.

Placement of objects is generated when the player enters orbit around a planet.  Given a total of 180 * 360 unique map coordinates, the altitude and type of terrain is taken into account and objects such as minerals, lifeforms, random ancient ruins, random recent ruins, are assigned to each of map coordinate (with all of their properties such as type and size).  This randomly generated table is cleared if the player enters orbit around another planet or leaves the solar system.  Important objects such as unique artifacts and quest messages are tracked separately and always placed at the exact same map coordinates and disappear permanently when picked up.  This data table is simple, containing only a list of objects within each coordinate only with no other values, and all 65,000 coordinate squares may be pregenerated or generated dynamically as the terrain vehicle travels to them.  If the player leaves orbit this table is still maintained, only when the player leaves the system and enters hyperspace or orbits another planet is this table cleared.

When the player lands and disembarks, the planetary map in a 4x4 coordinate square is generated around the ship and objects are placed on exact positions within each coordinate and lifeforms come alive and are allowed to move.  This data table stores the state of every life form, the exact km square within each coordinate were every object is placed, and can be modified by player actions.  When the terrain vehicle moves outside this 4x4 coordinate square a message appears "Scanning New Terrain" and new objects are placed.  Up to 20 of these 4x4 squares are actively stored in memory, and every exact position of every object is tracked unlike the previous table which generalized objects only within a coordinate.  When minerals are picked up, lifeforms captured or killed, endurium taken, the record is kept track only within these data tables and not on the generalized tables.  Records are also more precise, the ancient ruin is stored as a separate object from the endurium.  When the player leaves orbit all of these 4x4 coordinate square data tables are cleared and if the player returns the same spot would find all objects undisturbed again, in slightly different positions but still within the exact same coordinates they were placed in.

If the planet is molten, then no hydrosphere exists. Life may exist on this planet if all criteria are in nearly acceptable levels but only at 1/8th level as it would appear on a liquid or rock planet. Mineral content of molten planets is multiplied by 4X. Topographical map palette is red spectrum oriented. (dark red, red, yellow, brown, dark gray, gray)

If the planet is frozen, life may exist except only at a 1/2 level as it would appear on a liquid or rock planet. Mineral content is multiplied by 2X. Topographical map palette is blue and white spectrum oriented. (dark blue, blue, light blue, cyan, light gray, white)

Gas planets cannot be landed on and never show a Bio % reading. Atmospheric density is always very thick, global climate is violent or very violent.

Mineral content follows a bell curve distribution with a median of 25%. Mineral density is dependent on elevation. 

Bio % = random * colonization criteria (broader tolerances for life then for colonizable planets however) If Bio % results in a number of 5% or below, set level to 0%. Criteria ranges do not all have to exist, but as the planet falls out of tolerances, %life max decreases. 

Criteria for colonization
Temperature Anywhere around Temperate & Tropical
Gravity From .7 to 1.3 is optimal but anything up to 2.0 g's
Atmosphere Must contain oxygen
Water Must contain water
Weather None, Calm or Moderate
Bio/Min Higher Bio-density and Mineral density are also preferable

Combine these criteria to form a general aggregate that will determine the resulting colonization value of the planet between 30,000 and 55,000. Colonization value is set to zero if any single category falls outside the necessary range. Penalties for recommendations of inappropriate planets are not affected by criteria ranges but by other factors (number of previous inappropriate recommendations, other possible variables such as game date or distance from Arth)

Atmospheric components are derived from randomly selecting two or three values from the possible values for that planet type (different tables for molten, rock/liquid, ice, and gaseous planets) if atmospheric density is none, display no atmospheric components. (0-3 components)


Hydrosphere components (same basically as atmospheric components above) molten planets have no hydrosphere components "metal components". (0-2 components, 90% of the time one component)

(same as atmospheric list)

Lithosphere components must be created by a probability table. Randomly determine a percent probability of a minerals occurrence on the planet surface with a exponentially decreasing occurrence of minerals and as they become more and more rare. Display the top three minerals in the Lithosphere scan of the planet surface. Use this table when the terrain vehicle encounters a mineral on the service to determine what type of mineral it will be. (Always display 3 components)

(see mineral listings on reference pages)

Primary surface = planet type (molten, rock, liquid, ice, gaseous)

Surface gravity = derived from planetary mass / radius^2 at 'surface' (take planet mass and modify by planet type, need a variable table for all 10 planet types. Gas giants technically do not have a well-defined surface. High internal temperatures and pressures would crush a landing ship passing through gaseous and liquid layers long before "surface gravity" would affect it. Recommend N/A for gas giant surface gravity ratings)

Incoming radiation = star stellar class, orbital position (irradiance drops off in proportion to the distance from the object squared)

Atmospheric density = planet size ^ 2 / incoming radiation * surface gravity * random factor (too many real world variables: surface gravity, chemistry and temperature of the local solar nebula during planetary formation, solar radiation, magnetic field, etc.. affect this variable hence the use of a random factor)


Atmospheric activity (Global Climate) = planet type * planet mass. Limit the top range by atmospheric density. Gas giants should either be violent or very violent depending on mass for example.


Surface Temperature (upper and lower values) = incoming radiation , atmos density, random (atmosphere chemical components) Higher atmospheric density reduces the range between upper and lower values. For example a planet next to a hot sun will have subarctic to Inferno ranges.  When traveling on the planet surface with the terrain vehicle, latitudes near the poles will be near the lower values of surface temperature, and latitudes near the the equator will reflect the higher surface temperatures.



Solar system Ecosphere: static value based on stellar type. This value represents the range of orbital positions where colonizable planets are most likely to occur. This is not a constraint but simply a observation were temperate and tropical planetary temperatures are most likely. Colonizable planets are determined randomly and may fall outside this zone.

(coolest to hottest)

Class Color Habitable Planet Range
M Red 1-3
K Orange 1-4
G Yellow 2-5
F White 3-6
A Green 4-7
B Light Blue 5-8
O Dark Blue 6-8


""Turquoise Oceans and Reddish Yellow Sand with Gelatinous Carpet Lifeform under a Starry Black Sky."

ocean color = derived by combining hydrosphere component colors

ground color = derived by combining Lithosphere component colors

sky color = derived by star color, modify by presence of water (more bluish) and atmospheric density (thinner=lighter, none, very thin="starry Black sky")


If ancient ruins are set to exist on the planet then distribute them evenly over the entire planetary surface was no distinction between high or low terrain. Every ancient ruin will have a endurium mineral deposit of 1.0-9.9 m³ in an adjacent square. Ancient ruins have a 10% chance of the random curio artifact stored inside the ruin itself.

If recent ruins are set to exist on the planet then distribute them randomly over the lower altitude terrains diminishing in frequency as the terrain gets higher. Recent ruins have a 20% chance of a random curio artifact stored inside to ruin itself.


Custom planets are defined sequentially in the planet type field starting with planet type 12. A custom planet first mirrors an existing planet type (1-10) and then features one or more customized items:

  • Drawn non-random topographical map (i.e. Earth)
  • pre-determined recent ruin location(s) containing message(s) and/or artifact(s)
  • pre-determined geographical arrangement of items (i.e. hexagon arrangement of ancient ruins)
  • non-location specific set of messages (first randomly found ruin contains message#1, next ruin contains message#2, etc.)
  • Special events (broadcast message from surface, planetary defense a.k.a. crystal planet)
  • Inhabited planet (culture information, trade centers, housing, vehicles or sentient on foot)
 Terrain Vehicle - v1.1 - 10/29/06

Status Window

  • Date
  • Energy (percentage fuel remaining)
  • Efficiency (percentage representing energy usage and speed which train vehicle travels over current terrain)
  • Elevation (xxxx meters)
  • Cargo (percentage full)
  • Ship (kilometer distance and direction, i.e. North-Northwest)

Crew Vitality: list every crew members name and their vitality in percentage

Text Window

  • overlay displays event such as weather changes, attacks on crewmembers, etc.
  • Defaults Display: sky color, temperature, gravity, atmosphere, hydrosphere, lithosphere (see planet generation)


  • Toggle Automatic Cargo Pickup on/off
  • Zoom Control on Map
  • Pick up Cargo (may be automatic by running over object)
  • Right-Click Object: description appears in text window
  • Weapon: stunner if life form is targeted, laser if sentients are targeted



Terrain vehicle movement has two factors.  The first is the movement speed and the second is fuel or energy usage.  Energy usage is determined by terrain and weather.  This usage value is reflected in the efficiency rating displayed for the player.  Movement of the train vehicle is smooth, squares are hidden terrain tiles that are used for distance calculations only.  Fuel usage is calculated by an inverse ratio of energy efficiency.  10% efficiency equals 1% energy usage per square.

Terrain Efficiency is not uniform.  It is modified by the nine squares around it.  If all nine squares around the square are of lower efficiency than the square will be at the lowest edge of its efficiency range.  If all line squares around the square are of higher efficiency then the square itself, then the square will be at the highest edge of its efficiency range.  Water and lava count for 100% efficiency when used in this calculation.

Energy usage per square = (10 / terrain efficiency) * weather penalty

Displayed energy efficiency = terrain efficiency / weather penalty


Speed of movement depends on terrain type (value between 0 and 5).  Changes to altitude and altitude itself has no bearing on energy efficiency.  Distribution of terrain depends on temperature which is determined by altitude, latitude, and the total planetary temperature range or climate.  For example, all terrain with a negative altitude will be liquid or lava, depending on planetary type.  A planet which has a climate range of Temperate to Arctic will most likely have rock, snow, or an ice at high altitudes and near the poles.  Tropical temperatures will have a higher percent chance of containing terrain that is mud, sand, or carpet life(if the planet supports life.)  Similar to altitude points, a number of terrain seeds are scattered randomly over the planet surface and grow their terrain until they intersect with another terrain seed's territory.  As you can see from the table below, sometimes it is possible to move faster over terrain which requires more energy.

Lava red 0 0% 0% n/a
Liquid dark blue 3 0% 0% 14% (no variation)
Mud dark brown 1 10% 50% 25%
Snow white 3 20% 10% 35%
Ice cyan 4 20% 5% 35%
Sand yellow 3 30% 30% 50%
Carpet Life light green 5 10% 100% 75%
Rock gray 5 100% 20% 75%

Weather patterns are dependent on planetary weather.  There is a 10% chance of weather shift every hour to a new random pattern. Temperature refers to only the derived temperature at the planet's specific altitude and latitude.  Temperate and Tropical = warm.  Anything cooler than those ranges = cold.  Anything warmer than those ranges = hot. Certain weather conditions only exists in one type of temperature.  For overlapping sets (warm weather planets) pick between either condition randomly. 

It Is Clear (all) 0% none 100% 50% 20% 10% 5%
It Is Overcast (cold, warm) 0% none 0% 15% 20% 15% 5%
It Is Misty (warm, hot)
It Is Hazy (cold, warm) 0% none 0% 15% 20% 15% 10%
It Is Foggy (warm, hot)
It Is Snowing Lightly (cold) 10% none 0% 10% 10% 15% 10%
It Is Raining (warm, hot)
It Is Snowing Heavily (cold) 25% none 0% 5% 10% 15% 10%
It Is Raining Heavily (warm, hot)
You Are in a Thunderstorm (warm, hot) 50% 75-150 0% 2.5% 10% 15% 30%
It Is Hailing (cold)
You Are in an Electrical Storm (warm, hot) 50% 100-200 0% 2.5% 10% 15% 30%
You Are in a Wind Storm (cold)
The Ground Is Shaking and Rumbling (planet with greater than 2G's only) 50% 0-300 5% random chance with any weather type on appropriate planets only

* Weather Damage = round down [base damage * (10 / terrain efficiency) * (1 / weather penalty %) / crew durability]

For example, let us say that a human gets hit by electrical storm damage over water.  First damage is randomized between 100 and 200, let us say 150.  Terrain efficiency is 14%, weather penalty is 50%, and the crew durability is 6, so 150 * (10 / 14) * (1 / 0.5) / 6 = 35.  Being in sheltering terrain greatly reduces damage as you can see from the formula above.

Every hour during a storm there is a 20% chance of a crew member taking damage and a 10% chance of two crew members taking damage.

If a planet is considered tectonically unstable (greater than 2 G's) then first before any other calculation a random chance is figured to determine if an earthquake condition (5%) occurs or any other weather pattern (95%) occurs.  If the 95% chance occurs then one of the random weather patterns above is determined.

(Thanks to PB Doughboyy and the valiant crew of the ISS Bumbler who gave their lives sitting in the water making weather observations for the basis of this data)


Loading the terrain vehicles cargo inventory screen performs the following functions: list all cargo items sorted by cargo type (artifacts, minerals, lifeforms), each items size in M³, and value per M³.  Cargo can be dropped (give option for quantity to be dropped, lifeforms cannot be partially dropped so give the player and option of how many lifeforms to drop instead of size in M³ to drop)   The inventory screen will also display free space remaining..  Terrain vehicle artifacts are automatically loaded onto the terrain vehicle when it disembarks from the ship.  If more than one terrain vehicle artifact exists of the same type, only one is loaded.


Lifeforms have the following behaviors: attacking, fleeing, wandering, sessile, stunned, dead.  Check the life form table under the Starflight 2 section of the main web site for further details of life form types and check the Starflight 2 manual for life form descriptions.  Lifeform distribution density on the map is based on two factors: terrain type and planet bio density.  Multiply those two values (see terrain type table) to determine and it will give you a value to use for life form density on a planet surface.  On terrain which has 100% life form density on a planet with 100% bio, on average every 9x15 area (135 squares) will contain four lifeforms for an average percent chance of 3% per square.  Take from the list of tradable lifeforms a total of 5 life form types and distribute over the planet's surface. 


Nonaggressive lifeforms can simply be picked up, if cargo space is not sufficient to carry the whole life form then the life form is not picked up.  Aggressive lifeforms (determined from the danger level on the lifeform table) must be stunned before being picked up.  When a lifeform attacks the terrain vehicle, it either has a 80% chance of hitting or a 20% chance of hitting (if the flat device/TV shield is used)  Attack damage is modified by crew durability and by damage rating of life form.  Lifeforms must be near the terrain vehicle in order to attack crew.  Crewmember attacked is picked at random. 


Mineral dispersion follows the same pattern as lifeforms, except with mineral density factors and the planet's total mineral percent rating of course.  Minerals have a random size between 1 M³ and 9.9 M³.  Use the Lithosphere components table described in planetary generation to determine what the percent chance of which mineral to place.  If the cargo space is not sufficient to store the entire mineral deposit then only enough of the mineral to fill the cargo capacity to 100% is picked up.


If sentients are present on the planet, place collections of housing, icons indicative of their technology level in diagonal groupings together.  One out of four settlements contain a single trade center.  Sentients either on foot or in a vehicle depending on technology will randomly leave one housing icon to travel to another, 50% of the time in same settlement, 50% of the time to another settlement.


Sentient lifeforms will attack the terrain vehicle if the terrain vehicle has fired on sentients on foot or in a vehicle within the last five days, and/or if they are a spacefaring race and the player is on hostile terms with them in space, or if they are simply a hostile race to begin with.  Sentient lifeforms attack with ranged weapons that can fire on the player anywhere on the zoomed in map viewpoint.  The damage rating and description of their attacks depend on their technology level, Stone Age, metal age, industrial age, space-age.   Check the life form table under the Starflight 2 section of the main web site for further details.

Trade Center Design Documentation - v1.0 - 9/27/06
I. Information Displays.

1. Graphic (top left corner)
Display picture of race unless an item is selected, then display item

2. Status display
a. Name of race
b. Current balance (money)
c. "Purchasing" / "Selling" notification
d. Standard trade value percent rating of the value displayed
e. Counteroffer field
f. Quantity selector (after price is agreed to)

3. Conversation Window / Item selection window
Scrolling log of trade chat or display lists sorted by artifacts, then specialty, than standard, then lifeforms, then elements. Price is listed as zero if the item is unsellable, else the initial or final trade price is listed after each item.

4. Option Menu: BUY / SELL / EXIT

II. Modified Data
(* non-preset variables = will be reset after five days)

Race/Planet items for sale & total quantity
Race/Planet items willing to buy list
Race Emotional Index
Items stored in starship hold
Items stored in terrain vehicle
Standard trade values of all items
* Randomized final best price point (equal to initial value if no bartering)
* Finalized barter flag and price to buy items
* Finalized barter flag and price for sale items
* trader emotional  (friendly/hostile/neutral)
* list of items trader is frustrated with/will not trade
* Randomized standard trade goods willing to buy/willing to sell list
* Randomized standard trade goods quantity
* Quantity left (total quantity - player purchased quantity)
* Frustration counter

III. Mechanics

When on top of a trade center or in any of the eight surrounding squares with the terrain vehicle the player is prompted after dropping out of move mode if they wish to trade. If they choose yes, then the trade window is loaded. Perform an emotional index check with the alien race. (if space faring, perform an additional check to see if on hostile terms) if player has fired upon a planetary residence or vehicle of the alien race in the last five days then kick player out of trade center.

When first entering the trade center create the standard goods / elements list and quantity, and create the final best price point for all items. If an item exists on both the buy and sell list, then perform a special evaluation. If the player buys an item and sets a finalized buy price, then change the best possible price point for selling the item to be less than or equal to the buy price but let the player barter for this price independently if they wish. If the player sells an item that is also on the buy list, change the best possible price point for buying that item to be greater than or equal to the finalized sale price. This prevents the player from making money inside one trade center without leaving, and resolves the infamous Starflight 2 trade bug.

When setting randomized best price points:


Depressed Economy Level Economy Inflated Economy
50% - 100% STV 70% - 130% STV 100% - 150% STV



When Buying When Selling
50% - 120% STV 120% - 200% STV

If the buy option is selected, display a list of the fixed artifacts and specialty trade goods (0-3) first. Check technology level and display the generated standard trade goods of that level and below. Number of standard trade goods available is also randomized, up to a maximum of 15. If race/planet is set to no bartering, display the best price point values and immediately let the player choose a quantity. If bartering, engage the barter engine and let it set the final barter price and final barter flag to true before selecting quantity. On the selection menu and when the item is chosen, display the percentage of the standard trade value that the displayed price represents.  Purchased items are put in the starship hold, so perform a space available check and a money check as the player increases the quantity to purchase.  Obviously the player cannot buy more than he or she can store or afford.

If the sell option is selected, first display all items in the starship hold in the order of specialty goods, standard trade goods, lifeforms, elements, then artifacts, and then do the same for the items in the terrain vehicle. Same properties as the buy option except reversed.

Initial trade values are determined by bartering type (a lot, a little, none) and by the best price point, and by emotional index. Initial buying and selling prices are 25%-40% better when the emotional index is green. The best buy point is not affected by emotional index.

Barter a lot
Initial Buying Price 
150% - 200% of best price 

Initial selling price
50% - 75% of best price

Frustration counter = 4 in a row or 6 to end trade

Barter a little
Initial Buying Price 
125% - 150% of best price 

Initial selling price
75% - 85% of best price

Frustration counter = 3 in a row or 5 to end trade

X ended trades will move the emotional index one point more hostile. When a trader is "red" on the emotional index frustration points are doubled.

Selling any quantity of a desire trade good unlocks any "locked" specialty good or artifact and moves the emotional index one point more friendly.

During the barter process, the system should reward players who slowly haggle the computer towards the best price point. If the player makes an extreme offer either over 300% or under 33% of the best price point, the computer will make a "I can't hear you" style comment and increase the frustration counter. If the player makes a mistake and enters a value better or equal to the computers offer, the computer will instantly agree and fix the price at that value.

The computer will adjust its offers to the same percentage degree that the player does towards the best price point. If the computer's offer is much closer to the best price point than the players subsequent offer, the computer will stand on its current offer (more likely for barter a lot economies versus barter a little?) and increase the frustration point. If the player does not move at least 10% closer to the best buy point, the computer will make a comment similar to "why would I accept X if I did not accept Y", but still will either stand or change its offer based on the compared difference of both offers to the best price point. The computer will never change its offer by more than 20% of the value of the best price point. The computer at minimum will always change its offer by at least 10% of the value of the best price point. If the computer reaches the best price point it will refuse to change its offer and increase the frustration counter each time the player does not accept its offer. The frustration counter is set to zero after each successful trade.

Refuse increases frustration points by two, and has a 30% chance of ending a trade for specialty good permanently and 60% chance of ending a trade for a standard good/life form/elements permanently. If trade does not end, the computer moves 50%+-20% closer to the best price point.

If trade for an item has been ended without coming to a conclusion, it does not affect any other trades, but  does make that item 80% likely to be untradable for the next five days. If the 20% chance occurs, a "my feelings are hurt, I sulk" message appears and trading can continue except frustration points are set to 2 initially. If trade ends with frustration failure a random message "I'm out of patience" may appear (% chance) and the emotional index will be moved one point more hostile. If the emotional index is already red and moved more hostile then the computer will generate a message "I am ending trade" and kick the player out of the trade center.


Hyperspace/Star Map - v1.0 - 10/29/06


A window taking a majority of the screen will display the starship graphic against a background of space with "hyperspace swirls" or against a background with nebula graphics.  Ship movement is shown and controlled on this view.  Ship momentum is similar to physics in the star system except that a constant drag is applied against the ship.  If the player does not constantly thrust then the ship slows down and stops in place, a distance equivalent to its momentum.  Turning jets determined rotational speed but only engine class, not ship mass or thrusters, determines acceleration and top speed.  All movement requires fuel, see fuel usage table on the main page.  The player's top speed is determined solely by his/her engine class, however this should not be substantially different, class five engines should only be maybe a quarter faster than class one engines, even though class five engines are far more energy-efficient.  Alien ships also should have their hyperspace speed somewhat determined by their engine class, except on a different scale toned down to give the player a slight speed advantage.


In a small circle placed to the side of the screen a radar style map view shows the the nearby area of hyperspace larger than the local view.  Stars are displayed as large bright circles on this map, either flickering moving black dots or actively moving dots represent alien ships. Nebulae show up as grayish circular areas of space which completely conceal anything inside of it.  The radar map view displays no details inside the nebulae, either ships or stars.  Continuum fluxes do not show up on this map, only the local view and the star map.



From hyperspace all stars will appear  to be different colors and sizes, reflecting their stellar class (see table in the star system section of this document)  Class M,K stars will use a small star graphic, class G,F,A stars will use a medium sized graphic, and class B,O stars will use a large sized graphic.  Entering a star system will place the players ship on the same side of the solar system as the side he/she entered it.  Leaving a star system also makes the player face that direction in hyperspace away from the star.  Only the eight cardinal points are used for these direction angles.


Nebulae are areas of space filled with gas and dust.  There are four basic types of nebulous.  Emission nebulae are clouds of high temperature gas, typically red because of the spectrum emissions of hydrogen gas.  These areas are typically sites of recent star formation, and will often have higher densities of brighter, shorter lived stars.  Reflection nebulae are areas of space primarily composed of dust instead of gas.  They reflect instead of the light of stars inside of it and are usually shades of blue.  These are also typically sites of recent star formation.  Dark nebulae are clouds of dust usually void of stars.  They block the light of stars behind it.  Supernova nebulae are the result of exploding stars.  Composed of heavier materials besides just hydrogen, these clouds of gas and dust are multicolored and dense.  Ribbons of a vibrantly colored material are scattered throughout these nebulae.  All nebulae interfere with sensors and shields.  Some may cause random minor ship damage to the armor or hull at random intervals, although this should be uncommon and not prevalent to all nebulae.  Encounters, star systems, and planet views inside of a nebula should all have the nebula screen background and restrictions to visual range/sensors and interference with shields.  Only in hyperspace will damage occur from the nebulae itself.


A continuum flux is a wormhole in space that has the appearance of a black hole with an accretion disk of highly colorful gases.  A continuum flux is difficult to detect in hyperspace and will only be visible on the local view depending on the navigator's skill.  If the navigator has less than 200 skill, they will remain invisible.  Between skill levels of 200 and 250 the range in which a continuum flux is detected increases.  After a continuum flux has been found, a small gray X will appear on the mini map from that point on to represent its position.  A ring device will extend the detection of a continuum flux to the entire local view screen, and will eliminate the chance of a navigator getting lost after traveling through one.  Most of the time a continuum flux has two entrances, and the player enters one of them, the player can return to the original position by reentering the flux.  Some of the time a continuum flux will be a one-way trip, and other times will put the player into a completely different sector.  A water tunnel rendered animation will play while a player is traveling through one.


Unlike solar systems hyperspace encounters are determined by probability instead of being set.  Certain classes of random ships may appear anywhere (Humana Humana, Nomads, and Minstrels in the last games) but alien ships will typically appear only inside their spheres of influence.  A sphere of influence is a modifiable circle in which alien ships of one particular race can be found.  These spheres typically will roughly encircle the race's home world, but can sometimes have different center points or move due to events in the game.  Spheres of influence may partially or completely enveloped other spheres of influence, and if they do the chances of both groups ships appearing within the shared area is cut in half, giving the player an equal probability of meeting alien ships, but only a 50% chance of meeting alien ships from one race or the other.  The sphere of influence (titled with a unique color and name the alien race) will appear on the star map after the player encounters a ship inside of the sphere.  Generally one alien ship is created to chase after the player every five seconds of real-time.

When the player ship encounters an alien fleet, an animation is played (perhaps of the players ship shrinking or a pure black area of space growing over the local view map, etc.) and the player enters encounter mode.  When the player leaves encounter mode and returns to hyperspace the animation is played reverse.  In both cases the animation takes "time" in which other alien ships can move and the player cannot.


The sphere of influence has two actual values, the actual sphere itself which represents where of the alien ships will be created within, and the second sphere roughly the radius of two mini map views larger, which represents how far the alien ships will chase a player before disappearing.

Alien fleets are randomly generated (see solar system) with random numbers of ship types and overall number of ships.  Typical patterns will be either X number of warships, 1-2 scout ships, or a mix with all three ships including transport ships.  The alien ship fleet disappears if it is destroyed or communications end peacefully or if the player is on good terms with the alien race and simply flees. If the player is on hostile terms and runs away from an encounter then it will shortly reappear a few seconds later. If the player gets three hostile fleets with the top engine class chasing him/her and the player continually runs away, it should be impossible to escape them due to the delay animation described above.  Gameplay testing should be used to determine the length of the animation and also the speed of movement of the players ship and that of the alien ships to balance this out.


The star map has several functions, the first is to display on a grid pattern all star systems and nebulae in a region of space.  Alien spheres of influence and continuum fluxes are also displayed but only after they are discovered by the player.  The player's current position is reflected by a small rectangle on the map, and the player's current position is shown in X,Y coordinates at the bottom of the map.  The pointer which is moved by the mouse also has a "Destination X,Y" coordinate at the bottom of the map, and the fuel needed with the ship's current engine class to travel to that point is shown.  The total distance that the ship can travel is displayed as a lightly colored gray sphere around the player's current position.  Fuel would be exhausted if the player travels in a perfectly straight line the entire radius of this sphere, marking the range he/she can explore.  The bottom of the screen also has tabs for displaying other sectors, hidden until they are traveled to.

The player can scroll the map by either clicking to "grab" the map and pull it one direction or another, zoom in smoothly in and out with the plus and minus keys or the mouse wheel, or can move the mouse to the edge of the screen to slowly scroll the entire map in that direction.

In an unexplored sector, or may be the distant corners of and explored sector, the star map should contain no details and only be revealed in a "fog of war" style fashion within a 30 sector radius of where the ship has traveled.  This encourages exploration of the entire sector, gives a visual representation of where the ship has been and where it has yet to travel to.  Visited stars are shown in a brighter hue than unvisited stars.  When the mouse is moved over a visited star system then a small box with a list of planets appears.  Each planet shows a mini icon representative of the planet's color as seen from the solar system, bio density, mineral density, and another mini icon if the planet is inhabited.  If the planet was orbited then all of these details are filled in.  If not then only the planets many icon is visible and the word unknown appears next to it.  If the system scanner is used inside the solar system then all planets will have their details filled in.


Communication System Design Documentation - v1.0 - 10/18/06

I. Modified Data
(* non-preset variables, reset after each encounter)

Emotional Index of each alien race
Hardcoded Personality Index of each alien race:
  • emotion changes for each of posture
  • Breakpoints or thresholds on the emotional index
  • artificial barriers to thresholds (unable to make Dweenle friendly without nid berries)
  • changes that occur when a threshold is met (lowering shields if posture becomes friendly)
  • Aggressiveness Index (the ratio where relative strength Index changes the alien's behavior)
  • Surrender Conditions
  • response to players raised shield status
  • response to players armed weapon status

* Temporary Emotional Index
* Knowledge Index (what this particular alien knows and does not know)
* Relative Strength Index
* Impatience/End conversation counter
* Surrendered flag

II. Mechanics 

When a player encounters another ship they are drawn into a localized encounter space. If the player's ship is recognized from previous encounters then a action may take place immediately, such as a friendly hail or a fight or flight reaction. Fight reactions occur immediately, often striking the player's ship before they have a chance to raise their shields, encouraging the player to preemptively raise shields in hostile territory. Friendly hails or any type of responses to hails take place in a random short period of time. Neutral or hostile/obsequious hails take place in a random long period of time.

When communications are established, the alien is given knowledge of all the crew and cargo on board the players ship. If any flags are set off at this time then the alien will respond immediately. Examples include the demand to return a religious artifacts, prejudice against the race of one type of crew on board the players ship, or an offer to purchase or demand to give cargo from the players ship.

Players can issue statements, ask questions of certain categories, change their posture in the middle of the conversation, or terminate the conversation. Aliens can issue statements, respond to questions, and ask yes/no questions of their own. If aliens are ignored they will either issue statements or questions of their own, or if they are ignored in a yes/no response they will issue impatience statements.

Once communications are terminated they can not be reestablished in the same encounter. The alien will either flee or attack after this point, no other actions will take place. If after 1-3 alien hails are ignored, again the alien will either flee or attack.


Effective Skill = officer's skill + (50 if comm officer is same race as alien) or (25 if crew member is same race as alien

Effective Skill = 250 if communicating with spemin and the whining orb is on board.

Percent unscrambled = Effective skill / 250

Scrambled words are replaced with words composed of a random number of syllables (from 1 to the maximum for that alien class) selected from a Syllabary Table characteristic of that race.


All actions modify the emotional index of the alien race. From the Starflight 1 design documents:


Friendly Diplomatic 



|-----------A ------------B ========C ========|



0 25 50


Most alien races have a default emotional index in the diplomatic or neutral range to begin with and will modify this index based on the player's actions. Different actions such as posture, response to questions, player's shield and weapon status, etc. will modify this value during the encounter. The thresholds between ranges will vary between alien races, and not all aliens necessarily will even use some of these ranges. Actions which modify the emotional index have different values for different alien races. For example to one alien race raising shields and arming weapons is a negative action raising the emotional index, to others it is considered a neutral or even positive action. All actions have a value of X points +/- to the aliens emotional index. Negative actions always move the emotional index a greater distance than positive actions, because it is always easier to annoy someone then is to make friends with them.


Each race through the game will maintain a certain emotional index. When that race is encountered that emotional index is copied to the temporary emotional index for that particular encounter. After that encounter ends, the difference between the temporary emotional index and the stored emotional index is calculated and then halved. This is then applied to the stored emotional index for that race. This makes drastic emotional changes muted when dealing with an entire alien race. For example if the player has finally convinced a particular alien to be friendly, the next encounter may be diplomatic again but will be easier turn into a friendly encounter. If the player fires upon a friendly race, making that encounter shift into the fight emotional index, the next encounter may be diplomatic or hostile, but will not automatically be set in the fight range immediately if the player was formally on friendly terms. This creates more of a realistic sense of reputation.


  • scripted changes set the temporary emotional index for this encounter to a flat reading. For example giving nid berries to the Dweenle will set their posture to friendly no matter what it was before.
  • posture changes. This is what affect the players chosen posture (friendly, hostile, obsequious) has on the temporary emotional index. This value is typically small and is applied every time the player makes a hail (emotional index + 5 * posture value), a statement in a certain posture (emotional index + 1 * posture value) or a question (emotional index + 1/2 * posture value). An example would be friendly = -2, obsequious = -3, hostile = 10. A friendly question would move the index one points to the left, a friendly statement would move the index two points to the left, and a hostile question would move the index five points to the right.
  • shields raised or weapons armed status. If the alien race checks for one or both of these, these flags act as thresholds to the alien's temporary emotional index. If the alien is already beyond this threshold they are emotional index is " pulled back" to the threshold as long as the condition exists. For example the Humana Humana may not become friendly if shields are up and/or weapons are armed. The inverse of these conditions can also be checked. For example the G'nunk may have their emotional index set to hostile if shields and weapons are not raised and armed.
  • Alien yes/no questions contain a specific emotional value to both the "yes" and "no" responses. These values are stored in the database with all text conversation and are applied when the player chooses an answer. The third choice, terminate, the alien will accept as a "no" response in addition to ending the conversation.
  • firing on aliens in space or on the planet moves the emotional index a great deal more hostile for most aliens.

If the temporary emotional index is increased up to the fight/flight level the alien will terminate communications and perform the appropriate action based on the relative strength index. (described below)


Friendly range unlocks special offers, use friendly conversation questions and answers database. Available questions and answers may greatly overlap neutral, hostile, and obsequious questions and answers but usually contain answers not possible to other postures. When a alien is in this posture they will typically

Diplomatic neutral or aloof questions and answers database. This set of answers to questions is typically smaller than other sets but will generally contain more questions. Again a subset or complete set of answers to questions in this posture may be shared with other postures.


The computer calculates the relative strength index between the players ship(s) and the aliens ship(s). This index determines the alien's actions when the alien's emotional index is in the hostile/obsequious or fight/flight range. Strength is populated by adding together the shields, armor, and most powerful weapon's strength of every ship on the player side and comparing it to the value obtained by adding together the similar values of all the alien ships. Only the strength of the one most powerful weapon that each ship is equipped is used for this measurement. Inoperative or destroyed equipment is ignored.



Typically if the players ship(s) is stronger than the aliens, the alien will follow the lower side of the bar depending on their emotional index. This entails being obsequious instead of hostile or fleeing instead of fighting. Not all aliens are rational and some will require different ratios of strength before responding differently. For example one alien race may be cowardly and the fearful if the player strength is even close to theirs, while another alien race may require that the player's strength is twice of theirs before acting obsequiously, and another alien race may be suicidal and always at hostile no matter what the odds.




No communication is possible. There still is many possible actions available here. The alien may either decide to attack, evaluate that the players ship is too strong and send out a distress call for more ships before attacking, or decide to flee. See conditions for surrendering. Most rational aliens have a threshold on their behavior between the hostile/obsequious and the fight/flight thresholds when the player's strength outmatches the alien's strength. Most aliens will give the player a chance to communicate and change their emotional index rather than flee outright indefinitely.


Each alien race has a database of answers that may be used for each particular posture and for each type of question. A pointer is used and incremented each time a particular answer is given. If all answers are given then the pointer resets back to the beginning of that particular database. If a posture change takes place and new answers are unlocked or simply added to each database, the pointer is set to these new answers.


For each encounter with scout ship(s) three out of five question databases will have a random lock somewhere between 50% and 100% down the list of answers. If the pointer reaches us this lock or is already below this lock then the alien will respond to this particular question with a "I don't know" answer. The pointer will not move so repeated attempts to ask the same question will not change this answer. For war or transport ship(s) only one out of the five question databases will have a lock.


If an alien race is in the fight/flight range a number of conditions may be used to trigger a surrender. One example would be if during a fight condition the relative strength index turned in favor of the player. Another condition may be if the player simply fires weapons at the alien. Another example would be if the alien decides on flight either before or during a battle and is unable to escape for a certain period of time. Cowardly aliens may surrender immediately upon evaluating that the player's strength is greater than theirs, while other aliens may never surrender. A surrendering vessel(s) may choose to either stop or continue fleeing, but on acceptance of a surrender by responding communication the surrendering vessel(s) will immediately stop moving and will lower shields and disarm weapons. Their posture will be set to the obsequious level and will not change the matter what you say to them in that particular conversation.

Delays before the computer can make the next response. (From the Starflight 1 design documents)


Alien: Hailing Request 10
Alien: Hailing Response 6
Alien: Statement 10
Alien: Conversation Lag 10
Alien: Hostile Y/N question 10
Alien: Diplomatic Y/N question 15
Alien: Friendly Y/N question 20
Alien: Obsequious Y/N question 30
Alien: Response to Player Question 6
Player: Statement 2
Player: Question 2


Certain alien races will take offense being ignored. Every time a certain delay is reached, for example Conversation lag or waiting for response to a yes/no question may increase or make an aliens temporary emotional index more hostile.

Number of alien phrases given before the alien terminates communication. (From the Starflight 1 design documents)




Miscellaneous - v1.0 - 10/20/06
I.  Music
  • Main Menu/Start Game
  • Environmental (starport, launch, system travel, hyperspace, star map, orbit, planet, trade center)
  • Race (neutral or friendly, hostile)
  • Combat (randomly cycling and/or situational within each piece.  Different music when facing a very dangerous enemy, taken heavy damage, enemy starts fleeing, end of combat resolution close) Suggest breaking music into 2-5 second segments to allow for transitions.
  • Dramatic (special plot events)
  • Finale

II.  Sound effects

  • Starport: walking, transporter, whoosh (pages in personnel) ambient repair noises in ship configuration
  • Starship: button pressing/clicking in vessel controls, maximize/minimize pop-up windows sound effect, sensors
  • Terrain Vehicle: movement ambient noise, stunner, laser, scanning, planetary teleporter
  • Encounter: ship detected alarm, hail
  • Combat: raise shields, lower shields, arm weapons, disarm weapons, laser fire, laser fire and hit, missile fire, missile hit, all other special weapons firing sounds