Download

How would you approach realtime cinematic events?

I’ll explain a little about our game before I go into great detail:

  • Bespoke Experience for a Visitor Attraction
  • Satellite / Mission Control Simulation
  • 15 Minute Play-Sessions, designed almost like a “ride”.
  • 30 Players Interacting with the game via nVidia Shield Tablets
  • Ten teams of three players, all working to control one satellite between them to complete the mission.
  • Three Front-screens displaying mission control data & hi-res art & cinematic events - Runs across two PC’s (One is the game server)

So imagine that a player has destroyed a piece of debris orbiting earth with a big-*** laser. We want to be able to play a cinematic event on the large screen at the front (the server) that shows the firing of the laser and the effect on the debris in the game world, so it’s seamless with the rest of the players too. We want to avoid pre-rendered cinematics, since they don’t give us much flexibility and definitely won’t suit all situations, we want to do in-game cinematics that adjust slightly to what’s happening.

We’ll also have other events, such as satellites and debris burning up the atmosphere, collisions etc. All this stuff needs to be displayed in realtime on the big screen while the rest of the players continue to play the game, and it needs to be triggered dynamically. These cinematics will only EVER happen on the server, the clients will continue playing as it happens.

So, what’s the best way to achieve this? Matinee seems like it could be a useful tool, but I’m not really sure how I can use it when I don’t know where the camera is going to be in space, or if you can swap the camera that Matinee performs it’s operations on. Am I better off writing all these Cinematics as a blueprint script that executes when things happen, such as manipulating the Servers’ camera directly though code/blueprint functions like timelines and such?

Any feedback is welcome, thanks!

I dont know how/if these would work with the networking stuff you are talking about but here are some ideas;

  • You could place a camera into Matinee with no movement track and set that camera for the director track, set the matinee actor to Loop. Whenever an event happens you can play that Matinee and it will show the camera’s view. This way you can set the camera’s location to wherever the event is and set it’s rotation with Find Look at Rotation.

  • Set View Target with Blend node would be even easier than Matinee but again i dont know how it would affect your setup.

  • You could use a scene capture 2D actor and project the whole thing onto a plane, which would be crazy expensive to get good enough resolution for this purpose i guess.

Interesting, I was essentially wondering if there was a way to do it using Matinee and have the camera not neccesarily be in the same place each time, that’s essentially what I need. THe other option I guess is handling everything through Blueprint or Timelines, which isn’t the best cinematic editing tool ever.

I’ll check out the other option too, both sound interesting. Will report my findings…

Yeah, all of my suggestions require you to do the camera movement with Blueprints, either by using timelines or interpolating vectors for location. What kind of camera animation do you have in mind for those events?

One approach I’ve used in the past for various stuff like this, is to use a set of animations on an invisible skeletal mesh. You play the animations on the mesh, but do the camera tracks and such by simply getting bone transforms (or socket positions in UE). The advantage over timelines is that Max/Maya is actually a decent editing platform :slight_smile:

So you’d create a bunch of animations for the various effects, spawn the skeletal mesh relative to some transform (which would allow you to adjust the start pos/rot), then simply transform your camera by reading the animation bone for the camera etc. In essence it would be like doing a timeline, but with better control.

Ideally the UE animation interface will be actually useful post the new Sequencer revamp, but in the interval, you could simply use a proper 3D editing environment for it. Its all just animation data after all.