Documentation Home
Breadcrumbs

Create / Customize experiences (O4S)

Create / Customize Experiences (O4S)

[This tutorial provides an overview of how to create and customize VR experiences using the Open 4 Services (O4S) framework. For detailed technical reference on each extension type, see Section 04 — Extensions & Marketplace.]

Overview

The Open 4 Services (O4S) framework allows you to extend Skyreal VR with custom commands, content, and behaviors using Unreal Engine blueprints. Since version 1.16, Skyreal VR can load extensions made in blueprint at runtime.

What Can You Customize?

  • Commands — Add new VR and desktop commands with custom behavior and UI.

  • Auto Spawnable Actors — Automatically create actors based on context (VR, desktop, or at startup).

  • Auto Spawnable UI — Add custom UI widgets to the viewport.

  • Environments — Create custom 3D environments with configurable parameters.

  • Manikins — Import custom MetaHuman manikins with unique appearances.

  • Keyboards — Design custom VR keyboards.

  • Tools — Add custom interactive tools to the VR scene.

Getting Started

Prerequisites

  • Unreal Engine (version compatible with your Skyreal VR release)

  • Skyreal VR SDK plugins (SkrSdk, SkrUtility, SkrDataModel)

Create an Extension — Step by Step

  1. Create a new Unreal project with Skyreal VR rendering options and plugins, or start from an existing dataprep map.

  2. Open Edit > Plugins and click Add to create a new content-only plugin.

  3. Name your plugin and create a RegistrableAssets directory inside it.

  4. Add your custom content (commands, actors, widgets, environments) to the plugin.

  5. Package the extension by cooking the project: Platforms > Windows > Cook Content.

  6. Copy the .uplugin file into the cooked output directory.

Deploy the Extension

There are four ways to load an extension into Skyreal VR:

Method

Description

SkrExtensions.json

Reference the extension in the SkrExtensions.json file located in the Skyreal VR directory. Loaded at startup.

Command line

Pass the path to an extensions JSON file as a command line argument: -extensions="path/to/file.json". Loaded at startup.

Runtime command

Add the "Load Extensions" command to the desktop menu. Users pick the .uplugin file to load dynamically.

Runtime blueprint

Call TryLoadExtensionsFromFile in the SkrExtensionsSubSystem to load extensions programmatically.

Next Steps

For detailed technical documentation on each extension type, see:

  • Section 04.4.1 — Getting Started with UE Dev Environment

  • Section 04.4.2 — How to Install/Deploy UE Extension

  • Section 04.4.4 — Auto Spawnable (Widget and Actor)

  • Section 04.4.10 — Commands

  • Section 04.4.9 — Environments