How can I make a camera move and zoom to keep multiple players visible?

The sort of camera system I’m going for can be seen here.

I currently have a camera actor in the level pointing at where the characters spawn. I’m using a custom camera controller blueprint to set the first character’s view target to that camera.

My current plan is to override EventTick so it will get the locations of every player controller in the game, find the point equidistant to all of them, and interp to that point + whatever depth offset. If the largest distance (along each of the two axes) between any two characters is greater than the max distance that can fit comfortably on the screen, then add to that offset. If it’s below the “sweet spot” amount, then subtract from it.

I suppose the key problem I have left to solve here, is how to figure out what the position of each player is relative to the screen, which I think has been solved in this post.

If anyone has any tips on this, or an alternate method, I would love to hear it.

Combination of Spring arm and Field of View