Repository navigation
Requirements & Optimisation
Dan Borthwick edited this page May 21, 2018
·
62 revisions
- The only version of Unity we currently support is 2017.2.0p4
- Experiences should consist of a single Unity scene.
- Only this scene will be included in the .limapp package and attempting to load other scenes from your Unity project will not succeed.
- Experiences must maintain a framerate of at least 60fps on all supported devices, in line with requirements for the GearVR and Google Daydream platforms.
-
Experiences should support Single Pass Rendering. Ensure that
Edit > Project Settings > Player > Android > XR Settings > Stereo Rendering Methodis set toSingle Pass (Preview)
- Ensure your sound files have been normalised. This will assist your sound levels in being similar to those within the platform.
- While your Experience is running, users can press the back button to exit the experience and return to the Liminal App. This is handled automatically by the Liminal SDK. Your Experience should therefore not attempt to respond to
VRButton.Back.
- To end your Experience
- Add
using Liminal.SDK.Core; - Then call
ExperienceApp.End();to end your Experience
- Add
- Liminal SDK is intended for use with C# scripts. Scripts written in UnityScript/JavaScript and Boo are not supported.
- Do not change Unity's global state from within your scripts
- For example,
Time.timeScale. It should always be left at the default value of 1. - Other examples include
QualitySettings,Graphicsetc.
- Plugins can be used as normal, but imported scripts must comply with these requirements in the same way as your own scripts.
- When choosing whether to use a plugin, review its code as well as its terms and conditions carefully.
- We discourage using licensed plugins.
CurvyPostprocessing
- These classes need to have a constructor without an argument if they use constructors.
- Data may be lost during instantiation if the object is not in the scene.
-
[Serializable]classes that reference a scriptable object need the scriptable object to have the[PreferBinarySerialization]attribute
- Do not use a method with a default parameter that references
UnityEngine- e.g.
void MyMethod(Space space = Space.Self);
- e.g.
- Methods without default parameters can reference
UnityEnginetypes as normal- e.g.
void MyMethod(Space space);
- e.g.
- These will be initialised the first time the Experience is loaded, but not necessarily before each time it is run.
- If the Experience depends on static variables, ensure these are correctly initialized.
- For example, a listener for the
ExperienceApp.Initializeevent
- For example, a listener for the
- Do not call
DontDestroyOnLoad()anywhere within your scripts.
You must own the rights to all the content within your submitted Experience or they must comply with the conditions of the original content owner.
- Copyrighted music
- Logos or direct references to brands
- 3D models and assets must comply with re-use for commercial purpose
We highly encourage all users to have some form of screen transition for the end of their Experience.
- Liminal supplies a screen fader with the Liminal SDK. This can be easily called from within your scripts.
- To fade out at the end of your Experience:
-
Add
using Liminal.Core.Fader; -
Then call-
var fader = ScreenFader.Instance;fader.FadeTo(Color fadeColor, float fadeDuration);
-
Everything You Need to Know to Develop for Oculus Go by Oculus (20th April 2018)
Squeezing Performance out of your Unity Gear VR Game by Oculus (12th May 2015))
Unity: Android Optimisation Guide by IronEqual (18th August 2017)
- The Liminal App and Liminal SDK support all input devices commonly in use across the supported VR platforms, including GearVR headsets that don't have a separate handheld controller. Your experience should be designed to work well for users with and without a handheld controller.
- Not all controllers feature all of the input methods available through the Liminal SDK. Your experience should be designed to work well using just the buttons shared by all input devices. These are:
VRButton.One- The D-Pad buttons:
VRButton.DPadUp,VRButton.DPadDown,VRButton.DPadLeft&VRButton.DPadRight
- Other VRButton values such as
VRButton.TriggerandVRButton.Touchcan be used for non-essential functionality.