I find many resources that talk about how to limit the cameras position. One issue is that my levels arnt built like big boxes. What is one strategy I can use to combat this? Should I use a tilemap?Polygon2d? Whatever the case I would love to be informed.
I guess you could draw lines and use these as borders. Just check if line-position would overlap with camera viewport whenever you update the camera position.
If you want a circular stage you could just use a position and measure distance to it every time trying to update. If new position distance to the center position is greater than max distance, dont update camera position.
You can also use Camera2DSignalBus.update_camera_boundaries(tile_map_layer) to pass in a TileMpaLayer during gameplay if you change levels. And you can use the set_limit() function on the Camera2DLimit node to pass in a Rect2i as the limit of the camera.
There are also components for zoom, panning, and screen/controller shake.