This question was created in reference to: [Overriding target PlayingController for LevelSequence playback in [Content removed]
The issue we are facing occurs during split screen cutscene that require every player to have their own camera. We are wondering if there will be any engine update regarding this topic in the near future as for now the only solution we found working is creating sequences with cameras animated as simple actors that need therefore to be attatched to the desired player controller manually.
An example could be the following: while playing in split screen, upon starting a match, each player will se a sequence with various shots of his chosen character.
We tried overriding the playback context inside FMovieSceneRootEvaluationTemplateInstance::Initialize with the player’s pawn so that inside FCameraCutGameHandler::SetCameraCut the Player Controller used for setting the view target will be right one but we found that regardless of how many Sequences we start, FCameraCutGameHandler seems to be always initialized with the same Sequence Instance and therefore updates just a single camera.
The inability to use Camera Cut Tracks is forcing us to manually manage cutscene cameras and to do tricks for blending with the gameplay ones such as spawning temporary cameras.
We took a quick look at 5.6 but it doesn’t seem to be any steps forward in this area.
As I said, we would like to know if there is any update planned to aid in those situations, but we are also open to suggestions both on how to improve our current workflow or about any possible engine mods that we could implement locally.
Hello! We don’t have any plans to work on splitscreen support right now, but you just reminded me that we seem to be getting one question about it every year almost like clockwork, so I’ll check if we can work on that for 5.7...
> FCameraCutGameHandler seems to be always initialized with the same Sequence Instance
Are you playing one single Level Sequence, or two? The camera cut handler gets initialized and used once per frame after UMovieSceneCameraCutTrackInstance sorts through all the camera cut requests coming from any running sequences on that frame. So even if multiple sequences are running, each with a camera cut track active, we collect them all and figure out which one “wins”. Because, obviously, we don’t support splitscreen and assume only one camera can be in control of the screen at a given time (which is even false without splitscreen like e.g. picture-in-picture but that’s another problem)
For splitscreen support where two Level Sequences are running (each with their own camera cut track destined for one particular local player), I think we would need to fix UMovieSceneCameraCutTrackInstance::OnAnimate() so that there’s not just one set of CameraCutPreRolls and CameraCutParams, but one set per local player. And then initialize the camera cut game handler with that specific player as we run the “winner” of each set.
For splitscreen support where there’s only one Level Sequence running we somehow need to duplicate the camera cut “winner” for each local player (which can work if the camera is procedural enough to know what to do for each player) then we need the above fix plus a way to deduplicate those two arrays into multiple sets of arrays, probably with some flag on the camera cut track or something.
For splitscreen support where there’s only one Level Sequence running but it somehow has two (or more) camera cut tracks, we need the above fix plus, of course, a fix to allow more than one camera cut track in a Sequence (which would be a fairly intrusive refactor given how a single camera cut track has been a hard-coded expectation since the beginning of Sequencer…)
I’m not sure if there are other ways we should handle splitscreen?