SystemMap enhancements

Freeform discussion about anything related to modding Transcendence.
Post Reply
george moromisato
Developer
Developer
Posts: 2997
Joined: Thu Jul 24, 2003 9:53 pm
Contact:

Prompted by Wolfy and RPC I've made some enhancements to SystemMap to make it easier to make topologies. 1.08e introduces a new element on system maps called <TopologyCreator> which allows you some basic creation of topologies:

Code: Select all

<SystemMap ...>
   <Node id="sys1" ...>
      ...
   </Node>

   <Node id="sys2" ...>
      ...
   </Node>

   <TopologyCreator>
      <Stargate from="sys1:Inbound" to="sys2:Outbound"/>
   </TopologyCreator>
</SystemMap>
The above is the simplest use of <TopologyCreator>. The SystemMap defines two nodes ("sys1" and "sys2") and the topology creator makes a stargate link between the two. The link is a bi-directional link. The advantage of this method is that you don't have to specify any root nodes (which was confusing) nor do you need to specify any stargates in the nodes themselves. The nodes can just specify a position on the map (x,y) and a system type. The TopologyCreator does the work of making stargates.

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>
In this example, the second <Stargate> element has a 50% chance of appearing; Only if it appears does the connection from sys2 to sys3 happen. The TopologyCreator also supports <StargateTable> and <Stargates> (groups).

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>
In the above XML, the <NodeGroup> element defines a set of node + stargates and calls it "imperialRegion1". As with other definitions, this does not automatically create the nodes. Someone still has to refer to "imperialRegion1". The entry in <TopologyCreator> refers to "imperialRegion1" and thus creates it.

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 above defines two SystemMap objects; the first unidLibraryMap is defined inside a library. Because it doesn't have a TopologyCreator element, it doesn't actually create any nodes. But it does define some.

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.
User avatar
Aury
Fleet Admiral
Fleet Admiral
Posts: 5421
Joined: Tue Feb 05, 2008 1:10 am
Location: Somewhere in the Frontier on a Hycrotan station, working on new ships.

Can't wait to try this out!

So linking to any node in a nodegroup allows us to connect to a different nodegroup/topology, and also creates the full nodegroup? or do we need to first reference the nodegroup, and then link it?
(shpOrder gPlayership 'barrelRoll)
(plySetGenome gPlayer (list 'Varalyn 'nonBinary))
Homelab Servers: Xeon Silver 4110, 16GB | Via Quadcore C4650, 16GB | Athlon 200GE, 8GB | i7 7800X, 32GB | Threadripper 1950X, 32GB | Atom x5 8350, 4GB | Opteron 8174, 16GB | Xeon E5 2620 v3, 8GB | 2x Xeon Silver 4116, 96GB, 2x 1080ti | i7 8700, 32GB, 6500XT
Workstations & Render machines: Threadripper 3990X, 128GB, 6900XT | Threadripper 2990WX, 32GB, 1080ti | Xeon Platinum 8173M, 48GB, 1070ti | R9 3900X, 16GB, Vega64 | 2x E5 2430L v2, 24GB, 970 | R7 3700X, 32GB, A6000
Gaming Systems: R9 5950X, 32GB, 6700XT
Office Systems: Xeon 5318Y, 256GB, A4000
Misc Systems: R5 3500U, 20GB | R5 2400G, 16GB | i5 7640X, 16GB, Vega56 | E5 2620, 8GB, R5 260 | P4 1.8ghz, 0.75GB, Voodoo 5 5500 | Athlon 64 x2 4400+, 1.5GB, FX 5800 Ultra | Pentium D 3.2ghz, 4GB, 7600gt | Celeron g460, 8GB, 730gt | 2x Athlon FX 74, 8GB, 8800gts 512 | FX 9590, 16GB, R9 295x2 | E350, 8GB | Phenom X4 2.6ghz, 16GB, 8800gt | random core2 duo/atom/i5/i7 laptops
RPC
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?

This look great! If only it came sooner ;D
Is it possible to make a gate go in one direction? I'm thinking about making a tutorial system for Star Network and I don't want it accessible if the Player decides to leave.
Tutorial List on the Wiki and Installing Mods
Get on Discord for mod help and general chat
Image
Image
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.
User avatar
alterecco
Fleet Officer
Fleet Officer
Posts: 1658
Joined: Wed Jan 14, 2009 3:08 am
Location: Previously enslaved by the Iocrym

RPC wrote:This look great! If only it came sooner ;D
Is it possible to make a gate go in one direction? I'm thinking about making a tutorial system for Star Network and I don't want it accessible if the Player decides to leave.
Just destroy the gate back after the player has entered. Or just use script to gate the player to whereever you want him, no topology needed.
Get your own Galactic Omni Device
Get it now. It's free!!
Image
User avatar
digdug
Fleet Admiral
Fleet Admiral
Posts: 2620
Joined: Mon Oct 29, 2007 9:23 pm
Location: Decoding hieroglyphics on Tan-Ru-Dorem

this is a great improvement. I would definitely try this out.
RPC
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?

alterecco wrote:Just destroy the gate back after the player has entered. Or just use script to gate the player to whereever you want him, no topology needed.
Hmm yeah, good point.
Tutorial List on the Wiki and Installing Mods
Get on Discord for mod help and general chat
Image
Image
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.
george moromisato
Developer
Developer
Posts: 2997
Joined: Thu Jul 24, 2003 9:53 pm
Contact:

Wolfy wrote:Can't wait to try this out!

So linking to any node in a nodegroup allows us to connect to a different nodegroup/topology, and also creates the full nodegroup? or do we need to first reference the nodegroup, and then link it?
You first need to reference the nodegroup and then link to anything in it. If you don't reference the nodegroup then only the node that you reference will be created.
george moromisato
Developer
Developer
Posts: 2997
Joined: Thu Jul 24, 2003 9:53 pm
Contact:

RPC wrote:This look great! If only it came sooner ;D
Is it possible to make a gate go in one direction? I'm thinking about making a tutorial system for Star Network and I don't want it accessible if the Player decides to leave.
Yes. It is not well-tested, but you can add:

oneWay="true"

to a <Stargate> element.
RPC
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?

Ok, so I typCreated this:
http://paste.neurohack.com/view/YdaRP/
Stargates aren't showing up, yet clearly there is:
<Stargate from="SE:Yoshiosakai1" to="Yoshiosakai:SE2"/>
But it didn't show on the map.
Does that mean that I need to make the <SystemTypes> have the right amount of gates or something?
I thought topologyCreator made the gates irregardless...
1.08f btw.
Image
Tutorial List on the Wiki and Installing Mods
Get on Discord for mod help and general chat
Image
Image
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.
User avatar
Xanthe V
Miner
Miner
Posts: 36
Joined: Sat Aug 18, 2012 3:38 am
Location: CSC Terra

AGH! I cannot get my mod working with a root element and i'm just too pissed!! AAAGH! I don't know any root element codes! Somebody help me PLZZZZ!! :cry:

(By the way, my username 4 Xelerus is Alfael V)
Let's get this show on the road.

By the way, my username on Xelerus is Alfael X. heheheh... ;-)

Stats:

-A pilot of a Stalwart-class gunship

-Fleet Lieutenant of the Commonwealth Fleet

-A new Xelerus user
RPC
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?

Xanthe V: can you make a new thread? Also, give more info, root element is a bit vague o.O
This might help (look at the tutorial part)
http://wiki.neurohack.com/transcendence ... /tutorials
Tutorial List on the Wiki and Installing Mods
Get on Discord for mod help and general chat
Image
Image
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