Seamless Area Link Tutorial
This is an intermediate level tutorial which explains how to set up seamless area links between two different areas, to make it look to a player as though they are both one area, since the player can pass seamlessly from one to the other. It is part of the Seamless World 1.0 system. The 1.0 system still has many usages for many types of games. But make sure to check out Seamless_World_2.0 for another way to make large seamless areas.
To start off, you will construct a piece of Transition Topology. This is a section of an area which is duplicated between both the source area and destination area, so as to mask the transition to the player. The Transition Topology provides a reference offset between the areas.
You will then add your Transition Topology to the Asset Library, and configure it to execute some logic. The Transition Topology will factory a Seamless area link using the Seamless Link Spec Oracle. Then once the Asset Library is set up with a Seamless Link library object, you will use the library object to add seamless links in two new areas, and connect the links together to establish an apparent seamless link between the two areas.
Create Transition Topology
A typical seamless area link will include a specially constructed Transition Topology that serves to mask the deactivation of the source area and activation of the destination area. The initial release of Seamless world uses a "transition piece", which is typically constructed in the classic S-curve commonly used in games to limit sightlines. The transition piece is placed in both source and destination areas and is treated as if it is coincident by virtue of reference frame adjustment. When a user transitions from the source area to the destination area, they are placed in an adjusted position such that they arrive (from the perspective of the user) in exactly the same spot in the transition piece.
Transition pieces can be made from assets or heightmaps and come in a variety of forms such as caves, winding hallways, narrow canyons, passes between mountains or any other topology that will serve to mask the swap between active areas.
- See also: Seamless area link
For the purposes of this tutorial, we are going to construct our transition topology as "prefab" constructed from multiple
utility_box_white.gr2s located in the repository (/Engine/CleanGame/Resources/Common/utility_box_white01.gr2).
- Create a Tutorial Tab in the CleanEngine Library of the Asset Library
- Add the white box to the Tutorial Tab
- Construct a "prefab" or grouping of instances of the white box to form the transition topology
Create a Tutorial Tab
Open the Asset Library either by clicking on the button located in the menu bar or by using the hotkey
cntrl+L. Select the CleanEngine Library, and add a new tab called Tutorial.
Add the White Box and Sphere to the Tutorial Tab
Click the Save Library Button located in the bottom right corner of the Asset Library window.
Create Transition Topology
We will start by creating a "link" object out of a white sphere that we color green. The link object is used to determine the position of the link and update the position during edit time when moved. While we are using a green box to represent the link, it could have been the actual modeled transition piece itself. For our constructed transition piece we are going to parent all objects to the link object to make it easier to work with the link when instantiated from the library.
- Create the "link" object
- Add a white sphere
- Place it on the ground
- Change its Ambient and Diffuse Colors to #.03,.99,.158,1.0
- Create Walls 1-6
- Add six white boxes
- Parent all six white boxes to the green sphere
- Use the Properties Grid to Adjust the Position/Rotation/Scale as depicted in the following table
- Add a Trigger and parent it to the green sphere. Using the property grid, set the trigger's position/rotation/scale
- At this point, if you select the green sphere and hit the page down key it should look like the image below
Add the Constructed Transition Topology to the Library
Select the green box, the six walls and the trigger and add them to the library as a prefab by right clicking on the whitespace in the Tutorial Tab and selecting the "Grab Selected" menu option. Rightclick on the "No Icon" icon and rename the object "Tutorial Link". Then update the icon using the snapshot option.
Finally, click the "Save Library" button to save your new library object.
Add a Library Command for the Transition TopologySeamless Link Spec Oracle to properly factory a seamless link, which is done via a library command that executes when the assets are added to the world. The library command that supports this functionality is the
There are two important pieces of information that the seamless link spec number 1 requires, the library index of the "link" object and the library index for the trigger instance. Hovering over the library icon will display a list of instances that library object creates and their indexes.
/heseamlesslink LIBRARY #spec='1' ?GUIDS='$GUIDS' ?link='1' ?trigger='4'
Using the information in the tooltip, add the
/heseamlesslink to your library object and replace the library index for the ?link and ?trigger tokens to correspond to the appropriate library indexes.
Build Source and Destination Areas
Now that we have created a library object that is capable of instantiating a seamless link it is time to create source and destination areas, place a link in each and connect them.
Create Source and Destination Areas
Using the Organizer Panel, click on the link to create two new areas naming them Seamless<your Name>01 and Seamless<your Name>02 (ex. SeamlessCwiss01 and SeamlessCwiss02). Once created, use the Organizer to travel to the Edit Instance of Seamless<your Name>01.
For the purposes of this tutorial we will refer to these areas as Area 01 and Area 02.
You will be traveling back and forth between these two areas during the setup process.
Add a Seamless Link to Area 01
Use the Organizer to travel to the Edit Instance of Area 01. Once in that area, fly to the Northern Edge of the area and use the Asset Library to add your Tutorial Link object to the area. Place your link object so the right-hand exit is on the eastern edge of the heightmap and the northern wall is on the northern edge of the heightmap such that the link is positioned in the NorthEast corner.
Add a Seamless Link to Area 02
Use the Organizer to travel to the Edit Instance of Area 02. Once in that area, fly to the Southern Edge of the area and use the Asset Library to add your Tutorial Link object to the area. Place your link object so the left-hand exit is on the western edge of the heightmap and the southern wall is on the southern edge of the heightmap such that the link is positioned in the SouthWest Corner corner.
Link Area 01's Link to Area 02's Link
Use the Organizer to travel to the Edit Instance of Area 01. Once in the area, open the Utilities Interface, select the tools tab and click on the link "Seamless Area Links". You should see one link displayed and with the name defaulting to the name of the area. Select your link and click the Edit Button.
Change the Link's Name to be "Northern Edge: Area01->02"
Change the Link's Description to be "Link located on the Northern Edge of 01 with a destination of 02"Choose the Destination Link, click on the ellipsis located beside the Destination Seamless Link property, this will invoke a seamless link chooser that presents you with a list of all seamless links to which you could potentially connect. Select the Area 02 link.
Lastly, we need to examine the positioning of the Trigger. The trigger should be positioned towards the far end of central corridor from the entrance to the link.
Trigger positioning is important because the Seamless Area Links in Area 01 and Area 02 are considered to be coincident as a result of Reference Frame Adjustment. If the triggers overlap, then your character would transition back and forth between Area 01 and 02.
Link Area 02's Link to Area 01's Link
Using the Organizer, travel back to the edit instance of Area 02. Here you will repeat the process except for Area 02's Link.
Change the Link's Name to be "Southern Edge: Area02->01"
Change the Link's Description to be "Link located on the Southern Edge of 02 with a destination of 01"
Choose a Destination Link, click on the ellipsis located beside the Destination Seamless Link property, this will invoke a seamless link chooser that presents you with a list of all seamless links to which you could potential connect. Select the Area 01 link, which should be displayed using the new name we assigned to it (Northern Edge: Area01->02).
Lastly, check the trigger positioning as described previously.
Testing the Link
We now have the two seamless area links connected to each other, however we can not yet walk between the instances seamlessly. Seamless Area Links establish one or more Spatial Entities in the $SPATIALAWARENESS_AREA spatial awareness system during area spinup. These entities are responsible for determining when a connecting destination instance must be launched, when to start preloading, when to start proxying and finally initiating the seamless transition. Since the edit instances of Area 01 and Area 02 have be running this entire time and we just established the link, they have not yet inserted entities into the spatial awareness system.
There are two possible options for testing, we can either go to a new Play Instance of Area 01 or we can go to a Clean Test Instance and bounce (i.e. shutdown the Area 01 and Area 02 servers).
Using the Organizer or the HeroBlade Menu that appears when you click on the bottom right corner of HeroBlade where it displays the Area Name, lets go to a new Play Instance of Area 01.
Walk your character through the seamless link's trigger and you should transition from Area 01 to Area 02.