Search Unity

  1. Unity 6 Preview is now available. To find out what's new, have a look at our Unity 6 Preview blog post.
    Dismiss Notice
  2. Unity is excited to announce that we will be collaborating with TheXPlace for a summer game jam from June 13 - June 19. Learn more.
    Dismiss Notice

[RELEASED] Ultimate Replay 3.0 - Next generate state based replay system (Killcam, Ghost & More)

Discussion in 'Assets and Asset Store' started by scottyboy805, Sep 4, 2023.

  1. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Ultimate Replay 3.0 is now available on the asset store!
    An initial release discount will be available for the first 2 weeks of sales!



    Available on the Unity asset store!

    Support | Suggestions | Feedback | Bug Report | Discord | Documentation | Samples
    Asset Store | Trial Version | Previous Version (v2.0)

    ____________________________________________________________________________________
    Ultimate Replay 3.0 is suitable for:
    Killcam's or Deathcam's, Action or Instant Replays, Ghost Cars, Highlights Reel, Sports Montage, Rewind Time, Second Chance Gameplay, Plus many more...

    Want to try before you buy? Check out our free trial version

    Ultimate Replay 3.0 is the next iteration of our popular Ultimate Replay state based replay system, and aims to make in-game replays, killcams and ghost vehicles easier than ever. We have received some really good feedback and suggestions over the lifecycle of version 2.0, some which we could implement and some which would cause breaking changes. Now we are starting once again with a clean slate to support as many of these features and workflows as possible, while making ease of use a top priority.

    If you are not familiar with our Ultimate Replay series, the asset is designed to be a complete replay system for your game to make it easy to add action replays, killcams, ghost cars and much more with minimal effort. It works by capturing a snapshot of the scene at regular intervals containing information such as object postion, rotation, plus other data specified by replay components. The replay system then uses that information to reconstruct a smooth replay using interpolation in the Unity scene which can be rendered by any active camera. For that reason, it is possible to view the replay from any angle and even fly the camera around while the replay is occuring. Also since the replays are rendered in realtime, the replay system can run on any render pipeline with any camera syetem, post effects etc.

    Features
    • Quick and easy to setup / integrate into existing projects.
    • Simple API - Minimal scripting knowledge required.
    • Highly extensible - Create custom replay components, etc.
    • Record and replay as many different objects as you want simultaneously.
    • State based - View replays from any camera in realtime.
    • Support for instantiated/destroyed prefabs.
    • Interpolation support - Record at 5fps or less and retain smooth playback.
    • Supports playback at any speed.
    • Supports reverse playback.
    • Supports pause/resume playback and recording.
    • Seeking allows you to jump to any point in a replay.
    • Recording an object is as simple as attaching a replay component.
    • Built-in support for recording transform, audio, particles, animation, and more.
    • Memory recording can be setup as continuous or as a rolling buffer.
    • File and stream support using optimized binary format or json.
    • ReplayVars allow script variables to be recorded simply using an attribute.
    • Get useful hints about the storage space requirements for all replay objects.
    • Includes example GUI controls for quick recording and playback.
    Supported Platforms

    Windows | Mac | Linux | Android | IOS | UWP | WebGL (Limitations)
    WebGl - Lack of platform support for IO / threading means that replay files are not supported.
    Console - Not tested due to no access but no reason why it should not work.

    Additional Details
    ☑ Fully commented C# source code included for both runtime and editor.
    ☑ Full documentation and scripting reference to get you up and running quickly.
    ☑ Includes games demonstrating use cases such as killcams and ghost cars.
    ☑ Dedicated demos and code examples to help you use the API.
    ☑ 3rd generation of the asset means you get a stable and well proven product.
    ☑ Long term support from a trusted publisher.
    ☑ Backed by our users (Rated 5 stars on unity asset store).
    ☑ Free trial version available for evaluation purposes - Try before you buy.
    ☑ Render pipeline independant - Replays are rendered by the active camera so any pipeline is supported.
    ☑ Supports Unity 2021 LTS and newer.

    More Info
    Ultimate Replay 3.0 is designed to be a complete replay system for your game to make it easy to add action replays, killcams, ghost cars and much more with minimal effort. It works by capturing snapshots of the scene at regular intervals containing information such as object postion, rotation, plus other data specified by replay components. The replay system then uses that information to reconstruct a smooth replay using interpolation in the Unity scene which can be rendered by any active camera in realtime. For that reason, it is possible to view the replay from any angle and even fly the camera around while the replay is occuring. Also since the replays are rendered in realtime, the replay system can run on any render pipeline with any camera syetem, post effects etc.

    Designed with ease of use as the highest priority, you can add replays to your game in a matter of minutes by simply selecting game objects and then making them replayable using the Ultimate Replay menu bar. Built-in video player style controls mean you can record and replay instantly to test things out, but there is also a fully documented API if you want to implement auto-killcams, rewind time or other types of replay without relying on UI controls. Only basic scripting knowledge is required to implement such features.

    If you are a previous user of Ultimate Replay 2.0, you will be entitled to a highly reduced upgrade price to move from 2.0 - 3.0 which will be handled by Unity asset store upgrade system. Simply login to the Unity account used to purchase version 2.0 and the Unity asset store will automatically show you the reduced price when viewing the Ultimate Replay 3.0 store page. The actual upgrade price may vary but will usually be within the region of 25% of the full purchase price. For any more information about upgrading feel free to contact us for help.

    Ultimate Replay 2.0 will remain available on the asset store for long term support, and will continue to receive bug fixes in that time, but note that new features will likley not be added. Also note that version 2.0 will be marked as legacy at that time and we would encourage users to update to version 3.0 if possible. Feel free to contact us if there are any question.

    Feedback
    Missing a feature? Let us know what you would like to see worked on/added either though one of the support channles, or by posting in this thread. Any feedback or criticismis welcome as it will help us build a better final product to power your games.​
     
    Last edited: Sep 15, 2023
  2. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Showcase

    This section will showcase some of the common use cases and demos for Ultimate Replay 3.0 to give a better idea of where and how the asset can be used. There are many different types of projects which could make use of a replay system for things like:

    Simple ghost vehicle example for a racing game:


    Simple action replay montage for a racing game showing highlights of the lap when the race has finished:
     
    Last edited: Sep 4, 2023
  3. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    I am happy to anounce that Ultimate Replay 3.0 has now released on the Unity asset store :D.

    Check it out on the asset store and grab a copy at 30% off as part of out initial release sale. Existing v2.0 users can also upgrade via the asset store for the upgrade price of just $10, simply login to see the discount!.
     
  4. Koboct-Denis

    Koboct-Denis

    Joined:
    Jul 20, 2022
    Posts:
    22
    Hello, I'm having trouble to setup Ultimate Replay.
    I'm getting the error "The specified replay storage is not readable and cannot be used for replaying".
    I have multiple scenes, loaded additive, and ReplayObjects might be in different scene.
    I want to save the replay to a file and play it back later.
    But when playing it back I get the error.
    From what I understood, by default ReplayObjects are only the ones in active scene, so I added them to a ReplayScene.
    Here is my code
    Code (CSharp):
    1. public void BeginRecord()
    2.     {
    3.         Directory.CreateDirectory(Application.persistentDataPath + "/Replays");
    4.         string filePath = Application.persistentDataPath + "/Replays/Session_" + DateTime.Now.ToString("ddMMyyyyHHmmss") + ".replay";
    5.  
    6.         storage = ReplayFileStorage.FromFile(filePath, ReplayFileType.FromExtension, true);
    7.  
    8.         ReplayScene scene = new ReplayScene();
    9.         foreach (var replayObject in FindObjectsOfType<ReplayObject>())
    10.         {
    11.             scene.AddReplayObject(replayObject);
    12.         }
    13.         scene.SetReplaySceneMode(ReplaySceneMode.Record, storage);
    14.  
    15.         // Start recording
    16.         record = ReplayManager.BeginRecording(storage, scene);
    17.     }
    18.  
    19.     public void StopRecording()
    20.     {
    21.         if (record != null && record.IsDisposed == false)
    22.         {
    23.             record.Dispose();
    24.             record = null;
    25.         }
    26.     }
    27.  
    28.     public void DisposeStorage()
    29.     {
    30.         if (storage != null && storage.IsDisposed == false)
    31.         {
    32.             storage.Dispose();
    33.             storage = null;
    34.         }
    35.     }
    36.  
    37.     private void OnDestroy()
    38.     {
    39.         StopRecording();
    40.         DisposeStorage();
    41.     }
    Code (CSharp):
    1. public void Play(string filePath)
    2.     {
    3.         if (IsReplaying == true)
    4.             return;
    5.  
    6.         storage = ReplayFileStorage.FromFile(filePath, ReplayFileType.FromExtension, true);
    7.  
    8.         ReplayScene scene = new ReplayScene();
    9.         foreach (var replayObject in FindObjectsOfType<ReplayObject>())
    10.         {
    11.             scene.AddReplayObject(replayObject);
    12.         }
    13.         scene.SetReplaySceneMode(ReplaySceneMode.Playback, storage);
    14.  
    15.         // Start new operation
    16.         playback = ReplayManager.BeginPlayback(storage, scene);
    17.  
    18.         // Add end listener
    19.         playback.OnPlaybackEnd.AddListener(StopPlayback);
    20.     }
    21.  
    22.     protected virtual void StopPlayback()
    23.     {
    24.         // Stop any playback operations
    25.         if (playback != null && playback.IsDisposed == false)
    26.         {
    27.             playback.Dispose();
    28.             playback = null;
    29.         }
    30.     }
    31.  
    32.     public void DisposeStorage()
    33.     {
    34.         if (storage != null && storage.IsDisposed == false)
    35.         {
    36.             storage.Dispose();
    37.             storage = null;
    38.         }
    39.     }
    40.  
    41.     private void OnDestroy()
    42.     {
    43.         StopPlayback();
    44.         DisposeStorage();
    45.     }
     
  5. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Hi, The code looks good from a quick glance and I cannot see anything obviously wrong with it.
    Since you are working with replay files and you get the error message "The specified replay storage is not readable and cannot be used for replaying", that can only mean that the specified file path does not exist when you come to start the replay (Unless something more serious is going wrong). So my initial guess would be that the `Play` method is taking in a file path that does not exist or is maybe not quite correct. You might try logging that path to the console or inserting a quick `FIle.Exists` check to see if that is the problem, but that would be my first checks just to make sure that is correct. Also might be worth checking if you havent already opening the output folder in explorer just to make sure that the replay file is generated and that aspect is working ok.

    Hope that helps for now. Let me know if you are still having trouble.
     
  6. Koboct-Denis

    Koboct-Denis

    Joined:
    Jul 20, 2022
    Posts:
    22
    Thank you, I was indeed passing only the file name and not the full path to my method. My bad! :confused:
    Maybe you can add a more specific message if the file is not found?
    I don't have the error anymore but I have now warnings and nothing is replayed:
    "Replay playback accuracy error: Failed to recreate replay object with identity 'ReplayIdentity(47037)'. The object could not be found within the current scene and it is not a registered replay prefab. You may need to reload the scene before playback to ensure that all recorded objects are present."

    Objects are in one of the scene, not instantiated at runtime, I thought I shouldn't need to add them to the prefab list. I start the playback only when all scenes are fully loaded.
    Thanks for the help!
     
  7. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Ok, glad to hear that was easily solved.
    Yes I will see if a more useful warning can be added if the file does not exist so other users don't fall in the same trap.

    For the second issue it sounds like maybe the object was not added to the ReplayScene as you first thought? Maybe as you are looping through and adding objects to the replay scene you can add a quick log of `replayObject.gameObject.name` just to make sure all expected objects are being added. Seems only related to playback based on that accuracy warning, so it seems that the object was recorded just fine atleast.
    No need to add them as replay prefabs if they are not instantiated or destroyed while recording. I guess we are talking about prefab instances here though that have been placed in the scene at edit time, and not dynamically spawned at the start of the game for example?
    Only other thoughts at that point would be the replay id for the scene objects changing between sessions which would be a bug.
     
  8. Koboct-Denis

    Koboct-Denis

    Joined:
    Jul 20, 2022
    Posts:
    22
    All objects are logged correctly when creating the scene (recording and playback).
    But they indeed have different ids between the record and the playback.
    Also, when I check the Id in the scene, in the editor, each time I reload the scene, it shows me a different Id for the same object.
    Objects are indeed from prefabs dropped in the scene in the editor. The prefab identity stays the same though.
    I tried adding a cube (not from prefab) in the scene and its Id stays always the same when reloading the scene.
    So yeah, sounds like a bug, an object from a prefab is getting a new Id at each scene loading?
     
  9. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Ok, thanks for checking and sounds like it is a bug then in that case.
    Does the id change when you enter/exit play mode too, or only when you reload the scene from the editor? Can you let me know which Unity version you are using so I can check that out on my end?
    If you have chance can you also try adding `ULTIMATEREPLAY_DEV ` define to the unity player settings and allow ther scripts to recompile. After that you should see that ReplayObject has some extra values relating to prefabs drawn in the inspector. Could you let me know what those values are (IsPrefab, prefabType).
     
  10. Koboct-Denis

    Koboct-Denis

    Joined:
    Jul 20, 2022
    Posts:
    22
    When pressing play the Id doesn't change, when exiting play mode the Id changes to a new value.
    I'm using 2022.3.4.1f.
    IsPrefab is on, PrefabType is "Prefab Instance". (It was ULTIMATEREPLAY_DEBUG, not DEV, just in case)
     
  11. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Ok thanks for checking, I will take a look and see what the issue might be.
    Good spot on `DEBUG` over `DEV` too, I will update that in the docs.
     
  12. Koboct-Denis

    Koboct-Denis

    Joined:
    Jul 20, 2022
    Posts:
    22
    Note that when is Replay scripts are not added to the prefab itself, but to the instance of the object, Id doesn't change and I can see the replay. (Even though I see objects going all over the place for a few seconds before playing the actual playback, but it might be due to others prefabs that are still bugged)
     
  13. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    When you say replay scripts do you mean that you have created your own ReplayBehaviour derived script, or are you just talking about the built in replay components like `ReplayTransform`?
    I have not had much luck replicating the issue and from the testing I have done so far and id's of the prefab instances remain fixed with no changes at all when enter/exiting play mode and changing scenes in the editor (Tested in 2021 LTS and 2022.3.4).
    Don't suppose you could walk through the steps you are using to setup the replay object/prefab so that I can try and find where the problem might be coming from or what is going wrong. Alternativley you could send over the prefab if willing/able (If licencing allows) so I can do some tests with it directly, but no worries if not.
     
  14. Koboct-Denis

    Koboct-Denis

    Joined:
    Jul 20, 2022
    Posts:
    22
    I mean ReplayTransform and ReplayObject scripts.
    I add them using Tools->UR3->ReplayTransform.
    Though I might have add scripts manually to the prefab when I started to setup.
    I noticed IsPrefab is off on the prefab itself, even if IsPrefab is on for each instance of the prefab.
    Also when in Prefab Mode, when I add the scripts (with Tools->UR3->ReplayTransform), I get this error twice :
    Code (CSharp):
    1. NullReferenceException
    2. UltimateReplay.ReplayObject.UpdatePrefabLinks (System.Boolean isSerializeCall) (at Assets/Ultimate Replay 3.0/Scripts/Runtime/ReplayObject.cs:716)
    3. UltimateReplay.ReplayObject.UnityEngine.ISerializationCallbackReceiver.OnBeforeSerialize () (at Assets/Ultimate Replay 3.0/Scripts/Runtime/ReplayObject.cs:391)
    4. UnityEditor.EditorApplication:Internal_CallUpdateFunctions()
     
  15. Koboct-Denis

    Koboct-Denis

    Joined:
    Jul 20, 2022
    Posts:
    22
    OK, now it's working properly. I don't know if I messed up something on my initial setup.
    I redid my prefabs and now it seems to work fine: I have the same Ids on record and playbacks.
    Some of my items are still moving like crazy when they should be still, only for a few seconds at launch. I will continue to look into that.
     
    scottyboy805 likes this.
  16. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Ok thanks for the info.
    `IsPrefab` should always be true for prefab assets or instances, so maybe that is the source of the issue.
    The exception has been reported a few times and we are currently looking into it. I would say for now it is probably not related but there is a slight possiblilty. It will be fixed for the next update in any case.
     
  17. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Glad to hear it. Sounds like something may have gone wrong when setting up the objects in that case leading to all this trouble. If you are able to replicate it at any point please do let me know as I would really like to get that fixed so other users don't end up with similar issues.
    Don't know what you mean by moving like crazy: Do they snap to a replay postition from another point for example or just some sort of jittereing/irregular movement, or something else. Not sure what could cause that but let me know if you need any help with that.
     
  18. Koboct-Denis

    Koboct-Denis

    Joined:
    Jul 20, 2022
    Posts:
    22
    It seems to happen to object that do not move yet, they go from scene origin to their position in 3-4 frames, looping for ~3 seconds, resulting in a chaotic mess where items are flashing all around the place.
    It seems it happen to objects without a rigidbody or Kinematic rigibody (well, not moving).
    I was able to reproduce it in the CubeTest sample scene.
    Duplicate the ReplayCube Prefab, remove the rigidbody of the new prefab, place couple instance of it in the scene. Record and Playback and you should see it.
     
  19. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Thanks for adding those steps.
    I was able to reproduce it and looks like the object is flickering between its scene position and the world origin for a few seconds, does that sounds about right? Not sure what would cause that but I will check it out and have it fixed for the next update. Let me know if there is anything else in the meantime.
     
  20. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Looks like it was quite a simple fix in the end. I will post the changes if you wanted to make those yourself since they are only small, but it will be fixed in the next update which will hopefully be at some point today if all goes well (A few other minor issues resolved).

    UR_DiffChanges.png

    Code (CSharp):
    1.             // Update serialize flags
    2.             UpdateSerializeFlags();
    3.  
    4.             // Update current targets
    5.             lerpPositionTo = ((serializeFlags & ReplayTransformFormatter.ReplayTransformSerializeFlags.LocalPos) != 0) ? thisTransform.localPosition : thisTransform.position;
    6.             lerpRotationTo = ((serializeFlags & ReplayTransformFormatter.ReplayTransformSerializeFlags.LocalRot) != 0) ? thisTransform.localRotation : thisTransform.rotation;
    7.             lerpScaleFrom = thisTransform.localScale;
    8.         }
    9.  
    10.         protected override void OnReplayReset()
     
    Koboct-Denis likes this.
  21. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Ultimate Replay 3.0.1 has been released on the asset store. This version includes the following bug fixes:
    • Fix a bug in ReplayTransform where some objects could jitter between their current position and world origin at the start of a replay.
    • Fix errors on import caused by Json.Net dependency not being available by all supported Unity versions. It will now be required to setup json support with extra steps.
    • Disable Json functionality by default to avoid compilation errors in some versions.
    • Fix an issue in some unity versions where an exception could be thrown when saving prefab changes in context.
    • A warning will now be logged to the console when the replay system attempts to load a replay file that does not exist. Previously a read exception was thrown and was not obvious what the problem was.
    • Minor bug fixes.
     
  22. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Ultimate Replay 3.0.2 has been released on the asset store. This version includes the following improvements and fixes:
    • Add support for manually disabling threading using 'ULTIMATEREPLAY_DISABLE_THREADING' - Not recommended for most users.
    • Threading will now be disabled by default on WebGL allowing 'ReplayStreamStorage' to be used on that platform.
    • Fix a bug where a replay method using an enum parameter would not be serialized correctly.
    • Fix a bug where a replay method could be called twice during playback when there was only one record call.
    • Improve and optimize json/text based storage by reducing the amount of data stored.
    • Add support for optional replay tokens for text based serialization.
    • Non-Essential properties are no longer serialized to text/json storage by default but can be written by setting an optional parameter.
    • Fix 'SendMessage' warnings causes by some invalid UI controls on ReplayControls prefab.
    • Remove unnecessary code.
    • Minor bug fixes.
     
  23. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Ultimate Replay 3.0.3 has been released on the asset store. This version includes the following improvements and bug fixes:
    • Enable support for using file storage in the editor with WebGL platform selected in build settings.
    • Ignore UI components, canvas and other related UI components in replay state preparation which could cause the UI to become disabled in some setups.
    • Fix an issue with ReplayAnimator where IK would replay without interpolation even if it was enabled causing choppy playback for IK aspects.
    • Add support for editing replay id values directly in the inspector in order to set up your own objects with known id values.
    • Fix a bug where it is possible to assign replay id values from code that are too large leading to data truncation when serializing the replay data resulting in incorrect playback.
    • Support serializing replay events, variables and method calls in text based/json storage.
    • Fix a bug where replay id's could change unexpectedly when editing a prefab asset in isolation or in context.
    • Implement replay method caching to improve performance of invoking replay methods.
    • Optimize replay method serialization to use far less data when serializing a method call.
    • Add support for method overloading when invoking a replay method.
    • Remove VS added auto-complete using statements which could cause a standalone build to fail.
    • Minor bug fixes.
    New feature - Modify replay id values via inspector
    EditReplayIDGif.gif
     
  24. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Ultimate Replay 3.0.4 has been released on the asset store.This version includes the following additions and bug fixes:
    • Add support for instantiated objects to keep the same replay identity as the prefab asset (Disabled by default) in order to support cases where there will usually only be a single instance of a prefab for things like characters or ghost vehicles.
    • Add additional ghost vehicle demo scene demonstrating the above feature by using dynamically instantiated prefabs for the player car and replay of the ghost vehicle. Demonstrates a ghost car implemention more alike what you would actually find in real world usage.
    • Add support for registering custom replay object lifecycle providers at runtime using `ReplayManager.AddReplayPrefabCustomProvider` API (Not recommended for most users).
    • Add support for unregistering custom replay object lifecycle providers at runtime using `ReplayManager.RemoveReplayPrefabProvider` API (Not recommended for most users).
    • Allow replay id of prefab assets to be accessed through code without throwing an exception. Previously an exception was thrown if Awake had not be called.
    • Fix a bug where copying replay storage would thrown an exception in some cases.
    • Fix a bug where copying replay storage could fail silently depending upon the contents of the source storage.
    • Fix a bug when comparing replay state storage size.
    • -Streams passed when creating a ReplayStreamStorage will no longer be diposed when the operation completes. it is now up to the user to dispose of the stream inline with normal .net usage.
    • Minor code cleanup.
    • Minor bug fixes.
     
  25. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Ultimate Replay 3.0.5 has been release on the asset store. This version includes the following bug fixed and improvements:
    • Optimize memory allocations when using replay memory storage so that only the minimum amount of allocations are made.
    • Optimize replay generic rig performance when serializing and deserialzing data (10% improvment).
    • Remove unnecessary collections that would increase allocations and can be represented by already existing collections.
    • Add support for changing the prefab identity value for a replay prefab at runtime from script. Should be used with caution if the prefabs are reigstered in the replay settings.
    • Add support for auto disposing for replay file streams that were not closed by the user when quitting or exiting play mode - Avoid leaving open files handles which can cause replay files to be inaccessible until restart.
    • Fix an issue where registering a prefab at runtime could modify the replay settings asset with data which persists when exiting play mode.
    • Minor code cleanup.
    • Minor bug fixes.
     
  26. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Ultimate Replay 3.0.6 has been released on the asset store. This version includes the following bug fixes:
    • Fix a bug in some Unity versions that could cause a null reference exception to be thrown while editing a replay prefab in context or isolation.
    • Fix an issue where some ReplayState serialize methods would not be registered correctly due to passing arguments by reference.
    • Fix a bug where some ReplayObject values edited via the inspector would not be saved correctly in some cases.
    • Fix a bug where the prefab instantiate id option would not be shown in some cases.
    • Fix logic bug in ReplayTransform.
    • Minor bug fixes.
     
  27. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Ultimate Replay 3.0.7 has been released on the asset store. This last update before the holidays includes the following additions and bug fixes:
    • Add new option to choose the default replay scene discovery mode when `null` is passed for the replay scene parameter to `BeginRecording` or `BeginPlayback`.
    • Add replay scene discovery mode `ActiveScene` for finding replay objects in the current active Unity scene, and `AllScenes` for finding replay objects from all loaded Unity scenes.
    • Add additional ReplayScene helper methods for creating replay scenes from Unity scenes.
    • Add new event `OnPlaybackStop` for playback operations.
    • Fix a bug in some Unity version where an argument exception could be thrown when editing prefabs in context/isolation, or during domain reloads in some cases.
    • Fix a bug where a type load exception could be thrown in some cases if the project contains one or more invalid value types unrelated to Ultimate Replay.
    • Fix an issue where Ultimate Replay would scan all assemblies in the loaded domai when searching for attribute usage. Now only assemblies that reference Ultimate Replay will be considered.
    • Fix a bug were having a disabled replay component assocaited with an enabled replay object could cause an exception to be thrown during recording.
    • Minor bug fixes.
    Screenshot 2023-12-21 110550.png
     
  28. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Ultimate Replay 3.0.8 has been released on the asset store. This version includes the following fixes and changes:
    • Fix a bug where custom metadata could not be loadable in some cases when accessing from a different session/storage container.
    • Report a warning if storing data into a replay state would causing an overflow potentially causing issues with playback.
    • Move to file/stream format 1.2.0 (Retain backwards compatibility).
    • Add support for accessing replay file name only.
    • Minor bug fixes.
     
    shyamarama likes this.
  29. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Ultimate Replay v3.0.9 has been released on the asset store. This version includes the following bug fixes:
    • Fix a bug where copying file/stream storage with no persistent data could cause an exception if the storage has not yet been initialized by a record or playback operation.
    • Fix a bug in CopyTo methods where it could be possible for both the source and destination storage to end up referencing the same replay snapshot leading to undefined behaviour.
    • Fix a bug in CopyTo methods where an exception could be thrown if the source is a stream/file storage that has not yet been prepared for reading.
    • Fix a bug in ReplayAnimator where a quaternion assertion could be reported when updating IK in some cases.
    • Replay operations can now be created in edit mode without requiring a replay manager instance. no editor API is available at the moment though.
    • Ensure that replay operation delayed calls can only be scheduled while in play mode otherwise fail with an exception.
    • Fix incorrect information in some code comments that could mislead users.
    • Minor bug fixes.
     
  30. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Ultimate Replay v3.1.0 has been released on the asset store. This version includes the following bug fixes:
    • Fix an issue when updating prefab links in edit mode which could lead to an exception or error being generated for some Unity version if certain conditions were met.
    • Fix a potential allocator issue when editing replay prefabs using ReplayObjects in isolation or in context due to incorrect serialization.
    • Fix an issue where objects could be loaded during a domain reload in some Unity versions leading to undefined behaviour.
    • Add legacy fix to eliminate script compilation errors on older Unity versions back to 2018.3. (Min supported version still remains as 2021.3 LTS)
    • Fix a bug where reverse playback could switch back to live mode immediately in some cases when starting a replay in reverse.
    • Fix an incorrect end condition for reverse playback mode.
    • Fix an issue where an unreleased resources warning could show up when using file or stream storage when exiting play mode even if `Dispose` was called before the game exists.
    • Cleanup code and remove unused/legacy features.
    • Minor bug fixes.
     
  31. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,195
    Ultimate Replay 3.1.1 has been released on the asset store. This version includes the following bug fixes:
    • Fix an issue where playback pause and resume events were not called in some cases.
    • Add support for setting up a replay object as a prefab at runtime, for registering scene objects as replay objects that can be instantiated dynamically during playback.
    • Ensure that replay states stored in persistent data storage are prepared for reading when accessed in order to avoid `No data in state` type errors.
    • Fix an issue with ghost car demo scenes where the ghost car could remain in the scene after crossing the finishing line.
    • Minor bug fixes and cleanup.