Give Page Feedback

World Designer Tool - Version Control

There is very limited support for Version Control and team based workflows. In this Section we give some general info and advice we think will be useful in integrating the World Designer Tool with version control systems, and also talk briefly about the limited support that is built into the Streamable Assets Manager. We will also try to give you an idea of what operations modify the World component (and in effect the scene that the World is in) and the Streamable Grid assets, which may be useful in some way.

Modifications To The World (and Scene)

First, it's important to note that all default Asset Managers have been configured to try and eliminate modifications to the base scene (the scene that the World component is in). When these Asset Managers load Asset Chunks, they load either scenes (which are loaded additively and do not affect the base scene) or prefabs which are placed in a special editing scene. The result is that loading and unloading Asset Chunks should not result in modifications to the base scene!

If you create custom Asset Managers, it's a good idea to follow this same philosophy of having your load and unload operations not affect the base scene.

There are only two ways that the World Designer Tool (and the World Designer Tab in the World inspector) should be able to make modifications to the World Component:

1) Binding or clearing a bound World Designer Data asset that the World uses.

2) Saving a World Region to the World Component.

To eliminate the first as a potential issue, you can simply avoid binding World Designer Data Assets to any Worlds that will be used by multiple devs. For the second issue, avoid saving World Regions to Worlds until it can be done in a coordinated manner. This would involve:

1) Checking to make sure each developer uses different names for World Regions they want to save to the World.

2) Letting a single dev write World Regions to the World, committing those changes to the scene, and then having the next dev check out the scene. Rinse, repeat.

You can also use a prefab based approach to eliminate these issues. To use this approach, convert your Streamable Assets Manager game object (and child objects as well) to a prefab. This prefab will exist in version control and will be shared amongst team members. Then, each developer that wants to work with the World Designer Tool would create a new scene that is local only to their machine. They would add an instance of the Streamable Assets Manager prefab created earlier to this scene, and run the World Designer Tool from the World component on that prefab instance.

With this method, the developer can bind World Designer Data assets to the World freely, and also save World Regions to the World, as both of those things would only affect the prefab instance. Care would need to be taken not to apply those changes to the underlying prefab asset, however.

Modifications To Streamable Grid Assets

Streamable Grids are slightly more problematic to work with because there are many more situations where modifications are made to them. We will cover all of these situations so you can choose best how to handle working with them! All such modifications will either be to the State of the Streamable Grid Cells (Enabled or Disabled) or to the number of Chunks used by a Streamable Grid Cell for a particular LOD.

Modifications to the State of Streamable Grid Cells are made when you perform the following actions:

1) Highlight 1 or more Enabled Cells and pressing the Disable Selected Cells button.

2) Highlight 1 or more Disabled Cells and pressing the Enable Selected Cells button.

3) Use the Assignment Operation (A Button) on child objects that fall within a Disabled Cell on the currently edited World Grouping. This action will result in the Cell being automatically Enabled.

4) Use the Assignment Operation (A Button) with Auto Disable enabled, on child objects that currently belong to an Enabled Cell, when the removal of those child objects would leave the all Asset Chunks belonging to the Cell Empty (as determined by the Asset Manager). This action will result in the Cell being automatically Disabled.

5) Use the Transfer Operation (T Button) with Auto Disable enabled, to transfer child objects from a Cell that only has a single LOD, or a Cell in which you are transferring the final LOD (i.e., you have already transferred other LODs). This action will result in the Cell being automatically Disabled.

6) Use the Transfer Operation (T Button) to transfer child objects to a Cell that is currently Disabled. This action will result in the Cell being automatically Enabled.

7) Use the Evaluation Operation (E Button) with Auto Disable enabled, on a Cell with all Empty Asset Chunks (as determined by the Asset Manager). This action will result in the Cell being automatically Disabled.

8) Use the Destroy Selected Objects button with Auto Disable enabled, on child objects that currently belong to an Enabled Cell, when the removal of those child objects would leave the all Asset Chunks belonging to the Cell Empty (as determined by the Asset Manager). This action will result in the Cell being automatically Disabled.

Modifications to the number of Chunks a Streamable Grid Cell uses for a particular LOD can occur when you perform the following actions:

1) Use the Assignment Operation (A Button) on child objects that are either currently children of a Cell's Asset Chunk or that fall within a Cell on the currently edited World Grouping. This can result in modifications to the Streamable Grid of the World Grouping currently being edited.

2) Use the Transfer Operation (T Button) to transfer child objects from selected Cells of a particular LOD. This can result in modifications to the Streamable Grid of the World Grouping currently being edited.

3) Use the Transfer Operation (T Button) to transfer child objects to a particular LOD. This can result in modifications to the Transfer Grouping's Streamable Grid.

4) Use the Evaluation Operation (E Button) on a selected Cell. This can result in modifications to the Streamable Grid of the World Grouping currently being edited.

5) Use the Destroy Selected Objects button. This can result in modifications to one or more Streamable Grids, which will depend on which Asset Chunks the objects you are destroying are a part of. For this reason, it is only recommended to perform the destroy operation on assets on the current World Grouping you are editing.

Note that generally speaking, it can be difficult to predict when these modifications will occur. As such, it is usually a good idea to assume modifications will occur when using any of the Advanced Operations (Destroy, Assignment, Transfer, and Evaluation):

Write Locking And The Streamable Grid Lock Monitor

The Streamable Grid Lock Monitor is an optional Scriptable Object Lock Monitor that you can create and assign to the GlobalEditorSettings asset. The sole purpose of the monitor is to detect when a Streamable Grid asset is being modified by another developer on your team. Basically, it works like this:

Whenever a team member wants to work with specific World Groupings in a way that would write changes to its underlying Streamable Grid asset (enabling/disabling cells or changing the number of Asset Chunks each Cell uses), they need to check out the Streamable Grid asset and write lock it (so that modifications cannot be made to it by other team members). The actual mechanism for checking out and locking the Scriptable Asset is up to you. The only purpose the Lock Monitor serves is to tell the World Designer Tool whether the Streamable Grid has been write locked.

The Streamable Grid Lock Monitor is queried every time the user of the World Designer Tool tries to perform an action that could modify a Streamable Grid. The action is only allowed if the Lock Monitor indicates that the Streamable Grid is not locked. Locking the Streamable Grid should not result in other team members not being able to access the Streamable Grid asset, as doing so will stop the World Designer Tool from working. Instead, locking should simply stop other team members from being able to commit changes for the locked asset.

Please note, the Streamable Grid Lock Monitor highly experimental and in truth, we do not know how useful it will be in version control systems. This is because we do not internally use a team based workflow, so testing such systems is difficult. We encourage our users to use the feedback button at the top of this window to provide any feedback you think appropriate, including alternative ideas for how to add version control/team based support.

For more information, please take a look at the Scriptable Object Lock Monitor Section within the Scriptable Assets Chapter.

Lock Monitor

Other Modifications

Clearly, the World Designer Tool is intended to allow you to easily make modifications to Streamable Assets. As such, you can expect that modifications to these Assets will occur quite frequently while using the Tool. While we already limit changes to Asset Chunks when using the Advanced Operations described in this chapter through the use of the Write Lock system, we cannot control manual changes you might make to Asset Chunks. It is up to you to determine how best to manage potential conflict.