Table of Contents

Summary

Overview

<SystemType> defines a type of star system. The type describes the creation of a star system, including the random placement of planets and stations. In addition, a SystemType may have handle events while the player is in the system.

Multiple instances of a star system can be created from a single SystemType.

Basic Attributes

UNID= The UNID of the system type.

noExtraEncounters= Some <StationType> encounters have a minimum number per game (by using the minAppearing= parameter). In those cases, we sometimes need to create stations in random systems, regardless of the <SystemType> directives. By setting noExtraEncounters=“true” you are specifying that this system type should not get any of those stations. [API Version 23+]

noRandomEncounters= If set to “true”, this indicates that there should be no random patrols in the system.

spaceScale= This sets the number of kilometers per pixel, or 1/24th the length of a light-second. By default, this is 12500. Setting this to other values will affect the way distances are shown in the game.

timeScale= This sets the number of game seconds that pass each real-time second. By default, this is 60. Setting this to other values will speed up or slow down the in-game speed. However, certain stats such as weapon fire rates, projectile lifetimes, and ship rotations do not seem to be affected

Creating a Star System

To create a star system from a SystemType definition, the engine looks for the <SystemGroup> element in the SystemType.

The SystemGroup element contains a sequence of directives, each of which is processed in sequence to create the contents of the system. For example, a directive like <Station type=“…” …/> creates a station in the system of the given type.

For example:

 <SystemGroup>
    <Station {a star type} />
 </SystemGroup>
 

In this example we create a single star at the center of the system (coordinates 0,0).

Some directives are used to define positions within the system. A positional directive can contain other directives, which then inherit the position defined.

For example:

<SystemGroup>
   <Orbitals distance="30" angle="random">
      <Station ... />
   </Orbitals>
</SystemGroup>

This Orbitals directive defines an orbit with a radius of 30 light seconds; a random position on the orbit is chosen. All of the directives inside the Orbitals directive inherit this new position.

Of course, an Orbitals directive can contain another Orbitals directive inside it. In that case, the nested Orbitals uses the inherited position as its center point. This can be useful, for example, to create a moon around a planet. For example:

<SystemGroup>
   <Station {a star type} />
   
   <Orbitals distance="30" angle="random">
      <Group>
         <Station {a planet type} />
      
         <Orbitals distance="10" angle="random">
            <Station {a moon type} />
         </Orbitals>
      </Group>
   </Orbitals>
</SystemGroup>

The above creates a planet with an orbit of 30 light-seconds around a star. Around the planet, it creates a moon with an orbit of 10-light-seconds.

Directives

The following directives are defined:

<AddAttribute>

<AddTerritory>

<AntiTrojan>

<Code>

<FillLocations>

<FillRandomLocation>

<Group>

<Label>

<LevelTable>

<LocationCriteriaTable>

<Lookup>

<Marker>

<Offset>

Offset is a positional directive that alters a position either by Cartesian or polar coordinates. It defines a new circular orbit, centered on the original position and reaching out to the offset position.

To specify a Cartesian offset, use the xOffset and yOffset parameters. The position will be adjusted by the given amount. The scale parameter is used to determine dimensions. For polar offsets, use the angle and radius parameters. [Note: You should not specify both sets of offset, but if you do, angle/radius will take precedence.]

Any number of child directives may be inside an Offset directive; they will all be given the same orbit and position.

The following parameters are supported:

angle= The angle for the offset. This is valid only if a radius parameter is specified. The angle is specified in degrees.

count= This is a dice range specifying the number of objects to create. If omitted we assume a count of 1. If there are multiple child directives, each is created in sequence until the count is reached.

radius= The radius of the offset. You must specify an angle parameter.

scale= This optional parameter specifies the scale to use for distance numbers. Defaults to “light-second”.

xOffset= This is a dice range specifying the offset distance along the x-axis.

yOffset= This is a dice range specifying the offset distance along the y-axis.

<Orbitals>

<Particles>

<PlaceRandomStation>

<Primary>

<RandomLocation>

<RandomStation>

<Ship>

<Siblings>

Siblings is a positional directive that alters an orbital position radially (increasing or decreasing the radius) and/or along the arc of the orbit. It is used, for example, to define a position ahead or behind an object in an orbit.

Since Siblings needs an orbit, it must be inside of an Orbitals element.

The Siblings directive has a single child directive, which it processes according to the Siblings parameters.

The following parameters are supported:

angle=

angleInc=

arcInc=

count= This is a dice range specifying the number of objects to create. If omitted we assume a count of 1.

distribution= If present, this is a dice range specifying the radial adjustment to the orbit. For example, if set to “-10-10” then the radius of the orbit will be randomly adjusted by between -10 and 10 light-seconds. The position around the orbit is randomly selected.

radiusDec=

radiusInc=

scale= This optional parameter specifies the scale to use for distance numbers. Defaults to “light-second”.

<SpaceEnvironment>

<Stargate>

<Station>

<Table>

<Trojan>

<Variants>

There is more information for later versions in this post.