Ultimate Replay is a complete state based replay system ideally suited to kill cams or action replay applications. Using Ultimate Replay you are able to record objects during game-play and then have them replay their actions at a later time. Due to the state based nature of the system, it is possible to view replays from any angle or even fly around the scene as playback occurs.
That should be fairly easy to achieve. I take it you just want to rewind the player character? If so then you can just make the character a replay object and record using a rolling memory buffer to keep the last X amount of seconds of recording. You can then rewind the player whenever you need to. Animation would take a little more work but is still achievable. We are currently waiting for a trial version of Ultimate Replay to be released which should be very soon so it may be worth having a play around when it is released.
Ultimate Replay 1.0.1 has been submitted to the asset store for review and should be available within a few days.
This update includes a beta version of the ReplayFileTarget which can be used to stream recordings to and from file. It has been released as a beta version as requested by a number of users and it still under development to improve a number of aspects.
At the minute, the ReplayFileTarget is not fully optimized and there is quite a bit of room for improvement in both the performance and file size aspects. We will soon be looking into chunk prediction fetching to prevent the slight buffering effect you may see during playback. We will then look into file compression along with wasteful storage so that data is not stored if nothing has changed.
During our testing we were able to record 300 objects transforms at a record rate of 48 fps for a period of 5 minutes which resulted in a file size of approximately 100mb. Of course this is an extreme record rate and not likely to be used in the real world as you can get away with record rates as low as 6fps without noticing any measurabe difference. We will however be striving to reduce that amount in the future but for now we think it is not too bad
If you are using the trial version of Ultimate Replay then the ReplayFileTarget will be accessible upon import however the recording length will be limited to 5 minutes. If you are using the full version you will need to add a pre-processor define symbol to your project called âULTIMATEREPLAY_EXPERIMENTALâ in order to enable the ReplayFileTarget.
If you do find any bugs or strange behavior do please let us know so we can get them fixed. (Contact info on first post). Also feel free to let us know of any improvements in general that you think could be made.
hi trivial interactive people,
I have the full version of Ultimate Replay. I was eagerly waiting for the ReplayFileTarget feature. Just downloaded the new release and have following issues:
I opened ReplayFileTargetTest scene from Experimental folder. From the ReplayFileTarget Script on Replay Manager object I get the yellow warning âThe associated script can not be loaded. Please fix any compile errors and assign a valid script.â The mentioned scripts codes are almost completely commented out. Shall I uncomment them first?
As you recommend above as a full version owner I should âneed to add a pre-processor define symbol to your project called âULTIMATEREPLAY_EXPERIMENTALâ in order to enable the ReplayFileTarget.â Unfortunately I dont know how to do this.
If I solve the issues above, I would like to know where the stream record/read file is located and whether this file can be opened by a default csv/xml/json or any other kind of text/data editor?
The ReplayFileTarget is disabled by default because it is still in beta and adding a pre-processor define symbol will enable the scripts. You can do this by going to âEdit->Project Settings->Playerâ and looking for the field called âScripting Define Symbolsâ under the âConfigurationâ header. Simply enter âULTIMATEREPLAY_EXPERIMENTALâ into that field and Unity will recompile the scripts and the ReplayFileTarget should be activated.
The location of the replay file can be set in the inspector or via a script so you can have full control over that. Also it will not be possible to open the file in a text editor as it is a binary file for best recording and streaming performance.
I just tried it and it did not work straight away for me either. I had to change some code in the project and then switch back to Unity and then it updated the script reference. I guess that the code needs to be changed in order for Unity to recompile and reload the scripts.
Version 1.0.2 of UltimateReplay has been submitted to the asset store.
This version includes some minor bug fixes including:
Fixed a bug in ReplayFileTarget which would sometimes cause an IOException because the stream is not writable.
Fixed a NullReferenceException when creating a ReplayManager via script.
A few other small fixes.
The trial version will now display an error when trying to build a release version to say that it is not supported as opposed to failing with an ArgumentException.
Version 1.0.3 has been submitted to the asset store. This version includes:
ReplayAnimator component (Experimental)
More optimized ReplayTransform which now includes a LowPrecision setting which will store the transform with lower accuracy and half the size.
A few other small bug fixes.
The ReplayAnimator as you might have guessed is designed to record and replay an Animator component so you are able to record and replay animations in your game. At the minute it is in beta and will continue to be worked on and does not support all features of the Animator yet such as cross fading.
Hello, I have the full version of this plugin and Iâm trying to setup a very simple recording of a ball being instantiated and then moving. Iâm getting an error whenever I run ReplayManager.BeginPlayback(true);
Error:
NullReferenceException: Object reference not set to an instance of an object
UltimateReplay.Core.DefaultReplayPreparer.PrepareComponentForPlayback (UnityEngine.Component component) (at Assets/UltimateReplay/Scripts/Core/DefaultReplayPreparer.cs:69)
UltimateReplay.Core.DefaultReplayPreparer.PrepareForPlayback (UltimateReplay.ReplayObject replayObject) (at Assets/UltimateReplay/Scripts/Core/DefaultReplayPreparer.cs:40)
UltimateReplay.Core.ReplayScene.RegisterReplayObject (UltimateReplay.ReplayObject replayObject) (at Assets/UltimateReplay/Scripts/Core/ReplayScene.cs:68)
UltimateReplay.ReplayObject.Awake () (at Assets/UltimateReplay/Scripts/ReplayObject.cs:74)
UnityEngine.Object:Instantiate(GameObject, Vector3, Quaternion)
UltimateReplay.ReplayManager:ReplayInstantiate(GameObject, Vector3, Quaternion) (at Assets/UltimateReplay/Scripts/ReplayManager.cs:933)
UltimateReplay.Storage.ReplaySnapshot:RestoreReplayObjects(ReplayScene) (at Assets/UltimateReplay/Scripts/Storage/ReplaySnapshot.cs:439)
UltimateReplay.Core.ReplayScene:RestoreSnapshot(ReplaySnapshot) (at Assets/UltimateReplay/Scripts/Core/ReplayScene.cs:174)
UltimateReplay.ReplayManager:SetPlaybackFrame(Single, PlaybackOrigin) (at Assets/UltimateReplay/Scripts/ReplayManager.cs:628)
UltimateReplay.ReplayManager:BeginPlayback(Boolean, PlaybackDirection) (at Assets/UltimateReplay/Scripts/ReplayManager.cs:742)
ReplayScript:PlayButton() (at Assets/Scripts/SkillsChallengeScripts/ReplayScript.cs:91)
ReplayScript:<Start>m__5() (at Assets/Scripts/SkillsChallengeScripts/ReplayScript.cs:39)
UnityEngine.EventSystems.EventSystem:Update()
Hi, We have not seen that error before but it seems like a null component reference is getting sent to the replay system for some reason. Looking at the code where the error is generated, I cant see how a null reference exception can be thrown because all the components come from âgameObject.GetComponentsInChildrenâ. What components do you have attached to the object you want to record? A screenshot of the inspector with the object selected would be very useful if possible.
The transform is the only thing I need recorded, and its instantiation into the world. It is one of the prefab elements in the replay manager
*Edit: I was able to get it to stop the error by deleting the render trail that wasnt being used.
Iâm still having issues with getting the playback to work. Doesnt seem to want to play anything.
When I run ReplayManager.BeginPlayback(true); I can see some of the objects I recorded show up in the Hierarchy, but the objects are in strange static locations with absolutely no movement.