Multiple Camera Rendering:
As of right now, creating new camera Instances (not sure if that is even possible, but I believe you can Instance.new the class) Is useless as only a single camera can render the scene, multiple cameras should be able to render the scene at once, the camera class should have a “ViewPortSize” property that determines how much space its projection will take on the screen.
This allows split-screen games, complex HUD displays such as a real time top-down mini map and much more.
Surface Camera:
There are some cool things you can see done in other game engines that you can’t achieve in ROBLOX, if you ever played a realistic first person shooter game such as Insurgency you would have noticed that there is a camera rendering as a texture on the scope of the firearm you are using, or in many games even a simple mirror that you can look into and see your reflection.
A class that inherits most properties from the camera class and also has similar properties to that of a SurfaceGui - a “SurfaceCamera” class would allow results similar to what was said in the previous statement.
Some SurfaceCamera Properties:
(Inherited camera properties that behave the same as regular cameras not mentioned here e.g FieldOfView)
vector2 : ViewPortSize : size of the viewport relative to the face surface
BasePart : Adornee : the part the surfacecamera is attached to
normalId : Face : the face that the Camera is rendered on
CFrame : CFrame : the CFrame of the Camera
Conclusion:
This is probably resource and time extensive to implement, however allows many aesthetic possibilities if implemented, I believe a good example of an engine that integrates many of the features I have suggested in this thread is Unity 3D.