Skip to main content
Version: v1.16

Create a nex SkyRealVR extension

Since version 1.16, SkyReal VR can load extensions made in blueprint at runtime. Below, you will find information on how to create an deploy extensions containing business code and integrat it to SkyReal.

Definition and usages

With the SkyReal extension system also called "Open4Service", users can deploy native extension containing new commands, new content or new behaviour to SkyReal VR. Every use case will be explaind in details in separate documentation page referenced bellow. This page focus on how to create and deploy brand new business extension.

Create an extension step by step

To create a new extensions, an installed version of Unreal editor compatible with SkyReal VR is required. You will first need to create a new Unreal project with SkyReal rendering options and SkyReal plugins (SkrSdk, SkrUtility, SkrDatamodel, ...). It possible to either start from a dataprep map created by SkyPrep or by creating from scratch a new project and download all the plugins of the release.

  • Once the project is created, open it and go into the "Edit->Plugins" menu.

    Create extension - step 0

  • Then click on "Add" button at the top left of the newly opened tab.

    Create extension - step 1

  • Then fill information of the plugin creation windows by selecting "Content Only" an fill the plugin name.

    Create extension - step 2

  • A new folder now appears in the "Plugins" section of the content browser (if not, check that the option "Show plugin content" is checked in the "Settings" menu of the content browser). Then, you can create a new dorectory called "RegistrableAssets" where every extension asset should be saved.

    Create extension - step 3

Package the extension step by step

To use extensions inside SkyReal, it should first be packaged using the following procedure.

  • First, cook the project using the menu "Plateforms->Windows->Cook Content".
Package extension - step 0

- A pop up will be display, ending with another pop-up that confirm the success of the operation (If failed, look athe the logs and solve blueprint issues)

Package extension - step 1

Package extension - step 2
  • Open windows file explorer in your project directory. Copy the "{PluginName}.uplugin" file in the sub-directory "{YourUnrealProject}/Plugins/{PluginName}" (At the left side of the picture bellow)
  • Go back to the project directory and then paste the file in the cook folder: "{YourUnrealProject}\Saved\Cooked\Windows{YourUnrealProject}\Plugins{PluginName}"
Package extension - step 3
  • Optional: At this step, plugin can work outside of the project. It's possible to exctract it into another directory of the computer by copying directory {YourUnrealProject}\Saved\Cooked\Windows{YourUnrealProject}\Plugins{PluginName} to output location

Reference packaged extension into SkyReal

To import an extension inside SkyReal, there are three differents options

Option 1: Standard SkrExtensions.json file

The first way of importing extension inside SkyReal is to edit the SkrExtensions.json located in the "SkyReal" directory. Extensions are referenced in the plugins json array field and ca be referenced either as a full path or a local path.

Register extension - option 0

The extensions will then be loaded at SkyReal startup.

Option 2: SkrExtensions.json file as command line

The second way of importing extensions inside SkyReal is similar as the first one. An SkrExtensions.json with the same structure as before is somehere on the disk and at the SkyRealVR startup, a command line arguement is added to reference the file: -extensions="c:/{YourPath}/{filename}.json"

The extensions will then be loaded at SkyReal startup.

Option 3: Import at runtime via command

The third way of importing extensions inside SkyReal is different as the precedent one because it will be loaded dynamically at runtime instead of at startup. To do so, add the command 'Load extensions' in the desktop menu. When user will click on it, a file picker will be displayed to pick at the {PluginName}.uplugin file.

Register extension - option 2

The plugin will dynamically be loaded when file is picked.

Option 4: Import at runtime via blueprint

The fourth way of importing extensions inside SkyReal is similar as the third one, but instead of loading the extension from the SkyReal command, it will call a blueprint function called "TryLoadExtensionsFromFile" inside the SkrExtensionsSubSystem.

Register extension - option 3

The plugin will dynamically be loaded after calling the function.

How to add behaviour in the extension

The extension plugin can be used to create a lot of differents things, bellow link to documentation page explaining deeper use cases: