cameraCamera & Post Processing

Camera

Every player starts off with a camera that follows them as they move. To adjust zoom or move the camera to other places, we provide a set of APIs.

In CSL, the camera is a per-player struct on Player:

  • camera.follow_player: bool: when true, the engine keeps the camera following the player.

  • camera.position: v2: the camera center in world space (used when follow_player = false).

  • camera.size: float: zoom amount. Larger = more zoomed out (you see more of the world).

Because camera changes are purely cosmetic, apply them on the local client only:

import "core:ao"

MyPlayer :: class : Player_Base {
    ao_late_update :: method(dt: float) {
        if is_local() {
            // Simple "set and forget" zoom
            camera.size = 7.0;
        }
    }
}

Custom follow (offset + smoothing)

If you want camera offsets, cutscenes, or custom smoothing, turn off follow_player and drive camera.position yourself:

Post Processing

Post Processing allows you to apply visual effects to your camera like distortion, color grading, and other effects to make your game pop!

CSL does not currently expose custom post-processing APIs (e.g. registering a runtime post-processor callback). You have two options:

  • Configure in the editor: set up the default post-processing stack via Edit → Game Config → Post Processing. This applies when using the default camera behavior.

  • Configure in C#: if you’re using a custom CameraControl, you can register a post processor and call effects like Bloom / Blur / Color Grade / Vignette.

If you enable any effect, All Out will automatically use the HDR pipeline.

Last updated