FAQ
General
Does Luna Replay support all Unity features?
Yes, Luna Replay is not limited to a subset of Unity features and components. However, please review the setup guide for system and input requirements.
How can I uninstall the Replay plugin from my Unity project?
To remove the Luna Replay plugin from your Unity project, you must delete the following folder and files:
- Assets > LunaReplay
- Resources > PlaygroundCredentials
- Resources > ReplaySettings
- Resources > HudSettings
Does Luna Replay support GUI events?
Yes, but with limitations which you should be aware of.
As an example, if you use the KeyDown
event, OnGUI
is called four times: Layout, KeyDown, Layout, Repaint.
In replay mode, this will be replayed as: Layout Repaint.
Therefore, we recommend not using GUI events unless you are aware of the above limitation.
When I press to start/stop recording in capture mode, a game event is also triggered. How can I avoid this?
Luna Replay capture controls may occasionally let touches through on Android and iOS.
You may use the following example to avoid that:
var hudHeight = Screen.width * 0.18f;
if (Input.GetMouseButtonDown(0) && Input.mousePosition.y < Screen.height -
Screen.safeArea.y - hudHeight)
{
// Handle input here...
}
Can I use Luna Replay in a game which fetches data from a server during gameplay?
Yes, it is possible to do this but please note:
- Creative Suite does not allow server calls, so you must disable these during Replay mode.
- You should use the DataPrefs API to store the data from the server during a capture. Please see the documentation for examples.
Can I leave the Luna Replay plugin in my project when not being used?
If the Luna Replay plugin is Disabled, then it is safe to leave in your project and builds.
Any code which is wrapped in a LUNA_CAPTURE
or LUNA_REPLAY
define symbol won't be included in a build. The plugin itself will remain in the build.
Creating Builds
If I update my game, do I need to update the Linux build?
It is important that the build (app) which you are using to create your captures and the Linux build in Creative Suite are the same.
Whilst there are many cases where you may change the capture build without having any impact on the end results, it is best practice that they are the same to avoid unexpected variations.
Captures
When does the capture start recording?
When you launch your game with Capture mode enabled, Luna Replay will begin recording data. By starting and stopping a capture, you are setting markers; these markers are used to automatically trim the video when it is rendered, and can be adjusted in Creative Suite.
When I press "Record" the gameplay starts. Why does this happen?
We block intersections with UI elements when interacting with the Luna UI. However, we are unable to block interactions using Input.GetMouseButton
or Input.GetButton
.
Creative Suite
My Linux build failed to upload to Creative Suite. What happened?
Please make sure to review the section on creating a Linux build to ensure you have followed the necessary steps.
There are a number of reasons a Linux build may fail to upload to Creative Suite. They include:
- Incorrect or missing files in archive
- Creative Suite fields with empty title strings
- Using a development Linux build
- Using a non-x86 Linux build
I don't see the Creative Suite fields (game variables) in the editor. What happened?
Please ensure that you have implemented the ISerializationCallbackReceiver
interface on your MonoBehaviour
or ScriptableObject
.
Changing a Creative Suite field (game variable) doesn't change the gameplay in the video. What happened?
This can happen when the Linux build is experiencing errors or crashing. Please check the logs for the video which is not accurate.
You can find the logs by navigation to the render screen, and downloading the log file which is present for videos with errors. See here for more information.
My video completed but the output is wrong. What can I do?
We recommend that you review the log file which is provided with the video - it is likely that a crash or error is causing unexpected behaviour.
If there is no issue discovered, then you may try the following:
- Confirm that the build works locally in the Unity editor.
- Review the documentation on building for Linux and ensure you don't have any partitions in your code which can cause unexpected results.
How can I debug what is happening in Linux?
With every failed or successfully rendered video, Luna provides a logfile. Read more info here.
The logfile provides you with all errors which occur during the gameplay.
You may also use debug logs in your game code, and these will be printed to the Linux logfile.
Replay Errors and Warnings
Luna Replay provides a number of warnings and errors to let you know something isn't quite right.
.NET API Level
Error message:The application quit and no videos were rendered. Please ensure that your .NET API level is set to 4.x for your Linux build. To do this, open your project in Unity, navigate to Player Settings and change the API Compatibility Level to .NET 4.x.
In order to use replay videos, the API Compatibility Level for your project must be set to .NET 4.x. Please see here for more information.
Unity 2020 iOS API Compatibility Level bug
Error message:Video recording does not work reliably when API Compatibility Level is set to .NET Standard 2.0 - please switch to .NET 4.x
If you have ensured that you have .NET 4.x set as the API Compatibility Level for your project (guide on doing this can be found here); then this is likely due to a known bug in Unity 2020:
The bug occurs whilst trying to switch API Compatibility levels in a project with an iOS build target; the compatibility level doesn't actually switch even though it's been switched in the settings.
Workaround:To get around this you will need to delete your Library folder and relaunch Unity.
This is a bug in Unity 2020 and therefore has nothing to do with Luna Replay, so it is sadly out of our hands to fix.
Random numbers are out of order
Error message:The Random.state differs from the state during the capture. If it causes issues please make sure you have set barriers after asynchronous operations. See documentation for more details (https://docs.lunalabs.io/docs/replay/replay-api/barriers).
Luna Replay is able to ensure consistency between the random values used during your captures and replays. To do this, Luna keeps a record of the random seed and uses this to generate all subsequent random values in order.
If the usage order of your random values changes (can be due to the introduction of new random values, or use of async loading) then this can cause discrepancies.
Luna detects when this order changes, and throws the above warning.
Startup scene is different between capture and replay
Error message:The initial (startup) scene SCENE_PATH used in your capture in not equal to the initial (startup) scene SCENE_PATH used in your replay. To ensure accurate replays, please ensure that you change your initial scene.
The startup scene used in your capture is not the same as the startup scene in your replay. Please check your build settings when creating the Linux build, or set a barrier.
Unscaled Time in Animator
Error message:During build:
Animators “Unscaled Time” update mode on “GAME_OBJECT_NAME” at “ASSET_PATH” is not supported. If you observe a difference between the capture and replay, please change this setting to “Normal”
During replay in Editor:
Animators “Unscaled Time” update mode on “GAME_OBJECT_NAME” is not supported. If you observe a difference between the capture and replay, please change this setting to “Normal”.
Luna Replay does not support the use of Unscaled Time in Animator components. Please change this to normal for use with Replay.
Using PlayerLoop
Error message:Luna Replay callbacks were removed from PlayerLoop. You can use Replay and modify PlayerLoop only on Unity 2019.3 and above.
If you are using PlayerLoop
(Unity reference) in your game, then this can cause issues with Luna Replay if your Unity version is 2019.2 or earlier.
In order to use PlayerLoop
and Replay, please upgrade your Unity version to 2019.3 or later.
Zero frames captured
Error message:Something went wrong. Zero frames captured.
Something failed during the capture process, and zero frames were captured.
For example, if you are modifying PlayerLoop
in a Unity version lower than 2019.3, you will receive this warning and the capture will fail to save.