Making Stargate Topology

This is a moderated forum that collects tutorials, guides, and references for creating Transcendence extensions and scripts.
Post Reply
Drako Slyith
Fleet Officer
Fleet Officer
Posts: 1036
Joined: Wed Feb 03, 2010 4:28 am
Location: Researching how to make St. Kats star go supernova.

Sun Mar 20, 2011 7:37 am

Here I will try to explain how to build a custom topology in transcendence. The examples for this will be from my own Network mod.

First, you need to have a <TranscendenceAdventure> mod. You can't overwrite the vanilla topology.

Once you have that and the normal Adventure data established (you can just copy-paste from Transcendence.xml) You can get started. First, make sure <AdventureDesc> is closed.
If you want to have a galactic map, have the code like this:

Code: Select all

<SystemMap unid="&myMap;"
      name="Galactic Map"

Otherwise, have just the <SystemTopology>

Now you need to have nodes, which are what systems essentially are. Start with explaining some info in the open tag:

Code: Select all

<Node ID="Z4" x="150" y="-100">
All nodes must have an ID. This can be anything, but make sure it is not the same as anything else. A numeric system helps with this. You can also put

Code: Select all

this says it will always exist in the game.
The x="" and y="" are used for the Galactic map. They are the coordinates on the map where the system is. The scale is the same as the "sizeX" and "sizeY" in the <GalacticMap>.

Then you have the system data:

Code: Select all

					level=				"9"
					attributes=			"outerRealm"
					variant=			"ungoverned"
This makes a system level 9 which is "outerRealm" and "ungoverned". Really the most important thing here is the level. It determines weather or not you get ares or charon, ranx or centauri.

Next, you have yet more system data. This can be in a table or just by itself:

Code: Select all

					<System chance="25" name="Centurian"		UNID="&ssEarthSpaceStandard;"/>
					<System chance="25" name="Nickoli"		UNID="&ssEarthSpaceNebulae;"/>
					<System chance="25" name="Coperinicum"		UNID="&ssEarthSpaceAsteroids;"/>
					<System chance="25" name="Coperinicai"		UNID="&ssEarthSpaceVolcanic;"/>
This determines the name, and type of the system. In the UNID you can also have specific UNID systems:

Code: Select all

<System name="Ares" UNID="&ssAresPrime;"/>
Then, you close the first <Systems> tag.

Now, you need to say what your stargates are. This is critical. A system without stargates (unless it's a rootNode) won't exist. All systems have to be connected to a root node. Start with a stargate tag:

Code: Select all

Then, you have the individual stargates in it.

Code: Select all

				<StarGate Name="Inbound" DestID="[prev]" DestGate="Outbound"/>
This takes a stargate named Inbound in the system and connects it to the gate named Outbound in the system the player came from. Beware the [Prev] tag if you aren't making a strait path. If you have 3 or more stargates, there is a chance it will go to the system the extra stargate is connected to. If the system doesn't have a stargate named Inbound, it just doesn't use this. Likewise, if the system has a stargate but the node doesn't use it, the unused stargate is not created. However, if you travel through Inbound and the last system doesn't have a stargate named Outbound, then the game will crash.

You can put however many stargates you want into a system. In my Network mod, Rigel has 6 of them:

Code: Select all

				<StarGate Name="Inbound" DestID="C3A" DestGate="Outbound"/>
				<StarGate Name="Outbound" DestID="C4" DestGate="Inbound"/>
				<StarGate Name="Bran2In" DestID="Z1" DestGate="Outbound"/>
				<StarGate Name="Bran2Out"DestId="Z2a"DestGate="Inbound"/>
				<StarGate Name="Bran3In"	DestID="Z6" DestGate="Outbound"/>
				<StarGate Name="Bran3Out"	DestID="Z7a"DestGate="Inbound"/>
make sure that you have the correct nodeID specified. Otherwise, it could send you halfway around the galaxy. And make sure that Outbound goes to Inbound and Inbound goes to Outbound, so stargates become 2-way.
Once you have a node working, you can build more off of it. Connect the stargates, and you can have a whole maze of stargates ready to play.

Things to keep in mind:
-Eridani's nodeID is SE. Playerships (unless otherwise specified) will spawn at the node named SE at the stargingpoint marker. You have to have this marker

Code: Select all

										<Marker objName="Start"/>
in the system under the node SE to let all the playerships spawn from that point.
-Make stargates 2-way unless you don't for a specific purpose. It seems fun at first, but nobody plays a mod that makes no sense. Stargates just work better 2 way.
-Make the levels go up steadily, but not drastically. If you jump from level 2 to 5, the player will be killed almost instantly.
-Don't rush building stargates. I went quickly when building the Network and thus had a million problems to sort out. Don't make that mistake.
-If you're making a galactic map, make sure the systems are at least 15 y above one another unless they're over about 50 x from each other. The name can get overlapped, and make the map useless.
-make sure the nodes on the map have a logical location. Don't zip around randomly. Have a steady path the player can follow.

I hope this has been helpful to you. You may find it useful to look inside the Transcendence.xml for vanilla topology or my own mod's Network.xml for complicated topology.
Play in over 100 systems in a network. Play the 2011 Mod Of the Year
and the highest rated mod on Xelerus, The Network.
Play the July Mod of the Month, Fellow Pilgrims!
Play My other mods as well
(Drako Slyith)* I am a person
(Eliza chatbot)> Do you believe it is normal to be a person?

User avatar
Fleet Admiral
Fleet Admiral
Posts: 2876
Joined: Thu Feb 03, 2011 5:21 am
Location: Hmm... I'm confused. Anybody have a starmap to the Core?

Sun Mar 20, 2011 4:39 pm

For Custom Topology it's:
I will use [optional][/optional] to denote optional tags.

Code: Select all

		  UNID=            "0xE1280001" 
		  version=         "1.0" 
		  name="Dynamic Systems"
			UNID=            "@1" 
			name=            "Dynamic Systems" 
			backgroundID=      ""
			startingShipCriteria="* +Nerefir"
		<SystemMap unid=""
		  name=			""
		  sizeX=		""
		  sizeY=		""
					<Node ID="" [optional]x=""y="" rootNode=""[/optional]>
							level=			""
							attributes=		""
							variant=		""
								<System chance="" name="" UNID="ssTableHere"/>
							<StarGate Name="Inbound" DestID="[Prev]" DestGate="Outbound"/>
							<StarGate Name="Outbound" DestID="NextNodeID" DestGate="Inbound"/>
Why does @1 work for AdvDesc UNID???
So really, to make complicated Topology you must just keep track of the <StarGates> tag and your NodeIDs.
Thanks Drako!
Tutorial List on the Wiki and Installing Mods
Get on Discord for mod help and general chat
Der Tod ist der zeitlose Frieden und das leben ist der Krieg
Wir müssen wissen — wir werden wissen!
I don't want any sort of copyright on my Transcendence mods. Feel free to take/modify whatever you want.

Post Reply