Making a System
Posted: Sun Mar 20, 2011 7:05 am
RPC recently requested this; a tutorial on how to make a system. I'll have a lot of examples from &ssEridani
After you have the start tag:
you have the option to set some tables:
These can be drawn later for simplicity.
Next, you make the actual system. Begin with a to set the start of the system itself.
Every system needs a central point. In all vanilla systems, this is a star.
Notice you have the option to name it. This doesn't really do anything now, but it's a nice touch.
To put a planet in orbit you need to have the <Orbitals> tag:
Distance can be changed to anything. Another option is
I believe this has equal distance to the "50". This puts a point where you can put in new stations.
Now you can put in groups to put in planets. <Group> is used to put an imaginary marker in the spot where you can have multiple stations. Put this in an <Orbitals> tag.
The <Group> tag can (but does not have to) have the same descriptions as <Orbitals>. This would put it a distance away from the point put there by the <Orbitals> tag.
Group tags then can have a tag <Primary> This can have a station under it. It puts the station on the point placed by the Group/Orbitals tags.
Then you have another <Orbitals> tag with the distance and angle information in it.
Under this tag you can put in the stations, or draw a list from the <Tables> section.
To but a moon in, under the second <Orbitals> tag put in a second planet. To put stations in orbit have this:
You can continue to put in the planets until you're satisfied.
To put in an asteroid belt, it helps to have a <Table> stored with several asteroids.
For some reason it seems all <Trojan>s need to have an <AntiTrojan> Alternatively, you can have
This makes between 10-100 &stStation;s 5-40 distance away at a random angle. <Trojans> seem to be a cleaner way to do it. <Orbitals> seems to have a limited range.
Another type of system you can create is a random station. This is used a lot in vanilla Transcendence.
These usually have no tables inside them. It just goes right to <SystemGroup>
The example here will come from the Transcendence standard system.
Each one has a base type: That in of itself deals with the planets of the system, placing them randomly.
Then, tell the game to make the stargates:
You can actually use this format to make any station at all. i.e.
This makes a &stStation; away from a planet, rarely in an asteroid belt an very likely in an empty space. I think you can also use <Group> to make a preset group of stations.
You can also use the above <RandomLocation> to put in random stations:
This has a 90% chance of making a <RandomStation> in the life zone and next to a planet. The <RandomStation> is a station with the "primary" and "friendly" attributes.
Another useful tag is the <FillLocations> tag.
This fills the system 80 of what the system considers full. The stations have the attributes in stationCriteria. You can customize the percent of stations that are enemies, and whether to group the sovereigns together.
Last, you can have a simple <Orbitals> tag to have groups orbit the star. You can put certain stations or random stations.
Just some extra information:
-All systems must have two stargates unless they are special systems, only Eridani in vanilla.
-All systems need to have a central point. Though it seems like it would work without it, it doesn't. If you want to have nothing there, make a station without an image as a background object.
-All systems should have some friendly station in them. Otherwise, fuel runs out or the player is hunted down by enemies.
-Don't put too many warring factions in the same map; it tends to lag computers with all the fighting
-Don't make the map much larger than 15 light seconds radius. Missions become too long, and it's hard for the player to go where they need to
Of course, the best way to learn this is by searching through systems in the Transcendence.xml and subsequent files.
After you have the start tag:
Code: Select all
<SystemType UNID="&ssStartonEridani;">
Code: Select all
<Tables>
<DanteStations>
<Table>
<Station chance="45" type="&stMiningColony;"/>
<Station chance="25" type="&stCentauriCamp;"/>
<Station chance="10" type="&stCharonPirateOutpost;"/>
<Station chance="5" type="&stCommonwealthSlums;"/>
<Station chance="5" type="&stFuelDepot;"/>
<Null chance="10" />
</Table>
</DanteStations>
</Tables>
Next, you make the actual system. Begin with a
Code: Select all
<SystemGroup>
Every system needs a central point. In all vanilla systems, this is a star.
Code: Select all
<Station type="&stG-TypeStar;" name="Epsilon Eridani"/>
To put a planet in orbit you need to have the <Orbitals> tag:
Code: Select all
<Orbitals distance="50" angle="random">
Code: Select all
distance="5" scale="lightyear"
Now you can put in groups to put in planets. <Group> is used to put an imaginary marker in the spot where you can have multiple stations. Put this in an <Orbitals> tag.
The <Group> tag can (but does not have to) have the same descriptions as <Orbitals>. This would put it a distance away from the point put there by the <Orbitals> tag.
Group tags then can have a tag <Primary> This can have a station under it. It puts the station on the point placed by the Group/Orbitals tags.
Then you have another <Orbitals> tag with the distance and angle information in it.
Under this tag you can put in the stations, or draw a list from the <Tables> section.
To but a moon in, under the second <Orbitals> tag put in a second planet. To put stations in orbit have this:
Code: Select all
<Station type="&stPlanetoid;">
<Orbitals distance="5" angle="random">
<Station type="&stStation;"/>
</Orbitals>
</Station>
To put in an asteroid belt, it helps to have a <Table> stored with several asteroids.
Code: Select all
<Group chance="50">
<Trojan>
<Lookup table="StJohnTrojans"/>
<Orbitals distance="1d8+6" angle="random">
<Station type="&stRaisuStation;" />
</Orbitals>
</Trojan>
<AntiTrojan>
<Lookup table="StJohnTrojans"/>
<Orbitals distance="1d8+6" angle="random">
<Lookup table="StJohnTrojanStations"/>
</Orbitals>
</AntiTrojan>
</Group>
Code: Select all
<Orbitals distance="5d8" angle="random" count="10d10">
<Station type="&stStation;"/>
</Orbitals>
Another type of system you can create is a random station. This is used a lot in vanilla Transcendence.
These usually have no tables inside them. It just goes right to <SystemGroup>
The example here will come from the Transcendence standard system.
Each one has a base type:
Code: Select all
<Lookup table="YellowStarSystem"/>
Then, tell the game to make the stargates:
Code: Select all
<RandomLocation locationCriteria="++OuterSystem,-asteroids,-gasgiant">
<Lookup table="StargateInbound"/>
</RandomLocation>
<RandomLocation locationCriteria="++InnerSystem,-asteroids,-gasgiant">
<Lookup table="StargateOutbound"/>
</RandomLocation>
Code: Select all
<RandomLocation locationCriteria="!Planet,--asteroids,++void">
<Station type="&stStation;"/>
</RandomLocation>
You can also use the above <RandomLocation> to put in random stations:
Code: Select all
<RandomLocation probability="90" locationCriteria="++LifeZone,*planet">
<RandomStation stationCriteria="*friendly,*primary"/>
</RandomLocation>
Another useful tag is the <FillLocations> tag.
Code: Select all
<FillLocations
percentFull= "80"
stationCriteria= "!primary,!debris,+envWater,-envAvoidsWater"
percentEnemies= "65"
separateEnemies= "true"
/>
Last, you can have a simple <Orbitals> tag to have groups orbit the star. You can put certain stations or random stations.
Just some extra information:
-All systems must have two stargates unless they are special systems, only Eridani in vanilla.
-All systems need to have a central point. Though it seems like it would work without it, it doesn't. If you want to have nothing there, make a station without an image as a background object.
-All systems should have some friendly station in them. Otherwise, fuel runs out or the player is hunted down by enemies.
-Don't put too many warring factions in the same map; it tends to lag computers with all the fighting
-Don't make the map much larger than 15 light seconds radius. Missions become too long, and it's hard for the player to go where they need to
Of course, the best way to learn this is by searching through systems in the Transcendence.xml and subsequent files.