Topics
Task guides for one system at a time: rendering, physics, animation, audio, input, UI, cameras, streaming, and the rest of what a world needs.
- Showing an animated image
An animated GIF, APNG or animated WebP imports as one texture carrying every frame: one layer per frame, plus the display time each frame was authored with.
- Animation
Animated models in Zero carry named clips (idle, walk, run, …).
- Audio
Audio in Zero is built from two components. An Audio component makes an entity emit sound from a .soundClip asset.
- The shell
bash is a complete bash shell running inside the engine, over this world's files and the engine's live state.
- 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.
- Byte streams: talking to things outside the engine
A world often needs to speak to something that is not part of it — a socket on another machine, an external process on localhost…
- Camera input: a webcam or phone camera in the world
The camera global and the Camera component are the world's own cameras, the ones the scene is rendered through.
- Cameras — which one is rendering, with what projection, into what
A camera is an entity carrying a Camera component.
- Cutscenes
A cutscene is the moment your game takes the camera off the player: the opening that establishes where they are, the door that opens once, the ending.
- 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…
- Engine API in an external editor
The engine describes its whole Luau API (every global namespace, method signature, published type alias and asset-category surface) as a Luau definitions file…
- Streaming frames out of the engine
Sometimes the rendered image has to leave the machine.
- Graphics quality on phones and desktops: the device's quality tier
How the engine fits its rendering to the device a world is played on: a phone, a tablet, a laptop, a desktop or a browser.
- Serving HTTP from the running world
Sometimes something outside the engine has to reach in.
- Inverse kinematics
An animation clip stores joint angles. Play it and the character does the same thing every time…
- Input
A player might be at a keyboard, holding a controller, or tapping a phone.
- The player's language
Every engine knows which languages its player reads, on every platform, and picks from one chain.
- The microphone: sound coming in
The audio guide is about sound the world makes. This one is about sound the world hears — audio input from the machine it is running on.
- 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.
- Recording: filming the world and keeping the video
av turns what the engine draws into a video file: a clip a player captures of something fun, a replay, a trailer or cutscene filmed frame by frame…
- Render layers
A render layer is a name. An entity is a member of one or more layers; a camera draws a filter over them ("all !shell").
- Render textures
A render texture is a camera's view drawn into a texture instead of onto the screen.
- Rendering
Most of how a scene looks comes from its content — meshes, materials, and lights.
- Quality tiers, render target cost and loaded content
Part of the rendering guide (guides { path = "topics/rendering" }), which lists every part.
- Debug camera views
Part of the rendering guide (guides { path = "topics/rendering" }), which lists every part.
- What drawing costs: culling, materials and crowds
Part of the rendering guide (guides { path = "topics/rendering" }), which lists every part.
- Morph targets, clusters and lines
Part of the rendering guide (guides { path = "topics/rendering" }), which lists every part.
- Per-entity shader data
Part of the rendering guide (guides { path = "topics/rendering" }), which lists every part.
- Lighting and global illumination
Part of the rendering guide (guides { path = "topics/rendering" }), which lists every part.
- Material graphs
Part of the rendering guide (guides { path = "topics/rendering" }), which lists every part.
- Motion blur and the velocity buffer
Part of the rendering guide (guides { path = "topics/rendering" }), which lists every part.
- Post-process
Part of the rendering guide (guides { path = "topics/rendering" }), which lists every part.
- Reflections
Part of the rendering guide (guides { path = "topics/rendering" }), which lists every part.
- Render features
Part of the rendering guide (guides { path = "topics/rendering" }), which lists every part.
- Asking where the drawn world is along a ray
Part of the rendering guide (guides { path = "topics/rendering" }), which lists every part.
- Scene-wide renderer settings
Part of the rendering guide (guides { path = "topics/rendering" }), which lists every part.
- Shadows: budgets, casters and what each light costs
Part of the rendering guide (guides { path = "topics/rendering" }), which lists every part.
- Styling
Every visual property of a widget lives in one table — the style table on the widget node — and the vocabulary is CSS.
- Text and labels
Text in a world comes from one place: a text object the engine holds, laid out against a font database and rasterised into a GPU texture.
- The UI window system
UI in Zero is declarative and immediate-mode: you describe the interface as a tree of widget tables and register it as a named screen…
- Visual effects
A visual effect in Zero (sparks, fire, smoke, magic, an impact, a muzzle flash, a swarm, lightning) is an entry of an effect…
- World detail — terrain, voxels, streaming, LOD
Four systems decide how much of a world stands at any one moment: