I'm currently working on a third-person controller in Godot. I'm not new to creating such controllers from scratch. However, I'd like my camera to be a bit more complex than usual, like something you'd see from Mario Odyssey, where the camera only follows the player under certain conditions. Here's an article explaining more.

What would be the best way to create a decoupled camera system that intelligently follows the player, but also allows the player to use the camera to create relative movement? Should I just include a top-level SpringArm in the player and code the logic in the player script, or should they be separate entities?

You could use the physics engine, in combination with ray casts. Doing the whole thing custom would give you more control though. In either case, the Camera should be free-floating, on the same layer as the player, not a child. You can have another node (could be a Position3D, or something else invisible). This will be an invisible node that could be a child of the player. This will make it easier to get the radius/sphere movement. The position holds the ideal position (could be directly in back of the player 2 meters, or whatever) and can be also rotated with the controller. The camera then tries to follow the invisible position, assuming it does not clip a wall. The camera could be a physics body, so it collides with static bodies. Or you can simply shoot out like 4 to 6 rays at varying angles, and then move the camera away from the wall if it hits. This is at least the basic idea, it can get more complex with edge cases, but that is the idea.

    cybereality Thanks for your reply! I was simply going to use a SpringArm for collisions, as it has worked well enough for me in the past. If the ideal way to create a camera would be to use a Position3D behind the player, should the player script also handle camera input? The input can then be applied to the Position3D and read by the camera.

    Yes, the input keyboard/gamepad controls the Position3D, and the Camera moves based on either physics or ray casts (or both).