dragonUnreal

If you've built games with Unreal, there are some key differences you'll need to know to get started on All Out!


This guide is for Unreal Engine developers (Blueprints / C++) transitioning to All Out and CSL (All Out’s custom scripting language).

The big shift (mental model)

In Unreal you often think in terms of:

  • Actors in a World (spawned, replicated, owned)

  • Components attached to Actors

  • Blueprint graphs / C++ driving gameplay

  • RPC + Replication you author explicitly

In All Out you’ll usually think in terms of:

  • Entities in a Scene (with Components)

  • Components (engine-provided + your own CSL components)

  • Abilities for player actions (mobile-first UI + cooldown + aiming)

  • Server-authoritative gameplay where state sync is automatic (no custom RPC plumbing for most gameplay)

Quick mapping: Unreal → All Out / CSL

Unreal
All Out / CSL
Notes

UWorld / Level

Scene

Entities exist in the scene; you can also create/destroy them at runtime.

AActor

Entity

Entities have transforms and components.

UActorComponent

Component

You author gameplay by writing CSL components and attaching them to entities.

BeginPlay

ao_start

Component lifecycle entry point.

Tick(float DeltaTime)

ao_update(dt) / ao_late_update(dt)

Use late update for UI/input patterns used by the engine (e.g., ability buttons).

Blueprint graphs

CSL code

Text-based, compiled as part of your project.

Pawn/Character

Player_Base subclasses

Your player logic usually lives on a Player component/class.

Input mappings

Abilities + keybinds

Mobile-first: prefer ability buttons over raw input.

Replication (Replicated vars)

Automatic state sync

Avoid building your own replication/RPC patterns unless you truly need them.

RPCs (Server, Client, NetMulticast)

Usually not needed

Use engine facilities (e.g., notifications) instead of custom RPC sprawl.

Actor spawning

Scene.create_entity() / instantiate(Prefab_Asset)

Prefabs are assets and can be instantiated.

UAsset references

get_asset(...)

Assets live under /res and are referenced by path.

Your first CSL file (imports)

CSL uses a single “root” import pattern: import in main.csl, and don’t sprinkle imports across every file.

Entities & components (vs Actors & Components)

Creating an entity at runtime

Adding and accessing components

Writing a custom component (life cycle)

Iterating entities/components

Player actions: use Abilities (instead of raw input)

Unreal projects often start with input bindings (Enhanced Input) and then build UI/UX on top. In All Out, Abilities are the default way to implement player actions with:

  • A consistent mobile-friendly button UI

  • Cooldowns

  • Optional aiming (drag-to-aim on mobile, mouse aim on PC)

Draw ability buttons from Player.ao_late_update inside is_local_or_server():

See: Abilities for the full API and patterns.

Networking: “replication” is not your job (most of the time)

What’s different from Unreal replication

  • Gameplay state is automatically synced from server → clients.

  • You generally do not write RPCs for standard gameplay flows.

  • You must still design with multiple players in mind: avoid global state; store per-player state on the player instance.

Client-only vs server/shared logic

Use these patterns:

  • is_local_or_server() for inputs + gameplay UI (runs on server + local client)

  • is_local() for purely cosmetic UI/effects (runs only on the local client)

Assets, prefabs, and paths

The /res folder

Assets are in /res. When referencing assets, omit /res from the path.

Prefabs

Prefabs are assets (folders ending in .prefab) and can be instantiated:

Collision & overlap events (common Unreal pitfall)

If you’re used to Unreal’s overlap/hit callbacks (OnComponentBeginOverlap, OnHit), note that CSL gameplay often uses queries rather than event callbacks.

Common pattern: query nearby components and check distance:

See: Navmesh and collision.

UI differences (UMG vs CSL UI)

All Out games are mobile-first, so avoid building keyboard-only UX. Use the engine’s UI utilities and ability buttons.

If you need custom UI, reference the UI documentation and follow the standard patterns (don’t invent a UMG-like widget tree unless the docs say so).

Match flow, inventory, interactables

If you’re looking for equivalents to common Unreal gameplay systems:

Unreal-to-CSL “gotchas”

  • Don’t build a custom RPC/replication layer: start from server-authoritative logic and let the engine sync state.

  • Avoid global singletons for gameplay state: multiple players connect; store state on the player or the relevant component instance.

  • Imports are centralized: import folders once from main.csl, not per-file.

  • Prefer Abilities for actions: it solves mobile UX + cooldowns + aiming consistently.

  • Cosmetics vs gameplay: keep cosmetic-only effects local; keep gameplay state server-authoritative.

Next steps

Last updated