A high-level overview of the branching system within StoryFlow and the ways it can be used
Overview
StoryFlow is the web-based, drag and drop authoring tool of the Motive Training Platform.
StoryFlow is built with branching at its core. It is an ideal tool for both simple and complex branching scenarios for VR training. Branches can happen in sequence, in parallel, randomized, or based upon one or more specific conditions. This flexibility allows for a wide range of training options. Anything from step-by-step instructions to an open-world simulation is possible.
StoryFlow provides several ways to control if and when different branches activate. It also gives the author tools to modularize and reuse branches. This makes it easy to create, organize and maintain your VR training scenarios. Let’s go through a few, quick concepts before diving in.
Concepts
In StoryFlow, there are certain terms that are commonly used. This section will highlight the most important of these for branching scenarios.
Scripts
A script is where an author defines what will happen in a training scenario. It can be thought of like a movie script. A script is made up of one or more frames. It defines the order and relationships between the frames. In a script, frames are arranged in a tree structure. Branching happens by design.
The picture above shows a script in edit view within StoryFlow.
Frames
Frames live in a script. Frames control the specific things that happen in a training scenario. It might be an animation starting, a piece of media playing, a text box appearing, etc… Each of these distinct items is called a resource.
Frames trigger resources right away or based on conditions. A condition can be many things. It could be that a piece of audio has stopped playing, a VR user has taken a particular action, an object has changed state, a window has been closed or one of several other possibilities.
For example, a frame may have a condition that waits for a user to close a notification window in the VR scene. When that happens it triggers an animation resource that tells an avatar in the scene to say something. More simply, when the window closes the avatar begins to speak. The frame condition controls when the resource activates.
A frame can have zero or more conditions and resources. Frames can also have subframes or child frames. This is one way to create branches. This will be described in the next section.
The picture above shows a script with the frames on the left-hand side. The currently editable frame is highlighted in red. The conditions and resources for that frame are visible in the center of the screen. Finally, the right-hand side shows a list of resources, conditions, variables, and events that can be used when creating or editing any frame. These can be dragged and dropped into the currently selected frame.
Branching
Branching Basics
The simplest way to branch is inside of a single script. As we know, a script has one or more frames. The list of frames can be thought of as a table of contents for the script. Let’s look at an example:
The script above has a Main Frame which has three child frames. Each child frame is a branch. Each branch is on the same level. It is possible to have all of these branches open and active at the same time. It is also possible to have one or more branches open and waiting to activate based on a condition. A StoryFlow author has full control over the number of branches, the order in which they activate, and the conditions that govern their activation.
Each frame can have its own child frames. This means any branch can be several levels deep. If a frame has child frames, those will open once their parent is activated. This makes defining a sequence very easy and happens by design. If a training procedure has three steps that happen in a specific order, you can define three frames that happen one after the other. A single script allows for several branches to exist in parallel. Each can have its own defined sequence.
Conditional Branching
Conditions allow you to control when and if a branch opens. Sometimes, you’ll want a branch to open right away. Other times you’ll want it to wait until something specific happens. Conditions allow you to do this. They can be of many types.
StoryFlow provides a library of different conditions which can be dragged and dropped into a frame. These conditions can be based on resources, user actions in the VR scene, the state of a 3D model, and many more possibilities.
The StoryFlow variable and event systems can also be used with conditions. Each of these is powerful and flexible in its own way. They both provide easy ways to ensure that the conditions for your VR scenarios are customizable for your specific needs.
Example
Let’s think of a training situation for a store. We have a VR scene of a store with a customer avatar and a 3D model of a product. The trainee is the employee and will interact with the customer and product inside the scene. We want to author a simple scenario where the trainee can ask the customer three questions in any order.
Each question is a branch that could lead to additional interactions. In this case, we would add a condition to each branch to listen for the trainee to ask a specific question. When the condition is met, we can author that the customer avatar responds appropriately to each individual question.
In the ‘Ask about safety features’ frame above, there is a speech recognition condition that is waiting for the trainee to ask the customer about the safety features. In the resources section on the right, it shows that some audio will play once the trainee asks the right question. That piece of audio is anchored to the customer avatar so it will appear as though the avatar is responding to the trainee.
In terms of branching, let’s say that each of the three branches has its own condition. When the trainee is going through this scenario, the system will be waiting for the trainee to ask any of the three questions. The order is not important in this case. Any of the three branches will become active based upon the question the user asks. If the user goes through one branch, the other two will remain open and wait for their condition to be met. As opposed to being sequential, the branching is conditional.
If necessary, it can be more sophisticated. In cases like these, we may want to know when every question has been asked. Variables and events allow you to keep track of individual and groups of choices that the trainee makes. These can be used with conditions later in the script or even in another script.
For example, we may want to prevent a trainee from progressing if they have not asked every question. Or we may want to remind the trainee to ask a question if they have not. This level of control is possible with our drag and drop editor. These options allow your training scenarios to be specific, responsive, realistic, and helpful.
Modularizing Branches
StoryFlow has excellent tools to help you modularize branches of a training scenario. This makes scripts more flexible and easier to maintain. Let’s take a look at how this can be used.
In our example, one of the questions is about product options. This is a perfect opportunity for the trainee to demo the product and its various features.
As the trainee follows the ‘Ask about product options’ branch, they can practice demoing features of the product for the customer.
The script is starting to get large. There are ways to collapse and expand frames but modularizing the script is often a better choice. When a branch has many steps or will be reused, you can create a separate script. The new script can contain only what is needed for that branch. In our example, let’s create a new script and call it “Product Demo”.
As you can see, the steps are exactly the same in the new script as they were in the ‘Ask about product options’ branch. Those steps can be replaced in the original script with one frame which launches this new Product Demo script at the appropriate point.
Modifications can now safely be made to the Product Demo script without impacting the original script. This makes it easier to find specific parts of a training scenario within StoryFlow. The new script can be reused in other, larger training scenarios besides this one. It also lets multiple people work on the same scenario without disrupting the work of others.
Modularization can do much more. Here is one additional, important example.
Director Script Pattern
This is an excellent way to organize and modularize your training scenarios. Let’s say your training scenario has ten complex steps. One large script would be harder to maintain. Instead, you could create eleven scripts, one for each step and one to control when to launch the right script for each step. That final script is the same as any other but we call it a director script because it directs when the other scripts should launch.
This makes it easy to add and remove steps of a training procedure, rearrange the order in which they happen, modify existing steps and change the conditions of when a step should launch. Each step is a branch and one script, the director script, controls when each branch becomes active.
Going back to our example, we can turn the original script into a director script by creating a separate script for each customer question branch. We can even create a single script that launches all the question scripts.
This will make it easy to add, modify and remove questions if needed. The same is true for product demos. Each part of the training scenario is modularized into its own script and the flow is controlled in one place. This makes maintaining and reusing your scripts much easier.
Adaptive Content
Adaptive content is a powerful, general system within StoryFlow. Variables, which were mentioned earlier, play a key part in it. This system allows for content of any kind to be presented based on choices the user has made. It also helps with script maintenance and testing.
In the context of branching, let’s say a training scenario has several branches that follow a similar pattern. Using adaptive content, a single branch can be created which can launch all branches which fit that pattern. This means there is only one script to test instead of several.
Randomization
Randomization can be used in many ways. Branching is one of them. It is possible to randomize when different content is activated. This could be a basic value or an entire branch.
Let’s say instead of asking the customer questions, the customer asks the trainee questions. These questions, their order, and the number of questions can be randomized. This helps the trainee not become accustomed to a particular pattern of interaction and increases their level of engagement.
Summary
StoryFlow makes it easy to create and maintain branches for your VR training scenarios. Sequential, parallel, randomized and conditional branching options ensure that you can build training scenarios that are tailored to the needs of your organization.
StoryFlow gives training professionals direct control to author scenarios for VR training. Its drag and drop interface is intuitive and can be learned quickly by people with a wide range of skill sets. Branching is one of the many powerful features of the StoryFlow editor. Using StoryFlow with the rest of the Motive Training Platform gives you a complete solution for your VR training needs.