Difference between revisions of "Age Linking Rules"

(Remove bottom link.)
m (Advanced Linking Rules: Fix word choice.)
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
The following information about Linking Rules was provided to me from D'Lanor. While some of this may not seem important, it actually is VERY important if you are building Ages that you plan or hope will be on a game server.
+
==What are Linking Rules?==
  
=='''Linking Rules - What Are They?'''==
+
In Uru, like all games in the Myst universe, Linking Books are the primary method provided to players for moving around between worlds.  They are often found as rewards, but just as often are simply a part of the journey, and sometimes even part of a puzzle.  Most of the time, linking with a book is straightforward: the player clicks on a book to examine it up close, and then if they choose to follow the link, they place their hand on the "linking panel" image and are transported to a new location.  How Uru decides where to take the player is not so simple, however.
  
Linking Rules are just that: Rules about the avatar when he or she links to another Age.  
+
Behind the scenes in Uru there are different methods of linking the player, and the Age builder should be mindful of using the correct method.  Due to Uru's use of [[Age Instancing|Public and Private instances]], the game requires hints provided by the Age builder on how to construct the link and therefore where to send the player.  For example: when a player is in a neighborhood, the Garden books lead to instances of those Gardens which belong to that neighborhood and are only accessible through it.  Likewise, Bahro stones found on Yeesha's journey take the player to a version of Ae'gura which collectively belongs to their neighborhood instead of the public version.  Yet the books in Yeesha's journey take the player to their own solitary, private instances.  Where the player should end up is up to the design of the Age builder; it can be a bit complicated to grasp at first, but is crucial to get right in the multiplayer environment of Uru.
  
Most people will think that Linking is just Plasma's way of exiting one Age and loading up another. While it is true that "Linking" is simply the game engine's way of getting you from point A to point B, Uru has some very special conditions that you do not see on too many other online games.
+
==Linking Rules==
  
When you play a FPS (First Person Shooter) type of game, you normally have 2 modes that you play: Offline (known also as Stand Alone or Solo) and Online (your computer is communicating with a game server and you will be interacting with other live people, also known as Multiplayer).
+
[[File:LinkingRules.png|right|Linking Rule Option Selection]]
Most of these types of games will have 2 sets of "Maps" (you can think of them as "Ages") one set is for Solo play, the other is for Multiplayer. The reason for this, is that when playing Solo, you'll have certain events (like a movie cut scene) that you don't want happening when you play Multiplayer. The Multiplayer version of the maps tend to be simply an "empty" map that has just all the objects in the map rendered.  
+
  
Uru on the other hand, does NOT have multiple versions of the game "Maps" (known as "Ages"). You do not have a Solo version of Teledahn and then a Multiplayer version of Teledahn.
+
In order to specify what sort of instance the player should be sent to, the Age creator selects one of the few available Linking Rules when constructing the Link.
What you have is ONE single version of Teledahn in your "dat" folder of your game.
+
  
Yes, things change in your Teledahn that you caused: The power is on, and the elevator is unlocked. The reason that the power doesn't shut down and the elevator becomes locked again when you link in another time is because of your SDL file.
+
When working with Cyan's PlasmaMax plugin, the Linking Rule is specified on a Responder with a Link action. When using Korman, it's specified in the [[Korman:Linking_Books|Linking Book Modifier]] (or the [[Korman:Linking_Books|Link to Age Message]] in an advanced logic node tree):
  
The game engine uses a special file, who's extension is known as .sdl. You can find these files in the "sdl" folder of your game. And you'll notice that each Age has it's own .sdl file. The game engine looks in here to see what the state of things are suppose to be in your Age, and sets them according to what this file says. If you change something (IE you shut the power back off), the game will write this in, so that the next time you link in, the power is still shut off.
 
  
So.....what happens when you are playing MOUL: Again, and you get an invite to a friend's Teledahn? Will the power look like it's turned off to you, but on to your friend? The answer is no. If the power is on, you'll both see it, this is because, the game engine knows that you linked to your FRIEND'S Age, and not yours.
+
As a general rule of thumb: when unsure, select the [[#Original_Book_Link|Original Book]] linking rule.
  
And how does the game engine know this? Why by using Linking Rules of course!
+
For artists building Ages to be included on Deep Island, it is imperative to use [https://gitlab.com/diafero/offline-ki/blob/master/offlineki/xSimpleLinkingBook.py the scripts provided by the OfflineKI] to perform linking, rather than creating linking responders manually.  Korman will handle this automatically when exporting Linking Books with the Linking Book modifier to Path of the Shell targets.
  
=='''Okay, okay, So Tell Me What Each Means Already!'''==
+
==Ordinary Linking Rules==
  
When you are working with Cyan's Plugin, when you've decided that a Responder's action is going to be to have the Avatar Link somewhere, you have to tell the Plugin what Linking Rule to use:
+
===Private Link===
 +
'''<big>Type: Original Book Link</big>'''
  
[[File:Linkrules.jpg]]
+
Used for most Linking Books to link the player to a private instance of a new or existing Age.
  
As you can see, it's the FIRST thing you have to set up for the link! (don't ask me why each rule has a small "k" in front of it's name.....maybe the programmer has his "k" key stuck with BBQ sauce......I have no idea why....).
+
This rule checks if the player owns a private instance of the Age, and if not, it permanently creates one before linking them to it.
  
Here is the name of each, and a brief explanation of what it is, and when you would use it:
+
''Examples: Bahro Pole books to Kadish Tolesa, Teledahn, Gahreesen, and Eder Gira.  Museum books to the Pod Age.''
  
=='''kBasicLink'''==
+
===Public Link===
 +
'''<big>Type: Basic Book Link</big>'''
  
The Rule to this one is: ''"Does not create an 'agelink' node in 'AgesIOwnFolder' (read that as 'Ages-I-Own-Folder'). One must provide full age info to the link manager when using this linking rule or it will create a new (temporary) instance of an age."''
+
Used for linking to Public instances such as the City or K'veer, or transient stateless Ages like the Nexus and Bahro Caves.
  
What this means, is that if you use this Linking Rule in your Age for a Linking Book you're making to let's say, Teledahn, when the player uses it, they will not link to THEIR OWN Teledahn. They will link to a brand new instance of it, where everything is reset.  
+
This rule will not create a permanent private instance.  In order to link to an existing Public instance, the link must be provided with complete Age info. If this information is not provided, it will create a new, temporary, instance of an age.
  
When this is used: Used for linking to "Public Instances" like the City or Hoods and Book Sharing. Also used for the Bahro Caves.
+
For instance, if this Linking Rule for a Linking Book to Teledahn, the player will not be linked to their personal Teledahn, but will instead be linked to a brand new instance of it where all states are at their defaults, and nothing will be saved. The Nexus link is generally constructed this way.
  
----
+
''Examples: Nexus links to Ae'gura, the Guild Pubs, K'veer, the Pellet Bahro Cave from the Er'cana Pellet Room.''
  
  
=='''kOriginalBook'''==
+
===Closed-Loop Link===
 +
'''<big>Type: Sub-Age Book Link</big>'''
  
The Rule to this one is: ''"If the agelink node does not exist in the AgesIOwnFolder (Meaning: Does the player have this Book or page of a book on their Shelf or listed in the Nexus?) a new one will be created (Meaning it will be placed on your shelf in Relto and the Nexus. Now you know why when you use the linking book of one of the 4 "prime" ages when they are in your Relto Totem Pole, they suddenly end up on your Shelf when you link back to Relto). The player info node is placed into the AgeOwnersFolder of the age info node. When using this linking rule it is important to set the correct age info (age name, age instance name, spawnpoint name, spawnpoint title etc).''
+
Used to link to an Age which is considered a Sub-Age of the current Age.  The Sub-Age is only accessible from this particular instance of the current Age, and the current Age will be added as a Sub-Age automatically for the new Age. This allows the new Sub-Age to link back to the current Age instance.
  
When this is used: You would normally use this for "Personal" Ages. Like if you wanted the player to link to THEIR own Teledahn.
+
''Examples: The link from Er'cana to the Er'cana City Silo, the Delin and Tsogahl linking books available in the Neighborhoods.''
  
----
 
  
 +
==Advanced Linking Rules==
 +
These linking rules are used by the game in special circumstances.  It is recommended that Age Builders use the [[#Ordinary Linking Rules|linking types described above]], as improper use of these advanced types can results in problems ranging from unexpected behavior to vault corruption.  Server administrators frown heavily on their usage.
  
=='''kSubAge'''==
+
===Visitor Book Link===
 +
<blockquote>Note: This type of link is for advanced use only.  It is strongly recommend that Age Builders do not use it.</blockquote>
 +
Used for linking the player to an Age they have been invited to by another player.
  
The Rule to this one is: ''"Does not create an agelink node in AgesIOwnFolder, but creates one inside the SubAgesFolder of the age you link from."''
+
''Examples: Nexus links to private Ages owned by another player, e.g. "McFeely's Teledahn".''
  
Explanation here: A "SubAge" is an Age that is considered within another Age. A good example of this would be Eder Tsogal or Eder Delin. You can ONLY link to those Ages from a Hood, using the books provided in the Hood. Both of those Ages are considered a "SubAge" of that Hood.
 
  
When this is used: You would use this to create a link to an Age which is considered a "SubAge" of your Age.
+
===Owned Book Link===
 +
<blockquote>Note: This type of link is for advanced use only.  It is strongly recommend that Age Builders do not use it.</blockquote>
 +
Used to link the player to an existing Age instance which they own.
  
It is VERY Important that only one age in the sub age set is accessed from the outside by another linking rule such as kOriginalBook. Multiple outside access points will result in the creation of a whole new instance of the entire sub age set.
+
This rule will fail to link if the player does not already own an instance of the destination Age.
  
----
+
''Examples: The Fissure link to the Bahro Cave from Relto.''
  
  
=='''kOwnedBook'''==
+
===Child-Age Book Link===
 +
<blockquote>Note: This type of link is for advanced use only.  It is strongly recommend that Age Builders do not use it.</blockquote>
 +
Used to link to a shared Child-Age of the specified Parent Age.  A Child-Age is similar to a Sub-Age, except the relationship is to a third-party Age rather than the current one.  The parent Age is usually a shared public or semi-public Age, such as a Neighborhood.  The new Age instance will be a Child-Age of the specified Parent Age, and players who share access to that Parent Age will share access to (and be linked to) the same Child-Age.  All links to a Child-Age that share the same Parent Age will link to the same instance of the Child-Age (i.e. a player using a Bahro stone linking to Ae'gura in Gahreesen and a player using a Bahro stone linking to Ae'gura in Teledahn will both link to the same instance of Ae'gura, as long as they are members of the same Neighborhood; for these linking stones the Neighborhood is the Parent Age and the City is the Child-Age).
  
The Rule to this one is: ''"Will only link a player to an Age that he or she owns (is already on their book shelf)."''
+
''Examples: Bahro stones linking to City locations.''
 
+
If you try to use this, and the player does not already "own" the Age, the linking will simply fail.
+
 
+
When this is used: Let's say you want to make a link to Eder Kemo. Well you don't want the player to link there before they've solved Gira first. The player is not suppose to get to Kemo, until they've solved the puzzle of the vent covers. Using the rule will keep the player from linking to Kemo before they are suppose to get there.
+
 
+
----
+
 
+
 
+
=='''kVisitBook'''==
+
 
+
The Rule to this one is: ''"Used for ages someone is invited to by another player. The agelink node must be in the AgesICanVisitFolder and the player info node must be in the CanVisitFolder of the age. Or in other words, the player must have an invite."''
+
 
+
When this is used: Private Links (Nexus).
+
 
+
----
+
 
+
 
+
=='''kChildAgeBook'''==
+
 
+
The Rule to this one is: ''"A parent age must be set. Creates an agelink node in the ChildAgesFolder of the parent age. Used for the GreatZero in UU. The parent age in this case is the Neighborhood and it can be set with: als.setParentAgeFilename('Neighborhood'). The player info node is NOT placed into the AgeOwnersFolder of the created age info node (so the UU server cleanup script for "unowned" ages will eventually delete it)."''
+
 
+
I think this can be used also with the Live Server in the same way.
+
 
+
 
+
 
+
That's it folks. Very special thanks to D'Lanor for providing this information!
+

Latest revision as of 03:36, 5 March 2020

What are Linking Rules?

In Uru, like all games in the Myst universe, Linking Books are the primary method provided to players for moving around between worlds. They are often found as rewards, but just as often are simply a part of the journey, and sometimes even part of a puzzle. Most of the time, linking with a book is straightforward: the player clicks on a book to examine it up close, and then if they choose to follow the link, they place their hand on the "linking panel" image and are transported to a new location. How Uru decides where to take the player is not so simple, however.

Behind the scenes in Uru there are different methods of linking the player, and the Age builder should be mindful of using the correct method. Due to Uru's use of Public and Private instances, the game requires hints provided by the Age builder on how to construct the link and therefore where to send the player. For example: when a player is in a neighborhood, the Garden books lead to instances of those Gardens which belong to that neighborhood and are only accessible through it. Likewise, Bahro stones found on Yeesha's journey take the player to a version of Ae'gura which collectively belongs to their neighborhood instead of the public version. Yet the books in Yeesha's journey take the player to their own solitary, private instances. Where the player should end up is up to the design of the Age builder; it can be a bit complicated to grasp at first, but is crucial to get right in the multiplayer environment of Uru.

Linking Rules

Linking Rule Option Selection

In order to specify what sort of instance the player should be sent to, the Age creator selects one of the few available Linking Rules when constructing the Link.

When working with Cyan's PlasmaMax plugin, the Linking Rule is specified on a Responder with a Link action. When using Korman, it's specified in the Linking Book Modifier (or the Link to Age Message in an advanced logic node tree):


As a general rule of thumb: when unsure, select the Original Book linking rule.

For artists building Ages to be included on Deep Island, it is imperative to use the scripts provided by the OfflineKI to perform linking, rather than creating linking responders manually. Korman will handle this automatically when exporting Linking Books with the Linking Book modifier to Path of the Shell targets.

Ordinary Linking Rules

Private Link

Type: Original Book Link

Used for most Linking Books to link the player to a private instance of a new or existing Age.

This rule checks if the player owns a private instance of the Age, and if not, it permanently creates one before linking them to it.

Examples: Bahro Pole books to Kadish Tolesa, Teledahn, Gahreesen, and Eder Gira. Museum books to the Pod Age.

Public Link

Type: Basic Book Link

Used for linking to Public instances such as the City or K'veer, or transient stateless Ages like the Nexus and Bahro Caves.

This rule will not create a permanent private instance. In order to link to an existing Public instance, the link must be provided with complete Age info. If this information is not provided, it will create a new, temporary, instance of an age.

For instance, if this Linking Rule for a Linking Book to Teledahn, the player will not be linked to their personal Teledahn, but will instead be linked to a brand new instance of it where all states are at their defaults, and nothing will be saved. The Nexus link is generally constructed this way.

Examples: Nexus links to Ae'gura, the Guild Pubs, K'veer, the Pellet Bahro Cave from the Er'cana Pellet Room.


Closed-Loop Link

Type: Sub-Age Book Link

Used to link to an Age which is considered a Sub-Age of the current Age. The Sub-Age is only accessible from this particular instance of the current Age, and the current Age will be added as a Sub-Age automatically for the new Age. This allows the new Sub-Age to link back to the current Age instance.

Examples: The link from Er'cana to the Er'cana City Silo, the Delin and Tsogahl linking books available in the Neighborhoods.


Advanced Linking Rules

These linking rules are used by the game in special circumstances. It is recommended that Age Builders use the linking types described above, as improper use of these advanced types can results in problems ranging from unexpected behavior to vault corruption. Server administrators frown heavily on their usage.

Visitor Book Link

Note: This type of link is for advanced use only. It is strongly recommend that Age Builders do not use it.

Used for linking the player to an Age they have been invited to by another player.

Examples: Nexus links to private Ages owned by another player, e.g. "McFeely's Teledahn".


Owned Book Link

Note: This type of link is for advanced use only. It is strongly recommend that Age Builders do not use it.

Used to link the player to an existing Age instance which they own.

This rule will fail to link if the player does not already own an instance of the destination Age.

Examples: The Fissure link to the Bahro Cave from Relto.


Child-Age Book Link

Note: This type of link is for advanced use only. It is strongly recommend that Age Builders do not use it.

Used to link to a shared Child-Age of the specified Parent Age. A Child-Age is similar to a Sub-Age, except the relationship is to a third-party Age rather than the current one. The parent Age is usually a shared public or semi-public Age, such as a Neighborhood. The new Age instance will be a Child-Age of the specified Parent Age, and players who share access to that Parent Age will share access to (and be linked to) the same Child-Age. All links to a Child-Age that share the same Parent Age will link to the same instance of the Child-Age (i.e. a player using a Bahro stone linking to Ae'gura in Gahreesen and a player using a Bahro stone linking to Ae'gura in Teledahn will both link to the same instance of Ae'gura, as long as they are members of the same Neighborhood; for these linking stones the Neighborhood is the Parent Age and the City is the Child-Age).

Examples: Bahro stones linking to City locations.