Use pre-conditions and adaptive content to adapt your experience to in-game conditions and real-world conditions. Game conditions include: inventory conditions, storypoint conditions, task completion, etc. Real-world conditions include time of day, location, proximity to certain location types, etc. Adapting your player’s experience based on conditions allows you to creating branching narrative stories, as well as to create immersive content that appears to be reacting to your player’s world.
Branching with Frames
In Motive, Frames contain the Resources that handle game logic. A Frame precondition will block the execution of a Frame until that precondition has been satisfied. For example, a Proximity Condition will block a Frame from running until the player has come within range of the location specified in the precondition. Using preconditions and frame, you can easily author branching narratives that consider your player’s context when deciding what content to trigger, and can fallback to a default frame if required.
Adaptive Content is the ability to update the properties of a Resource based on some conditions. This is very similar to the idea of a Frame precondition, however, with Adaptive Content there is no need to create multiple Frames that probably contain similar content. Instead, you can create one Frame and can assign the Resources within to contain Dynamic Variables.
For example, say your player need to collect 3 out 5 stars to pass their current task. When the player is finished, by default they will see a Screen Message saying “You’re done”. However, if the player has collected all 5 out of 5 stars, instead the same Screen Message has been configured with a Dynamic Variable that will say “Great job! You collected all the stars!”. This extra message can be configured using a Dynamic Variable on the Screen Message Resource without re-creating the entire Frame the Screen Message lives in.
Dynamic Variables are also useful anytime you want to use Locations that are relative to your player. Instead of placing a Location Task at a Location that has been manually created, you can use a Dynamic Variable to assign the Location property to be “at the player’s current location”, or “50m north of the player’s current location”.