Star System Topology defines the connections between star systems in the game. The vanilla version of the game makes use of a simple linear model, but the game accepts much more complex and dynamic topology structures.
You will need the game xml data to view the topology, extracted from the tdb using TransData.
Star System Topology is located within the main Transcendence.xml file. Open using a basic word pad, and Find:
Code: Select all
<!-- Star System Topology ****************************************************************** ->
Some time spent looking at the structure of the code in those two tags is beneficial, but for designing topology you will mainly focus on the <StarSystemTopology> tag. Knowing the names of the systems is important, that is why you will want to look in the <SystemTypes> tag for reference. The names of the star systems come in this format:
Code: Select all
UNID="&ssEarthSpaceStandard;"/>
If you know the list of available systems (an easy way is to look in the entities listing at the top of the Transcendence file...) you can use them when designing a star network. ***You must define at least one system UNID to each topology node.
The <StarSystemTopology> tag contains <Node> tags. Each <Node> tag represents a system or possible system within the star network. The structure of the Node tag is very simple:
Code: Select all
<Node ID="SE" rootNode="true">
<System name="Eridani" level="1">
<System UNID="&ssStartonEridani;"/>
</System>
<StarGates>
<StarGate Name="Outbound" DestID="C1" DestGate="Inbound"/>
</StarGates>
</Node>
( I removed the Debug gate from this example )
rootNode is a special case that allows a Node to be disconnected from the system in some ways. Only Eridani and Elysium make use of this feature in the vanilla topology.
Node tags then contain 2 tags that define information for the system. The System tag and the StarGates tag. In the above example, there is only one gate. The number of gates listed in the tag must match the number of gates placed in the system by the <SystemType> definition. The standard set of random system types uses 2 gates, Inbound and Outbound; Eridani is unique, it's system type definition only contains the one Outbound gate.
Both the System and the StarGates tags can make use of Tables to create a random array:
Code: Select all
<Node ID="C3">
<System level="2" variant="commonwealth">
<Table>
<Item chance="25" name="Orgos" UNID="&ssEarthSpaceStandard;"/>
<Item chance="25" name="Ross 248" UNID="&ssEarthSpaceRedDwarf;"/>
<Item chance="25" name="Cairn" UNID="&ssEarthSpaceAsteroids;"/>
<Item chance="25" name="Ras Alhague" UNID="&ssEarthSpaceDesert;"/>
</Table>
</System>
<StarGates>
<StarGate Name="Inbound" DestID="Prev" DestGate="Outbound"/>
<Table>
<StarGate chance="50" Name="Outbound" DestID="C3A" DestGate="Inbound"/>
<StarGate chance="50" Name="Outbound" DestID="BA" DestGate="Inbound"/>
</Table>
</StarGates>
</Node>
Also note that the Outbound StarGate gives a choice of where to go. Some games you get C3A, some you don't ever see it.
That is an important feature to make use of when designing dynamic topologies. Understanding how the tables can be used in the Node structure will open the doors to much more complex topology designs.
You can also construct a <System> tag to use a static name but select from an array of system types:
Code: Select all
<Node ID="RC4AB1DA">
<System name="Makinupnames" level="3">
<Table>
<Item chance="17" UNID="&ssFrontierStandard2;"/>
<Item chance="8" UNID="&ssFrontierNebulae2;"/>
<Item chance="17" UNID="&ssFrontierAsteroids2;"/>
<Item chance="8" UNID="&ssFrontierVolcanic2;"/>
<Item chance="17" UNID="&ssHostileStandard2;"/>
<Item chance="8" UNID="&ssHostileNebulae2;"/>
<Item chance="17" UNID="&ssHostileAsteroids2;"/>
<Item chance="8" UNID="&ssHostileVolcanic2;"/>
</Table>
</System>
<StarGates>
<StarGate Name="Outbound" DestID="RC4AB1D" DestGate="Inbound"/>
<StarGate Name="Inbound" DestID="RC4AB1DB" DestGate="Inbound"/>
</StarGates>
</Node>
Code: Select all
<Node ID="SE" rootNode="true">
<System name="Eridani" level="1">
<System UNID="&ssStartonEridani;"/>
</System>
<StarGates>
<Table>
<StarGate chance="1" Name="Outbound" DestID="lineC1A" DestGate="Inbound"/>
<StarGate chance="1" Name="Outbound" DestID="lineC1B" DestGate="Inbound"/>
<StarGate chance="1" Name="Outbound" DestID="lineC1C" DestGate="Inbound"/>
<StarGate chance="1" Name="Outbound" DestID="lineC1D" DestGate="Inbound"/>
<StarGate chance="1" Name="Outbound" DestID="AloopC1" DestGate="Inbound"/>
<StarGate chance="1" Name="Outbound" DestID="BloopC1" DestGate="Inbound"/>
<StarGate chance="1" Name="Outbound" DestID="1DloopC1" DestGate="Inbound"/>
<StarGate chance="1" Name="Outbound" DestID="2DloopC1" DestGate="Inbound"/>
<StarGate chance="1" Name="Outbound" DestID="NetC1" DestGate="Inbound"/>
<StarGate chance="91" Name="Outbound" DestID="SKoneC1" DestGate="Inbound"/>
</Table>
</StarGates>
</Node>
In the StarGate tag, the Name is the gate you will be using (Inbound or Outbound for vanilla), the DestID is the Node you are gating to, and the DestGate is the gate you are targeting. Most nodes in the vanilla version make use of the Inbound gate for entry, and it's DestID is set to use the special "Prev" ID. Prev makes the gate that uses it target the node you entered from. In a linear system with some random nodes to choose from, this feature allows the return link to be created- otherwise you wouldn't know which node to return to. This is used for 2 way gate systems. One way gate systems can be made to work, and can be fun for maze type structures.
Because the vanilla version systems only make use of an Inbound and Outbound gate, you can't get very sophisticated networks built. To make the jump into networks and multi-linked star systems you will need to expand the placed gates in the systems. The fastest way to do this is to grab my mod, Stone Soup Transcendence, which has multi gate versions of all the systems ready to go, and a whole bunch of other features built in to help topology designing.
Multi gate and networked topologies are a little more than this tutorial was meant to go into, my intent was to present the basics for anyone to use to get familiar with the current topology system. Once you begin to understand the Node structure and the way that gates are pointed to other nodes, and how to use Prev and Tables to create some dynamic features, you will be ready for extreme topology modding!
Take a good long look at the original topology, and then try comparing it to the modded topologies. With a little time spent experimenting you can easily grasp the fundamentals of topology modding. And just in time! George will be incorporating the means to make topologies in extensions, so we can easily design and mod to our heart's content!