Log inGet started
// zero engine

Documentation

Guides for building 3D worlds, games, and apps with the Zero engine and Luau, plus the full engine API reference. Zero is OrigoZero's browser-based 3D game engine, built for AI agents and scripted in Luau — not the DigiPen Zero Engine or the Agent Zero AI framework.

Introduction

  • Zero

    Welcome. Zero is a 3D engine you drive with Luau, working inside a live, shared world. This is the orientation: what the engine is, the handful of ideas that everything rests on, and where to go for…

  • The content graph

    Everything you author in a world — a scene, a component, a module, a material, an asset type — is an asset in one shared, versioned graph that spans every published world. This guide teaches how that…

Core

  • Getting started

    This is the one read that shows how the pieces fit together. Each system has its own guide; this walks the whole chain once — world → scene → players + camera → entities → components + assets —…

  • Worlds & ZeroMind

    A world is the project you're working in — all of its entities, scenes, components, materials, and code. It's a shared, multi-user, persistent container backed by ZeroMind (the content backend).…

  • Scenes

    A scene is a loadable arrangement of a world — its entities (with their components, transforms, and lighting), plus a startup script — saved as a .scene asset. A scene is the unit of "level" or…

  • The engine

    Working in Zero means working inside a live, shared world. Three things make up the engine's model, and understanding them up front saves a lot of confusion: the world is live and persistent, it runs…

  • ECS

    You work with the ECS layer through ecs. and entity. — two views of the same thing. entity. spawns and finds the entities; ecs. attaches and reads the native components that give them their…

  • Entities

    An entity is a named handle with a stable id, a transform, and a place in a hierarchy. On its own it does nothing — it has no shape, no physics, no behaviour. Every capability comes from the…

  • Components

    A component is the primary unit of gameplay code: a piece of behaviour + data attached to an entity. Movement, AI, animation drivers, UI panels, network sync, per-entity state — all of it lives in…

  • Requiring modules

    require is how one piece of Luau pulls in another. You hand it a string; it hands you back the table that module returned. The interesting part is the string — what you write decides how the engine…

  • Generating assets & content

    You're building something — a scene, a game, a level — and you need an asset that doesn't exist yet: a 3D model of a dragon, a door-slam sound, a stone-tile texture, a walk animation, a whole…

  • Scripting & tasks

    Two kinds of code run in Zero, and it's worth knowing which you're writing:

  • Runtime data

    runtime_data is a world's persistent, replicated data layer — where you keep state that must survive restarts and reach every player: progression, saved builds, unlocks, per-player records, any…

  • Assets & asset types

    The asset system is the backbone of a Zero world. Almost everything you work with — a component, a material, a scene, a tool, a mesh, a texture, a shader, a bundle — is an asset. Understanding what…

  • The filesystem (VFS)

    The engine's state is exposed as a filesystem under /zero. This is a genuine superpower for understanding what exists — you navigate entities, components, assets, and live runtime state with the same…

  • The tool system

    Tools are how the engine's capabilities become named, discoverable workflow operations. A tool composes a multi-step job — resolve an asset, spawn an entity, add a Model, add a collider, position it…

  • Multiplayer

    Zero is multiplayer by default — in both edit mode and play mode. A world is a live, shared session: other people and agents may be connected to the same world at the same time, editing alongside you…

  • Discovering the engine

    You don't need to memorise this engine — its whole surface is discoverable and readable. The engine exposes well over a hundred namespaces (asset, entity, layers, mesh, compute, vfs, camera, players,…

  • Development & versioning

    A world is a shared, multi-user editor session. Everyone connected sees your edits live and you see theirs — like a shared document, in both edit and play (the multiplayer guide). That shapes how…

  • Performance: run each job where it belongs

    Zero executes your logic in two very different worlds. Luau is flexible, per-object, and serial. The engine core and the GPU are bulk and parallel. Almost all performance work comes down to running…

  • The resource model: asset, CPU, and GPU

    Read this before working with any mesh, texture, material, or shader.

  • Troubleshooting

    Something you built doesn't behave — a component never runs, a weapon never equips, a value comes back nil, a mesh isn't where it should be. The engine almost always already knows why: errors land in…

Topics

  • Animation

    Animated models in Zero carry named clips (idle, walk, run, …). A clip plays on a skinned body through the AnimGraph — it retargets the clip from its source rig onto the body's rig and drives the…

  • Audio

    Audio in Zero is built from two components. An Audio component makes an entity emit sound from a .soundClip asset. An AudioListener component makes an entity the "ears" of the scene. Both live on…

  • Building a game — the play-mode authoring loop

    A game in Zero is a scene the world loads: its entities, their components, the player avatar, and the camera. The way you build that scene is the part worth learning, because it is not "place objects…

  • The editor UI

    Everything you see when you edit a world — the menu bar across the top, the dockable panels, the play controls — is world-side Luau content, built from the same Z. widgets and the same engine APIs…

  • Input

    Input in Zero is built around named actions, not raw key polling. Rather than scattering is the W key down? checks through your code, you bind physical inputs (keys, mouse, gamepad, gestures) to…

  • Physics

    Physics in Zero has two surfaces, reached in two different ways:

  • Ray tracing

    Cast rays against the live scene from a compute shader and shade with the hits — shadows, ambient occlusion, reflections, GI. The engine builds the scene acceleration structure and exposes a small…

  • Render textures

    A render texture is a camera's view drawn into a texture instead of onto the screen. That texture then becomes something you use elsewhere — a UI panel, a material map, a mirror, a minimap, a…

  • Rendering

    Most of how a scene looks comes from its content — meshes, materials, and lights. This guide is about the scene-wide controls on top of that: lighting, post-process effects, and the renderer's global…

  • Styling zui widgets

    Every visual knob a widget exposes lives in its style block — a plain table under the style key of the widget node — and the complete vocabulary of that block is one typed schema: ZuiStyle, defined…

  • UI

    UI in Zero is data, not drawing. You describe what you want as a tree of widget tables, register it as a named screen, and the engine renders it every frame. You never paint pixels — you declare…

API Reference

  • asset

    The asset namespace — the engine's Luau API reference for asset.

  • audio

    The audio namespace — the engine's Luau API reference for audio.

  • av

    The av namespace — the engine's Luau API reference for av.

  • base64

    The base64 namespace — the engine's Luau API reference for base64.

  • blend

    The blend namespace — the engine's Luau API reference for blend.

  • Buffer

    The Buffer namespace — the engine's Luau API reference for Buffer.

  • bundle

    The bundle namespace — the engine's Luau API reference for bundle.

  • camera

    The camera namespace — the engine's Luau API reference for camera.

  • channel

    The channel namespace — the engine's Luau API reference for channel.

  • color

    The color namespace — the engine's Luau API reference for color.

  • ColorSequence

    The ColorSequence namespace — the engine's Luau API reference for ColorSequence.

  • component

    The component namespace — the engine's Luau API reference for component.

  • compute

    The compute namespace — the engine's Luau API reference for compute.

  • cursor

    The cursor namespace — the engine's Luau API reference for cursor.

  • debugger

    The debugger namespace — the engine's Luau API reference for debugger.

  • egress

    The egress namespace — the engine's Luau API reference for egress.

  • engine

    The engine namespace — the engine's Luau API reference for engine.

  • entity

    The entity namespace — the engine's Luau API reference for entity.

  • Entity

    The Entity namespace — the engine's Luau API reference for Entity.

  • environment

    The environment namespace — the engine's Luau API reference for environment.

  • Field

    The Field namespace — the engine's Luau API reference for Field.

  • font

    The font namespace — the engine's Luau API reference for font.

  • globals

    The globals namespace — the engine's Luau API reference for globals.

  • http

    The http namespace — the engine's Luau API reference for http.

  • input

    The input namespace — the engine's Luau API reference for input.

  • jobs

    The jobs namespace — the engine's Luau API reference for jobs.

  • layers

    The layers namespace — the engine's Luau API reference for layers.

  • library

    The library namespace — the engine's Luau API reference for library.

  • live

    The live namespace — the engine's Luau API reference for live.

  • log

    The log namespace — the engine's Luau API reference for log.

  • logs

    The logs namespace — the engine's Luau API reference for logs.

  • lsp

    The lsp namespace — the engine's Luau API reference for lsp.

  • luau_profile

    The luau_profile namespace — the engine's Luau API reference for luau_profile.

  • Material

    The Material namespace — the engine's Luau API reference for Material.

  • mathx

    The mathx namespace — the engine's Luau API reference for mathx.

  • mcp

    The mcp namespace — the engine's Luau API reference for mcp.

  • mcpLog

    The mcpLog namespace — the engine's Luau API reference for mcpLog.

  • modelImport

    The modelImport namespace — the engine's Luau API reference for modelImport.

  • multiplayer

    The multiplayer namespace — the engine's Luau API reference for multiplayer.

  • notices

    The notices namespace — the engine's Luau API reference for notices.

  • NumberRange

    The NumberRange namespace — the engine's Luau API reference for NumberRange.

  • NumberSequence

    The NumberSequence namespace — the engine's Luau API reference for NumberSequence.

  • nx

    The nx namespace — the engine's Luau API reference for nx.

  • packages

    The packages namespace — the engine's Luau API reference for packages.

  • Physics

    The Physics namespace — the engine's Luau API reference for Physics.

  • postprocess

    The postprocess namespace — the engine's Luau API reference for postprocess.

  • preset

    The preset namespace — the engine's Luau API reference for preset.

  • profiler

    The profiler namespace — the engine's Luau API reference for profiler.

  • reflectionProbe

    The reflectionProbe namespace — the engine's Luau API reference for reflectionProbe.

  • renderer

    The renderer namespace — the engine's Luau API reference for renderer.

  • retarget

    The retarget namespace — the engine's Luau API reference for retarget.

  • service

    The service namespace — the engine's Luau API reference for service.

  • settings

    The settings namespace — the engine's Luau API reference for settings.

  • shell

    The shell namespace — the engine's Luau API reference for shell.

  • skeleton

    The skeleton namespace — the engine's Luau API reference for skeleton.

  • sky

    The sky namespace — the engine's Luau API reference for sky.

  • subscriptions

    The subscriptions namespace — the engine's Luau API reference for subscriptions.

  • substrate

    The substrate namespace — the engine's Luau API reference for substrate.

  • task

    The task namespace — the engine's Luau API reference for task.

  • terminal

    The terminal namespace — the engine's Luau API reference for terminal.

  • text

    The text namespace — the engine's Luau API reference for text.

  • toml

    The toml namespace — the engine's Luau API reference for toml.

  • tools

    The tools namespace — the engine's Luau API reference for tools.

  • Transform

    The Transform namespace — the engine's Luau API reference for Transform.

  • typed

    The typed namespace — the engine's Luau API reference for typed.

  • ui

    The ui namespace — the engine's Luau API reference for ui.

  • userfile

    The userfile namespace — the engine's Luau API reference for userfile.

  • vfs

    The vfs namespace — the engine's Luau API reference for vfs.

  • video

    The video namespace — the engine's Luau API reference for video.

  • world

    The world namespace — the engine's Luau API reference for world.

  • ws

    The ws namespace — the engine's Luau API reference for ws.

Types

  • animation asset type

    A single animation clip, as a composite asset. The folder <name>.animation/ carries:

  • assetType (asset type)

    The assetType is the type of types — the meta-type that every <typename>.assetType/ folder is an instance of, including itself. A <typename>.assetType/ folder declares a new asset type called…

  • avatar

    A playable character, composed from three independent parts:

  • Bundle (asset type)

    A bundle is a composable, spawnable entity assembly— a saved entity hierarchy plus its components, sub-assets (meshes, textures, animations, materials, sub-bundles), and any nested data, packaged…

  • Component (asset type)

    A component is a reusable behavior + data unit attached to an entity. The component file declares public fields, methods, and lifecycle callbacks; the engine instantiates one per attachment and…

  • Compute shader (asset type)

    A .computeShader is a GPU compute (GPGPU) program with a zero-scaffolding authoring contract: you write only @compute fn main(...) plus a declarative bindings.yaml, and the engine GENERATES every…

  • data (asset type)

    A .data instance is a configured value binding to a dataType contract: values.yaml names the contract and supplies the field values the contract's schema declares. Instances carry values only —…

  • dataType (asset type)

    A dataType is a user-authored typed-data contract: it declares a set of fields — names, types, constraints, defaults — that any bound .data instance must satisfy. A contract can carry an optional…

  • dynamicAsset (asset type)

    A prompt-driven, self-regenerating 3D asset. A <name>.dynamicAsset/ folder holds a text prompt.json; the asset's model is generated from that prompt by the @builtin::services.meshy text-to-3D…

  • editorPanel assetType

    A dock panel for the editor, expressed as an asset. A <name>.editorPanel/ folder whose init.luau returns the panel spec; the asset system registers it into the editor live (no restart) via the…

  • .font asset type

    A .font is a first-class font asset: font-file bytes (TTF / OTF / WOFF / WOFF2) converted into a guid-anchored asset via asset.create("font", name, { bytes = … }).

  • Importer (asset type)

    An importer is a Luau function that converts a source file (GLB, PNG, CSV, custom binary) into one or more derived assets registered in the engine. Importers extend the engine's file-format knowledge…

  • Input macro (asset type)

    An input macro is a recorded or hand-authored sequence of input simulation events — keystrokes, mouse moves, button clicks, scroll wheel deltas — timestamped and played back via sim.macro. Macros are…

  • inputMap assetType

    An input binding map, expressed as an asset. A <name>.inputMap/ folder whose init.luau returns the map record: named actions and axes, each carrying bindings per device class (kbm / gamepad / touch),…

  • Material (asset type)

    A material is a named, configured instance of a .shader. The shader defines the surface look (lighting model, available property fields, texture slots); the material picks values for those fields and…

  • mesh

    A mesh is renderable geometry — vertices and triangle indices, and, for a skinned mesh, the per-vertex skinning data that binds it to a skeleton. A component that draws geometry references a mesh,…

  • Module (asset type)

    A module is a reusable, stateless (or globally-stateful) Luau library that other code pulls in with require(). Modules are the unit of factored-out logic in a world: helpers, math libraries, format…

  • Package (asset type)

    A package is a shippable, heterogeneous library folder. It bundles components, modules, scenes, presets, tools, and any other typed assets under a single addressable identity (@<owner>::<name>) that…

  • pixelTemplate (asset type)

    A saved, reusable pixel-art sheet. A <name>.pixelTemplate/ folder asset carries a JSON payload template.pixbin (width, height, pixelSize, plane, palette, the flat pixel array, and — for animated…

  • Preset (asset type)

    A preset is a captured, named configuration of a single component. Instead of typing the same fields into every component.add call, you save a preset once and load it. Presets are component-scoped:…

  • procGraph (asset type)

    A .procGraph asset is a serialized procedural graph (proc.graph.v1) — the compiled, composable form of a procedural generation definition. It is built from a .proc.lua builder source via proc.build…

  • procNode — custom procedural nodes as content

    A .procNode is a procedural operation authored as content: a folder whose init.luau returns a def table. When the asset registers, its def joins the proc op registry keyed by the asset's stable GUID,…

  • renderFeature

    A render feature inserts custom GPU passes into the frame pipeline. The engine provides one generic capability — a per-frame render-pass queue and a set of pipeline-phase insertion points — and a…

  • rig asset type

    A skeleton, as a composite asset. A rig is its own primitive — not a mesh and not an animation. The folder <name>.rig/ carries:

  • Scene (asset type)

    A scene is a saved, loadable snapshot of an entity scenegraph inside a world: the entity hierarchy, transforms, components, lighting, and a declared player intent, plus an auto-discovered startup…

  • Service (asset type)

    A service generates content you don't have yet — a 3D mesh, an image, a PBR material, a sound effect, a humanoid animation, a navigable splat world — from the inputs each operation declares, landing…

  • Shader (asset type)

    A shader is a WGSL program that runs on the GPU. Materials reference shaders and supply property values; renderable entities reference materials, not shaders directly. This README is the canonical…

  • soundClip

    An audio asset — a managed container holding a sound effect or music track, addressed by the .soundClip suffix.

  • Style (asset type)

    A style is a UI design-token bundle: colour palette, spacing scale, typography pairs. Styles cascade through the UI theme system — engine default < per-screen style < per-panel style. Authoring a…

  • Terrain (asset type)

    A terrain is a serialized heightmap — a flat width×depth array of floats plus the dimensions, world size, and an optional default material — that the Terrain component reads at startup to build a…

  • Test Suite (asset type)

    A test suite is a registrable asset that bundles one group of automated engine tests. Each <name>.testSuite/ folder holds an init.luau whose body registers a suite (and its tests) against the…

  • texture

    An image asset — the raw bytes of a png / jpg / jpeg / hdr / ktx2 / webp / bmp / tga file. Loose image files under a textures/ directory classify as texture.

  • Tool (asset type)

    A tool is a single agent-callable function with a YAML-declared schema. Tools are the workflow surface — composed Luau operations that bundle multiple engine APIs into one named call, suitable for…

  • Toolbox (asset type)

    A toolbox is a namespace folder that groups related .tool/ children plus shared helpers. Toolboxes are the addressing layer for tools — every tool's identity is <toolbox>.<name>, so the toolbox name…

  • Voxel Template (asset type)

    A voxel template is a reusable, named voxel grid that live instances link to. It is the source of truth for a family of VoxelShape instances spawned via Voxel.fromTemplate(<name>) — every live…