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,…
Ask the language server
lsp.namespaces() -- every namespace (name, method count)
lsp.methods("asset") -- a namespace's methods, with signatures + docs
lsp.describe("asset/create") -- one method: signature, args, return, examples
Browse it like a codebase
/zero is a real filesystem; your shell works on it:
ls /zero/source/libs/@builtin/modules/api/engine # the engine's API modules
rg "spawn" /zero/source/libs/@builtin # search all source
cat /zero/source/libs/@builtin/modules/api/engine/asset.module/init.luau # read how asset.* works
Reading the authored API is the surest way to understand it — it is the implementation.
Ask the content and tool registries
asset.list("material") -- registered content, by type
asset.inspect("@builtin::materials.gold") -- a full summary of one asset
tools.list() -- workflow tools (called as <toolbox>.<name>)
Confirm anything live
type(_G.asset) -- is it there?
Run the call in execute and read what comes back. The running engine is the final authority: when a doc and the engine disagree, the engine wins.
Check what's broken
When something isn't behaving, ask the engine what's wrong rather than guessing — the diagnostics toolbox reports the current error state across assets, components, and the engine:
tools.use("diagnostics", "errors") -- the active errors
tools.use("diagnostics", "summary") -- a roll-up
tools.use("diagnostics", "validate") -- re-check and report problems
(A single component's own errors are also on its instance — reportError/errors, the components guide.)
How it fits together
asset.*,entity.*,layers.*,tools.*, … are the globals you call.- Their implementations are the authored modules under
modules/api/engine/(wrapping the internal__*primitives). - The concept guides — assets, components, the tool system, scenes, the engine, worlds — teach the systems; the methods above are how you find the specifics of any of them.
That's the whole method: the engine describes itself. Reach for lsp.*, the shell, the registries, and a live execute before assuming anything.