Basic concepts
To successfully create configurator applications in Unity, it is important to understand how the Editor organizes imported models and product information.
Configurators
The Configurator is the main component of Forma architecture. It lets you manage other components, including:
- The Product that you want consumers to be able to configure
- The Staging environment that you show the product in.
- The Runtime UI that consumers will use to make configuration selections.
- Provider Engines that run the logic that the Configurator uses in the background.
Configurator components
Products
Product components
Variant tables
Variant table components
Variant structure
Variant structure
Configuration
Relationship between Configuration and assignments
Staging
Each staging element (such as the camera, environment, and animations) is created from a list of commands. The commands define custom behaviors that the application executes under specific conditions, defined by a rule.
Staging components
Features, Variants, and Packs
The system uses Features, Variants, and Packs to organize your product in the configurator interface.
Features
Any characteristics of a Product that you want users to configure, name, describe, or identify with a marketing code are defined as Features in Unity Forma. A feature can be either a Variant or a Pack.
Feature Sets
Feature Sets group different Features. If the set groups Variants, it is known as a Variant Set. A Pack Set groups different packs.
Variant Sets
A Variant Set is a collection of Variants that are mutually exclusive. For example, these are Variant Sets for a car configurator:
Variant Set | Included Variants |
---|---|
Rims | 17" Aluminum |
17" Alloy | |
18" Alloy | |
Carpaints | Red |
Orange | |
Gray | |
First aid kit | On |
Off |
Pack Sets
Pack Sets are collections of Variants that you can use to define different themes for a product. For example, a car configurator might have these Pack Sets:
Pack Set | Included Variants and Packs |
---|---|
Winter | On (Pack) |
Heated seats (Variant) | |
Heated steering wheel (Variant) | |
4-zone AC (Variant) | |
Off | {empty} |
Black | Version 1 (Pack): Black side mirrors (Variant) |
Version 2 (Pack): Black side mirrors (Variant) and Black rims (Variant) | |
Off {empty} |
Packs
Packs are collections of Variants that you can trigger in the same way that you do typical Variants.
Packs do not directly affect how your Product appears in the configurator. They collect the Variants you assign to different parts of the Product into convenient groups.
For example, a Winter Pack for a car could include the following Variants:
- Heated seats (Variant)
- Heated steering wheel (Variant)
- 4-zone AC (Variant)
Each Pack has the following:
- A name
- A description
- A marketing code
In the Configurator hierarchy, Packs are between Variant Tables and the Rule Engine that defines Variant logic. They are useful for organizing features in simple configurators.
If your configurator is more complicated, you can use additional logic in the Rule Engine to expand or restrict Pack behavior. For example, you can create rule that states that if the Winter Pack is active, consumers can only select blue and white car paints.
Forma architecture lets you create Packs that contain other Packs and Variants. Packs contain a collection of type List, which supports both Packs and Variants.
Provider Engines
Provider engines relay additional information to Forma in response to requests from the application. They are extensibility points that let you customize different types of behavior in the configurator.
You can use these provider engines with Forma:
- Rule engine
- Runtime UI data engine
- Pricing engine
- Analytics engine
Rule engine
The Rule engine lets you customize the logic of your configurator. It defines which features of your product are available to consumers when they make selections in your application.
Every time a consumer makes a configuration change in the configurator, it requests information from the Rule engine to determine the features of your product to show.
The following diagram shows a simplified process:
Rule engine sequence
Runtime UI data engine
The Runtime UI data engine lets you customize the information that is displayed in the Runtime UI.
The UI data could be hosted, for example, on a Web server.
The following diagram shows an example of the process involved in displaying the correct feature information in the Runtime UI when a consumer selects a specific feature of the product:
Runtime UI engine
Pricing engine
The Pricing engine lets you customize the pricing logic that the configurator uses.
For example, you can host pricing data on a Web server that the configurator requests information from.
The following diagram shows an example of the process the application uses to display pricing information in the configurator UI when a consumer makes different selections.
Pricing Engine
Analytics engine
The analytics engine lets you customize how the system gathers information about events in the configurator and aggregates them for your analytics service.
The field can be any Prefab asset with a script component that implements the IAnalyticsEngine programming interface.