Roblox
If you've built games on Roblox, there are some key differences you'll need to know to get started on All Out!
If you’re coming from Roblox Studio + Lua, this page will help you translate your mental model to All Out + CSL (All Out’s scripting language).
The big differences (at a glance)
Entities + components (not Instances + Services): worlds are built out of entities in the Hierarchy, and behavior comes from adding components (built-in or scripted).
Multiplayer is “built in”: CSL is designed so most gameplay code can be written like singleplayer while the engine syncs relevant state.
CSL is statically typed: it will feel closer to Go/Odin than Lua. (See Getting Started with CSL.)
Gameplay transforms are 2D: position and scale use
v2, rotation is one angle in degrees, and sprite layers control draw order.
Roblox → All Out cheat sheet
Place / Experience
All Out Game project
Your local project folder includes a scripts directory for .csl files.
Explorer / Workspace
Hierarchy
The hierarchy shows all entities in the current world/scene.
Instance / Model / Part
Entity
“Folder-like” organization is done by parenting entities (see “Folders” in Hierarchy).
Properties window
Inspector
Where you edit entity/component fields and add components.
Attributes
Serialized component fields
Expose fields to the editor with @ao_serialize (example below).
CFrame / Vector3
2D entity transform
Position and scale are v2; rotation is one angle in degrees.
Clone()
Scene.instantiate
Load a Prefab_Asset, then instantiate it into the scene.
Model reuse
Prefabs
Linked instances preserve root properties, but component fields are not independent overrides (see Prefabs).
ProximityPrompt / ClickDetector
Interactable component
Add Interactable-derived component and implement can_use/on_interact (see Interactables).
Touched / Region3 / GetPartsInPart
Triggers / range queries
Use trigger callbacks for enter/exit behavior and Scene.get_all_components_in_range for broad sensing (see Navmesh & Collision).
Tools / abilities / mobile buttons
Abilities
Built-in mobile/PC friendly button UI + cooldown patterns (see Abilities).
Your first hour (recommended path)
Follow the “apple collection” walkthrough in Building a Basic Game.
Skim CSL basics in Getting Started with CSL (especially
ao_start,ao_update, and creating components).Learn how to attach your new components to world objects via the Inspector.
Scripting mental model (Lua → CSL)
In Roblox you often write a Script/LocalScript that finds objects (Workspace.Foo.Bar) and connects events. In All Out, you typically:
Write component classes in CSL (behavior).
Attach them to entities in the editor (or spawn entities and add components at runtime).
Store tunable values on the component with
@ao_serialize(so you can tweak per-entity in the inspector).
Here’s a small example that feels like “a Script parented under an object”, but expressed as a CSL component:
Register the Coins currency during scene setup before depositing it. Global lifecycle procs such as ao_start and ao_update run in each scene simulation; they are not server-only. See Game/Frame Lifecycle.
Interactions you’ll recognize (and how they translate)
ProximityPrompt → Interactable
If you used ProximityPrompt.Triggered in Roblox, the closest equivalent is an Interactable-derived component. Start here:
“Touched” pickups / trigger zones
Roblox’s BasePart.Touched is a very common pattern for pickups, damage zones, and checkpoints. In All Out, add an enabled collider, set is_trigger, and assign on_trigger_start, on_trigger_stay, or on_trigger_end. The other collider is passed to the callback. A Movement_Agent is not required.
Use Scene.get_all_components_in_range when you need broad sensing or a distance check. Solid collision does not provide a general Roblox-style Touched callback.
See Navmesh & Collision.
Player actions (Tools / keybinds / mobile controls)
If you’re used to Roblox “tool” scripts or hand-rolled input + cooldown systems, use Abilities instead. They’re designed to work well on both mobile and PC with consistent UI.
Saving data (DataStoreService → Save system)
For persistence (currencies, unlocks, progression, cosmetics), start with:
UI (ScreenGui → All Out UI)
Roblox UI often starts with ScreenGui and Frame/TextButton hierarchies. In All Out, start here:
Draw player UI from that player's ao_late_update inside is_local_or_server().
Common porting gotchas for Roblox devs
No “workspace services” tree: don’t look for
ReplicatedStorage/ServerScriptServiceequivalents—use the editor’s hierarchy + your project’sscriptsfolder.Don’t guard gameplay with
Game.is_server(): normal gameplay runs on the predicting client and authoritative server.Prefab component fields aren’t independent overrides: unlink the instance or author another prefab when copies need different component values.
Think “components” instead of “tags”: where you’d use CollectionService tags, you’ll often add a marker/behavior component instead.
Remember the scene is 2D: use renderer layers instead of a Z transform.
Where to go next
Build your first game: Building a Basic Game
Learn the editor basics: Introduction/Scene View
Learn scripting basics: Getting Started with CSL
Learn core gameplay building blocks: Interactables, Inventory, Abilities
Last updated