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.)
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).
Model reuse
Prefabs
Prefabs are early and don’t yet support per-instance custom fields besides position (see Prefabs).
ProximityPrompt / ClickDetector
Interactable component
Add Interactable-derived component and implement can_use/on_interact (see Interactables).
Touched / Region3 / GetPartsInPart
Range queries (for now)
Collision enter/exit callbacks aren’t exposed yet; use Scene.get_all_components_in_range (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:
If you want a “game script” that runs once per server/session, you’ll typically put it in your main lifecycle procs (ao_start, ao_update, etc). See the template in Getting Started with CSL.
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, collision enter/exit callbacks are not yet implemented in CSL, so the standard approach is:
Query nearby players/components
Do a simple distance check
Track who was “inside” last frame if you need enter/exit events
See “Pseudo collision behavior” in:
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:
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 wait for Touched events: use range queries until collision callbacks are available in CSL (link above).
Prefab instances aren’t fully parameterized yet: if you need many copies with different values, you may need to “unlink” or author unique entities (see Prefabs).
Think “components” instead of “tags”: where you’d use CollectionService tags, you’ll often add a marker/behavior component instead.
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