Code: Select all
<SystemMap ...>
<Node id="sys1" ...>
...
</Node>
<Node id="sys2" ...>
...
</Node>
<TopologyCreator>
<Stargate from="sys1:Inbound" to="sys2:Outbound"/>
</TopologyCreator>
</SystemMap>
Note: As in previous schemes, a node is not created unless referenced. The TopologyCreator causes a reference and thus causes both sys1 and sys2 to be created. But if the SystemMap defined a "sys3" and it was not referenced anywhere, then it will not be created. This is useful if you want systems to sometimes appear:
Code: Select all
<SystemMap ...>
<Node id="sys1" ...>
...
</Node>
<Node id="sys2" ...>
...
</Node>
<Node id="sys3" ...>
...
</Node>
<TopologyCreator>
<Stargate from="sys1:Inbound" to="sys2:Outbound"/>
<Stargate chance="50" from="sys2:Inbound" to="sys3:Outbound"/>
</TopologyCreator>
</SystemMap>
Another addition is a <NodeGroup> which allows you to define groups of nodes that should be created together. For example:
Code: Select all
<SystemMap ...>
<Node id="sys1" ...>
...
</Node>
<Node id="sys2" ...>
...
</Node>
<Node id="sys3" ...>
...
</Node>
<NodeGroup id="imperialRegion1">
<Stargate from="sys1:Inbound" to="sys2:Outbound"/>
<Stargate chance="50" from="sys2:Inbound" to="sys3:Outbound"/>
</NodeGroup>
<TopologyCreator>
<Node id="imperialRegion1"/>
</TopologyCreator>
</SystemMap>
Why go through the trouble of indirection? After all, you could just define everything within TopologyCreator. The advantage is that <TopologyCreator> can refer to nodes and node regions on other maps not just its own. For example:
Code: Select all
<SystemMap UNID="&unidLibraryMap;">
<Node id="sys1" ...>
...
</Node>
<Node id="sys2" ...>
...
</Node>
<Node id="sys3" ...>
...
</Node>
<NodeGroup id="imperialRegion1">
<Stargate from="sys1:Inbound" to="sys2:Outbound"/>
<Stargate chance="50" from="sys2:Inbound" to="sys3:Outbound"/>
</NodeGroup>
</SystemMap>
<SystemMap UNID="unidAdventureMap"
displayOn="&unidLibraryMap;"
>
<TopologyCreator>
<Node id="imperialRegion1"/>
</TopologyCreator>
</SystemMap>
The second map is defined in an adventure. It has a TopologyCreator that refers to elements in the library map. Thus a library could have many different pre-built topologies and an adventure can choose one (either randomly or not).
This is the method that I want to use for the Human Space library. The Human Space library will define various regions, including the New Beyond, Outer Realm, etc. An individual adventure can then use those regions in its own maps without having to redefine them. This will make it easier to mix-and-match topologies.