Commit Graph

106 Commits

Author SHA1 Message Date
max chen
f42eaf60b3 Sequencer: Fix networked play smoothing for reverse playback.
#jira UE-134460
#rb max.chen

#ROBOMERGE-AUTHOR: max.chen
#ROBOMERGE-SOURCE: CL 18427578 in //UE5/Release-5.0/... via CL 18427584
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v897-18405271)

[CL 18427585 by max chen in ue5-release-engine-test branch]
2021-12-09 19:38:16 -05:00
max chen
fce3ca5646 Sequencer: Time controller to play every frame. Defaults to 1 second, but can be set with the cvar Sequencer.SecondsPerFrame.
This is useful in gameplay especially for debugging per frame evaluations

#rb matt.hoffman
#preflight 6136ea65d9c85a00010008e1

#ROBOMERGE-AUTHOR: max.chen
#ROBOMERGE-SOURCE: CL 17448303 via CL 17902803 via CL 18360631 via CL 18360781
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18360848 by max chen in ue5-release-engine-test branch]
2021-12-02 18:04:12 -05:00
Marc Audy
0c3be2b6ad Merge Release-Engine-Staging to Test @ CL# 18240298
[CL 18241953 by Marc Audy in ue5-release-engine-test branch]
2021-11-18 14:37:34 -05:00
aurel cordonnier
a12d56ff31 Merge from Release-Engine-Staging @ 17791557 to Release-Engine-Test
This represents UE4/Main @17774255, Release-5.0 @17791557 and Dev-PerfTest @17789485

[CL 17794212 by aurel cordonnier in ue5-release-engine-test branch]
2021-10-12 21:21:22 -04:00
aurel cordonnier
69fe095547 Merge from Release-Engine-Staging @ 17636544 to Release-Engine-Test
This represents UE4/Main @17638339 and Dev-PerfTest @17636504

[CL 17638842 by aurel cordonnier in ue5-release-engine-test branch]
2021-09-27 19:54:25 -04:00
ludovic chabant
1e208c4571 Sequencer: Allow client-only sequences to finish playback on their own.
By "client-only" sequences here we refer to sequences whose actor has no network authority (client side in a networked game), but doesn't need replicated playback, so it can do whatever it wants.

#jira UE-126176
#rb max.chen

#ROBOMERGE-AUTHOR: ludovic.chabant
#ROBOMERGE-SOURCE: CL 17553223 via CL 17554030 via CL 17554115
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v870-17433530)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17554143 by ludovic chabant in ue5-release-engine-test branch]
2021-09-17 12:47:32 -04:00
ludovic chabant
aa2f4a6a5e Fix CIS issue with non-clang compiler.
#ROBOMERGE-SOURCE: CL 17355765 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17355775 by ludovic chabant in ue5-release-engine-test branch]
2021-08-30 14:16:59 -04:00
ludovic chabant
3f00aa8d7f Sequencer: Improve how client/replicated sequences handle end of playback, and triggering events.
The first problem was with client sequences that are re-synced to the server time.

If a re-sync sends the client sequence a few frames back, it will re-evaluate these frames as it plays over them a second time. If this happens around an event, this event will fire again. So we set a timestamp to where we were at before the re-sync, which tells the event system to ignore any events before that timestamp.

The second problem was with client sequences who are *late* compared to the server.

When the server sends a Stop RPC message, if the sequence is a bit behind it would only advance to the stop time if the difference was above a threshold. But we could miss firing an event that's on the very last bit of the last frame. So now we advance to the stop time exactly.

The third problem was with client sequences who are *ahead* of the server.

When the client sequence would reach the end of playback, it would stop and reset time to the beginning all on it own. But the server would still be running the last couple frames, so it would send some network message telling the client sequence to do that. The client sequence would go back into play mode, and play all the way from the start to one of these last frames. This means it would re-evaluate the entire sequence again, including re-triggering all the events! So now, non-authoritative sequences don't stop-and-reset-time when they reach the end of playback. Instead, they stay on the last frame and wait for the server to send them the explicit "end of playback" message.

#jira UE-118153
#jira UE-118375
#rb max.chen

#ROBOMERGE-SOURCE: CL 17354009 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17354028 by ludovic chabant in ue5-release-engine-test branch]
2021-08-30 12:37:20 -04:00
max chen
ca8d0e0bc2 Movie Scene: Log updates
- Added a LogMovieSceneECS and moved entity system logs to it - this helps distinguish between ECS notifications vs frame/timing information
- Added client name to Evaluating sequence log
- Remove outdaded "Clock Tick" words from TimeController log

LogMovieScene: VeryVerbose: Evaluating sequence SimpleSequence at frame 133, subframe 0.999992 (30.000000 fps).
LogMovieScene: VeryVerbose: Evaluating sequence SimpleSequence (client 0) at frame 109, subframe 0.999993 (30.000000 fps).
LogMovieScene: VeryVerbose: Evaluating sequence SimpleSequence (client 1) at frame 106, subframe 0.999994 (30.000000 fps).

#rb ludovic.chabant, matt.hoffman
#preflight 611d9e933a81b0000143aacd

#ROBOMERGE-SOURCE: CL 17226594 via CL 17226661
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)

[CL 17226667 by max chen in ue5-release-engine-test branch]
2021-08-18 21:15:01 -04:00
matt hoffman
d27a77ba56 Sequencer: Redesigned the PlayTo API to allow users to specify if the provided time is inclusive or exclusive. This makes the API much more natural to use as you can specify it play to 45 (exclusive) then later jump to 45 and play from there without overlapping evaluations.
Additionally, this fixes some issues with how PlayTo handles the last frame. Previously it would issue a 'Jump' command which skips calling events on the frame being jumped to. But the Jump state also skips sweeping over time ranges. This means that event keys on the last frame of a section (or more depending on framerate) could get skipped, ie:

Playhead is at frame 43. Event key on 44. PlayTo(45). If the delta time was large enough to go from 43 => 45.5 the system would historically issue a Jump command to jump to 45, skipping the event key on 44. It now issues a Play command to cover the gap (which will evaluate the event keys).

The reason a different params struct was added to PlayTo (instead of extending the existing one) is that inclusive/exclusive doesn't make sense for Jump/Seek (which are directionless), and is a params struct so that if future parameters are needed it is easier to add one without breaking blueprints.

#jira UE-119063
#rb Max.Chen
#preflight 610ac2ea5738260001b08767

#ROBOMERGE-SOURCE: CL 17055917 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v850-17047176)

[CL 17055937 by matt hoffman in ue5-release-engine-test branch]
2021-08-04 14:10:41 -04:00
aurel cordonnier
dc4bf61540 Merge from Release-Engine-Staging @ 17030559 to Release-Engine-Test
This represents UE4/Main @ 17030256 and Dev-PerfTest @ 17030553

[CL 17031509 by aurel cordonnier in ue5-release-engine-test branch]
2021-08-03 11:56:47 -04:00
jaren peterson
ce41f0a7f9 #sequencer - Backout CL 16790229 to bring back fix to PlayTo.
[FYI] Matt.Hoffman
#preflight skip

#ROBOMERGE-SOURCE: CL 16961240 via CL 16970146
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)

[CL 16970372 by jaren peterson in ue5-release-engine-test branch]
2021-07-27 13:40:31 -04:00
jaren peterson
58751229a4 #sequencer - Back out Sequencer change that appeared to stop frame 0 events from firing.
#lockdown Matthias.Worch
[FYI] Matthias.Worch

#ROBOMERGE-SOURCE: CL 16790229 via CL 16790243
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16790245 by jaren peterson in ue5-release-engine-test branch]
2021-06-25 19:14:00 -04:00
matt hoffman
a316d869ca Sequencer: Fixed an isssue where the PlayTo method would play past the desired frame before jumping backwards and pausing during low framerate situations. This would cause events and other setup from frames beyond the desired frame to get called early.
#jira UE-119063
#rb Max.Chen, Andrew.Rodham

#ROBOMERGE-SOURCE: CL 16788858 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16788860 by matt hoffman in ue5-release-engine-test branch]
2021-06-25 16:55:21 -04:00
Marc Audy
f02d489290 Update Release-Engine-Test from Release-Engine-Staging @ 16264272
[CL 16264458 by Marc Audy in ue5-release-engine-test branch]
2021-05-11 01:10:20 -04:00
UnrealBot
8afb476248 Branch snapshot for CL 16260158
[CL 16260158 in ue5-release-engine-staging branch]
2021-10-05 20:06:24 +00:00
aurel cordonnier
50944fd712 Merge UE5/RES @ 16162155 to UE5/Main
This represents UE4/Main @ 16130047 and Dev-PerfTest @ 16126156

[CL 16163576 by aurel cordonnier in ue5-main branch]
2021-04-29 19:32:06 -04:00
Marc Audy
bc88b73a29 Merge Release-Engine-Staging to Main @ CL# 15151250
Represents UE4/Main @ 15133763

[CL 15158774 by Marc Audy in ue5-main branch]
2021-01-21 16:22:06 -04:00
Andrew Rodham
2b44b580e4 Sequencer: Upgraded object binding IDs to be more portable when nested
- This change introduces two separate types for dealing with binding IDs in different spaces explicitly: FFixedObjectBindingID and FRelativeObjectBindingID. The latter is portable if the sequence it was created within is nested inside another foreign hierarchy.
  - FMovieSceneObjectBindingID remains, and is able to represent both of the new types, but should only be used for serialization to ensure compatability and consistency with editor tools that operate in different spaces.
  - Any manual ResolveLocalToRoot or GetSequenceID processing has now been replaced with the new ResolveBoundObjects API, which provides a less error-prone way of resolving bindings that live in different sequences

#jira UE-74450
#rb Max.Chen, Ludovic.Chabant

[CL 14915667 by Andrew Rodham in ue5-main branch]
2020-12-14 14:36:17 -04:00
Marc Audy
a7f9391231 Merge UE5/Release-Engine-Staging @ 14811410 to UE5/Main
This represents UE4/Main @ 14768117

For ReleaseObjectVersion.h
#lockdown Marcus.Wassmer

[CL 14811440 by Marc Audy in ue5-main branch]
2020-11-24 18:42:39 -04:00
Marc Audy
68150e0be7 Merge UE5/Release-Engine-Staging to UE5/Main @ 14611496
This represents UE4/Main @ 14594913

[CL 14612291 by Marc Audy in ue5-main branch]
2020-10-29 13:38:15 -04:00
Marc Audy
4c1bb11c29 Merge UE5/Release-Engine-Staging to UE5/Main @ 14548662
This represents UE4/Main @ 14525125 + cherrypicked fixes
#skipundocheck

[CL 14551026 by Marc Audy in ue5-main branch]
2020-10-22 19:19:16 -04:00
Marc Audy
7379fa99c5 Merging //UE5/Release-Engine-Staging to Main (//UE5/Main) @ 14229157
[CL 14233282 by Marc Audy in ue5-main branch]
2020-09-01 14:07:48 -04:00
Marc Audy
a7c9001a94 Merging //UE5/Release-Engine-Staging to Main (//UE5/Main) @ 14075166
#rb
#rnx

[CL 14075271 by Marc Audy in ue5-main branch]
2020-08-11 01:36:57 -04:00
Marc Audy
11f5b21210 Merging //UE5/Release-Engine-Staging @ 13752110 to Main (//UE5/Main)
#rnx

[CL 13753156 by Marc Audy in ue5-main branch]
2020-06-23 18:40:00 -04:00