Build an interactive short drama
Last Train to the Moon is the reference project for Vifu Content Runtime. It is a five-act portrait story with four Agent characters, free-text interactions, fixed choices, a host action, three endings, and localized releases.
The example is intentionally application-specific. Vifu does not prescribe a story schema, timeline editor, media format, or rendering system. The Content Runtime plugin supplies those parts and uses Vifu for canonical project and Agent identity, provider access, runtime channels, and traces.
Watch the completed experience
What the example contains
- five acts and three conditional endings;
- four project Agents and one fixed player identity;
- fixed choices and free-text Agent interactions;
- a host action completed by the presentation client;
- portrait backgrounds, character poses, music, and voice assets;
- English, Japanese, and Simplified Chinese content; and
- one versioned source compiled into playable releases.
How the pieces fit together
The editor and host are replaceable product surfaces. The Short Drama plugin defines the source language and compiles it into systems installed on Vifu's headless Bevy runtime. The Content Runtime service stores the example's private drafts, media, releases, and sessions.
Agent interactions
An Agent interaction is part of the story graph rather than an unrestricted chat box. The plugin decides when an interaction begins, which Agent profile it uses, what public story state is available, and how the result advances the scene. Agent execution still goes through Vifu's authenticated callback, so the plugin never receives provider credentials.
This separation also makes the interaction observable. The application owns the story outcome; Vifu owns the Agent invocation and trace.
Host actions
Some actions belong to the presentation host. The example includes a hold gesture that the web client renders and completes. The runtime pauses at the host action, the client performs the interaction, and the session resumes with the result.
The same pattern can represent camera input, engine-owned objects, device motion, or another interface that should not be implemented inside the headless runtime.
Reuse the pattern
A training simulator, character experience, product walkthrough, or game can use the same architecture:
- define an application source and command model;
- implement the behavior as an embedded plugin or runtime service plugin;
- attach the plugin to a canonical Vifu project;
- invoke project Agents through the Vifu callback; and
- render the application through the host that fits the product.
Continue with Authoring and releases to see how this example turns editable source into a stable release.
