A fully data-driven camera system utilising Unreal's State Tree plugin and experimental Gameplay Cameras plugin. The demo video on the left shows the state tree being used to select a camera (right) and the Rewind Debugger showing the state tree over time. (bottom)
There is a defined "change camera" input. The player can swap the shoulder the camera looks over by tapping it, (change position) and they can swap between First and Third person perspectives by holding it (change perspective).Â
When one of these inputs is received, the character checks what their current camera settings are and chooses an appropriate one to swap to accordingly. It then sends a message (delegate) which is received by the Camera Director, a concept of the Gameplay Cameras plugin. My camera director then sends an event to the state tree with all the relevant info attached, where a state is chosen and an "Activate Camera Rig" task is ran. Camera modes are cheaply communicated via Gameplay Tags.
This method of creating a camera system is highly extensible, and it is easy to add new camera modes.
My implementation also supports networking (multiplayer), with the system ensuring that one player making a change to their camera will not affect others. Being in first person also causes the player's character to face the direction of their camera, which must also be explicitly replicated.