Open Source Platform
for interconnected virtual worlds

NG Design Document/Use Cases/World Building

From Rex community wiki

Contents

Introduction

This section is for creating content for a 3D virtual space. Dynamic world building is one of the most important use cases for virtual worlds. Compelling content drives usage of a platform, and if creating it is not intuitive , the user-base will remain tiny.

Use Case Name

Create a Primitive Object

Goal Create in-world objects without resorting to complicated external tools.
Summary
Actors User, Agent, Object Storage
Preconditions
  1. User is logged in and is in a space with build permissions
Triggers Desire to create simple objects.
Basic path
  1. User enters an explicit build session mode
  2. User activates a build UI and selects a primitive type of object from a set of "pre-made" objects
  3. User adjusts attributes of the object, such as size, shape, orientation, and position
  4. User commits the editing session
  5. Agent uploads the new object to storage
Alternative paths
  1. User enters an explicit build session mode
  2. User activates a build UI and selects a primitive type of object from a set of "pre-made" objects
  3. User aborts the editing session and changes are thrown out
Exceptional paths
Postconditions


Use Case Name

Create an Imported Object

Goal Create in-world objects with the help of special-purpose tools.
Summary While creating all objects within the client viewer presents the simplest, quickest user interaction, the reality is that realXtend is a platform, and can never compete with professional, special purpose applications. It is better for realXtend to support standard file formats and import towards the end of the workflow.
Actors Users, Agents, Object Storage
Preconditions
  1. User is logged in and is in a space with build permissions
  2. User has created content in specialized application and saved to standard file format
Triggers Desire to create complex objects.
Basic path
  1. User enters an explicit build session mode
  2. User activates a build UI and selects to import from a standard file format
  3. User enters the file name
  4. Agent converts the file format into native format locally
  5. User adjusts attributes of the object, such as size, shape, orientation, and position
  6. User commits the editing session
  7. Agent uploads the new object to storage
Alternative paths
  1. User enters an explicit build session mode
  2. User aborts the editing session and changes are thrown out
Exceptional paths
Postconditions


Use Case Name

Link Objects into a Hierarchy

Goal Create easy-to-manage groupings to simplify organization and increase productivity.
Summary Hierarchies is a natural an powerful way to organize the world. For example, a car is a car, but it is also the sum of its engine, wheels, seats, etc. We would like to manage those objects on different hierarchical levels.
Actors Users, Agents, Object Storage
Preconditions
  1. User is logged in and is in a space with build permissions
  2. User has created a set of unlinked objects
Triggers Desire to create complex hierarchical objects.
Basic path
  1. User enters an explicit build session mode
  2. User selects a set of objects to link
  3. Agent visually decorates the set to indicate selection
  4. User causes them to be linked as siblings
  5. Agent visually decorates the set to indicate grouping
  6. Agent visually decorates the pointer to indicate that the grouping requires a parent
  7. User selects a parent
  8. Agent visually decorates the set to indicate a hierarchy
  9. User adjusts attributes of the linked object set, such as size, shape, orientation, and position
  10. User commits the editing session
  11. Agent uploads the new object to storage
Alternative paths
  1. User enters an explicit build session mode
  2. User aborts the editing session and changes are thrown out
Exceptional paths
Postconditions
Use Case Name

Attach an Asset to an Object

Goal Create interesting objects by giving them visual, audio, or scripted properties.
Summary "Object" is mostly something abstract that takes up space. To make it interesting it should have appearance and behavior.
Actors User, Agent, Object Storage, Asset Storage
Preconditions
  1. User is logged in and is in a space with build permissions
  2. User has existing object he wishes to attach assets to
Triggers Desire to create interesting objects.
Basic path
  1. User enters an explicit build session mode
  2. User selects the object which will receive the asset
  3. User opens a editing UI and selects the asset from a file, or palette
  4. User commits the editing session
  5. Agent uploads the new asset to asset storage, and updates the object in object storage
Alternative paths
  1. User enters an explicit build session mode
  2. User aborts the editing session and changes are thrown out
Exceptional paths
Postconditions
Use Case Name

Add an Asset of a Custom Type

Goal Share a novel type of assets with others.
Summary It is extremely difficult to enumerate up-front all possible asset types and all associated metadata for those types. We should adapt to new asset formats by allowing a means of registering a type and associated metadata schema.
Actors User, Agent, Programmer, Module, Asset Service
Preconditions
  1. User has privileges on an asset service
  2. User has knowledge of pertinent asset metadata
Triggers Desire to add novel asset types
Basic path
  1. User generates metadata schema which can describe the pertinent features of the asset format
  2. Programmer creates a module capable of discovering and consuming asset metadata in the Agent
  3. User selects an asset file from a UI
  4. Agent sends the asset file to asset service
  5. Module discovers metadata for that asset file and sends to asset service
Alternative paths
Exceptional paths
Postconditions Agents are able to share and use novel assets.
Use Case Name

Change an Object's Physical Properties

Goal Create interesting objects by giving them physical properties.
Summary Physics computations are expensive, and the more physical properties an object has, the more complicated the computation brecomes. Minimizing the ways in which the dynamics engine interacts with an object when unnecessary, will improve scalability.
Actors User, Agent, Object Storage
Preconditions
  1. User is logged in and is in a space with build permissions
  2. User has existing object he wishes to change the physical properties of
Triggers Desire to create more or less dynamic objects.
Basic path
  1. User enters an explicit build session mode
  2. User selects the object which will change its physical behavior
  3. User opens a editing UI and selects a physical property to change (such as weight or center of mass)
  4. User commits the editing session
  5. Agent updates the object in object storage
Alternative paths
  1. User enters an explicit build session mode
  2. User aborts the editing session and changes are thrown out
Exceptional paths
Postconditions
Use Case Name

Save a Scene to File

Goal Create a portable file representation of a portion of a scene.
Summary Creating a complicated scene is hard work, with many intermediary steps. Often we wish to save and reuse the components of scenes, and the simplest and most flexible means is through a serialization to file. That way we can email scenes to others, save backups, and re-use past work.
Actors Users, Agents, Object Storage
Preconditions
  1. User is logged in and is in a space with build permissions
Triggers Desire to create complex objects from reusable parts.
Basic path
  1. User enters an explicit build session mode
  2. User creates a series of new linked or isolated objects
  3. User serializes the editing session to file
  4. Agent saves a complete copy of any object that has changes during the session to file format, and writes to disk
Alternative paths
  1. User enters an explicit build session mode
  2. User serializes the editing session to file
  3. User commits the editing session
  4. Agent uploads the new object to storage
Exceptional paths
Postconditions
Use Case Name

Load a Scene from File

Goal Create a scene part from portable file representation.
Summary Creating a complicated scene is hard work, with many intermediary steps. Often we wish to save and reuse the components of scenes, and the simplest and most flexible means is through a serialization to file. That way we can email scenes to others, save backups, and re-use past work.
Actors Users, Agents, Object Storage
Preconditions
  1. User is logged in and is in a space with build permissions
  2. User has created content in scene serialization format
Triggers Desire to create complex objects from reusable parts.
Basic path
  1. User enters an explicit build session mode
  2. User activates a build UI and selects to import a scene serialization format
  3. User enters the file name
  4. Agent realizes the objects described in the file, and their relationships
  5. User adjusts attributes of the scene part, such as size, shape, orientation, and position
  6. User adjusts attributes of the scene's object sets, such as size, shape, orientation, and position
  7. User commits the editing session
  8. Agent uploads the new object to storage
Alternative paths
  1. User enters an explicit build session mode
  2. User aborts the editing session and changes are thrown out
Exceptional paths
Postconditions