Well, let's start with the good news:Here
is a cap working the way you want.
The bad news:
It's much more complicated. Of course the cap isn't optimized, but even then it needs a lot of expressions, because there is a lot you have to keep an eye on.
I try to explain from the beginning, but feel free to ask if I'm not clear enough.
Most important is understanding, that you will see parts outside of the layout's boundaries when completely zoomed out, if the aspect ratios of the layout and the display don't match.
Your layout is 1800x1200, that's an aspect ratio of 1.5 (or 3:2), but the display was 640x480, which is 1.333... (or 4:3). I can prevent seeing beyond the bounds when the cam displays less than the layout's height, but not if the cam displays the complete layout's width.
In short: If you use my solution and set the display to an aspect ratio of 1.5 (e.g. 720x480), you will indeed never see anything outside the layout's boundaries.
To get this working you need to take care of the horizontal and vertical aspects, but this needs to be splitted. That's why you will find so many globals like "lenPlayerW", "lenPlayerH", "zoomW", "zoomH", "lenCamW", "lenCamH" etc. This could be solved much more elegantly by using functions, but I was a bit too lazy
Basically, the expressions calculate a horizontal zoom and a vertical zoom and apply the one with the lowest value to the camera.
The position of the cam is set manually to be able to clamp the camera display to the layout's boundaries. This is very straight forward.
Both the zoom and the position of the camera are set using the lerp versions "Smooth Zoom" and "Move To Position". This is only in case you might want to have some lag in either of them. If so, just raise the milliseconds value of them both to your needs.
A cooperative game with one display? I'm curious about it. That could be very interesting. Hope to see some screens soon
EDIT: Forgot to say that you don't need the AdvancedCamera object for this solution. You might as well just use "System: Set zoom" and "System: Set scroll to x" resp. "System: Set scroll to y"