This page follows the physical jump-point network of a game. It starts where a new system rolls its jump points, continues through the choice of destination when a race first explores an unlinked point, and ends with the tests, gates, network searches, danger ratings and galactic map coordinates that read the network afterwards.

Neighbouring pages own the topics around it. Star system and planetary generation owns stars, bodies and the order in which a system is generated. Exploration and discovery owns charting, the knowledge records written when a jump point is first explored, discovery events and awards. Movement and logistics owns transit execution, jump shock, squadron transit and gate travel, and its Lagrange point section owns Lagrange point generation. NPR strategic planning owns NPR exploration goals, and its connectivity section owns the valued-network traversal. Space combat resolution owns the danger rating increments from combat. Game rule options owns the setup fields named here.

The network has no adjacency table. Each jump point belongs to one system. It holds a direct link to its peer point and a WPLink integer that names the peer’s WarpPointID. Every neighbour search rebuilds a system’s neighbours by scanning all jump points of the game for points that lie in that system and hold a link.

Race knowledge sits on the point itself. Each point keeps one survey record per race, keyed by race ID. The record holds integer Charted, Explored, Hide and MilitaryRestricted flags, an IgnoreForDistance integer and a true or false AlienUnits flag. A race without a record for a point knows nothing about it.

The game creates a record for a race from a point, a charted value and an explored value. An explored value of 0 stores 0. A nonzero explored value sets Explored = 1 only when the point is linked and the race already has a record on the peer, and then marks the peer explored too. Otherwise Explored keeps its default of 0. A second record for the same race on the same point fails with error Function #2432 and is not added. Setting up records for a whole system creates an unexplored record for every point of the system with the given charted state. Race homes, created systems, , and fleet transfer pass a charted state of 0. The wreck paths pass 1.

Value Belongs to Meaning
SystemID System Unique system key, taken from the game’s ID counter when the system is generated
SystemNumber System Procedural slot number, or the KnownSystemID in known-star mode
WarpPointID Jump point Unique jump point key
WPLink Jump point Peer WarpPointID, 0 when unlinked
Physical jump point number Jump point Rank by distance within the system, all points counted
Displayed jump point number Jump point Rank among the points the viewing race has charted
JumpGateStrength, JumpGateRaceID Jump point Gate present when strength is above 0, and the race ID of the builder

Points also carry a coverage mark and a cumulative map route distance, and systems carry an exploration depth, a last jump distance and a map route entry point. These are working values that the network searches overwrite each time they run.

Jump points and survey locations are created once while a system is generated. The generation step passes the requested minimum number of jump points, asks for survey locations, and turns on the distance limit only for Sol. Only Sol therefore gets the 30 AU distance limit.

The count starts at 1 + ExtraJP, with ExtraJP taken from the primary star’s stellar type. The game then repeats a d100 test with a base chance that starts at 90. Each pass computes threshold = base chance + truncate(primary component mass). The threshold is capped at 90, and a threshold of exactly 90 drops to 80 once the count already exceeds 10. A roll above the threshold ends the rolling. A roll at or below it adds one point and steps the base chance from 90 to 60, or from 60 to 30. The step from 60 is applied before the step from 90, so one pass moves 90 only to 60, and 30 stays at 30.

Pass Base chance Threshold for mass 1.0 Threshold for mass 20 Threshold for mass 120
1 90 90 90 90
2 60 61 80 90
3 and later 30 31 50 90, or 80 once count > 10

The mass term is truncated to a whole number, so any primary below 1.0 solar mass adds nothing. The requested minimum replaces a smaller rolled count after the rolling ends. It does not change the rolls. In the stellar catalogue DIM_StellarType as shipped, only the black-hole types 459 to 467 (masses 20 to 120) carry a nonzero ExtraJP, from 1 to 8. The type with mass 120 has ExtraJP 8 and starts with 9 points. The value is read from the catalogue when a game is loaded.

Each point is placed on its own. Its Bearing is a d360 roll, so bearings run from 1 to 360. Its Distance is d4000 / 100 x S in AU, where S is the system scale factor. S is the square root of the primary component mass up to 1.0 and the cube root above it. A distance inside the primary star’s radius (Radius x 0.00465047 AU, with the stellar type’s Radius in solar radii) becomes radius + radius x d10 x 0.1, which is 1.1 to 2.0 radii. With the distance limit on, a distance above 30 AU is rerolled once with the same formula, d4000 / 100 x S. The reroll is not tested again, and the star-radius floor is not reapplied to it.

The point’s coordinates come from polar placement around (0, 0) at Distance x 149,600,000 km. When the game option AutoJumpGates (all jump points stable) equals 1, the new point gets JumpGateStrength = 1000 with JumpGateRaceID left at 0. The point joins the game’s jump points. Every point of the system is then renumbered 1, 2, 3 by ascending Distance. Each race that already has a survey of the system receives an uncharted, unexplored record for the new point.

After the points, the game creates the 30 survey locations in three rings, with 6 locations in the inner ring. Exploration and discovery owns their geometry and the charting rule that ties a point to one location. When the star editor changes the primary star, the game moves the 30 locations to match. It does not move or recount jump points.

Generation request Minimum passed
New game Sol The minimum Sol jump points from the Game Information window
First exploration 0, or 2 when the last-unlinked-point protection applies
Random NPR home system 0
Template NPR home system The template’s minimum jump points
Spacemaster create-system path 0

Only one other placement rule is tied to the survey rings, the random outer system position. It returns a polar position around (0, 0) at twice the outer ring radius, 6,000,000,000 x S x 2 km, on a bearing of d360 - 1, so 0 to 359 degrees. The inner and middle rings sit at 2,000,000,000 km and 4,000,000,000 km before scaling.

System numbers and the known-system catalogue

Section titled “System numbers and the known-system catalogue”

The UseKnownStars game option selects one of two numbering schemes. The procedural scheme numbers systems from 0 to NumberOfSystems. The known-star scheme draws each new system from the known-system catalogue and copies the catalogue ID into SystemNumber.

A random unused system number is a d(NumberOfSystems) roll, repeated until the result is not the SystemNumber of any existing system. The rolling has no attempt limit. It serves new-game NPR homes, preset NPR homes and the create-system path.

The number for an exploration link follows a different rule. When both LocalSystemChance and LocalSystemSpread are positive, a d100 at or below the chance makes a local pick, and a d2 decides the sign. A d2 of 1 gives origin + d(spread) and a d2 of 2 gives origin - d(spread). A d100 above the chance, or a zero setting, gives a global pick of d(NumberOfSystems + 1) - 1, which spans 0 to NumberOfSystems. A result above NumberOfSystems loses NumberOfSystems, and a negative result gains it. The defaults in a new game are 1,000 systems, chance 50 and spread 15.

The rule rolls up to 100 candidates. It can stop at the first candidate that is not already the number of a system linked from the origin. Exploration asks for that stop.

Looking up a system by number returns the first system with that number, or no system. Sol is generated with number 0. A wrapped candidate is never negative, . The global pick reaches 0, so a procedural game can link to Sol by number.

In procedural mode the generation step builds a temporary catalogue entry for the system number. The game marks that entry as made up for this system, so the system keeps the procedural number and has no catalogue entry of its own.

A known system holds up to four component stellar types, companion orbits, X, Y and Z coordinates, a Distance from the origin, a name and a constellation name. The catalogue is DIM_KnownSystems. When a game is loaded, the game reads rows with GameID 0 or the current game, and skips a row whose component types are missing from the stellar catalogue. The shared catalogue (GameID 0) holds 63,543 rows. Game-specific black-hole entries add to the database’s total row count. Its coordinates are in light years, as the Proxima Centauri row shows with distance 4.221.

A known-star system takes SystemNumber = KnownSystemID. The new game links Sol to catalogue entry 0, the Sol row, in either numbering mode, because that link has no mode test. In procedural mode a reload does not restore that link, so Sol has no catalogue entry after a reload. A catalogue entry counts as used when any system refers to it.

NPR home selection draws an unused catalogue entry within a distance range. When the maximum is below the minimum, the maximum becomes twice the minimum. The game keeps unused entries whose Distance is strictly between the bounds and picks one uniformly. When no entry qualifies, the die has 0 sides and rolls 0, the pick fails with error Function #1424, and no catalogue entry is returned.

Every known-star system that exploration generates comes from a nearby unused entry. The game orders unused entries by squared 3D distance from the reference system’s catalogue entry, or from the catalogue origin when the reference has none. It sets a die of 5, or 20 when a d10 shows 1. It then walks the ordered list and returns the first entry whose die roll is 1. It returns no entry when every roll fails. With no entry, the known-system orbit calculation fails with error Function #1607, and then the system generation fails with error Function #1562 and produces no system before any star is created. First exploration then fails with error Function #1558 when it tries to add a jump point to the missing destination. That error ends the exploration before the link is written, so the origin point stays unlinked.

The Select Known System dialogue lists the catalogue, marks used entries, hides the select button for a used entry and records the choice as the selected known system. The create-system path and the NPR template form use that selection.

Black-hole catalogue entries are generated once while a new game is created, in either numbering mode. The game makes up to 50 entries. Each draws a stellar type d15 + 452, so types 453 to 467, and the entry loop stops at the first missing type and keeps the entries made so far. Each entry gets ID GameID x 10000 + i, where i is the entry’s number from 1 to 50, the name “Black Hole”, one component and uniform X, Y and Z in [-150, 150). The redraw condition repeats only for a distance of exactly 25.0 light years (the test is distance at most 25.0 and at least 25.0), so black holes can sit closer than 25 light years. The game adds the entries to the catalogue and writes them straight to DIM_KnownSystems with the game ID, with the primary name “BH”, in a separate transaction.

In procedural mode a black hole can appear only as a primary. The temporary catalogue entry draws its primary with black holes included, which widens the die from 10,000 to 10,150. Companions are drawn without black holes. The black-hole MaxChance values run from 10,010 to 10,150 in steps of 10.

A random brown dwarf discards one d23 roll, then picks uniformly among stellar types with BDMaxChance above 0. The procedural generator uses it when a random companion is at least as massive as the component before it, for the second, third and fourth components. The stellar selection section owns the rest of the component rules.

Three paths reach the first-exploration step. A fleet’s successful transit through a point with no resolved destination runs it with no forbidden list. An exploration without a fleet runs the same step through a move order that the game builds for it, and returns the race’s survey of the new system. The NPR start-up network and the System View explore button explore this way.

A point that already has a linked peer reuses the peer’s system and skips selection.

The last-unlinked-point protection counts every physical point that lies in a system the race knows and has no link. Uncharted points count too. When the count is exactly 1, the protection applies, and a generated destination needs at least 2 jump points.

Mode Existing-system attempt When it finds no system
Known stars A d15 equal to 10, more than 10 systems in the game and protection off, then the existing-system search Generate from a nearby unused catalogue entry with number 0
Procedural Up to 20 exploration-link number rolls in total while protection is on and the number is in use Generate with the last rolled number

In procedural mode an existing system is chosen whenever the rolled number already belongs to one and the protection is off. The retries stop on the first roll in that case. With the protection on, the game keeps rolling while the number is in use. After 20 occupied numbers it keeps the 20th existing system.

The existing-system search excludes the origin, any system with a negative number, and systems already linked from the origin. When the origin has a catalogue entry, the candidates are ordered by (X + origin X)² + (Y + origin Y)² + (Z + origin Z)² and then filtered to a true 3D distance below 25.0 light years. The ordering adds coordinates instead of subtracting them, so the walk does not run from nearest to farthest. When the origin has no catalogue entry, candidates are ordered by distance from the catalogue origin. That ordering reads each candidate’s catalogue entry, so a candidate without one makes the search fail with error Function #1613, and the search finds no system.

The walk uses a die of 5, or 20 when a d10 shows 5. A candidate is taken when its die roll is 1. Sol is eligible only when at least 10 distinct systems are known to player races. Sol is also never eligible during an NPR start-up network. Exploration by a fleet always allows it.

A destination in the forbidden list is discarded. Generation then runs as an NPR system for an NPR explorer and as a player system otherwise, with the origin recorded as the generation origin, the procedural number and the minimum. In procedural mode a forbidden existing system leaves its number as the rolled number, so the generated system can share a number with it.

A standard NPR created while NPRBaseTransits or NPRRandomTransits is above 0 waits for its starting exploration. When generation creates such a race, the game records it as the race awaiting exploration. First exploration then completes that race’s gravitational and geological surveys of the new system and builds its starting network with NPRBaseTransits + d(NPRRandomTransits) transits, up to NPRMaxSystems systems. The forbidden list for that build is every other system. The game then replaces the destination with a system at that exact depth, picked by one of the nearby-system rules below. The exploring fleet links to the edge of the new race’s network instead of its home.

The search only ever looks at systems at exactly the target depth. It never falls back to a shallower depth.

In known-star mode the nearby-system rule removes systems already linked from the origin and orders the rest by the same summed-coordinate expression. It then walks them with a die of 3 and repeats the walk without end until a roll of 1. In procedural mode it orders by the absolute difference between the system number and the origin number and uses a die of 4. Neither walk can finish when the candidate list is empty.

With the destination fixed, the game lists unlinked points in it. One point is used directly. With none, the game adds a new point without the distance limit and renumbers the system. Several points produce a uniform pick. Both ends then receive the link and WPLink.

The origin system is not excluded from its own selection. A global procedural roll can return the origin’s number, and the origin’s unlinked points include the departing point. Exploration and discovery owns the knowledge records, events and awards that follow the link.

The physical jump point number is set by the renumbering pass and when a game is loaded. Nothing uses it afterwards. Display names use the displayed number, which ranks only the points the viewing race has charted, by distance, and is 0 for an uncharted point. The display name is “JP2: Name” when the race has explored the point and knows the far system, and “JP2: Unex” otherwise.

An NPR’s starting network grows breadth first from its home system. Each depth explores every unlinked point in the frontier. Each exploration skips race creation and prevents a Sol connection, surveys the destination’s bodies, and completes the gravitational survey on every depth but the last. A destination already in the frontier is not added again. Each depth stops after the remaining allowance of points, counting points rather than systems. The allowance is maximum - systems counted so far, with the home system counted as 1, and a maximum of 0 means no limit. A template NPR uses a maximum of 500. A new-game NPR uses NPRMaxSystems, unless its generation template sets its own maximum.

After that exploration, the new game passes over every Sol jump point that holds a link. It resets the Explored flag on the linked point for every race, then clears the linked point’s own link and then tries to use that cleared link, so any linked Sol point causes an error there. New game creation then reports error Function #1419, and the initial save that follow are skipped. The start-up exploration prevents Sol connections, so normally no Sol point is linked at that stage.

Each newly found system gets an exploration depth equal to its depth. The depth-by-depth growth stops once the running count reaches the maximum. The forbidden list for a template NPR is every system that existed before the race, so that network never joins a pre-existing system.

Test True when
Explored by the race The race has a record and Explored == 1
Charted by the race The race has a record and Charted == 1
Charted but unexplored The record has Charted == 1 and Explored == 0
Available for stabilisation Charted == 1, JumpGateStrength == 0, no pending stabilisation order
Explored and available for stabilisation Explored == 1, JumpGateStrength == 0, no pending stabilisation order
Pending stabilisation order Any fleet of the race has a Stabilise Jump Point move order whose destination is this point
Far-side position Gives the peer position when linked and explored, and no position otherwise

Every record-based test is false for a race without a record. The pending-order test never reads the record. Only the far-side position checks that the point is linked, so the explored test trusts the flag. Nothing in play uses the plain charted test. The charted-but-unexplored test feeds the NPR transit planner. The explored test switches the System View between its explore and enter buttons and decides whether a tactical map context menu offers the far system.

The stabilisation tests require charting or exploring, not both. Neither tests whether a gate exists on the far side. The pending-order scan covers every move order of every fleet of the race, not only the first order.

A jump-point stabilisation component sets the class value JGConstructionTime to its ComponentValue, in days. The class design pass assigns the value from each such component in turn rather than summing them, so the last one counts.

The move action “Stabilise Jump Point” has ID 64, MoveRequirementID 14 and the WarpPoint flag set in DIM_MoveAction. A jump-point destination lists every action with that flag. Requirement 14 is “has jump point stabiliser”, which a fleet meets when any ship’s class has JGConstructionTime above 0. The order list accepts the action on that requirement alone. It does not test the point’s charted state, an existing gate or a pending order.

On arrival the order’s TimeRequired becomes the fleet’s gate build time. A result of 0 logs “cannot stabilise a jump point as no ships within the fleet have stabilisation capability” and completes the order.

The gate build time considers ships with at least one undamaged stabilisation component. For each it takes JGConstructionTime x 86400 seconds. A ship commander multiplies that by 2 - Production bonus, using the commander’s Production bonus. A crew shortage multiplies it by class crew / current crew. The game keeps the smallest result and truncates it to a whole number of seconds. Ships do not combine their work.

While the fleet is at the point, the game checks for an undamaged stabiliser each pulse and completes the order with a “cannot complete jump point stabilisation” event if none remains. Otherwise it advances the stored timer. Movement and logistics owns the timer arithmetic. When the timer finishes with sub-pulse seconds left, the game sets JumpGateRaceID to the ordering race and JumpGateStrength to 1000, records a completed jump point stabilisation measurement and writes ship history. It does not check for an existing gate, so a second builder overwrites the owner.

Stabilisation gates only the ordered endpoint. The far endpoint keeps strength 0 until a fleet stabilises it too, unless AutoJumpGates gated it at creation with strength 1000.

The standing order Stabilise Nearest Jump Point resolves through four steps. It gives up when the fleet has no stabilisation capacity. It then looks for a point at exactly the fleet’s coordinates in its system.

  1. Point under the fleet. If that point is available for stabilisation, the game clears the fleet’s orders and queues a stabilisation of it.
  2. Far side. Otherwise, if the peer is explored and available, and the peer’s system is not too dangerous, the game clears orders, queues a standard transit and then a stabilisation of the peer. For a player fleet with AvoidAlienSystems, the far side is allowed only when the alien-control test is true for that system. For an NPR fleet the game also requires that the fleet’s current system is a valid NPR destination. For stabilisation orders that check applies only the valueless-system test. The valueless-system test rejects a system whose value is None unless the fleet allows valueless destinations or its operational group’s main function is diplomacy. A player fleet always passes it.
  3. Same system. Otherwise the game picks the available point in the fleet’s system with the smallest Lagrange-aware travel distance. Existing orders are not cleared.
  4. Auto-route. Otherwise a breadth-first destination search for a stabilisation target picks a system, and the same nearest-point rule picks the point from the arrival position.

Nothing in play uses the second error number #2330.

Rule or display Effect of JumpGateStrength above 0
Standard transit validator The departure gate alone admits the fleet
Auto-route adjacency without unstabilised transit Only gated departure points count as edges
NPR transit and retreat planners A fleet without its own jump capability can use the point
Move destination and System View list Name gains “ (S)”
Galactic map line Orange, 3 px, when both ends are gated and the magenta military-restricted style does not apply. Magenta, 3 px, when either end is restricted and the military-restricted display box is checked. Otherwise green, 2.5 px
Tactical map marker Square in orange for the race’s own gate, red otherwise, around the orange point marker
Sensor checks Gated points in the system join the detection target list

Movement and logistics owns how the validator treats the gate, and ship detection owns how gates are detected. A gate made by AutoJumpGates keeps JumpGateRaceID 0, so the tactical map draws it red for every race. The System View stabilise and destabilise buttons set the strength to 1000 or 0 without touching the owner.

Helper Edges followed Result
All adjacent systems Every linked point Neighbour systems, duplicates kept
Explored linked systems for a race Linked points the race explored Neighbour systems
Explored linked points for a race Linked points the race explored, in every system Points ordered by distance
Jump points of a system Points of this system Ordered by distance
Jump point count Points of this system Count
Nearest charted point for a race Charted points of this system Nearest by straight line, first on ties

The explored linked points list has no filter on the system, so it returns explored links across the whole galaxy. Nothing in play uses it. The nearest charted point feeds the relative location text, which names the nearest planet, star or charted point. The jump point count feeds the NPR hub-colony choice, which keeps explored systems holding a body other than the homeworld that is neither a gas giant nor a superjovian, with more than 3 points, a primary below 10 solar masses, an exploration depth below the target depth and no colony of the NPR yet, most points first.

The search for systems within jump range walks physical links breadth first from the origin and returns the visited list, origin included. It records each system’s last jump distance before the counter rises, so first neighbours get 0. A system reached twice in one ring, from two frontier systems or through two links of one system, enters the list twice. The walk repeats until the counter equals the maximum, so a maximum of 0 never ends it early, and it runs until no new systems appear. Its only use is the nearby ruin race search, which passes 1.

The jump distance between two systems is 0 for the same system and otherwise counts jumps breadth first over links the race explored. It is -1 when no path exists, and also -1 when the search fails with error Function #1408. It ignores gates, danger and restrictions. NPR fleet allocation, tanker matching and ground deployment sort by it, and the naval admin host list displays it.

The galactic map’s distance labels come from a map distance search from the selected system. With real-space distance checked, it stores the 3D catalogue distance for every system that has a catalogue entry in known-star mode and does nothing in procedural mode. With real-space distance unchecked, it walks explored links breadth first and accumulates kilometres from point to point. Each system’s figure adds the straight leg from its entry point to the system centre. The option to exclude military-restricted points removes those edges. A second, unused map distance search lacks one rule that this one has. That rule re-queues an already visited system when the arrival point’s straight leg plus the route figure stored on that point is below the system’s current figure.

The game has two calculations of the shortest travel distance through Lagrange points, and both give the same value. A system with fewer than two Lagrange points returns the straight distance. Otherwise every pair of distinct points is tried as distance(origin, entry) + distance(exit, destination), with the jump between the two Lagrange points costing nothing. An entry point that is not strictly closer than the best total so far is skipped, and only a strictly shorter total replaces the best.

This distance ranks candidates for stabilisation, refuelling, resupply, salvage, NPR engagement and waypoint spacing. Queue-time shortcut insertion in movement orders is a separate rule owned by movement and logistics.

The NPR salvo-threat check asks whether a fleet can reach any charted jump point within a number of seconds. The answer is yes for the first listed point whose straight distance is below speed x seconds, computed as a whole-number product.

Three adjacency rules share one edge rule. They serve auto-routing, plain explored adjacency and adjacency limited by threat level. A point of this system is an edge when the race has a record with Explored == 1, the point is linked, and either unstabilised points are included or the point itself has a gate. Only the departure end needs the gate. The auto-routing form drops NoAutoRoute systems when asked. The threat-level form keeps neighbours whose system threat level is at or below the maximum. It reads the NPR’s own assessment of each system, so it serves only NPR races.

The system threat levels run from clear = 1 through adjacent to hostile system (2), hostile presence (3) and hostile ships known (4) to recent hostile ships = 5.

An NPR fleet retreating from a threatened system uses the threat-level adjacency to pick retreat neighbours, as described in NPR tactical behaviour.

The reachable-system search for auto-routing expands breadth first through the auto-route edges, dropping NoAutoRoute systems. When asked, it drops systems that are too dangerous and systems controlled by a non-treaty alien. It returns the origin and every reached system. The Naval Organization window’s auto-route destination list runs it with the fleet’s AvoidDanger and AvoidAlienSystems settings and removes the origin.

The nearest auto-route destination search applies the same edges with its own filter set. Danger applies when AvoidDanger is set. The alien filter applies to player fleets only. A shipping-line fleet drops MilitaryRestrictedSystem systems and restricted points. An NPR fleet drops invalid NPR destinations. Each reached system stores its path as numbered steps. The last route point of a system is the highest-numbered step, and the per-system destination search uses that point’s peer as the arrival position. Movement and logistics owns how the steps become transit orders.

The step record stores the first point in the frontier system that links to the candidate. It does not re-check that this point is explored or gated, so a system with two links to the same neighbour can store a different point from the one that admitted the edge.

The danger rating DangerRating is an integer per race and system. Combat adds the truncated damage of each attack record against a ship to the target race’s survey of the combat system. Records against shipyards, populations and ground forces add nothing, because only an attack on a ship names the system survey.

Danger decay runs inside the construction cycle. The cycle fires when current game time - LastGrowthTime exceeds the construction cycle time (MinConstructionPeriod), which defaults to 430,000 seconds, and it passes that whole elapsed time. For each survey with a positive rating, the decay is DangerRating x elapsed days / 365, raised to at least the elapsed days, where elapsed days = elapsed seconds / 86400 with the fraction kept. The rating loses the decay truncated to a whole number and is clamped at 0.

The too-dangerous test is true first when the race is an NPR and its assessment of the system’s threat level is above adjacent to hostile system (2). Otherwise a rating of 0 is safe. A positive rating is safe only when the sum of the class ProtectionValue over every ship of the race’s own fleets in the system is strictly greater.

The protection sum counts only fleets that belong to this survey, which means fleets of the survey’s own race. The freighter transfer search always applies this filter, the alien filter and the military restriction filters. The galactic map’s security display shows the rating against the stored fleet protection value.

The alien-control test depends on the race type. For an NPR it is true exactly when the system’s value is None, whoever controls it. For a player race it is false when the system has no controlling race, when no race stands behind the controller, or when the controller is the race itself. It is true for a controller missing from the race’s alien races and false when the alien record has TradeTreaty.

Two restriction flags exist. MilitaryRestrictedSystem on a race’s system survey closes a whole system to shipping-line routing. MilitaryRestricted on a jump point record closes one point. The non-restricted neighbour filter keeps only neighbours reached through an explored point of this system whose restriction is 0. It assumes the race has a record for every point of the system and that each explored point is linked, so a point the race has no record for makes the filter fail with error Function #3476, and the filter returns no list.

The System View toggle sets the point’s restriction and, when the race explored it, the peer’s restriction too. Setting it asks for confirmation and also clears civilian orders through both points. Civilian economy owns what those orders do afterwards.

Removing a system deletes its bodies, stars, jump points and Lagrange points and then removes the system itself. It does not clear peer links, race surveys, waypoints or populations. The game removes systems this way only in the three generate-and-reject steps for NPR homes, preset NPR homes and created systems, which discard a fresh system before anything links to it. Removing the system frees its number for later rolls.

Removing one jump point finds the point that links to it. It clears that peer’s link, sets its WPLink to 0 and sets Explored = 0 in every race record on the peer. Charted stays. The removed point leaves the game and takes its own race records with it. A peer that is again unlinked can be explored again and reaches a new destination through the selection rules above.

The System View delete button and the removal of a system’s contents use this jump point removal. Those editing paths belong to the Spacemaster tools.

Galactic map positions are per race and live on the race’s system survey as Xcor and Ycor. The horizontal and vertical spacing are fixed at 140 and the grid snap at 20.

Relative placement puts a newly known system next to the origin. The game finds the origin’s linked neighbour that this race knows with the earliest DiscoveredTime. It takes origin - neighbour in X and Y, clamps each to plus or minus 140, and proposes origin + delta. That continues the line from the oldest neighbour through the origin. The Y clamp also uses the horizontal spacing.

When the proposal fails, the game tries eight offsets in this order, (+H, 0), (-H, 0), (0, -V), (0, +V), (+H, -V), (-H, -V), (+H, +V) and (-H, -V) again, where H and V are both 140. The offset (-H, +V) is never tried. A final attempt uses (+H/3, -V/3), which is (+46, -46) by whole-number division. If that fails too, the coordinates stay as they were.

A position is accepted only when no survey of the race, this one included, lies within 140 in both X and Y, using strict comparisons.

Snapping to the galactic grid takes Xcor modulo 20 and Ycor modulo 20. A nonzero remainder below 10 is subtracted, and any other remainder rounds up to the next multiple. The remainder keeps the sign of the coordinate, so a negative coordinate always has a remainder below 10 and moves toward zero. The toolbar snap button applies it to every survey of the race.

Exploration use relative placement. Fleet transfer to another race creates a survey without placing it, so that system keeps the default (0, 0).

The galactic map checkbox “Possible Dormant JP” is saved per race as chkPossibleDormantJP. Its tooltip describes a player flag. With the box checked, a system whose ClosedWP equals 1 gets a yellow status ring. The game sets ClosedWP only from the saved value when a game is loaded, and no generation, exploration or transit rule uses it.

Inputs Outcome
Primary mass 1.0, ExtraJP 0, minimum 0 Stop chances are 10%, then 39%, then 69% on every later pass. The count is 1 with probability 0.10, 2 with 0.351, 3 with 0.379 and 4 with 0.117. The mean is about 2.70.
Black hole mass 120, ExtraJP 8 Start 9. Each pass stops with 10% while the count is 10 or less and with 20% once it is above 10. The mean is about 13.95.
Mass 4.0, d4000 = 2000, not Sol S = 4^(1/3) = 1.587. Distance = 20 x 1.587 = 31.75 AU. No reroll applies.
Sol, d4000 = 3600, then d4000 = 3900 36 AU exceeds 30, so one reroll gives 39 AU, which is kept.
Procedural origin 7, defaults, d100 = 30, d2 = 2, d15 = 12 Local pick 7 - 12 = -5, wrapped to 995.
Procedural origin 990, d100 = 30, d2 = 1, d15 = 15 Local pick 1,005, wrapped to 5.
Procedural, d100 = 80, d1001 = 1 Global pick 0, which is Sol’s number.
Danger 1,000, 432,000 s elapsed Elapsed days 5. Decay 1,000 x 5 / 365 = 13.70, truncated to 13. New rating 987.
Danger 50, 432,000 s elapsed 50 x 5 / 365 = 0.68 is below 5, so decay 5. New rating 45.
Danger 200, three fleets with protection 120, 50, 30 Protection sum 200 is not strictly greater, so the system is too dangerous.
Gate ship with JGConstructionTime 60, commander Production 1.2, crew 300 of 400 60 x 86400 = 5,184,000 s, then 5,184,000 x 0.8 = 4,147,200, then 4,147,200 x 400 / 300 = 5,529,600 s.
Map origin (300, 100), oldest neighbour (100, 120) Delta (200, -20) clamps to (140, -20). Proposal (440, 80).
Map Xcor -35 snapped -35 modulo 20 = -15, which is below 10, so Xcor becomes -20.
Map Xcor 35 snapped 35 modulo 20 = 15, so Xcor becomes 40.

A last-point example follows the same rules. A player race knows three systems with six physical points, and five are linked. Exploring the sixth sets the protection. In procedural mode the game rerolls while each number is in use, up to 20 times. A free number produces a system with at least 2 points, so the race keeps an unlinked point.

Saving deletes and rewrites the game’s rows in each table inside one transaction.

Table Fields written Reload behaviour
FCT_System SystemID, SystemNumber, JumpPointSurveyPoints, age, abundance, star count, dust, Sol flag, supernova state Rebuilds the system. In known-star mode, relinks the catalogue entry whose ID equals SystemNumber. In procedural mode Sol’s new-game link to catalogue entry 0 is not restored, so Sol has no catalogue entry after a reload.
FCT_JumpPoint WarpPointID, SystemID, Distance, Bearing, WPLink, Xcor, Ycor, JumpGateStrength, JumpGateRaceID Rows load ordered by distance. The physical jump point number is recomputed as a running count per system. A second pass rebuilds each link from WPLink.
FCT_RaceJumpPointSurvey Race, point, Explored, Charted, AlienUnits, Hide, MilitaryRestricted, IgnoreForDistance Skips rows whose race or point is missing
FCT_RaceSysSurvey Includes DangerRating, RaidRating, Xcor, Ycor, ClosedWP, NoAutoRoute, MilitaryRestrictedSystem, DiscoveredTime Map coordinates load as whole numbers, and the previous map position resets to them
DIM_KnownSystems Black-hole entries with the game ID, written at creation Loaded with GameID 0 or the current game

The link object itself is not stored, only WPLink. A WPLink that names a missing point makes the link pass fail with error Function #1145. That ends the link pass, so points visited later stay unlinked. Removing a jump point keeps saved links consistent by zeroing the peer’s WPLink. Removing a system does not, but the game discards only unlinked systems that way.

The primary component mass is not saved. When a game is loaded, it is reset from the Mass of the component 1 star’s stellar type, so the scale factor survives a reload.

Fractional map coordinates do not survive. A coordinate saved as 46.5 loads as 46, and 47.5 loads as 48, because an exact half goes to the even neighbour. Snapped positions are whole numbers already.

Runtime state rebuilt or lost on reload includes the numbered auto-route steps, the exploration depth, the last jump distance, the map distance from the selected system, the coverage marks and the record of a race awaiting exploration. None of them is saved. Gate construction progress persists because FCT_MoveOrders saves and loads TimeRequired with the order. Movement persistence covers the rest of the order fields.

Related community documentation and developer posts. These may describe a different game version.