Seamless Area Link Tutorial

From HEWIKI
Jump to: navigation, search

He intermediate.png

Contents

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.

Overview

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

Transitional Asset

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

AssetLibraryAddTab.gif

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

AssetLibraryAddAssetToTab.png
AssetLibraryRepositoryRequestor.png
Select the Tutorial Tab you just created in the asset library and right click in the whitespace to invoke a context menu. Select "Add Item" from the menu and use the browser window to browse to the location (/Engine/CleanGame/Resources/Common/) select the asset utility_box_white01.gr2 and hitting ok. Do the same thing for the utility_sphere_white.gr2.

Click the Save Library Button located in the bottom right corner of the Asset Library window.


Create Transition Topology

SeamlessLinkTransitonTopologyOverview.gif
Using the white box and sphere we added to the asset library, we are going to create a transition piece by modifying multiple boxes to make walls in the classic S-curve pattern commonly used to limit sightlines.

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.

Wall Position Rotation Scale
One 1.148638,6.5E-08,0.4037192 0,0,0 1,4.321682,29.60098
Two 0.3653048,6.5E-08,-0.2825848 0,0,0 1,4.321682,29.83277
Three -0.3346952,6.5E-08,0.374766 0,0,0 1,4.321682,29.83277
Four -0.9346954,6.5E-08,-0.325234 0,0,0 1,4.321682,29.83277
Five 0.08510184,6.7E-08,1.833927 0,90,0 0.9999988,4.321682,21.6659
Six 0.08510187,6.7E-08,-1.766074 0,90,0 0.9999992,4.321682,21.6659
Position Rotation Scale
-0.3193591,0.03654938,-1.371423 0,0,0 1.5,1,1
ConstructedTransitionPiece.gif

Add the Constructed Transition Topology to the Library

Grab Selected Instances
Update Icon
AssetLibraryTutorialLink.gif

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 Topology

AssetLibraryTransitionTopologyIndexes.gif
So far, the library object we created is merely a "prefab" or group of assets. It has no behaviors nor does it know that it is a seamless area link. We need to use the Seamless 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 /heseamlesslink chat command.

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

HeroBladeAreaOrganizerCreateNewArea.png

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

SeamlessTutorialArea01LinkPlacement.gif
SeamlessNorthernEdge.png

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

SeamlessTutorialArea02LinkPlacement.gif
SeamlessSouthernEdge.png

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

UtilitiesInterfaceSeamlessAreaLinks.gif
SeamlessAreaLinkDisplayLinks.gif

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.


SeamlessAreaLinkEditing.gif
For the purposes of the tutorial, the only properties that you will wish to edit area the Name, Description and the Destination Seamless Link.

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.
ChooseSeamlessLink.gif


SeamlessAreaLinkTriggerPositioning.gif

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.

HBGoToInstanceMenu.png

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.

Congratulations!

Reference

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox