# Talos main documentation > Talos is a game engine you drive yourself or through your AI assistant. Every page here is generated from the engine's own sources, and each one has a plain Markdown twin. This is series next. Start with the single copy-for-AI text; use the per-page Markdown for anything it leaves out. Links are relative to this file. ## Copy for AI - [Talos main for AI](for-ai/talos-main-for-ai.md): tools, components, script API, rule codes and migration notes in one text, sized for a chat ## Guides - [Audio](guides/audio.md): The mixer lives in crates/audio (src/mixer.rs); its module docs are the full reference for buses, snapshots, music and the voice cap. - [Authoring Talos UI](guides/ui.md): This is the reference for writing a game screen: the files, the TSX, the stylesheet, the values a behaviour pushes in, and every diagnostic… - [Breaking changes: what we promise about your project](guides/breaking-changes.md): Draft for sign-off, 25 Oct 2026. - [Editor and managed sessions](guides/editor.md): Production foundations E1 (workspace and session lifecycle), the runtime half of T1 (session-bound control), and E2 (the human-facing edito… - [Finding out why a game is slow](guides/profiler.md): The engine carries a flight recorder. - [Input: the action map, remapping, and where a player's keys are kept](guides/input.md): Three documents meet here. - [Known issues (tester build 0.7)](guides/known-issues.md): Thanks for testing. - [Lighting](guides/lighting.md): How a Talos scene is lit in the HD renderer, what each part costs, and what it cannot do yet. - [Materials](guides/materials.md): A material file is a physical material a person or an agent writes by hand: a small JSON file whose name ends in .material.json. - [Native export — engine export](guides/export.md): Production foundations S4 and S5. - [Netcode](guides/netcode.md): Multiplayer is not available to games yet; these notes are the rules scripts will run under once it is. - [Start here](guides/start-here.md): This page gets you from the installer to a game you can send to someone in about ten minutes, then into your first hour with the Kart start… - [Talos raw query API — v1.0.0](guides/query-api.md): Frozen. - [The asset library](guides/asset-library.md): The asset library is where models you generate, import or reuse are kept, so the next project can find them again instead of making them tw… - [The authoring SDK](guides/sdk.md): The installed editor type-checks TypeScript behaviours and describes a project's screens. - [The starter course](guides/starter-course.md): A small playable project: a third-person collection course with five pickups, a ramp, a flight of steps, a locked exit and a restart key. - [Wheels and vehicles](guides/vehicles.md): Two components. - [Writing scripts for multiplayer](guides/multiplayer-scripts.md): Multiplayer is coming; it isn't in this build. ## Scene components - [animator](api/components/animator.md) - [attach](api/components/attach.md): Follows a bone of another entity's animated skeleton (a held prop; with a trigger collider, a sensor reporting `overlap` events): world = o… - [audio](api/components/audio.md) - [buoyancy](api/components/buoyancy.md): Makes a dynamic body float on the scene's sea (`meta.environment.ocean`): every tick, before the physics step, the engine reads the sea at… - [camera](api/components/camera.md) - [collider](api/components/collider.md): Collision shape. - [controller](api/components/controller.md) - [face](api/components/face.md): Keeps a face alive: blinks, eye saccades, brows and cheeks that follow the voice (when the entity also has `lipsync`), and head sway and no… - [foliage](api/components/foliage.md): A foliage layer: prototypes (each an `instancedMesh` child) and how a brush fills them (density, scale, yaw, lean). - [giVolume](api/components/givolume.md): A box that scales the indirect (bounced) light of HD's ray-traced GI, like a post-process volume's indirect lighting intensity. - [goal](api/components/goal.md) - [hud](api/components/hud.md) - [instancedMesh](api/components/instancedmesh.md): One mesh drawn at many places (rocks, fences, trees, props): N instances in a binary `.instances` file, each with a stable id that hits, pi… - [joint](api/components/joint.md) - [label](api/components/label.md) - [light](api/components/light.md) - [lipsync](api/components/lipsync.md): Moves the mouth shapes (morph targets) of this entity's animated model with the voice its `audio` component plays. - [mesh](api/components/mesh.md) - [navagent](api/components/navagent.md) - [navarea](api/components/navarea.md) - [navlink](api/components/navlink.md) - [particles](api/components/particles.md) - [rigidbody](api/components/rigidbody.md) - [road](api/components/road.md): A road: a ribbon with kerbs, barriers and trigger gates built from a `.road.json` file, with trimesh colliders and a centreline scripts can… - [script](api/components/script.md) - [spawn](api/components/spawn.md) - [splat](api/components/splat.md) - [springBones](api/components/springbones.md): Secondary motion for this entity's animated model: chosen bones swing on springs after the animation, with gravity, damping and colliders. - [sprite](api/components/sprite.md) - [terrain](api/components/terrain.md): A terrain: a heightfield ground built from the op stack of a `.terrain.json` file, drawn, collided and navigated as one. - [terrainmod](api/components/terrainmod.md): An op the entity contributes to a terrain, applied after the terrain file's own stack and moving with the entity (a pad flattened under a b… - [tilemap](api/components/tilemap.md) - [trigger](api/components/trigger.md) - [vehicle](api/components/vehicle.md): A drivable vehicle — a car, van or kart — with the engine's own vehicle physics: raycast wheels with suspension and tyre grip, a drivetrain… - [water](api/components/water.md): A bounded body of water (lake, pond): level from the entity's height, a box or ellipse outline, flat or small waves, its own look. - [waterways](api/components/waterways.md): Rivers, waterfalls and lakes from a terrain's hydrology, drawn and floated on, with per-id overrides. - [wheel](api/components/wheel.md) ## Scene types - [Aabb](api/types/aabb.md) - [AnimEvent](api/types/animevent.md) - [AnimIk](api/types/animik.md) - [AnimLayer](api/types/animlayer.md): A playback layer over the animator's state machine, on the masked bones: an upper-body action over locomotion, or an additive lean. - [AnimLookAt](api/types/animlookat.md) - [AnimLookAtLimits](api/types/animlookatlimits.md) - [AnimOnce](api/types/animonce.md) - [AnimParam](api/types/animparam.md) - [AnimParamSource](api/types/animparamsource.md): A fact the engine already has, written into this parameter every tick before the animator samples. - [AnimPelvis](api/types/animpelvis.md) - [AnimRetarget](api/types/animretarget.md) - [AnimSpeedParam](api/types/animspeedparam.md) - [AnimState](api/types/animstate.md) - [AnimTransition](api/types/animtransition.md) - [AssetImport](api/types/assetimport.md) - [AssetProvenance](api/types/assetprovenance.md) - [AssetRef](api/types/assetref.md) - [AssetSkeleton](api/types/assetskeleton.md) - [AudioAsset](api/types/audioasset.md) - [AudioBus](api/types/audiobus.md) - [AudioBusState](api/types/audiobusstate.md) - [AudioEffects](api/types/audioeffects.md) - [AudioLayer](api/types/audiolayer.md) - [AudioMusic](api/types/audiomusic.md) - [AudioSnapshot](api/types/audiosnapshot.md) - [BlendPoint](api/types/blendpoint.md) - [BlendTree](api/types/blendtree.md) - [BuoyancyProbe](api/types/buoyancyprobe.md): One cell of a floating body's hull: its centre in the body's local space, its volume and its height. - [CameraBlend](api/types/camerablend.md) - [CameraRigSettings](api/types/camerarigsettings.md) - [Entity](api/types/entity.md) - [FoliagePrototype](api/types/foliageprototype.md): One kind of plant in a foliage layer: the `instancedMesh` child that holds its instances and how a brush places them. - [HudLayout](api/types/hudlayout.md) - [InputAction](api/types/inputaction.md) - [JointMotor](api/types/jointmotor.md) - [LakeLook](api/types/lakelook.md): A lake or pond's look: render only, never part of a replay or a physics hash. - [LayerDef](api/types/layerdef.md) - [LightShadowTint](api/types/lightshadowtint.md): A directional light's shadow tint: the share of the sun, in a colour of its own, that a surface in its shadow still receives, so shadows li… - [LockAxes](api/types/lockaxes.md) - [NavAutoLinks](api/types/navautolinks.md) - [OceanBathymetry](api/types/oceanbathymetry.md): The ground under the sea, as a 16-bit height raster. - [OceanLook](api/types/oceanlook.md): The sea's look: render only, never part of a replay or a physics hash. - [OceanShore](api/types/oceanshore.md): Shoreline controls: shoaling and the breaker index shape the waves the CPU sea sees; the rest are render only. - [OceanWaveLayer](api/types/oceanwavelayer.md): One layer of the sea: a fully developed wind sea or a swell train, with a direction and a spread. - [OceanWaveMask](api/types/oceanwavemask.md): A painted scale on the waves over a world rectangle (a calm harbour, a rough patch). - [OceanWeatherKey](api/types/oceanweatherkey.md): A sea state at a moment of simulation time, as a Beaufort force or explicit layers. - [PhysicsMaterial](api/types/physicsmaterial.md): What a collider is made of: its friction, its bounce and, for a character standing on it, how steep it may be before it is slid down. - [PhysicsQualityOverrides](api/types/physicsqualityoverrides.md) - [PhysicsSleep](api/types/physicssleep.md) - [PrefabInstance](api/types/prefabinstance.md) - [RenderAo](api/types/renderao.md): Optional contact ambient occlusion on the standard renderer: darkens the scene where surfaces meet (a prop on the ground, a wall's foot, a… - [RenderBloom](api/types/renderbloom.md): Optional bloom on the standard renderer: a soft glow around bright pixels (emissive surfaces, the sun on metal). - [RenderExposureAdaptation](api/types/renderexposureadaptation.md): Partial adaptation of HD's auto exposure: how far a dark scene is brightened. - [RenderLook](api/types/renderlook.md): The scene's colour grade: a look preset and overrides on top of it. - [RenderScreenEffect](api/types/renderscreeneffect.md): One full-screen effect of a scene: a `kind: post` shader and the values for its params and textures. - [ScanCut](api/types/scancut.md) - [ScanRuler](api/types/scanruler.md) - [ScanSettings](api/types/scansettings.md) - [Scene](api/types/scene.md) - [Scene types (small pages)](api/types/index.md): 90 short entries in one file. - [SceneAir](api/types/sceneair.md): The scene's air: its density (the buoyancy of bodies out of the water) and its wind (what their dry probes are dragged against). - [SceneAudio](api/types/sceneaudio.md) - [SceneBudgets](api/types/scenebudgets.md) - [SceneEnvironment](api/types/sceneenvironment.md) - [SceneFog](api/types/scenefog.md) - [SceneFogHd](api/types/scenefoghd.md) - [SceneGi](api/types/scenegi.md): The scene's global controls of HD's ray-traced GI (`meta.environment.gi`). - [SceneInput](api/types/sceneinput.md) - [SceneMeta](api/types/scenemeta.md) - [SceneNav](api/types/scenenav.md) - [SceneOcean](api/types/sceneocean.md): The scene's sea: one unbounded ocean at `seaLevel`. - [SceneOutliner](api/types/sceneoutliner.md) - [ScenePhysics](api/types/scenephysics.md): Physics quality: a preset plus per-field overrides. - [ScenePlayers](api/types/sceneplayers.md): Local players: how many seats, how devices take them, and who the keyboard belongs to. - [SceneRender](api/types/scenerender.md) - [SceneSky](api/types/scenesky.md) - [SceneUi](api/types/sceneui.md): The game UI this scene asks for. - [SceneWind](api/types/scenewind.md): The scene's wind: a steady speed along a bearing plus optional seeded gusts, a pure function of position and simulation time. - [Shot](api/types/shot.md): One shot of a timeline: a move, where it looks, a field of view, and how it blends in from the previous shot. - [ShotKey](api/types/shotkey.md): One keyframe of a path shot: a time, an eye position, and optionally a field of view and an ease. - [ShotPoint](api/types/shotpoint.md): Where a shot looks, or what an orbit circles: a world point or an entity (read every sample), plus an offset. - [ShotTimeline](api/types/shottimeline.md): Cinematic camera shots as data, played on sim time so recordings are reproducible. - [SkyAtmosphere](api/types/skyatmosphere.md) - [SkyBackground](api/types/skybackground.md): What the sky looks like behind the scene, apart from what it lights: the standard renderer draws these colours in place of the sky's own dr… - [SkyClouds](api/types/skyclouds.md) - [SkySun](api/types/skysun.md) - [SpringChain](api/types/springchain.md): One chain of bones swung by springs. - [SpringCollider](api/types/springcollider.md): A sphere or capsule that follows a bone and keeps spring tails out of it. - [SpriteAnimation](api/types/spriteanimation.md) - [SpriteFrame](api/types/spriteframe.md) - [SpriteView](api/types/spriteview.md) - [TerrainGroundCover](api/types/terraingroundcover.md): Grass, flowers and forest-floor cover a terrain grows near the camera in HD, dense where the terrain's channels or layers say and coloured… - [TerrainMaterialRule](api/types/terrainmaterialrule.md): One rule of `material.rules`: a layer to weight, and where. - [TerrainTileRef](api/types/terraintileref.md): A sculpt or paint op's reference to one cell's delta tile, named by the SHA-256 of its bytes. - [TerrainVolumePart](api/types/terrainvolumepart.md): One solid of a volume.shape op and how it combines with the parts before it, in order. - [TerrainWhere](api/types/terrainwhere.md): A filter on height, slope and named channels, with a soft edge, choosing where a material rule applies. - [TilemapLayer](api/types/tilemaplayer.md) - [TilemapTileset](api/types/tilemaptileset.md) - [TouchBinding](api/types/touchbinding.md): The touch source an action reads: a screen region and what a finger in it does. - [TouchRegion](api/types/touchregion.md): A rectangle of the screen in normalised coordinates (0..1 on each axis, origin top left), so one region fits every resolution and orientati… - [Transform](api/types/transform.md) - [VehicleAero](api/types/vehicleaero.md) - [VehicleAssists](api/types/vehicleassists.md) - [VehicleBrakes](api/types/vehiclebrakes.md) - [VehicleChassis](api/types/vehiclechassis.md) - [VehicleContact](api/types/vehiclecontact.md): Contact handling: a wall hit at a glance slides along it keeping its speed, a head-on one keeps some, with no yaw kick and the nose turned… - [VehicleDrift](api/types/vehicledrift.md): Arcade drift: with this block, holding the `handbrake` input while steering above `minSpeed` drops the rear lateral grip and a yaw assist h… - [VehicleDriftBoostTier](api/types/vehicledriftboosttier.md): One mini-boost tier: the longest tier whose `time` the drift charge reached is the one earned on release. - [VehicleDrivetrain](api/types/vehicledrivetrain.md) - [VehicleEngine](api/types/vehicleengine.md) - [VehicleHandling](api/types/vehiclehandling.md): Arcade handling guard: no spins from steering, no pivoting at low speed, a reverse speed limit. - [VehicleOffRoad](api/types/vehicleoffroad.md): Off road is slower, not a spin: with wheels on an off-road surface the vehicle is dragged back toward a lower top speed, its handling guard… - [VehicleRecovery](api/types/vehiclerecovery.md): Automatic recovery: a vehicle flipped, stuck, fallen out of the world or drowned is put back where it can go on, and `vehicle-recovered` {… - [VehicleSteering](api/types/vehiclesteering.md): Steering geometry and feel. - [VehicleSuspension](api/types/vehiclesuspension.md) - [VehicleTyres](api/types/vehicletyres.md) - [VehicleWater](api/types/vehiclewater.md): Water handling: the vehicle floats by the `buoyancy` component on its body and is pushed and steered through the water by the same `throttl… - [VehicleWaterKeel](api/types/vehiclewaterkeel.md): A keel: resistance to sliding sideways through the water, so the hull carves a turn instead of skidding, and optionally to heaving up and d… - [VehicleWaterPlaning](api/types/vehiclewaterplaning.md): Planing: hydrodynamic lift on the hull's bottom rising with speed, so a fast hull rises out of the water and the water's drag on it (the `b… - [VehicleWaterRudder](api/types/vehiclewaterrudder.md): A rudder: a side force at its point, growing with the square of the speed through the water. - [VehicleWaterThruster](api/types/vehiclewaterthruster.md): One thruster of a vehicle's `water` handling. - [WaterwaysLook](api/types/waterwayslook.md): Render only; never part of a replay or a physics hash. - [WaterwaysOverride](api/types/waterwaysoverride.md): A per-id override of one river, waterfall or lake of the terrain's hydrology: its look, its flow speed, or hiding it. ## Project manifest - [AudioBus](api/project/audiobus.md) - [AudioEffects](api/project/audioeffects.md) - [InputAction](api/project/inputaction.md) - [LayerDef](api/project/layerdef.md) - [PhysicsQualityOverrides](api/project/physicsqualityoverrides.md) - [PhysicsSleep](api/project/physicssleep.md) - [Project manifest (small pages)](api/project/index.md): 15 short entries in one file. - [ProjectApplication](api/project/projectapplication.md): Application identity: what the player's operating system sees. - [ProjectAssets](api/project/projectassets.md): Asset generation, off unless the project opts in. - [ProjectAssetsConcept](api/project/projectassetsconcept.md): The concept step (2D concept images), opt in. - [ProjectAssetsGeneration](api/project/projectassetsgeneration.md): The model generator (3D generation), opt in. - [ProjectAssetsMusic](api/project/projectassetsmusic.md): The music generator, opt in. - [ProjectAssetsSpend](api/project/projectassetsspend.md): Spend controls for generation. - [ProjectAssetsStyle](api/project/projectassetsstyle.md): The project's art style for generated assets. - [ProjectAudio](api/project/projectaudio.md): Project audio defaults: the shape of a scene's meta.audio mixer fields. - [ProjectExport](api/project/projectexport.md): Export settings shared by every platform. - [ProjectGraphics](api/project/projectgraphics.md): Project graphics defaults. - [ProjectManifest](api/project/projectmanifest.md): `argus.project.json`: versioned project settings, separate from any scene. - [ProjectPhysics](api/project/projectphysics.md): Project physics defaults: the shape of a scene's meta.gravity and meta.physics. - [ProjectRender](api/project/projectrender.md): Renderer settings for the whole project. - [ProjectRenderQuality](api/project/projectrenderquality.md): HD quality: a preset plus per-knob overrides (docs/status/hd-quality.md). - [ProjectRenderQualityCustom](api/project/projectrenderqualitycustom.md): A named set of HD quality knobs: the Custom preset, a base preset plus the knobs it changes. - [ProjectRenderQualityPlatform](api/project/projectrenderqualityplatform.md): One platform's layer over render.quality (D19): what a game exported for, or run on, that platform starts from. - [ProjectRenderShaders](api/project/projectrendershaders.md): User shader settings of the project. - [ProjectSettings](api/project/projectsettings.md): Settings that are about the game rather than about the application. - [ProjectUiSettings](api/project/projectuisettings.md): Game UI settings for the whole project. - [ProjectWindow](api/project/projectwindow.md): Initial game window. - [RenderAo](api/project/renderao.md): Optional contact ambient occlusion on the standard renderer: darkens the scene where surfaces meet (a prop on the ground, a wall's foot, a… - [RenderBloom](api/project/renderbloom.md): Optional bloom on the standard renderer: a soft glow around bright pixels (emissive surfaces, the sun on metal). - [RenderExposureAdaptation](api/project/renderexposureadaptation.md): Partial adaptation of HD's auto exposure: how far a dark scene is brightened. - [RenderLook](api/project/renderlook.md): The scene's colour grade: a look preset and overrides on top of it. - [RenderScreenEffect](api/project/renderscreeneffect.md): One full-screen effect of a scene: a `kind: post` shader and the values for its params and textures. - [SceneInput](api/project/sceneinput.md) - [SceneRender](api/project/scenerender.md) - [TouchBinding](api/project/touchbinding.md): The touch source an action reads: a screen region and what a finger in it does. - [TouchRegion](api/project/touchregion.md): A rectangle of the screen in normalised coordinates (0..1 on each axis, origin top left), so one region fits every resolution and orientati… ## Script API - [ActionBinding](api/script/actionbinding.md): What one action is bound to right now, in the shape `meta.input` writes it. - [ActionState](api/script/actionstate.md): One frame of an action button. - [AfterOptions](api/script/afteroptions.md): Options of {@link TimeInfo.after}. - [AnimationEndEvent](api/script/animationendevent.md): `data` of the event a one-shot raises when it ends: `"animation-end"` unless it names its own. - [Animator](api/script/animator.md): Present on `ctx.animator` when the entity has an animator component. - [AnimatorComponent](api/script/animatorcomponent.md) - [AnimatorError](api/script/animatorerror.md): Thrown at load for an animator that cannot be run. - [AnimatorMachine](api/script/animatormachine.md) - [AnimatorOptions](api/script/animatoroptions.md) - [AnimatorPlayOptions](api/script/animatorplayoptions.md): How a one-shot started by {@link Animator.play} leaves. - [AnimatorProps](api/script/animatorprops.md) - [AnimatorWarpOptions](api/script/animatorwarpoptions.md): What {@link Animator.warp} aims the playing state's root motion at. - [AnimEvent](api/script/animevent.md) - [AnimIk](api/script/animik.md): One two-bone IK chain: a leg or an arm, solved so its end bone sits on a point. - [AnimLayer](api/script/animlayer.md): A second playback over the base animator's, on some of the bones. - [AnimLookAt](api/script/animlookat.md): A head-and-spine aim. - [AnimLookAtLimits](api/script/animlookatlimits.md): How far a look-at may turn a head away from where the clip put it, in degrees. - [AnimOnce](api/script/animonce.md): How a one-shot state leaves: `once` on a state. - [AnimParam](api/script/animparam.md) - [AnimPelvis](api/script/animpelvis.md): Lower the hips so a foot out of reach can still be planted. - [AnimRetarget](api/script/animretarget.md): A map from the canonical humanoid's bone names onto this rig's. - [AnimSpeedParam](api/script/animspeedparam.md): `speedParam` on a state: the rate follows `max(0, parameter × scale)`. - [AnimState](api/script/animstate.md) - [AnimTransition](api/script/animtransition.md) - [AudioBusHandle](api/script/audiobushandle.md): One bus of the mixer graph, by name. - [AudioComponent](api/script/audiocomponent.md) - [AudioDirector](api/script/audiodirector.md) - [AudioDirectorOptions](api/script/audiodirectoroptions.md) - [AudioHandle](api/script/audiohandle.md): Mixer control: the bus graph, its snapshots, the music layers, and one-shot cues. - [AudioMusicHandle](api/script/audiomusichandle.md): The score. - [AudioOptions](api/script/audiooptions.md) - [AudioProps](api/script/audioprops.md) - [AudioRampOptions](api/script/audiorampoptions.md): Options of {@link AudioHandle.setPitch} and {@link AudioHandle.setVolume}. - [Author](api/script/author.md): The one capability an authoring script has. - [AuthorEntitySpec](api/script/authorentityspec.md): A plain entity: {@link AuthorPlacement}, its tags and its components. - [AuthorHandle](api/script/authorhandle.md): What a.entity and a.instance hand back: pass it as another entity's `parent`. - [AuthorImportSettings](api/script/authorimportsettings.md): How a model is brought in: `asset.import`'s settings. - [AuthorInstanceSpec](api/script/authorinstancespec.md): A prefab instance: {@link AuthorPlacement} and its overrides, as `prefab.place` takes them. - [AuthorPlacement](api/script/authorplacement.md): Where an entity goes, relative to its parent. - [AxisParts](api/script/axisparts.md): One axis action this tick, split by the kind of motion that produced it (`ctx.input.axisParts`). - [BannerShow](api/script/bannershow.md): How one showing of a banner goes. - [Batch](api/script/batch.md): The instances an `updateAll` steps: index `k` is one instance, the same `k` in each list. - [Behavior](api/script/behavior.md): What a behavior module exports as `default`. - [BEHAVIOR_CATALOGUE](api/script/behavior-catalogue.md) - [BehaviorEntry](api/script/behaviorentry.md): The behavior catalogue: the modules a scene can name in `script.module`. - [Behaviour](api/script/behaviour.md): The base of a behaviour written as a class. - [Bindings](api/script/bindings.md): This behavior's name → the `ctx.input` action name(s) it reads. - [BlendInfo](api/script/blendinfo.md) - [BlendPoint](api/script/blendpoint.md) - [BlendTree](api/script/blendtree.md) - [BobConfig](api/script/bobconfig.md): The walk bob: a cycle that advances with the distance the target walks, at an amplitude that grows with its speed. - [BobState](api/script/bobstate.md): The bob this tick, for a view-model to apply in its own units. - [BonePose](api/script/bonepose.md): Where a bone is, as {@link Animator.bone} reports it. - [BusCharacterSqueezed](api/script/buscharactersqueezed.md): Payload of the engine-published `"character-squeezed"` event: a moving body is closing on a character ({@link Controller.squeezedBy}) — a d… - [BusCollision](api/script/buscollision.md): Payload of the engine-published `"collision"` bus event. - [BusCue](api/script/buscue.md): Ramp one bus of `meta.audio.buses`. - [BusEventMap](api/script/buseventmap.md): The bus names the engine itself publishes, and what each one's `data` is. - [BusHoldBroken](api/script/busholdbroken.md): Payload of the engine-published `"hold-broken"` event: a hold made with {@link WorldQuery.hold | ctx.world.hold} has ended, for any reason. - [BusTeleported](api/script/busteleported.md): Payload of the engine-published `"teleported"` event: a tool moved an entity outright with `POST /entity/{id}/teleport` — a bench putting t… - [BusTriggerEvent](api/script/bustriggerevent.md): Payload of the engine-published `"trigger"` bus event: {@link TriggerEvent} plus both scene ids. - [BusUiActivated](api/script/busuiactivated.md): Payload of the engine-published `"ui-activated"` event: a node on a screen was activated — a click, a tap, Return or Space on the focused n… - [BusUiFocused](api/script/busuifocused.md): Payload of the engine-published `"ui-focused"` event: focus moved on a screen — the arrow keys or the pad, Tab, a click on a focusable node… - [BusVehicleRecovered](api/script/busvehiclerecovered.md): Payload of the engine-published `"vehicle-recovered"` event: a vehicle with a `recovery` block was flipped, stuck, fell out of the world, d… - [CameraArm](api/script/cameraarm.md): {@link CameraHandle.arm}: what the engine rig's boom is doing this frame. - [CameraBlend](api/script/camerablend.md) - [CameraComponent](api/script/cameracomponent.md) - [CameraDirector](api/script/cameradirector.md) - [CameraDirectorInit](api/script/cameradirectorinit.md) - [CameraHandle](api/script/camerahandle.md): The active camera rig. - [CameraParams](api/script/cameraparams.md): Settings for {@link CameraHandle.set}. - [CameraPickOptions](api/script/camerapickoptions.md): Options for `ctx.camera.pick`: the raycast options, plus the view, a range and a ground plane. - [CameraProps](api/script/cameraprops.md) - [CameraRig](api/script/camerarig.md) - [CameraRigSettings](api/script/camerarigsettings.md) - [CastOptions](api/script/castoptions.md): Options for {@link WorldQuery.raycast} and {@link WorldQuery.shapeCast}. - [Collision](api/script/collision.md): Payload of {@link Behavior.onCollision} and {@link Behavior.onCollisionStay}: one point of the contact, the one that carried the most impul… - [Controller](api/script/controller.md): Present on `ctx.controller` when the entity has a character-controller component (kinematic capsule). - [ControllerComponent](api/script/controllercomponent.md) - [Ctx](api/script/ctx.md): Everything a behavior can reach. - [Cue](api/script/cue.md) - [DataHandle](api/script/datahandle.md): `ctx.data`: values a behaviour publishes for a data recording (`argus run --record-data`) — the signals a test-and-evaluation run or an eng… - [DebugHandle](api/script/debughandle.md): `ctx.debug`: diagnostics a behavior reads for itself, never for gameplay. - [distance](api/script/distance.md): Straight-line distance between two points (three.js `distanceTo`). - [EmitEvent](api/script/emitevent.md): A behavior called `events.emit`. - [EntityHandle](api/script/entityhandle.md): The entity a behavior is attached to, or any entity returned by a query. - [EnvironmentInfo](api/script/environmentinfo.md): The sky the scene is lit by. - [EventBus](api/script/eventbus.md): The global event bus. - [FilesHandle](api/script/fileshandle.md): The project's own data files, read-only: a table of enemy stats, a level list, a drop table as CSV. - [FirstPersonConfig](api/script/firstpersonconfig.md) - [FirstPersonRig](api/script/firstpersonrig.md) - [FixedConfig](api/script/fixedconfig.md) - [FixedRig](api/script/fixedrig.md) - [Follow2DConfig](api/script/follow2dconfig.md) - [Follow2DRig](api/script/follow2drig.md) - [followGround](api/script/followground.md): Keep this entity on the ground: cast from above its own position, put it on what the cast found and return what was decided (`position` in… - [FollowGroundOptions](api/script/followgroundoptions.md) - [FootProp](api/script/footprop.md): One foot: the IK chain it drives, its end bone, and where it sits in the character's own frame. - [FrameAccel](api/script/frameaccel.md): The carrier's acceleration along its own axes, m/s²: forward (its -Z), right (+X), up (+Y). - [FrameParams](api/script/frameparams.md): {@link ViewsHandle.frame}'s options. - [GameEvent](api/script/gameevent.md): A game event as delivered to `onEvent` and to `events.on` handlers. - [GoalComponent](api/script/goalcomponent.md) - [GoalSpec](api/script/goalspec.md) - [GroundFollow](api/script/groundfollow.md): What one tick of ground-following decided. - [GroundingProps](api/script/groundingprops.md) - [GroundingState](api/script/groundingstate.md) - [Hit](api/script/hit.md): Result of a raycast or shape cast. - [HoldOptions](api/script/holdoptions.md): Options for {@link WorldQuery.hold}. - [HudComponent](api/script/hudcomponent.md) - [HudController](api/script/hudcontroller.md) - [HudFieldOptions](api/script/hudfieldoptions.md): How one stock-HUD field reads (`ctx.hud.set(field, value, options)`). - [HudHandle](api/script/hudhandle.md): HUD overlay. - [HudOptions](api/script/hudoptions.md) - [HudProps](api/script/hudprops.md) - [InputActionDoc](api/script/inputactiondoc.md): One action's bindings, as `meta.input.contexts..` spells them. - [InputConfig](api/script/inputconfig.md) - [InputMap](api/script/inputmap.md): A logical action map over `ctx.input`; rebinding is a data edit, not a code edit. - [InputMapInit](api/script/inputmapinit.md) - [InputPointer](api/script/inputpointer.md): `ctx.input.pointer`: the mouse in one view's cell. - [InputState](api/script/inputstate.md): Present on `ctx.input` only for the player entity. - [InstanceInput](api/script/instanceinput.md): An instance to add, or the fields to change in {@link Instances.update}. - [InstanceRecord](api/script/instancerecord.md): One instance of an instanced mesh, as {@link Instances.get} returns it. - [Instances](api/script/instances.md): The instances of an `instancedMesh` entity: what `ctx.world.instances(entity)` returns. - [InstanceStore](api/script/instancestore.md) - [IntegerLens](api/script/integerlens.md): The box a {@link PixelScaleConfig} asks for in a view `pixelHeight` tall (the reference view's 1080). - [JOIN_STRINGS](api/script/join-strings.md): The default text. - [JoinScreen](api/script/joinscreen.md): The join screen's controller: owns the readiness, choices and start of one lobby over `ctx.players`. - [JoinScreenOptions](api/script/joinscreenoptions.md): The join screen's settings: the `join-screen` behavior's props. - [JoinSlotProps](api/script/joinslotprops.md): The `join-slot` behavior's props. - [JoinStart](api/script/joinstart.md): What `join-start` carries. - [Joint](api/script/joint.md): Present on `ctx.joint` while the entity's `joint` component is in force: a hinge, a slide or a weld from this entity's body to another's or… - [JointMotorOptions](api/script/jointmotoroptions.md): {@link Joint.setMotor}'s options. - [JointMotorState](api/script/jointmotorstate.md): {@link Joint.motor}, as it stands. - [LabelComponent](api/script/labelcomponent.md) - [LabelDirector](api/script/labeldirector.md) - [LabelDirectorOptions](api/script/labeldirectoroptions.md) - [LabelProps](api/script/labelprops.md) - [LabelsHandle](api/script/labelshandle.md): World-space text labels. - [ListenOptions](api/script/listenoptions.md): Options of {@link EventBus.on} and {@link EventBus.once}. - [LocalPlayer](api/script/localplayer.md): One local player, as `ctx.players.list()` reports them. - [LocomotionProps](api/script/locomotionprops.md) - [LocomotionState](api/script/locomotionstate.md) - [MinimapBounds](api/script/minimapbounds.md): The world area a minimap image shows, on the ground plane (x and z, metres). - [MinimapOptions](api/script/minimapoptions.md): The minimap controller's settings. - [MinimapRun](api/script/minimaprun.md): The marker mover `minimap` hands back. - [MusicCue](api/script/musiccue.md): Change music layer at the next bar line. - [MusicOptions](api/script/musicoptions.md) - [NavAgent](api/script/navagent.md): Present on `ctx.nav` when the entity has a nav-agent component. - [OrbitConfig](api/script/orbitconfig.md) - [OrbitRig](api/script/orbitrig.md) - [OrbitShotSpec](api/script/orbitshotspec.md): What {@link orbitShot} builds a shot from. - [PARTICLE_PARAMS](api/script/particle-params.md): The preset table. - [ParticleDirector](api/script/particledirector.md) - [ParticleParams](api/script/particleparams.md) - [ParticlesComponent](api/script/particlescomponent.md) - [ParticlesHandle](api/script/particleshandle.md) - [ParticlesProps](api/script/particlesprops.md) - [PathProps](api/script/pathprops.md) - [PathState](api/script/pathstate.md) - [Pedals](api/script/pedals.md): Throttle and brake, 0..1, as `ctx.vehicle.drive` takes them. - [PickHit](api/script/pickhit.md): What `ctx.camera.pick` answers: a {@link Hit}, whose `entity` is `null` for the ground-plane fallback. - [PickOptions](api/script/pickoptions.md): Options for {@link WorldQuery.pick}. - [PixelScaleConfig](api/script/pixelscaleconfig.md): A whole-number pixel scale: see {@link Follow2DConfig.pixelScale}. - [PlayerProps](api/script/playerprops.md) - [PlayersHandle](api/script/playershandle.md): The local players on the couch (`meta.players`) and the entity each drives. - [PlayerState](api/script/playerstate.md) - [Quat](api/script/quat.md): Quaternion `x, y, z, w`. - [QueryFilter](api/script/queryfilter.md): Filter for {@link WorldQuery.query}; every given field must match. - [RaceBannerRun](api/script/racebannerrun.md): The banner controller `banner` hands back. - [Ray](api/script/ray.md): A world ray: `dir` is unit length. - [Rect2](api/script/rect2.md): An axis-aligned rectangle in the XY plane, world units. - [ReleaseOptions](api/script/releaseoptions.md): Options for {@link WorldQuery.release}. - [RenderHandle](api/script/renderhandle.md): Data-only writes to the parameters of shaders (`*.shader.wgsl`, docs/SHADERS.md). - [RigidBody](api/script/rigidbody.md): Present on `ctx.body` when the entity has a physics body — a `rigidbody` component, or a `collider`, which makes a static one. - [RigInput](api/script/riginput.md): The per-tick input a rig consumes. - [RoadBarrier](api/script/roadbarrier.md): A road's wall as its file asked for it: `RoadLine.barrier`. - [RoadClosest](api/script/roadclosest.md): Where a position is relative to a road's centre line: what {@link RoadLine.closest} returns. - [RoadDriverProps](api/script/roaddriverprops.md): The built-in `road-driver` behaviour's props: which road it follows and how it takes it. - [RoadDriverState](api/script/roaddriverstate.md): What the `road-driver` behaviour keeps in `ctx.state` between ticks (read it, do not set it). - [RoadEdge](api/script/roadedge.md): The road's edges at one distance: what {@link RoadLine.edge} returns. - [RoadLine](api/script/roadline.md): A road's centre line, from `ctx.world.road(id)`. - [RoadPose](api/script/roadpose.md): A road entity's pose in the world: what its samples are relative to. - [RoadProgress](api/script/roadprogress.md): One entity's progress along a road, from {@link RoadLine.progress}. - [RoadSample](api/script/roadsample.md): One point on a road's centre line: what {@link RoadLine.at} returns. - [RoadStanding](api/script/roadstanding.md): One row of {@link RoadLine.standings}. - [Roll](api/script/roll.md) - [rollFromMotion](api/script/rollfrommotion.md): The spin a sphere of `radius` needs to roll along `displacement` without slipping. - [rollRotation](api/script/rollrotation.md): `rotation` after rolling along `displacement`: {@link rollFromMotion}'s `delta` applied in the world frame, renormalised. - [RouletteFrame](api/script/rouletteframe.md): What an item roulette shows at one moment: `rouletteItem`'s answer. - [RouletteOptions](api/script/rouletteoptions.md): How long a spin lasts and how fast it starts. - [SaveHandle](api/script/savehandle.md): A small JSON store that outlives the run: a best score, an unlocked level, a chosen setting. - [SceneInputDoc](api/script/sceneinputdoc.md): A whole `meta.input` document. - [Script API (small pages)](api/script/index.md): 210 short entries in one file. - [ScriptErrorEvent](api/script/scripterrorevent.md): A behavior threw, blew its budget, or was interrupted; it is disabled from `frame` on — unless `disabled` is false (a stale handle in a per… - [SessionHandle](api/script/sessionhandle.md): The run itself, rather than anything in the world. - [SharedParams](api/script/sharedparams.md): {@link ViewsHandle.shared}'s options: the framing camera's, and when to split. - [SharedSplit](api/script/sharedsplit.md): {@link ViewsHandle.shared}'s `split` options: when the shared camera splits into one view per target, and when it merges back. - [Shot](api/script/shot.md): One shot: its keys, how long it lasts, and how it begins. - [ShotKey](api/script/shotkey.md): One keyframe of a shot. - [ShotList](api/script/shotlist.md): A shot list, sampled by time. - [ShotListOptions](api/script/shotlistoptions.md) - [ShotSample](api/script/shotsample.md): What a shot list says the camera is doing at one time. - [ShotsProps](api/script/shotsprops.md) - [ShotsState](api/script/shotsstate.md) - [SlotView](api/script/slotview.md): One slot as the screen shows it. - [SnapshotCue](api/script/snapshotcue.md): Cross-fade every bus to a named `meta.audio.snapshots` entry. - [SpawnLikeOptions](api/script/spawnlikeoptions.md): {@link SpawnOptions} that copy a live entity. - [SpawnPlacement](api/script/spawnplacement.md): What both forms of {@link SpawnOptions} take. - [SpawnPrefabOptions](api/script/spawnprefaboptions.md): {@link SpawnOptions} that spawn a copy of a prefab file (docs/SPEC.md, "Prefabs"). - [Sprite](api/script/sprite.md): Present on `ctx.sprite` when the entity has a `sprite` component: a 2D picture in the world that turns to the camera, shows the view of its… - [SpriteAnimationEndEvent](api/script/spriteanimationendevent.md): `data` of the event a non-looping sprite animation raises when it ends. - [SpritePlayOptions](api/script/spriteplayoptions.md): How an animation started by {@link Sprite.play} ends. - [StartCountdownOptions](api/script/startcountdownoptions.md): The start countdown's settings. - [StartCountdownRun](api/script/startcountdownrun.md): The 3-2-1-GO! - [stepWedge](api/script/stepwedge.md): One tick of noticing a wedge, given the metres `progress` it made along the road this tick (in the way it drives; `NaN` when it is not on a… - [Strings](api/script/strings.md): A read-only string table. - [StringsHandle](api/script/stringshandle.md) - [StringTable](api/script/stringtable.md) - [StringTableOptions](api/script/stringtableoptions.md) - [SwayChannel](api/script/swaychannel.md): One spring-damped channel: where it is and how fast it moves. - [SwayKick](api/script/swaykick.md): A shove to the springs: how fast each channel is set moving, on top of whatever it was doing. - [SwayKickProps](api/script/swaykickprops.md): One entry of {@link SwayProps.kicks}: the shove, and what in the event steers and scales it. - [SwayPose](api/script/swaypose.md): The three channels: radians of pitch (nose up positive), radians of roll, metres of bob (up positive). - [SwayProps](api/script/swayprops.md): The `sway` behavior's props: any {@link SwayTuning} field, plus where it tips and what counts as a teleport. - [SwayState](api/script/swaystate.md): What the `sway` behavior keeps in `ctx.state` (it survives a hot reload, so the rest pose is never re-read from a swayed body). - [SwayTuning](api/script/swaytuning.md): How a body sways: a gain and a limit per channel, and the spring they share. - [ThirdPersonConfig](api/script/thirdpersonconfig.md) - [ThirdPersonRig](api/script/thirdpersonrig.md) - [Tilemap](api/script/tilemap.md): Present on `ctx.tilemap` when the entity has a `tilemap` component: a grid of tiles in the entity's XY plane. - [TimeInfo](api/script/timeinfo.md): Simulation clock. - [TouchBindingDoc](api/script/touchbindingdoc.md): A touch source: a screen region (normalised 0..1, origin top left) and what a finger in it does. - [TransitionOptions](api/script/transitionoptions.md) - [TriggerEvent](api/script/triggerevent.md): Payload of {@link Behavior.onTrigger}. - [UiHandle](api/script/uihandle.md): `ctx.ui` — the game UI's screen stack (`docs/PLAN-UI.md` §3). - [UiNode](api/script/uinode.md): One node of a screen description. - [UiProp](api/script/uiprop.md): What `ctx.ui.set` can write. - [UiScreenDescription](api/script/uiscreendescription.md): A whole screen, as `ctx.ui.screen` takes it. - [UiScreenOptions](api/script/uiscreenoptions.md): Screen-level options, carried in the root node's `props`. - [Vec3](api/script/vec3.md): `x, y, z` in metres, Y up, right-handed, forward is -Z. - [Vehicle](api/script/vehicle.md): Present on `ctx.vehicle` while the entity is a running vehicle: a `vehicle` component on a dynamic body with a collider. - [VehicleDrive](api/script/vehicledrive.md): {@link Vehicle.drive}: what a behaviour asks of a vehicle; every field 0 when left out. - [VehicleLanding](api/script/vehiclelanding.md): {@link Vehicle.landing}: the last touchdown. - [VehicleWater](api/script/vehiclewater.md): {@link Vehicle.water}: a watercraft's or an amphibious vehicle's water handling, as of the last tick. - [ViewModel](api/script/viewmodel.md) - [ViewModelConfig](api/script/viewmodelconfig.md) - [ViewModelFrame](api/script/viewmodelframe.md): One frame: an image of the project and where its pivot is. - [ViewRect](api/script/viewrect.md): A view's rectangle, fractions of the window from its top-left corner. - [ViewsHandle](api/script/viewshandle.md): `ctx.views`: split screen for local multiplayer. - [ViewSize](api/script/viewsize.md): `ctx.camera.viewSize`: the box an orthographic lens frames in the reference view, world units and pixels. - [ViewsMergedEvent](api/script/viewsmergedevent.md): `views-merged`'s `data`: the shared camera went back to one view. - [ViewsSplitEvent](api/script/viewssplitevent.md): `views-split`'s `data`: the shared camera ({@link ViewsHandle.shared}) split the window. - [WaterHandle](api/script/waterhandle.md): The scene's water, read-only: the sea, its lakes and rivers, exactly as the engine floats `buoyancy` bodies on them, at `ctx.time.now`. - [WaterSample](api/script/watersample.md): The water at one point, as {@link WaterHandle.sample} reads it. - [WedgeOptions](api/script/wedgeoptions.md): How {@link stepWedge} judges a wedge; every field has a default. - [WedgeState](api/script/wedgestate.md): {@link stepWedge}'s memory: keep it in `ctx.state`. - [WedgeStep](api/script/wedgestep.md): What {@link stepWedge} says to do this tick. - [Wheel](api/script/wheel.md): Present on `ctx.wheel` while the entity is a running wheel: a `wheel` component on an entity with a dynamic body above it in the hierarchy. - [WheelContact](api/script/wheelcontact.md): {@link Wheel.contact}: where the tyre touches the ground. - [WindHandle](api/script/windhandle.md): The scene's wind (`meta.environment.air.wind`), read-only, at `ctx.time.now`: the air the dry probes of `buoyancy` bodies are dragged again… - [WorldQuery](api/script/worldquery.md): Read access to every entity plus the physics and navigation queries. - [WritableComponents](api/script/writablecomponents.md): The component types {@link EntityHandle.set} can write, and the fields each one takes. ## Query API - [GET /contacts](api/query/get-contacts.md) - [GET /entities](api/query/get-entities.md): Still a bare array however it is narrowed; how many matched and where the next page starts are the `x-argus-total` and `x-argus-next-cursor… - [GET /entity/{id}](api/query/get-entity-id.md) - [GET /environment](api/query/get-environment.md): The sky as it resolved, for an agent that wants to know what it is looking at before it decides whether to change it. - [GET /events](api/query/get-events.md) - [GET /feel](api/query/get-feel.md): What an agent that cannot look or listen needs to judge how the game feels: animator state and pose, whether the camera's near plane is ins… - [GET /frame.png](api/query/get-frame-png.md): The cached frame, or `?fresh=1` for one rendered now. - [GET /input](api/query/get-input.md): Where a press goes. - [GET /navmesh](api/query/get-navmesh.md): `GET /navmesh` — `?bounds=` and `?limit=` window it; see `crate::types::NavMeshQuery`. - [GET /perf](api/query/get-perf.md) - [GET /snapshot](api/query/get-snapshot.md) - [GET /state](api/query/get-state.md): The committed state this server is serving, and what it will take on. - [GET /trace](api/query/get-trace.md): The body is the frozen `Vec`. - [GET /ui](api/query/get-ui.md): An exact read, like `GET /entities`: it takes `?at=` and reports the state it answered at, so an agent that pressed something, waited for t… - [GET /ui/schema](api/query/get-ui-schema.md): The machine-readable support table (§3). - [GET /ui/stats](api/query/get-ui-stats.md): The UI's cost on the last frame (time, draw calls, quads, texts) and, per screen, layout passes and what last dirtied layout. - [POST /capture](api/query/post-capture.md) - [POST /entity/{id}/teleport](api/query/post-entity-id-teleport.md): Move one entity outright: the same path as a behaviour's `ctx.entity.teleport`, answered after the move is published. - [POST /environment](api/query/post-environment.md): A partial sky merged onto the live one. - [POST /input](api/query/post-input.md) - [POST /path](api/query/post-path.md) - [POST /raycast](api/query/post-raycast.md): One ray `{ from, dir, … }`, or several under `{ "rays": ... - [POST /scene](api/query/post-scene.md): Switch the running world to another scene of the project. - [POST /snapshot](api/query/post-snapshot.md): Put the world back into a previously captured state. - [POST /step](api/query/post-step.md): : inputs, ticks and an entity read in one call. - [POST /time](api/query/post-time.md) - [Query API (small pages)](api/query/index.md): 28 short entries in one file. ## Command line - [argus](api/cli/argus.md): An engine built from the agent's side - [argus validate](api/cli/argus-validate.md): Validate a scene against the contract and report every violation - [argus-hub](api/cli/argus-hub.md): The Talos Launcher: installs, updates and opens Talos engines ## Agent tools - [editor.hover](api/tools/editor-hover.md): Put the pointer on a control and leave it there for several frames, which is what opens a submenu. - [explain.rule](api/tools/explain-rule.md): What a code a refusal or a finding gave you means: its severity, what triggers it, where it points, and whether a check offers a fix patch. - [play.measure](api/tools/play-measure.md): Step Play tick by tick with actions held over chosen ticks, reading entity fields after each: per field first, final, min and max with the… - [project.create](api/tools/project-create.md): Make a project from a template and take it as this session's: argus.project.json and scenes/main.scene.json only, no editor or service. - [scene.read](api/tools/scene-read.md): editor or disk The scene as canonical JSON (argus://contract/scene): the editor's document (unsaved edits too), else the file. - [ui.schema](api/tools/ui-schema.md): editor or disk Every style property, unit, selector, pseudo-class, role, design token, binding and refusal code this engine's UI supports,… ## Agent toolsets - [Agent toolsets (small pages)](api/toolsets/index.md): 3 short entries in one file. ## Rule codes - [air-out-of-range](api/rules/air-out-of-range.md): `meta.environment.air` with a value outside its range: `density` outside 0..10 kg/m3, `wind.speedMps` outside 0..100, `wind.gustMps` outsid… - [animator-blend-coverage](api/rules/animator-blend-coverage.md): A blend tree's points do not cover its parameter space: two at one coordinate, or a plane's worth all on one line. - [animator-blend-degenerate](api/rules/animator-blend-degenerate.md): A blend tree has too few points for its kind: fewer than two on a line, fewer than three on a plane. - [animator-blend-parameters](api/rules/animator-blend-parameters.md): A blend tree reads the wrong number of parameters, one the animator does not declare, the same one twice, or gives a point the wrong number… - [animator-damp-invalid](api/rules/animator-damp-invalid.md): An animator parameter's `damp` is negative (a smoothing time cannot be); a non-finite one is `animator-not-finite`. - [animator-event-data-invalid](api/rules/animator-event-data-invalid.md): An animation event's `data` has too many keys or is too large. - [animator-event-invalid](api/rules/animator-event-invalid.md): An animation event sits outside its clip (`at` not in 0..1), or names no clip or no event. - [animator-event-window-invalid](api/rules/animator-event-window-invalid.md): An animation event's `until` / `untilFrame` is not a window: not above its start, past the end of the clip, or in other units than `at` / `… - [animator-feet-invalid](api/rules/animator-feet-invalid.md): An `animator.feet` names fewer than two or more than four joints, an empty name, or one name twice. - [animator-ik-invalid](api/rules/animator-ik-invalid.md): An IK chain has a duplicate name, a bone listed twice, both kinds of pole, a pole bone from its own chain, a weight outside 0..1, or an emp… - [animator-initial-undefined](api/rules/animator-initial-undefined.md): `animator.initial` is not one of the animator's state names. - [animator-invalid](api/rules/animator-invalid.md): Animator states, transitions, blend trees, events and clips resolve - [animator-layer-invalid](api/rules/animator-layer-invalid.md): An animator layer that cannot be built: an empty or repeated name, a weight outside 0..1, a negative or non-finite `blendIn` or `blendOut`,… - [animator-look-at-invalid](api/rules/animator-look-at-invalid.md): A look-at has no bones, a bone listed twice, an empty bone name, a limit outside 0..180 degrees, a weight outside 0..1, or a negative smoot… - [animator-loop-range-invalid](api/rules/animator-loop-range-invalid.md): An animator state's or blend point's `loopStart`/`loopEnd` is outside 0..1, or `loopStart` is not below `loopEnd`, or the range is on a sta… - [animator-not-finite](api/rules/animator-not-finite.md): A blend point, a parameter value, an animation event position or a transition blend time is NaN or infinite. - [animator-once-invalid](api/rules/animator-once-invalid.md): A one-shot state (`once`) loops, hands over to a state that does not exist or to itself, lets an undefined state interrupt it, has a negati… - [animator-rest-pose-straight](api/rules/animator-rest-pose-straight.md): A rig with foot IK rests with its legs bent enough to plant a foot downhill - [animator-retarget-duplicate](api/rules/animator-retarget-duplicate.md): Two of a retarget map's keys name the same bone of the target rig, so one of the two limbs loses its animation to the other. - [animator-retarget-unmapped](api/rules/animator-retarget-unmapped.md): A retarget map leaves a bone the built-in clips animate unmapped, names a bone the profile does not have, or maps one to an empty name. - [animator-root-motion-source](api/rules/animator-root-motion-source.md): A state with `rootMotion` reads a parameter bound to a measured-velocity source, which is a closed loop. - [animator-speed-invalid](api/rules/animator-speed-invalid.md): An animator state's or blend point's `speed`, or a `speedParam.scale`, is negative, NaN or infinite, or a `speedParam` names a parameter th… - [animator-state-duplicate](api/rules/animator-state-duplicate.md): Two of an animator's states share a name, so `initial` and every transition are ambiguous. - [animator-state-source](api/rules/animator-state-source.md): An animator state has both a `clip` and a `blend`, or neither. - [animator-transition-undefined](api/rules/animator-transition-undefined.md): An animator transition targets a state that does not exist. - [asset-builtin-unknown](api/rules/asset-builtin-unknown.md): An `assets*.path` of `builtin:` names nothing built in: a `glb` asset whose name is not one of the built-in meshes (cube, sphere, cap… - [asset-forward-invalid](api/rules/asset-forward-invalid.md): An `assets*.forward` sits on an asset that is not a model, so there is no nose to turn. - [asset-import-invalid](api/rules/asset-import-invalid.md): An `assets*.import` declares a scale or an axis pair that cannot be applied. - [asset-path-not-relative](api/rules/asset-path-not-relative.md): An `assets*.path` is absolute, names a drive, or climbs out with `..`. - [attach-owner-missing](api/rules/attach-owner-missing.md): An `attach.to` that names no entity of the scene, or the attached entity itself. - [attach-owner-no-animator](api/rules/attach-owner-no-animator.md): An `attach.to` that names an entity with no `animator` component, so there is no skeleton to follow. - [audio-bus-unknown](api/rules/audio-bus-unknown.md): Every bus meta.audio names is a bus meta.audio declares - [audio-missing-file](api/rules/audio-missing-file.md): Every sound the scene names is an audio asset that exists - [audio-orphan](api/rules/audio-orphan.md): Spatial audio sits on something with a position you can see - [behavior-position-ignores-teleport](api/rules/behavior-position-ignores-teleport.md): A behaviour that writes a position every tick from its own state adopts a teleport - [behavior-wrap-drops-event](api/rules/behavior-wrap-drops-event.md): A behaviour that runs another's init or update forwards its onEvent too - [buoyancy-without-body](api/rules/buoyancy-without-body.md): A `buoyancy` component on an entity that has no `rigidbody` of kind `dynamic`: forces only move a dynamic body. - [buoyancy-without-ocean](api/rules/buoyancy-without-ocean.md): A `buoyancy` component in a scene with no `meta.environment.ocean` and no `water` component: there is no water to float on. - [camera-clip](api/rules/camera-clip.md): The camera's default position is not inside or behind geometry - [camera-hides-everything](api/rules/camera-hides-everything.md): A camera's `layers` / `hideLayers` leaves out every layer the scene's meshes and sprites are on, so it draws nothing. - [camera-layers-invalid](api/rules/camera-layers-invalid.md): A camera sets both `layers` and `hideLayers`, or one of them is an empty list. - [camera-point-invalid](api/rules/camera-point-invalid.md): `GET /camera/project` or `GET /camera/ray` was given a missing or non-finite `x`, `y` or `z`, an unknown `entity`, or `entity` together wit… - [camera-priority-tie](api/rules/camera-priority-tie.md): Two or more screen cameras share the top priority and none of them is `primary`, so scene order picks the view. - [camera-projection-invalid](api/rules/camera-projection-invalid.md): A `camera`'s `orthoSize` or `pixelsPerUnit` that is not a finite number above zero: an orthographic view has no size to draw at. - [camera-rig-invalid](api/rules/camera-rig-invalid.md): A camera's `rig`, `output` or `blendIn` cannot work: a following rig with no `target`, `viewport` without `output: "viewport"` or the rever… - [camera-view-unknown](api/rules/camera-view-unknown.md): `GET /camera/project` or `GET /camera/ray` named a `view` the running world does not have: not a number, 0, or beyond the split-screen layo… - [character-unanimated](api/rules/character-unanimated.md): A skinned character with a controller has an animator whose states follow movement - [collider-detail-ignored](api/rules/collider-detail-ignored.md): A `collider.detail` sits where nothing reads it: on a box, sphere or capsule, or on a trimesh whose entity is not a dynamic body (static an… - [collider-material-invalid](api/rules/collider-material-invalid.md): A `collider.material` has a negative friction, a restitution outside 0..1, or a slope limit outside 0..90 degrees. - [controller-invalid](api/rules/controller-invalid.md): A `controller.gravity` is negative, a `controller.maxFallSpeed` is 0 or less, or a `controller.step` is not more than 0 and under 1.8 m (th… - [dangling-asset](api/rules/dangling-asset.md): An asset reference names a key that is not in `scene.assets`. - [dangling-parent](api/rules/dangling-parent.md): `entity.parent` names an entity that is not in the scene. - [dangling-ref](api/rules/dangling-ref.md): Asset, script, parent and target references resolve - [dangling-target](api/rules/dangling-target.md): `camera.target` names an entity that is not in the scene. - [duplicate-entity-id](api/rules/duplicate-entity-id.md): Two entities share an id. - [dynamic-needs-collider](api/rules/dynamic-needs-collider.md): A `rigidbody` of kind `dynamic` has no non-trigger collider. - [face-invalid](api/rules/face-invalid.md): A `face` that is wrong whatever the model is: no `animator` on the same entity; `blink` (0..60), `gaze` (0..25), `expression` or `headMotio… - [feel/action-out-of-reach](api/rules/feel-action-out-of-reach.md): an action's hit volume (an attached trigger collider) never came within 0.25 m of the nearest thing it could hit while its strike window wa… - [feel/action-window-unreachable](api/rules/feel-action-window-unreachable.md): an action's cancel window (cancel, combo, chain) opens after the animator's state has already handed back, so the chain it was built for ca… - [feel/anim-backwards](api/rules/feel-anim-backwards.md): the character walks backwards: its planted foot is carried the body's way at about twice its speed, so the model faces away from where it g… - [feel/anim-bind-pose](api/rules/feel-anim-bind-pose.md): a skinned character stood in its bind (T-)pose: no clip reached the skeleton while the probe drove it (an error for the player and what mov… - [feel/anim-foot-slide](api/rules/feel-anim-foot-slide.md): the planted foot slid over the ground: the locomotion clip's pace does not match the ground speed (a warning past 50% of the body's speed,… - [feel/anim-frozen](api/rules/feel-anim-frozen.md): an animator's clip did not advance: the playhead and pose stayed still while the state said it was playing (an error for the player and wha… - [feel/anim-loop-seam](api/rules/feel-anim-loop-seam.md): a looping state plays a clip whose last frame does not meet its first (or one clip of a clips state that does not meet the next), so the po… - [feel/anim-no-air-state](api/rules/feel-anim-no-air-state.md): the character left the ground and the animator kept its grounded state: no jump or fall pose - [feel/anim-no-handle](api/rules/feel-anim-no-handle.md): a behavior read ctx.animator and got null (the engine's null-handle warning): the entity has no running animator, so every animation call i… - [feel/anim-pop](api/rules/feel-anim-pop.md): a joint turned far more in one tick than on the ticks either side while the probes drove the character: a pose that jumps (an error for the… - [feel/anim-run-in-place](api/rules/feel-anim-run-in-place.md): a walk or run clip played while the body stood still (not reported for an animator the stick does not drive whose rig plays one clip) - [feel/anim-slow-response](api/rules/feel-anim-slow-response.md): the player's animator answered a press (move or jump) more than 6 ticks late: the state or its blend parameter changed after the body did,… - [feel/anim-stuck](api/rules/feel-anim-stuck.md): the body moved but the animator stayed in the state and clip it had while standing, so the character glides (an error for the player and wh… - [feel/anim-unknown-name](api/rules/feel-anim-unknown-name.md): ctx.animator.set or play named a state or clip this animator does not have; set changes nothing, so the character never enters it - [feel/audio-jump-silent](api/rules/feel-audio-jump-silent.md): the jump made no sound, though the game plays sounds elsewhere - [feel/audio-loops-stacked](api/rules/feel-audio-loops-stacked.md): three or more copies of one loop played at once with none placed in the world: they add up to one louder sound that masks the mix (usually… - [feel/audio-none](api/rules/feel-audio-none.md): the scene has gameplay events (a jump, goals, triggers, emitted events) and no audio anywhere: no audio asset, component, meta.audio sound… - [feel/audio-silent](api/rules/feel-audio-silent.md): not one voice started: the player jumped or reached goals, or 30 s went by, in silence - [feel/audio-unplayable](api/rules/feel-audio-unplayable.md): the game called ctx.audio.play for assets with no sound behind them, so nothing played - [feel/buried](api/rules/feel-buried.md): a body a script or kinematic body moves went more than 0.15 m into the ground under it for 3 reads running (an error), or its height jumped… - [feel/camera-clip](api/rules/feel-camera-clip.md): the camera's near plane was inside a collider: the frame showed the inside of a wall - [feel/camera-close](api/rules/feel-camera-close.md): the camera sat within 0.3 m of solid geometry in more than 15% of samples: most of the frame is a surface up against the lens - [feel/camera-collapsed](api/rules/feel-camera-collapsed.md): the camera's arm (or its distance to the player) was under 1 m in more than 5% of samples, so the view is the back of the character's head - [feel/camera-occluded](api/rules/feel-camera-occluded.md): something solid hid the player from the camera for longer than a second - [feel/camera-target-hidden](api/rules/feel-camera-target-hidden.md): the focus target (the lock target, else the nearest opponent, else the next goal) was behind the player's own body from the camera in a qua… - [feel/camera-wall-collapse](api/rules/feel-camera-wall-collapse.md): walked into a wall, the camera's arm pulled in under 1 m though the space behind the character along the arm was open: the view went into t… - [feel/controls-dead](api/rules/feel-controls-dead.md): no stick direction moved the player (after the probe held input for the wait cap, 12 s of simulated time by default) - [feel/controls-rotated](api/rules/feel-controls-rotated.md): a stick direction moved the player the wrong way on screen: over 30° off by half a second, or over 45° off after 3 s held while the camera… - [feel/facing-actions-silent](api/rules/feel-facing-actions-silent.md): the aimed buttons (fire, use, interact) raised no event once a teleport faced the player at something the game runs, though the same presse… - [feel/impact-no-reaction](api/rules/feel-impact-no-reaction.md): the victim of an impact did not react within 300 ms: it moved under 5 cm, kept its animation state, did not stop and was not removed - [feel/impact-silent](api/rules/feel-impact-silent.md): an impact (the player's sensor on something, another character's sensor on the player, or a hit, damage, impact or hurt event) gave no feed… - [feel/look-capped](api/rules/feel-look-capped.md): mouse look has a top speed: a fast synthetic mouse sweep turned the view fewer degrees per pixel than a slow one (under 60%), so a flick tu… - [feel/movement-facing-off](api/rules/feel-movement-facing-off.md): at steady speed the character faced over 60 degrees off the way it travelled: it moves sideways or backwards - [feel/movement-slippery](api/rules/feel-movement-slippery.md): the walker took over 1.5 s to stop after the stick was let go: it slides - [feel/movement-sluggish](api/rules/feel-movement-sluggish.md): the walker took over 1.5 s to reach 90% of its top speed with the stick held: it feels heavy - [feel/movement-steer-dead](api/rules/feel-movement-steer-dead.md): a full steer at 90% of top speed turned the vehicle under 3 deg/s: the steering does nothing - [feel/movement-turn-slow](api/rules/feel-movement-turn-slow.md): the character turned under 60 deg/s to a 90 degree stick flick at speed: it does not follow the stick - [feel/player-died-in-probe](api/rules/feel-player-died-in-probe.md): the player died or respawned during a probe, so later rows are unmeasured - [feel/player-fell-off](api/rules/feel-player-fell-off.md): the player walked off the level and fell (nothing under it), so the camera lost it - [feel/response-dead](api/rules/feel-response-dead.md): pressing a gameplay action changed nothing in half a second: no bus event, animator state, pose, velocity or camera answered it (interact a… - [feel/response-slow](api/rules/feel-response-slow.md): a gameplay action's press was answered (animator state, pose, velocity or camera) later than the budget (100 ms by default; a profile refin… - [feel/roll-mismatch](api/rules/feel-roll-mismatch.md): a ball moving along the ground spun against its travel (backwards, about the wrong axis, or under 30% of the rolling rate) in over half the… - [feel/skipped](api/rules/feel-skipped.md): a feel probe could not run on this scene and says why - [feel/telegraph-unreactable](api/rules/feel-telegraph-unreactable.md): another character's strike opened less than 250 ms (a person's reaction time) after its wind-up began - [feel/teleport-facing-ignored](api/rules/feel-teleport-facing-ignored.md): a tool's teleport with a heading faced the player at something, and a few ticks later the view still faced another way: a behaviour writes… - [feel/viewmodel-static](api/rules/feel-viewmodel-static.md): the first-person view-model (an image in the lower middle of the screen) stood still while the player walked a metre or more: nothing bobs… - [floor-gap](api/rules/floor-gap.md): No holes in the floor under the walkable areas or around a spawn - [fog-density-and-visibility](api/rules/fog-density-and-visibility.md): `meta.environment.fog` writes both `density` and `visibilityM`, two spellings of the same extinction (density = 3 / visibilityM); write one. - [fog-value-range](api/rules/fog-value-range.md): A `meta.environment.fog` value is outside its range (density 0..1, heightFalloff 0.001..10, start 0 or more, end past start, maxOpacity 0..… - [gi-intensity-range](api/rules/gi-intensity-range.md): An `indirectIntensity` (`meta.environment.gi`, a light, or a `giVolume`) that is not a finite number within 0..16. - [gi-volume-limit](api/rules/gi-volume-limit.md): More than 8 `giVolume` components of one mode; only the first 8 in scene order count. - [gi-volume-shape](api/rules/gi-volume-shape.md): A `giVolume` that cannot be built: a `size` axis of 0 or less or not finite, a `blend` below 0 or not finite, or in region mode a `blend` o… - [goal-order](api/rules/goal-order.md): Goals carrying `order` do not form the strict sequence 1..n. - [ground-cover-layer-invalid](api/rules/ground-cover-layer-invalid.md): A ground cover layer or document with a value out of range: an empty id, a duplicate id, a range with min above max, a colour channel outsi… - [ground-cover-no-terrain](api/rules/ground-cover-no-terrain.md): A scene with ground cover and no terrain to grow it on. - [ground-cover-source-unknown](api/rules/ground-cover-source-unknown.md): A ground cover layer whose `source.channel` is not a channel of the terrain. - [ground-cover-too-dense](api/rules/ground-cover-too-dense.md): A ground cover layer whose `densityPerM2` is above 200. - [hd-only-ignored](api/rules/hd-only-ignored.md): A field or component only the HD renderer draws (a `splat` component) on a project whose `render.profile` is not `hd`: the scene draws with… - [hud-layout-invalid](api/rules/hud-layout-invalid.md): A `meta.hud` element declares a size, colour, offset or number format that cannot be drawn. - [input-conflict](api/rules/input-conflict.md): No two actions in one context share a device source - [input-key-unknown](api/rules/input-key-unknown.md): A `meta.input` key name the runtime binds nothing to ("Back", "Rigth"): `input-keys.ts` is the list `Key::from_name` reads. - [input-reader-not-player](api/rules/input-reader-not-player.md): A behaviour that reads `ctx.input` runs on an entity player input is not routed to (the scene's `spawn { for: "player" }` entity beside ano… - [input-unbound](api/rules/input-unbound.md): Every action a script reads is bound by the scene's action map - [instanced-mesh-candidate](api/rules/instanced-mesh-candidate.md): No <…> or more copies of one static mesh written out as separate entities - [joint-invalid](api/rules/joint-invalid.md): A `joint` that cannot be built: `connectedTo` names no entity, the owner itself, or an entity with no dynamic or kinematic rigidbody; the o… - [layer-unknown](api/rules/layer-unknown.md): An entity's `layer`, or a camera's `layers`, `hideLayers` or `rig.collisionLayers`, names a layer the scene's table does not declare (the p… - [layers-in-project-scene](api/rules/layers-in-project-scene.md): A scene inside a project declares `meta.layers`: the project's `layers` is the one table. - [layers-invalid](api/rules/layers-invalid.md): A standalone scene's `meta.layers` is not a layer table: more than 32, a repeated or badly formed name, `default` not first, or `ignores` n… - [light-directional-horizontal](api/rules/light-directional-horizontal.md): Every directional light in the scene lies within 5 degrees of the horizon (none points further down). - [light-shadow-tint-ignored](api/rules/light-shadow-tint-ignored.md): A `shadowTint` on a point or spot light: only a directional light's shadows are tinted, so it does nothing. - [light-shadow-tint-range](api/rules/light-shadow-tint-range.md): A light's `shadowTint` with a `strength` that is not a finite number within 0..1, or a `color` that is not a hex colour (`#RGB` or `#RRGGBB… - [lipsync-invalid](api/rules/lipsync-invalid.md): A `lipsync` component that cannot move a mouth: its entity has no `animator` (the model whose morph targets it drives) or no `audio` (the v… - [lipsync-track-unknown](api/rules/lipsync-track-unknown.md): `lipsync.track` names a scene asset whose kind is not `visemes`. - [material-field-ignored](api/rules/material-field-ignored.md): A `*.material.json` field that nothing reads: `alphaCutoff` without `alphaMode` mask, a `normalScale` with no normal map, an emissive map o… - [material-height-from-mixed](api/rules/material-height-from-mixed.md): The layers of one `*.material.json` that have `maskFrom.heightM` disagree on `maskFrom.heightFrom` (one `mesh`, another `root`): a drawn in… - [material-mask-from-wear-both](api/rules/material-mask-from-wear-both.md): A layer of a `*.material.json` has more than one of `maskFrom.edge`, `cavity`, `ao`, `convexity` and `concavity`: a layer reads one wear si… - [material-shader-missing](api/rules/material-shader-missing.md): A `*.material.json` `shader` names no file the project holds, or its reference is empty, absolute, names a drive or climbs out with `..` (t… - [material-shader-param-range](api/rules/material-shader-param-range.md): A `*.material.json` `params` value is outside the `min, max` its shader's header declares. - [material-shader-param-unknown](api/rules/material-shader-param-unknown.md): A `*.material.json` `params` key is not a `param` or `texture` the shader declares (an `instance` value is set per entity by a behaviour, n… - [material-texture-invalid](api/rules/material-texture-invalid.md): A `*.material.json` texture reference is empty, absolute, names a drive or climbs out with `..`, or both `ormTexture` and `metallicRoughnes… - [material-value-range](api/rules/material-value-range.md): A `*.material.json` number is outside its range or not finite: a colour or factor outside 0..1, a negative strength, an `ior` below 1, a `u… - [mesh-collide-conflict](api/rules/mesh-collide-conflict.md): A mesh's `colliderMode` and its deprecated `collide` disagree. - [missing-collider](api/rules/missing-collider.md): Dynamic bodies have a collider; triggers have a trigger collider - [missing-string](api/rules/missing-string.md): Every text key resolves in meta.strings - [nav-undeclared](api/rules/nav-undeclared.md): A `navlink` in a scene that declares no navigation (no `meta.nav`, no `navagent`): no navmesh is built, so it does nothing. - [navlink-invalid](api/rules/navlink-invalid.md): A `navlink.hold` is negative or not finite. - [navmesh-failed](api/rules/navmesh-failed.md): The navmesh builds and has polygons - [navmesh-trap](api/rules/navmesh-trap.md): No walkable region the player can get into and not out of - [ocean-bathymetry-asset-missing](api/rules/ocean-bathymetry-asset-missing.md): `meta.environment.ocean.bathymetry.asset` names an asset that is not in `assets`. - [ocean-bathymetry-not-16bit](api/rules/ocean-bathymetry-not-16bit.md): The bathymetry asset is not a 16-bit greyscale PNG: not a `texture` asset, or a path that does not end in .png (and, at load, a PNG whose h… - [ocean-bathymetry-range-invalid](api/rules/ocean-bathymetry-range-invalid.md): A bathymetry value that cannot describe a raster: `sizeM` not above 0 or not finite, `stepM` not above 0, a non-finite `originXz` or `baseM… - [ocean-layer-field-mismatch](api/rules/ocean-layer-field-mismatch.md): An ocean wave layer with fields of the other kind: `windSpeedMps` or `fetchKm` on a swell, `heightM` or `periodS` on a wind layer. - [ocean-shore-without-bathymetry](api/rules/ocean-shore-without-bathymetry.md): `meta.environment.ocean.shore` without a `bathymetry`: nothing for the shoreline controls to act on, so they are ignored. - [ocean-swell-without-period](api/rules/ocean-swell-without-period.md): An ocean `swell` layer with no `periodS`: a swell is defined by its period. - [ocean-wave-mask-asset-missing](api/rules/ocean-wave-mask-asset-missing.md): `meta.environment.ocean.waveMask.asset` names an asset that is not in `assets`. - [ocean-wave-mask-not-greyscale](api/rules/ocean-wave-mask-not-greyscale.md): The wave mask asset is not a greyscale PNG: not a `texture` asset, or a path that does not end in .png (and, at load, a PNG whose header is… - [ocean-wave-mask-range-invalid](api/rules/ocean-wave-mask-range-invalid.md): A wave mask value that cannot describe a raster: `sizeM` not above 0 or not finite, a non-finite `originXz`, `minScale` outside 0..1 or `ma… - [ocean-weather-not-ascending](api/rules/ocean-weather-not-ascending.md): A `meta.environment.ocean.weather` whose `timeS` values are not strictly ascending (a repeat counts). - [ocean-wind-out-of-range](api/rules/ocean-wind-out-of-range.md): An ocean wind or fetch outside its range (wind above 60 m/s or below 0, fetch outside 1..2000 km): the sea uses the nearest limit. - [out-of-bounds](api/rules/out-of-bounds.md): An entity's world position is outside `meta.bounds` (critic.check also reads a scale axis under a millimetre or over a kilometre as this co… - [outliner-folder-stale](api/rules/outliner-folder-stale.md): Every Outliner folder entry names a root entity - [outliner-folder-unknown-entity](api/rules/outliner-folder-unknown-entity.md): A `meta.outliner.folders` entry names no root entity: no entity has that id, or it has a parent (a child, or a part of a prefab instance),… - [over-budget](api/rules/over-budget.md): Triangles, draw calls, texture MB and dynamic bodies within meta.budgets - [parent-cycle](api/rules/parent-cycle.md): Parent chain loops back on itself. - [particles-source](api/rules/particles-source.md): Exactly one of `particles.preset` and `particles.effect` is required, and `particles.material` is not supported together with an `effect` y… - [physics-quality-invalid](api/rules/physics-quality-invalid.md): A `meta.physics.overrides` number is outside its range: solverIterations 1..64 and substeps 1..16 (whole numbers), sleep values 0 or more. - [plant-material-missing](api/rules/plant-material-missing.md): A foliage recipe whose `materials` names a project file that does not exist. - [plant-param-invalid](api/rules/plant-param-invalid.md): A foliage recipe value the generator cannot take: a parameter that is not a number or a `min, max` pair with min at most max, an unsupporte… - [plant-species-unknown](api/rules/plant-species-unknown.md): A foliage recipe whose `species` is not one of the closed species list. - [plant-template-locked](api/rules/plant-template-locked.md): A foliage recipe that sets a parameter its template locks, because changing it breaks the template's look. - [plant-template-unknown](api/rules/plant-template-unknown.md): A foliage recipe whose `template` names no library or project template. - [plant-too-heavy](api/rules/plant-too-heavy.md): A plant whose level-0 mesh has more than 150,000 triangles. - [plant-variants-invalid](api/rules/plant-variants-invalid.md): A foliage recipe with `variants` outside 1..64, or more than 8 `ages`. - [play/bad-start](api/rules/play-bad-start.md): critic.play's from named no goal or entity of the scene, or the player could not be put there - [play/dead-button](api/rules/play-dead-button.md): a menu button that, pressed, changed nothing: no screen opened or closed, nothing it shows, no state, save store, sound or game event - [play/dialog-never-closes](api/rules/play-dialog-never-closes.md): a blocking dialog kept turning pages (each press changed what it shows) and was still up after 24 of them, so the walk could not go on - [play/drive-hits](api/rules/play-drive-hits.md): a driven player hit obstacles (entities tagged cone, pylon, barrier, …) or drew the game's penalty on the way to a goal; the message lists… - [play/ended-early](api/rules/play-ended-early.md): the game put up a screen that owns the input and could not be answered (its own results or game-over screen) before the playtester reached… - [play/fell-out](api/rules/play-fell-out.md): the player fell below the scene's bounds on the way to a goal - [play/interaction-noop](api/rules/play-interaction-noop.md): the bot walked to an interactable, pressed interact, and nothing happened: no event, no change in the world, none on screen - [play/interaction-unreached](api/rules/play-interaction-unreached.md): the interaction sweep could not walk to an interactable or a trigger to try it - [play/menu-dead-end](api/rules/play-menu-dead-end.md): a screen reached from the menus that neither Back nor any of its buttons leaves - [play/no-goals](api/rules/play-no-goals.md): the scene has no goal component, so the playtester had nowhere to walk; nothing was driven, no route was tested, and passed only means noth… - [play/no-player](api/rules/play-no-player.md): no entity carries a controller or a vehicle component, so the playtester has nothing to drive - [play/no-response](api/rules/play-no-response.md): the playtester pressed every action the game declares, each one many times, and none of them changed the game: no entity, script state, HUD… - [play/nothing-to-drive](api/rules/play-nothing-to-drive.md): no entity carries a controller or a vehicle, and the input context in force declares no actions, so the playtester had nothing to press - [play/over-budget](api/rules/play-over-budget.md): at the pace the run was making, the goals left would not fit in the simulated time budget, so it stopped between goals instead of running o… - [play/player-script-error](api/rules/play-player-script-error.md): the player's own behaviour threw or overran its budget during the run; when the engine disabled it and it is what moves the player (input s… - [play/quit](api/rules/play-quit.md): the game called ctx.session.quit() during the run; a headless engine keeps running - [play/respawned](api/rules/play-respawned.md): the game moved the player somewhere at once on the way to a goal (a respawn at a checkpoint, a send-back to the start): a jump of more than… - [play/script-error](api/rules/play-script-error.md): a behaviour other than the player's threw or overran its budget during the run, and the engine disabled it (a throw used to show only in th… - [play/softlock](api/rules/play-softlock.md): no progress toward a goal and no change anywhere in the world for a while - [play/stuck](api/rules/play-stuck.md): the bot stopped moving on the way to a goal (blocked by an entity, or no path there), or kept moving for 20 s without its route getting sho… - [play/timeout](api/rules/play-timeout.md): the run spent its simulated time budget before reaching every goal - [play/trigger-noop](api/rules/play-trigger-noop.md): the player walked through a trigger volume and its event never fired - [play/unknown-goal](api/rules/play-unknown-goal.md): critic.play was asked for a goal id the scene does not have - [play/untested-flows](api/rules/play-untested-flows.md): the scene has no goal component and its project has no self-test scenario (selftest/*.json), so no flow of the game (start, a key pressed,… - [player-spawn](api/rules/player-spawn.md): No entity carries a `spawn` component with `for: "player"`. - [prefab-candidate](api/rules/prefab-candidate.md): No <…> or more identical entities written out one by one - [prefab-cycle](api/rules/prefab-cycle.md): A prefab that contains itself, through `source` instances: a.prefab.json holds an instance of b.prefab.json which holds one of a.prefab.jso… - [prefab-depth](api/rules/prefab-depth.md): Prefabs nested more than 8 levels deep (the scene instance's own prefab is level 1). - [prefab-depth-high](api/rules/prefab-depth-high.md): No instance nests prefabs more than <…> levels deep - [prefab-id-collision](api/rules/prefab-id-collision.md): An instance expands to an entity id the scene already has, or its prefab declares an asset key the scene means differently. - [prefab-invalid](api/rules/prefab-invalid.md): A prefab file that cannot be used: its shape, not exactly one root, an entity outside the root's tree, an id with `/` or used twice, or a p… - [prefab-missing](api/rules/prefab-missing.md): A prefab instance's `source` does not resolve to a readable `.prefab.json` in the project. - [prefab-override-redundant](api/rules/prefab-override-redundant.md): No prefab override repeats the prefab's own value - [prefab-override-shadowed](api/rules/prefab-override-shadowed.md): No override stored in a nested prefab is hidden by the instance's own - [prefab-override-stale](api/rules/prefab-override-stale.md): Every prefab override still points at something in its prefab - [prefab-override-unknown](api/rules/prefab-override-unknown.md): An override on an instance does not apply to its prefab: no such entity, component or path, or the value does not fit there. - [prefab-too-large](api/rules/prefab-too-large.md): One instance that expands to more than 10,000 entities, counted as it expands. - [prefab-unused](api/rules/prefab-unused.md): Every prefab file is placed in a scene or named by a script - [primary-camera](api/rules/primary-camera.md): The scene does not have exactly one camera with `primary: true`. - [project-default-invalid](api/rules/project-default-invalid.md): A scene rule's error on a value the scene takes from its project's defaults (argus.project.json `physics`, `graphics.render`, `input`, `aud… - [render-clouds-without-atmosphere](api/rules/render-clouds-without-atmosphere.md): `sky.clouds` is set on a sky whose `kind` is not `"atmosphere"` (no `sky` means the default procedural one): clouds are drawn only over the… - [render-field-ignored](api/rules/render-field-ignored.md): A `meta.environment.fog` field its mode does not read: density or height on linear fog, height or end on exponential, end on height. - [render-ocean-without-hd](api/rules/render-ocean-without-hd.md): `meta.environment.ocean` in a project whose `render.profile` is not `hd`: the standard renderer draws the sea as a flat lit plane at `seaLe… - [render-value-range](api/rules/render-value-range.md): `meta.render.exposure` is not more than 0 and at most 64, or `meta.render.scale` is outside 0.1..1. - [render-waterways-without-hd](api/rules/render-waterways-without-hd.md): A `waterways` component in a project whose `render.profile` is a known profile other than `hd`: rivers are drawn as flat tinted ribbons, an… - [scale-zero](api/rules/scale-zero.md): A scale axis is exactly zero. - [scene-over-triangle-budget](api/rules/scene-over-triangle-budget.md): The scene's meshes add up to more full-detail triangles (each mesh at its asset's `triangles`) than `meta.budgets.triangles`. - [scene-unorganized](api/rules/scene-unorganized.md): A big scene is filed into Outliner folders - [schema-shape](api/rules/schema-shape.md): The document does not match the schema: wrong type, missing field, unknown key, bad enum member. - [shader-compile-error](api/rules/shader-compile-error.md): The shader's WGSL does not compile (a name that does not exist, a type mismatch, a uniformity error). - [shader-cost-high](api/rules/shader-cost-high.md): The shader's static cost estimate is over the soft cap for the project's targets but under the hard cap. - [shader-cost-over-cap](api/rules/shader-cost-over-cap.md): The shader's static cost estimate (cost units per pixel, or texture fetches) is over the hard cap for the project's targets. - [shader-forbidden](api/rules/shader-forbidden.md): The shader uses something the sandbox refuses: a module-scope `var`, `@group`/`@binding`, an entry point, `override`, an `enable` directive… - [shader-header-invalid](api/rules/shader-header-invalid.md): A `*.shader.wgsl` header or file shape that cannot be read: an unknown `//!` key, a malformed or repeated line, a header line after the fir… - [shader-loop-unbounded](api/rules/shader-loop-unbounded.md): The shader has a `while` or `loop`, a `for` whose trip count is not a constant of at most 32, more than 256 iterations across nested loops,… - [shader-model-mismatch](api/rules/shader-model-mismatch.md): The functions and the `model` disagree: `model: stylized` without both `fn light(` and `fn ambient(`, either of them under another model, o… - [shader-param-invalid](api/rules/shader-param-invalid.md): A `param` or `instance` header line that cannot be built: a name that is not camelCase or is declared twice, an unknown type, a default of… - [shader-raw-disabled](api/rules/shader-raw-disabled.md): A `*.shader.wgsl` says `kind: raw` or `kind: pass` (the escape hatch) in a project that has not set `render.shaders.raw: true`. - [shader-texture-invalid](api/rules/shader-texture-invalid.md): A `texture` header line that cannot be built: a name that is not camelCase or is declared twice, an unknown kind, a default that is not `"w… - [shader-variants-over-cap](api/rules/shader-variants-over-cap.md): The project's shaders compile to more pipeline families than the cap allows. - [shot-blend-long](api/rules/shot-blend-long.md): A shot's `blendIn.time` is longer than the shot, so the blend never finishes, or the first shot has a `blendIn` with nothing to blend from. - [shot-keys-unordered](api/rules/shot-keys-unordered.md): A path shot's key times are not strictly ascending, or a key is past the shot's `duration`. - [shot-target-missing](api/rules/shot-target-missing.md): A shot names an entity (`follow.entity`, a `look` or orbit `center` entity) the scene does not have. - [shots-invalid](api/rules/shots-invalid.md): A `meta.shots` timeline that cannot play as written: no shots or an empty path, a duration not above zero, an orbit radius not above zero,… - [sky-asset-wrong-kind](api/rules/sky-asset-wrong-kind.md): `sky.asset`, or the deprecated `envMap`, names an asset whose `kind` is not `envmap`. - [sky-color-ignored](api/rules/sky-color-ignored.md): `meta.environment.skyColor` is set and the sky is not `"kind": "color"` (no `sky` means the default procedural one), so nothing reads it an… - [sky-envmap-conflict](api/rules/sky-envmap-conflict.md): `sky.asset` and the deprecated `envMap` name different assets. - [sky-hdr-needs-asset](api/rules/sky-hdr-needs-asset.md): `sky.kind` is `"hdr"` and no `sky.asset` names the panorama to use. - [sky-value-range](api/rules/sky-value-range.md): A `sky` number is outside its stated range, or is NaN or infinite, or a `sky.background` colour is not a hex colour. - [spring-collider-invalid](api/rules/spring-collider-invalid.md): A `springBones` collider with a `radius` that is not above 0 and at most 10, or an `offset` or `tip` entry that is not finite. - [spring-invalid](api/rules/spring-invalid.md): A `springBones` chain that is wrong whatever the rig is: it gives both `joints` and `root`/`tip`, gives neither, gives a `tip` without a `r… - [spring-needs-animator](api/rules/spring-needs-animator.md): A `springBones` on an entity with no `animator`: there is no skeleton to swing, so it does nothing. - [sprite-frame-missing](api/rules/sprite-frame-missing.md): A `sprite` name that resolves to nothing: an animation lists a frame the sprite does not have, or has no frames; `animation` names an anima… - [sprite-invalid](api/rules/sprite-invalid.md): A `sprite` that cannot draw as written: no frames; pixelsPerMetre, fps or a duration not above zero; opacity or alphaCutoff outside 0..1; a… - [sprite-rotation-count-invalid](api/rules/sprite-rotation-count-invalid.md): A `sprite` frame with a number of views other than 1 (the same from every side) or 2, 4, 8 or 16 (one per direction). - [static-overlap](api/rules/static-overlap.md): Static trimeshes do not intersect - [steering-gameplay](api/rules/steering-gameplay.md): No behaviour reads ctx.controller.steering, which the engine removed - [terrain-extent-invalid](api/rules/terrain-extent-invalid.md): A terrain file whose `extentM` is not above zero on both axes, or is not a whole multiple of its `cellSize`, or whose `cellSize` is not abo… - [terrain-in-2d-scene](api/rules/terrain-in-2d-scene.md): A `terrain` component in a 2D-kind project: terrain is a 3D feature. - [terrain-layer-unknown](api/rules/terrain-layer-unknown.md): A `shoreline`, `material.rules`, `volume.shape` or `volume.cliff` op of a terrain file names a layer the file's `layers` does not declare. - [terrain-layers-too-many](api/rules/terrain-layers-too-many.md): A terrain file declares more than 8 `layers`. - [terrain-multiple](api/rules/terrain-multiple.md): A scene with more than one `terrain` component. - [terrain-op-id-duplicate](api/rules/terrain-op-id-duplicate.md): Two ops of a terrain file's `stack` share an `id`. - [terrain-sample-invalid](api/rules/terrain-sample-invalid.md): A terrain file's `sampleM`, or a `detail` entry's, that is not 0.25, 0.5, 1, 2 or 4; or a `detail` region that is not a rectangle whose cor… - [terrain-transform](api/rules/terrain-transform.md): An entity with a `terrain` component whose own transform is rotated or scaled: the entity's translation is the terrain's origin and nothing… - [terrain-volume-invalid](api/rules/terrain-volume-invalid.md): A `volume.shape` or `volume.cliff` op cannot be built. - [terrain-volume-order](api/rules/terrain-volume-order.md): A height or material op of a terrain file's `stack` comes after a `volume.shape` or `volume.cliff` op. - [terrain/entity-buried](api/rules/terrain-entity-buried.md): a collider's base is more than 0.25 m under the terrain's ground at its x and z: the entity is sunk into the hill - [terrain/entity-floating](api/rules/terrain-entity-floating.md): a static collider's base is more than 0.5 m above the terrain's ground at its x and z (a dynamic body, a controller or a spawn settles by i… - [terrain/road-buried](api/rules/terrain-road-buried.md): a stretch of road (its centre, its edges and the footprint of each wall outside gapsAt, probed every 2 m) is more than 0.1 m under the terr… - [terrain/spawn-slope](api/rules/terrain-spawn-slope.md): a spawn stands on ground steeper than a character can stand on (the terrain layer's physics slopeLimit there, else the controller's 45 degr… - [terrainmod-no-terrain](api/rules/terrainmod-no-terrain.md): A `terrainmod` whose `terrain` names no entity with a `terrain` component, or, with no `terrain` named, in a scene that has none. - [tilemap-invalid](api/rules/tilemap-invalid.md): A `tilemap` that cannot draw as written: a tileset image that is not a `texture` asset; tileSize or grid not whole numbers above zero; marg… - [tilemap-tile-unknown](api/rules/tilemap-tile-unknown.md): A `tilemap` tile that resolves to nothing: a legend index that is not a whole number below the tileset's columns × rows, or a row character… - [tilemap-too-large](api/rules/tilemap-too-large.md): A `tilemap` too big to load in one piece: more than 16 layers, a layer of more than 1024 rows or a row of more than 1024 cells, or more tha… - [transform-not-finite](api/rules/transform-not-finite.md): A transform component is not finite (NaN or infinity). - [trigger-needs-trigger-collider](api/rules/trigger-needs-trigger-collider.md): A `trigger` component sits on an entity with no `isTrigger` collider. - [trigger-volume-unheard](api/rules/trigger-volume-unheard.md): A trigger volume that behaviours listen for has a trigger component - [ui-clipped](api/rules/ui-clipped.md): an interactive node a clipping ancestor cuts into - [ui-colour-only](api/rules/ui-colour-only.md): a state that differs from its siblings only in colour - [ui-contrast](api/rules/ui-contrast.md): text below the minimum contrast against its resolved background - [ui-default-font](api/rules/ui-default-font.md): The game's screens draw in a face of its own, not only the engine's fallback mono font - [ui-ellipsis](api/rules/ui-ellipsis.md): text cut off by an ellipsis, a line limit or a clip, where the rest of the string is not on screen - [ui-expectation](api/rules/ui-expectation.md): the live tree is not what the component library meant to build - [ui-field-no-label](api/rules/ui-field-no-label.md): an editable field with nothing saying what it is for - [ui-font-face-missing](api/rules/ui-font-face-missing.md): Every @font-face rule names a font file, and a bitmap font an atlas image, that the project has - [ui-locale-gap](api/rules/ui-locale-gap.md): a key the base table has and this locale does not translate - [ui-matrix-refused](api/rules/ui-matrix-refused.md): an engine refused a cell of the matrix - [ui-missing-string](api/rules/ui-missing-string.md): a text key with no string in this locale - [ui-no-way-back](api/rules/ui-no-way-back.md): a screen that takes input, cannot be dismissed, and has no way off it - [ui-offscreen](api/rules/ui-offscreen.md): an interactive node outside the viewport - [ui-overlap](api/rules/ui-overlap.md): two interactive rectangles on top of each other - [ui-reduced-motion](api/rules/ui-reduced-motion.md): a transition still running when reduced motion is on - [ui-relayout](api/rules/ui-relayout.md): a node relaid out between two frames with nothing touched - [ui-scroll-hidden](api/rules/ui-scroll-hidden.md): a container that clips content it cannot scroll to - [ui-start-screen](api/rules/ui-start-screen.md): `meta.ui.startScreen` is a name no `defineScreen` could have given a screen. - [ui-target-size](api/rules/ui-target-size.md): an interactive target below the minimum size - [ui-text-overflow](api/rules/ui-text-overflow.md): text that does not fit the box it was laid out into - [ui-undefined-token](api/rules/ui-undefined-token.md): a stylesheet reads a token a theme leaves undefined - [ui-unknown-prop](api/rules/ui-unknown-prop.md): a node that is not a text carries words, which nothing draws - [ui-unreachable](api/rules/ui-unreachable.md): a focusable node Tab and directional navigation never reach - [ui-untranslated](api/rules/ui-untranslated.md): a visible string with no key, in a locale that cannot translate it - [unlit](api/rules/unlit.md): Something lights the scene - [unreachable-goal](api/rules/unreachable-goal.md): Every goal is reachable from the player spawn - [vehicle-cannot-steer-or-brake](api/rules/vehicle-cannot-steer-or-brake.md): No wheel has `steerable` above 0, or none has `braked` above 0. - [vehicle-capability-absent](api/rules/vehicle-capability-absent.md): The scene carries a `vehicle` component and this build of the engine has no vehicle capability, so the scene loads and the vehicle is not t… - [vehicle-geometry](api/rules/vehicle-geometry.md): A wheel sits outside the chassis collider's bounds, a wheel's suspension travel exceeds the ground clearance under the chassis, or the cent… - [vehicle-invalid](api/rules/vehicle-invalid.md): A `vehicle` that cannot be built: an unknown `preset`; a part or field missing with no preset to fill it; `wheels` empty; two wheels sharin… - [vehicle-needs-dynamic-body](api/rules/vehicle-needs-dynamic-body.md): The entity has no dynamic rigidbody, or no non-trigger collider, so there is nothing for the wheels to carry. - [vehicle-value-implausible](api/rules/vehicle-value-implausible.md): A wheel radius outside 0.15..0.6 m or a chassis mass outside 400..8000 kg: most likely a unit mistake. - [vfx-collide-invalid](api/rules/vfx-collide-invalid.md): A `*.vfx.json` `collide` module names no surface, a surface that is not `ground`, `water` or `depth`, the same surface twice, or a response… - [vfx-effect-missing](api/rules/vfx-effect-missing.md): `particles.effect` names no effect: not a scene asset of kind `effect`, not a `*.vfx.json` path, and not one of the `builtin:` name… - [vfx-event-invalid](api/rules/vfx-event-invalid.md): A `*.vfx.json` emitter's `role` or `events` break the event rules: an unknown role or event, a child with `spawn` or its own events, more t… - [vfx-inherit-invalid](api/rules/vfx-inherit-invalid.md): A `*.vfx.json` emitter's `init.inherit` (the share of the emitter's own velocity a particle starts with) is not in 0, 1. - [vfx-max-screen-invalid](api/rules/vfx-max-screen-invalid.md): A `*.vfx.json` sprite's `render.maxScreen` is not a share of the viewport height in (0, 4, or a ribbon sets it (it applies to sprites only). - [vfx-param-invalid](api/rules/vfx-param-invalid.md): A `*.vfx.json` binding names a param the effect does not declare, a number field binds a vec3 or colour param (or the reverse), a param nam… - [vfx-preset-invalid](api/rules/vfx-preset-invalid.md): A `*.vfx.json` that names an effect preset (`"preset": "builtin:fx/"`) names an unknown preset, a param the preset does not have, or… - [vfx-shape-invalid](api/rules/vfx-shape-invalid.md): A `*.vfx.json` sprite names an unknown `render.shape` (allowed: disc, ring, star, blade, puff, flake), sets a `texture` or `flipbook` toget… - [vfx-texture-invalid](api/rules/vfx-texture-invalid.md): A `*.vfx.json` sprite texture is empty, absolute, names a drive or climbs out with `..`. - [vfx-texture-missing](api/rules/vfx-texture-missing.md): An export packs an effect (`*.vfx.json`) whose sprite, ribbon or decal texture is a path from the effect file that names no file the projec… - [vfx-value-range](api/rules/vfx-value-range.md): A `*.vfx.json` number is outside its range, a curve or gradient has more than 8 keys or keys that do not increase, a module appears twice,… - [water-shape-invalid](api/rules/water-shape-invalid.md): A `water` component whose `size` has an axis that is not a finite number above 0: a lake needs an outline. - [water-waves-invalid](api/rules/water-waves-invalid.md): A `water` component with a wave value out of range: `windMps` outside 0..30 or not finite, a non-finite `windDirectionRad`, a `seed` that i… - [watercraft-invalid](api/rules/watercraft-invalid.md): A `vehicle` `water` number out of its documented range (a negative thrust, a `reverse` outside 0..1, a `rudder.maxAngle` of 1.5 rad or more… - [watercraft-without-buoyancy](api/rules/watercraft-without-buoyancy.md): A `vehicle` with a `water` block on an entity with no `buoyancy` component: nothing floats it. - [waterways-look-invalid](api/rules/waterways-look-invalid.md): A `waterways` value out of range: `roughness` outside 0.02..0.15, `flowScale` outside 0..4, `foam` or `mist` outside 0..2, or a non-finite… - [waterways-override-invalid](api/rules/waterways-override-invalid.md): A `waterways` override that names none or more than one of river, waterfall and lake, a non-whole or negative id, or more than 64 overrides. - [waterways-without-terrain](api/rules/waterways-without-terrain.md): A `waterways` component with no terrain: `terrain` names no entity with a `terrain` component, or it is absent and neither this entity nor… - [wheel-invalid](api/rules/wheel-invalid.md): A `wheel` that cannot work: no dynamic rigidbody above it; a number non-finite, non-positive where it must be positive, or a fraction outsi… ## Project codes - [Project codes](codes/project.md): The 48 diagnostics the project manifest validator (argus.project.json) can report. ## Runtime codes - [animator-clip-missing](api/runtime/animator-clip-missing.md): an animator state's `clip` is not a clip of the asset nor of its retargeted clips (the built-ins and `retarget.clips`), so that state holds… - [animator-ik-unknown](api/runtime/animator-ik-unknown.md): the animator declares no IK chain by that name, or the entity has no animator (`AnimatorIkError`) - [animator-layer-bone-unknown](api/runtime/animator-layer-bone-unknown.md): a layer's `mask` (`include`, `exclude` or `weights`) names a bone the rig does not have; printed once per asset when the animator is built,… - [animator-layer-unknown](api/runtime/animator-layer-unknown.md): `play(name, { layer })`, `layerWeight` or `stopLayer` named a layer the animator component does not declare in `layers`, or the entity has… - [animator-look-at-missing](api/runtime/animator-look-at-missing.md): the animator component declares no `lookAt`, or the entity has no animator (`AnimatorLookAtError`) - [animator-loop-seam](api/runtime/animator-loop-seam.md): a looping state plays a clip whose last frame is far from its first (or, in a `clips` state, one clip that does not meet the next), so the… - [animator-morph-unknown](api/runtime/animator-morph-unknown.md): `ctx.animator.setMorph` or `morph` named a morph channel the model does not have, gave a weight that is not a number, or the entity has no… - [animator-param-unknown](api/runtime/animator-param-unknown.md): the animator declares no parameter by that name, or the entity has no animator (`AnimatorParamError`) - [animator-play-invalid](api/runtime/animator-play-invalid.md): a `blend` or `blendOut` time is negative or not a number (`AnimatorPlayError`) - [animator-play-unknown](api/runtime/animator-play-unknown.md): `play` named a state, or a `then`, the animator does not have (`AnimatorPlayError`) - [animator-retarget-clips-invalid](api/runtime/animator-retarget-clips-invalid.md): an asset in `retarget.clips` has no skeleton and clips, or its skeleton lacks the canonical humanoid's required bones, so its clips were no… - [animator-retarget-suspect](api/runtime/animator-retarget-suspect.md): the retarget map is legal but probably wrong: its left and right look swapped (by the target bones' names, or the left thigh sits on the ch… - [animator-root-motion-hips](api/runtime/animator-root-motion-hips.md): a `rootMotion` state plays a clip whose root does not travel but whose hips (the canonical `Hips` through `retarget.map`, or a joint of tha… - [animator-root-motion-joint-missing](api/runtime/animator-root-motion-joint-missing.md): the animator's `rootMotionFrom` names a joint the rig does not have (after `retarget.map`), so root motion is read from the rig root as if… - [animator-stride-rate](api/runtime/animator-stride-rate.md): a point of a stride-matched blend tree plays at more than 3x its clip's rate on its own `at`, or less than a third of it, because its clip'… - [animator-transition-unheard](api/runtime/animator-transition-unheard.md): an animator has transitions whose `on` nothing hands to it: the entity runs no built-in `animator` behaviour (the script that matches `on`… - [animator-unknown](api/runtime/animator-unknown.md): `set` named a state the animator does not have, so nothing changed; printed once per entity and name, every call counted on `GET /feel` → `… - [animator-window-unreachable](api/runtime/animator-window-unreachable.md): a one-shot state (`once`, or `ctx.animator.play` with `blendOut`) plays a clip with a window event (`until`) that opens at or after the han… - [at_capacity](api/runtime/at-capacity.md): 503: a bounded resource is full, so the request was refused rather than queued - [attach-bone-unknown](api/runtime/attach-bone-unknown.md): the `attach` component's `bone` is not a bone of the owner's skeleton, by the rig's own name or a canonical name in its `retarget.map` - [attach-skeleton-missing](api/runtime/attach-skeleton-missing.md): the `attach` owner has no animator that built (its asset has no skin or did not load), so there is no skeleton to follow - [audio-loops-stacked](api/runtime/audio-loops-stacked.md): three or more loops of one sound play at once with none placed in the world (`ctx.audio.play(asset, { loop: true })` without `at`, or loopi… - [author-failed](api/runtime/author-failed.md): an authoring script (`authoring/.ts`, run by `behaviour.write` with `run`) did not run to the end: it threw (with its line), a read i… - [bad_request](api/runtime/bad-request.md): 400: the body or query parameters are wrong; the message quotes what was expected - [behaviour-detached](api/runtime/behaviour-detached.md): a `Behaviour` instance's engine members were used on an instance the engine did not construct (`new MyBehaviour()` in a script) - [behaviour-hook-unknown](api/runtime/behaviour-hook-unknown.md): a `class X extends Behaviour` has a method `Behaviour` never calls — `Awake`, `FixedUpdate`, `LateUpdate`, `OnTriggerStay`, `OnCollisionSta… - [behaviour-prop-unknown](api/runtime/behaviour-prop-unknown.md): a `class X extends Behaviour` was given a script prop with no field of that name, so it would set nothing (thrown in `init`, which disables… - [body.not-finite](api/runtime/body-not-finite.md): a `ctx.body` force, torque, impulse or point has a NaN or infinite component - [body.not-own](api/runtime/body-not-own.md): `wheels` through another entity's body (`other.body` in a trigger): it can be pushed and its velocity set, not its wheels driven - [body.space-invalid](api/runtime/body-space-invalid.md): a `ctx.body` push was given a `space` other than `"world"` or `"local"` - [body.velocity-not-dynamic](api/runtime/body-velocity-not-dynamic.md): `ctx.body.velocity` was assigned on a kinematic or static body, or through a handle kept past its body; only a dynamic body has a velocity… - [build-not-ready](api/runtime/build-not-ready.md): the revision asked for has no Ready build - [build-pipeline-running](api/runtime/build-pipeline-running.md): a build pipeline already runs for this workspace - [build-pipeline-stopping](api/runtime/build-pipeline-stopping.md): the build pipeline is stopping - [build.asset-missing](api/runtime/build-asset-missing.md): a file the scene names (an asset, a texture its material file names, or an asset of a prefab a script spawns, resolved from the scene's fol… - [build.asset-outside-project](api/runtime/build-asset-outside-project.md): an asset path leads outside the project, so no revision holds it - [build.font-unusable](api/runtime/build-font-unusable.md): a `.ttf`/`.otf` under the revision's `ui/fonts/` does not parse as a font, has no readable family name, or maps no characters; Play skips i… - [build.import](api/runtime/build-import.md): a behaviour imports something the engine does not bundle (an npm package, a Node built-in, a file outside the project, a value from `@argus… - [build.infrastructure](api/runtime/build-infrastructure.md): the build could not read its own inputs - [build.material-layer-missing](api/runtime/build-material-layer-missing.md): a file a material file's `layers` need (a layer material named by path from the material's folder, or a texture that layer names from its o… - [build.module-load](api/runtime/build-module-load.md): a behaviour threw while its module was evaluated - [build.module-not-found](api/runtime/build-module-not-found.md): a scene names a script module with no `.ts` or `.js` file - [build.module-outside-project](api/runtime/build-module-outside-project.md): a script module path leads outside the project - [build.module-unreadable](api/runtime/build-module-unreadable.md): a built-in module could not be read - [build.not-published](api/runtime/build-not-published.md): every check passed, but publishing the build failed - [build.sandbox](api/runtime/build-sandbox.md): a behaviour touches something the engine's sandbox does not provide (`window`, `fetch`, `require`, …) - [build.scene-invalid](api/runtime/build-scene-invalid.md): a scene breaks a contract rule; the message opens with the rule's code - [build.scene-warning](api/runtime/build-scene-warning.md): a scene triggers a contract warning; the message opens with the rule's code - [build.shader-hd-partial](api/runtime/build-shader-hd-partial.md): an HD project's export packs a user shader that HD's G-buffer pass draws, with paths still on the fallback: the line names the shader and w… - [build.shader-pass-not-exported](api/runtime/build-shader-pass-not-exported.md): the project contains a `*.shader.wgsl` with `//! - [build.shader-scene-prewarm-heavy](api/runtime/build-shader-scene-prewarm-heavy.md): a scene's predicted shader pre-warm (pipeline count times the measured cost of one) is over 400 ms on the reference machine, so its load wo… - [build.startup-scene-missing](api/runtime/build-startup-scene-missing.md): the project's `startupScene` is not in this revision - [build.toolchain-unavailable](api/runtime/build-toolchain-unavailable.md): the TypeScript toolchain could not be found, so behaviours were not checked - [build.transpile](api/runtime/build-transpile.md): a behaviour does not compile (esbuild's error) - [build.transpile-failed](api/runtime/build-transpile-failed.md): esbuild itself did not run to its end, or a `.js` behaviour does not parse - [build.typecheck](api/runtime/build-typecheck.md): a behaviour has a TypeScript type error at the line and column given - [build.typecheck-failed](api/runtime/build-typecheck-failed.md): the TypeScript checker itself did not run to its end - [camera-fov-overrides-scene](api/runtime/camera-fov-overrides-scene.md): a script's `ctx.camera.set(kind, { fov })` differs from the scene camera's `fov`, so the view is drawn at the script's number and the scene… - [camera-overlay-not-drawn](api/runtime/camera-overlay-not-drawn.md): the scene has a camera with `output: "overlay"`, which the engine does not draw yet; the screen view is drawn without it. - [camera-point-invalid](api/runtime/camera-point-invalid.md): `GET /camera/project` or `GET /camera/ray` was given a missing or non-finite `x`, `y` or `z`, an `entity` the scene does not have, or `enti… - [camera-probe-wider-than-body](api/runtime/camera-probe-wider-than-body.md): `ctx.camera.set`'s `probeRadius` is wider than the body the camera follows, so the arm sweeps the body's radius instead; said once per foll… - [camera-view-unknown](api/runtime/camera-view-unknown.md): `GET /camera/project` or `GET /camera/ray` was given a `view` that is not a whole number from 1 to the layout's live views (a number, not 0… - [capability_denied](api/runtime/capability-denied.md): 403: the session does not grant what the endpoint needs - [component-absent](api/runtime/component-absent.md): the entity has no component of that kind to read or write (`ComponentWriteError`) - [component-field-type](api/runtime/component-field-type.md): a field was given a value of the wrong type (a colour that is not `#rrggbb` or `r, g, b` in 0..1, …) - [component-field-unknown](api/runtime/component-field-unknown.md): the component has no writable field by that name - [component-not-writable](api/runtime/component-not-writable.md): that component cannot be written at run time; `entity.set` takes `material`, `light` or `mesh` - [data.record](api/runtime/data-record.md): `ctx.data.record(name, value)` was given a name that is not 1 to 64 of A-Z, a-z, 0-9, `_`, `-`, `.`, or a value that is not a finite number… - [entity-despawned](api/runtime/entity-despawned.md): a handle kept across frames names an entity that has since been despawned (`DespawnedEntityError`); from a per-tick hook it ends that call… - [entity.not-finite](api/runtime/entity-not-finite.md): `entity.yaw` was set to NaN or an infinite number (`RangeError`); the rotation is unchanged - [entity.parent-cycle](api/runtime/entity-parent-cycle.md): `entity.setParent` was given this entity or one of its descendants as the parent, which would make the hierarchy a loop (`RangeError`); not… - [entity.parent-despawned](api/runtime/entity-parent-despawned.md): `entity.setParent` was given a handle whose entity has been despawned (`ReparentError`); nothing changed - [entity.parent-unknown](api/runtime/entity-parent-unknown.md): `entity.setParent` was given a scene id no live entity has (`ReparentError`); nothing changed - [face-degraded](api/runtime/face-degraded.md): `: ; that part is off`: the model has none of the ARKit shapes for blinks, brows, cheeks or gaze, a bone named in… - [files-bad-json](api/runtime/files-bad-json.md): `readJson` was given a file that is not JSON; the message has the line and column - [files-missing](api/runtime/files-missing.md): the project has no file at that path, the path names a folder, or a segment's case differs from the file's - [files-not-text](api/runtime/files-not-text.md): the file is not UTF-8 text - [files-path-refused](api/runtime/files-path-refused.md): the path is not a file under the project's `data/` folder: it is outside `data/`, climbs with `..`, is absolute, has a `\` or an empty or `… - [files-too-large](api/runtime/files-too-large.md): the file is over 1 MiB, the most `ctx.files` reads - [fluid.sample-invalid](api/runtime/fluid-sample-invalid.md): `ctx.water.sample` or `ctx.wind.sample` was given a coordinate that is NaN or infinite (`RangeError`); nothing is read - [host_rejected](api/runtime/host-rejected.md): 403: the `Host` header does not name this server by a loopback name (DNS rebinding, or a client that set `Host`) - [input-binding-arity](api/runtime/input-binding-arity.md): the wrong number of keys for the action's kind: a 2D axis takes four (up, left, down, right), a 1D axis two (negative, then positive), or a… - [input-no-map](api/runtime/input-no-map.md): this world has no action map, so there is nothing to rebind - [input-read-without-routing](api/runtime/input-read-without-routing.md): A behaviour read `ctx.input` on an entity that has the handle (a controller or vehicle) but that player input is not routed to: input reach… - [input-unknown-action](api/runtime/input-unknown-action.md): the context (the live one, or the one `rebind` named) binds no action by that name - [input-unknown-binding](api/runtime/input-unknown-binding.md): a bare token matched no device, or a `pad:`/`mouse:` name is not one - [input-unknown-context](api/runtime/input-unknown-context.md): `ctx.input.rebind` or `bindings` named a context the scene's input map does not have - [input-unknown-key](api/runtime/input-unknown-key.md): a `keys` entry, or a `key:`-prefixed token, is not a key name - [instances-format-unsupported](api/runtime/instances-format-unsupported.md): the `.instances` file is a later format version or encoding than this build reads (a newer engine wrote it), so it has no instances - [instances-source-invalid](api/runtime/instances-source-invalid.md): the file is there but is not a valid instances file (wrong magic, a length or hash that does not match, an id out of order, a non-unit rota… - [instances-source-missing](api/runtime/instances-source-missing.md): the `instancedMesh` component's `source` file is missing or unreadable, so it has no instances - [internal](api/runtime/internal.md): 500: the engine failed while answering - [joint.limits-invalid](api/runtime/joint-limits-invalid.md): `ctx.joint.setLimits` was given something other than `min, max` with both finite and `min` at most `max`, or `null` - [joint.motor-invalid](api/runtime/joint-motor-invalid.md): `ctx.joint.setMotor` was given a target that is not finite, a `maxForce`, `stiffness` or `damping` that is negative or not finite, a `mode`… - [lipsync-degraded](api/runtime/lipsync-degraded.md): the face cannot make every viseme as written: its model lacks some viseme or ARKit mouth shapes (or has only a jaw, or no mouth shape at al… - [look-lut-path-empty](api/runtime/look-lut-path-empty.md): a colour LUT was given with no path, so it was dropped - [look-range-inverted](api/runtime/look-range-inverted.md): a look range's minimum was above its maximum; the maximum was raised to it - [look-value-not-finite](api/runtime/look-value-not-finite.md): a camera look value was NaN or infinite and its default was used - [look-value-out-of-range](api/runtime/look-value-out-of-range.md): a camera look (post-processing) value was outside its range and was clamped - [mesh-material-name-unknown](api/runtime/mesh-material-name-unknown.md): a `materials` key is not the name of any material of the model (names are exact, and an unnamed glTF material has none); the mesh draws as… - [mesh-uv-missing](api/runtime/mesh-uv-missing.md): a model has textured meshes and some meshes with no `TEXCOORD_0`: those meshes read every texture at UV (0, 0), so they show one texel's co… - [nav-bounds-required](api/runtime/nav-bounds-required.md): 400 on `GET /navmesh`: the navmesh has more polygons than one answer carries - [nav-bounds-too-large](api/runtime/nav-bounds-too-large.md): 400 on `GET /navmesh`: more polygons fall inside the bounds than one answer carries - [nav-undeclared](api/runtime/nav-undeclared.md): the scene declares no navigation, so it has no navmesh to route on - [not-newest-revision](api/runtime/not-newest-revision.md): a newer revision has been submitted, so this one is not built - [not_found](api/runtime/not-found.md): 404: the named entity, frame or navmesh does not exist - [null-handle](api/runtime/null-handle.md): a behaviour read `ctx.animator`, `ctx.controller`, `ctx.nav` or `ctx.input` on an entity that has no such component, so the handle was null - [origin_rejected](api/runtime/origin-rejected.md): 403: the request came from a web page on another site (`Origin`) - [particles-collide-unavailable](api/runtime/particles-collide-unavailable.md): a `*.vfx.json` effect has a `collide` module, but the engine was built without the `vfx-collide` cargo feature, so the effect runs without… - [particles-effect-unknown](api/runtime/particles-effect-unknown.md): `ctx.particles.play` named an effect the scene did not load, so nothing played (it also counts in `unwired.particles_emit`); said once per… - [particles-override-ignored](api/runtime/particles-override-ignored.md): a `ctx.particles.emit` override key is not a particle parameter, or its value is not one that parameter takes, so that key was ignored and… - [particles-param-unknown](api/runtime/particles-param-unknown.md): an effect param was not applied: the `particles` component's `params`, a `ctx.particles.play` call or `ctx.particles.setParam` named a para… - [particles-texture-missing](api/runtime/particles-texture-missing.md): a `*.vfx.json` emitter's sprite texture did not load, so that emitter draws the built-in sprite; said once per emitter - [peer-determinism-mismatch](api/runtime/peer-determinism-mismatch.md): the peers' script configs differ (`HostConfig::determinism_digest()`), so their behaviours would not run the same way - [peer-engine-mismatch](api/runtime/peer-engine-mismatch.md): the other peer runs another engine or engine version, which does not promise the same simulation - [peer-protocol-mismatch](api/runtime/peer-protocol-mismatch.md): the other peer's hello is in another peer protocol (`proto`), or its first message is not a hello this peer can read whole - [peer-scene-mismatch](api/runtime/peer-scene-mismatch.md): the peers loaded different scenes (the SHA-256 of the scene file's canonical JSON differs) - [peer-seed-mismatch](api/runtime/peer-seed-mismatch.md): the peers' world seeds differ, so every seeded draw (`Math.random` included) would differ - [peer-tick-rate-mismatch](api/runtime/peer-tick-rate-mismatch.md): the peers step a different number of ticks a second - [physics.buoyancy.force-refused](api/runtime/physics-buoyancy-force-refused.md): the solver refused a buoyancy force on a body that should be dynamic (a non-finite force, or a body that stopped being dynamic); reported o… - [physics.buoyancy.probe-cap](api/runtime/physics-buoyancy-probe-cap.md): a `buoyancy` hull asked for more than 256 probes (an `auto` grid of `resolution` 7 or 8, or a longer authored `probes` list), so the engine… - [physics.layer-unknown](api/runtime/physics-layer-unknown.md): an entity's `layer` (or a camera's `layers`, `hideLayers` or `rig.collisionLayers`) names a layer the project does not declare, and the sce… - [physics.water.lake-cap](api/runtime/physics-water-lake-cap.md): the scene has more than 4 `water` components; only the 4 with the highest levels count (ties by priority, then scene order) and the rest ar… - [physics.water.river-cap](api/runtime/physics-water-river-cap.md): the terrain's hydrology has more than 32 rivers or 256 k centreline points under `waterways`; the rivers with the smallest discharge are dr… - [plant-bake-missing](api/runtime/plant-bake-missing.md): a recipe has no cooked meshes in the project's state folder, or its `bake.json` lists a mesh that is gone - [plant-bake-stale](api/runtime/plant-bake-stale.md): the cooked meshes are from an older recipe, an older template it names or an older generator, so they no longer match the recipe - [project-kind-2d-hd](api/runtime/project-kind-2d-hd.md): a project with `kind` `"2d"` asks for `render.profile` `"hd"`; a 2D project draws with the standard renderer, so this one does (the validat… - [quality-custom-defaults](api/runtime/quality-custom-defaults.md): a custom quality profile without `basedOn` left out optional knobs (it predates them), so they took their declared defaults; said once, nam… - [quality-custom-missing](api/runtime/quality-custom-missing.md): the preset is Custom and no Custom knobs were given, so High was used - [quality-not-available-in-renderer](api/runtime/quality-not-available-in-renderer.md): this renderer has no path for that value yet, so the knob fell back - [quality-unsupported-on-device](api/runtime/quality-unsupported-on-device.md): the GPU cannot do what the knob asks, so it fell back to what it can - [quality-value-not-a-step](api/runtime/quality-value-not-a-step.md): a quality knob was in range but not one of its steps (a shadow size that is not a power of two); the nearest was used - [quality-value-not-finite](api/runtime/quality-value-not-finite.md): a quality knob was NaN or infinite and the preset's value was used - [quality-value-out-of-range](api/runtime/quality-value-out-of-range.md): a quality knob was outside its range and was clamped - [quality-value-unknown](api/runtime/quality-value-unknown.md): a quality knob named a value this engine does not know (a newer engine's, or a typo), so the file still loaded and the knob took its safe v… - [render-backend-forced-unavailable](api/runtime/render-backend-forced-unavailable.md): the project forces a graphics backend (`render.backend` `"vulkan"` or `"dx12"`) that cannot start on this machine (no adapter on it, or Dir… - [render-decal-range-inverted](api/runtime/render-decal-range-inverted.md): a decal fade ended before it started; the end was moved to the start - [render-decal-rotation-not-unit](api/runtime/render-decal-rotation-not-unit.md): a decal rotation was not a unit quaternion and was normalised (identity when zero) - [render-decal-texture-unknown](api/runtime/render-decal-texture-unknown.md): a decal named a texture that was never registered, so that channel has none - [render-decal-value-not-finite](api/runtime/render-decal-value-not-finite.md): a decal value was NaN or infinite and its default was used - [render-decal-value-out-of-range](api/runtime/render-decal-value-out-of-range.md): a decal value was outside its range and was clamped - [render-decals-over-budget](api/runtime/render-decals-over-budget.md): more decals than the budget; the lowest-priority ones were dropped - [render-decals-unsupported](api/runtime/render-decals-unsupported.md): the device cannot run the decal pass, so no decal is drawn - [render-tonemap-substituted](api/runtime/render-tonemap-substituted.md): `meta.render.tonemap` names a curve the renderer does not have: on the standard renderer HD's filmic curve (`unreal-filmic`), drawn as `ace… - [render.hd.black_frame](api/runtime/render-hd-black-frame.md): an HD frame read back for `--record`, `--out` or a capture came out black (the mean of its colour channels at most 5/255), once per run; `r… - [render.hd.cloud_shadow_unavailable](api/runtime/render-hd-cloud-shadow-unavailable.md): the device allows fewer than 17 sampled textures per shader stage, so the HD cloud layer draws but casts no shadow on the ground, the fog o… - [render.hd.ground-cover-no-height](api/runtime/render-hd-ground-cover-no-height.md): reserved: the HD renderer will report this when a layer's terrain has no height raster to stand blades on, so the layer is not drawn - [render.hd.ground-cover-over-budget](api/runtime/render-hd-ground-cover-over-budget.md): reserved: the HD renderer will report this when a frame's ground cover wants more blades than its budget, and thins them - [render.hd.horizon_map_unavailable](api/runtime/render-hd-horizon-map-unavailable.md): the device allows fewer than 18 sampled textures per shader stage, so HD leaves out the terrain horizon map: terrain casts no shadow past t… - [render.hd.pass-point-skipped](api/runtime/render-hd-pass-point-skipped.md): a `kind: pass` escape-hatch shader at `afterOpaque` or `beforeTonemap` is not run on HD (its HDR image is inside HD's post chain); said once - [render.hd.rt-deform-over-budget](api/runtime/render-hd-rt-deform-over-budget.md): swaying virtual-geometry instances within the ray-tracing deformation range (`RtCoreDesc::deform_wind_range`) are tracing their undeformed… - [render.hd.rt-proxy-invalid](api/runtime/render-hd-rt-proxy-invalid.md): a virtual-geometry mesh was given its own ray-tracing proxy (`add_vg_mesh_with_rt_proxy`, `set_vg_rt_proxy`) that is malformed, has no tria… - [render.hd.rt_mesh_proxied](api/runtime/render-hd-rt-mesh-proxied.md): a static mesh's geometry does not fit HD's ray-tracing vertex and index pools within the device's storage-binding limit, so it traces throu… - [render.hd.rt_mesh_too_large](api/runtime/render-hd-rt-mesh-too-large.md): a mesh's geometry does not fit HD's ray-tracing vertex and index pools within the device's storage-binding limit (the pools are bound whole… - [render.hd.rt_unavailable](api/runtime/render-hd-rt-unavailable.md): the device or build has no ray tracing, so HD3 ray-traced effects are off - [render.hd.screen-fx-views](api/runtime/render-hd-screen-fx-views.md): a frame of several views (a headset's stereo pair) on HD cannot draw screen effects or user-shader particles, so it draws without them; sai… - [render.hd.shading_substituted](api/runtime/render-hd-shading-substituted.md): a material draws with vertex (Gouraud) shading (`meta.render.shading` or a material file's `shading`), which HD lights per pixel rather tha… - [render.hd.splat_format](api/runtime/render-hd-splat-format.md): a Gaussian splat file is not one the loader reads (not a 3DGS `.ply` with `x y z f_dc_* opacity scale_* rot_*`, a compressed PLY, a coloure… - [render.hd.splat_too_large](api/runtime/render-hd-splat-too-large.md): a splat capture has more splats than one HD renderer holds (16,777,216) or bigger lists than the device can bind; nothing was loaded - [render.hd.splat_truncated](api/runtime/render-hd-splat-truncated.md): a Gaussian splat file ends before the data its header promises; nothing was loaded - [render.hd.unavailable](api/runtime/render-hd-unavailable.md): the HD renderer could not start on this device, so the standard renderer draws instead - [render.hd.user-rt-static](api/runtime/render-hd-user-rt-static.md): HD's ray-traced paths (reflections, global illumination, ray-traced shadows through a cut-out) see a drawn user family as a bake made once… - [render.hd.user-shader-partial](api/runtime/render-hd-user-shader-partial.md): HD draws a user shader family in some paths and not in others yet, once per family; the line names the family (`shader family N (model, ble… - [render.hd.vg_resident_full](api/runtime/render-hd-vg-resident-full.md): a headless run, capture or `--record` keeps frames exact, so virtual-geometry pages never stream; a mesh whose pages no longer fit the resi… - [render.hd.vg_streaming_auto](api/runtime/render-hd-vg-streaming-auto.md): the virtual-geometry meshes' pages no longer fit one resident pool, so they stream within it from then on (coarser detail loads first, fine… - [render.hd.water.river-flow-inconsistent](api/runtime/render-hd-water-river-flow-inconsistent.md): for one river the discharge its drawn geometry carries (width, depth, speed) and the terrain's `flow_m3s` differ by more than 4 times, once… - [render.hd.water.river-id-unknown](api/runtime/render-hd-water-river-id-unknown.md): a `waterways` override names a river, waterfall or lake id the terrain's hydrology does not hold (ids change when the terrain's drainage do… - [render.hd.water.river-junction-gap](api/runtime/render-hd-water-river-junction-gap.md): a tributary ends more than 5 cm above or below the river it joins, once per river; the water is built as it is - [render.screen-effect](api/runtime/render-screen-effect.md): a screen effect listed in the scene's render settings was skipped (its shader did not build or its params were refused) or the renderer ref… - [render.shader.compiled-after-load](api/runtime/render-shader-compiled-after-load.md): a user shader's pipeline was first compiled after the scene loaded, so one frame hitched; the pre-warm list did not hold it. - [render.shader.downgraded](api/runtime/render-shader-downgraded.md): a shader effect this device or renderer cannot draw was replaced by the nearest one it can, as on web, phones and the standard renderer whe… - [render.shader.fallback](api/runtime/render-shader-fallback.md): a user shader's pipeline failed to compile, once per shader family; its materials draw with the built-in fallback derived from the shader a… - [render.shader.families-many](api/runtime/render-shader-families-many.md): more shader families are visible than the advised count for the target (64 on web, Android and iOS), so draws and pipelines cost more than… - [render.shader.param-dropped](api/runtime/render-shader-param-dropped.md): a hot reload changed a param's type (a colour became a number, say), and a material's value of it no longer fits: the value is dropped and… - [render.shader.reload-failed](api/runtime/render-shader-reload-failed.md): an edited shader's new version could not replace the running one, so the last good version keeps drawing: its pipeline did not build, or HD… - [render.shader.vg-skipped](api/runtime/render-shader-vg-skipped.md): a mesh whose shader has `vertex()` is drawn by HD's raster path, not virtual geometry, so it costs the raster path's price - [render.sky.background_hd](api/runtime/render-sky-background-hd.md): a scene's `sky.background` is drawn by the standard renderer; the HD renderer draws its own sky over it (once per run) - [render.standard.layer-mask-from-ignored](api/runtime/render-standard-layer-mask-from-ignored.md): a material file's layer has `maskFrom` (procedural coverage from the mesh's height and facing), which only the HD renderer draws; once per… - [render.uv-scroll-ignored](api/runtime/render-uv-scroll-ignored.md): a material file sets `uvScroll` but is drawn by a renderer that has no scroll: HD, or the standard renderer's stock car and layered surface… - [replay-bad-file](api/runtime/replay-bad-file.md): the replay file cannot be read, is not a Talos replay, is a format this engine does not read (it reads formats 1 to 4), has lines out of or… - [replay-camera-unknown](api/runtime/replay-camera-unknown.md): `--replay-camera entity:ID` names an entity the scene does not have - [replay-engine-mismatch](api/runtime/replay-engine-mismatch.md): the replay was recorded by another engine version, which does not promise the same simulation - [replay-scene-mismatch](api/runtime/replay-scene-mismatch.md): the scene that loaded is not the one the replay was recorded on (the SHA-256 of the scene file's canonical JSON differs) - [replay-seed-mismatch](api/runtime/replay-seed-mismatch.md): `--seed` names a different seed than the replay was recorded with, or a replay is played (`World::start_replay_playback`) into a world runn… - [replay-start-mismatch](api/runtime/replay-start-mismatch.md): the world is not at the tick the replay starts from - [replay-web-unsupported](api/runtime/replay-web-unsupported.md): a replay was asked to play in the web build, which leaves out the code that re-applies a replay's live edits, so a playback there would qui… - [road-material-unknown](api/runtime/road-material-unknown.md): the road file's `surface.material` is not a key of the scene's assets of kind `material`, so the road surface keeps its plain `color` - [road-source-invalid](api/runtime/road-source-invalid.md): the road file is there but is not a valid road (bad JSON, too few points, a width or step out of range), so it was not built - [road-source-missing](api/runtime/road-source-missing.md): the `road` component's `source` file is missing or unreadable, so the road, its walls and its gates were not built - [road.at](api/runtime/road-at.md): `ctx.world.road(name).at(s)` was given an `s` that is NaN or infinite (`RangeError`); nothing is answered - [save-bad-key](api/runtime/save-bad-key.md): the key is not 1 to 64 characters of `A-Z a-z 0-9 . - [save-full](api/runtime/save-full.md): writing the value would take the save file past its size limit - [scene-invalid](api/runtime/scene-invalid.md): the scene file is not a valid scene; the message lists the contract violations - [scene-load-failed](api/runtime/scene-load-failed.md): a scene switch was refused and the current scene is still running; the event's `code` says why - [scene-missing](api/runtime/scene-missing.md): there is no scene file at that path in this project - [scene-no-root](api/runtime/scene-no-root.md): this world was opened from a document, not a file, so it has no folder to resolve a scene path against - [scene-path-refused](api/runtime/scene-path-refused.md): the scene path breaks a project-path rule (absolute, `..`, outside the project) - [script-call-inapplicable](api/runtime/script-call-inapplicable.md): a behaviour called `entity.visible = …` on an entity with no mesh, sprite or children, or `ctx.ui.set("screen:node", …)` on a screen that i… - [script-error](api/runtime/script-error.md): a behaviour threw, ran away (work budget or hard cap) or was interrupted, and is disabled from that frame on; `disabled: false` marks the t… - [script-import](api/runtime/script-import.md): a behaviour imports something the engine does not bundle: an npm package, a Node built-in, a file outside the project, a value from the typ… - [script-unknown-hook](api/runtime/script-unknown-hook.md): a behaviour's default export has a member named like another engine's hook (`Update`, `Start`, `FixedUpdate`, `OnTriggerEnter`, `_process`)… - [script-warning](api/runtime/script-warning.md): a behaviour did something the engine accepted but that is almost certainly a mistake; the log line and the `script_warning` event carry the… - [selftest-bad-scenario](api/runtime/selftest-bad-scenario.md): the scenario is not JSON, lacks `"selfTest": 1`, has a key the format does not know, or names a path outside the project (rooted, a drive o… - [selftest-crashed](api/runtime/selftest-crashed.md): the engine stopped with an internal error while playing the scenario - [selftest-load-failed](api/runtime/selftest-load-failed.md): the scene did not load (it does not validate, or a file it needs is missing), so no step ran - [selftest-not-found](api/runtime/selftest-not-found.md): the named scenario is not `selftest/.json` (or the project-relative `.json` named) in the project, or none was named and the project… - [selftest-too-long](api/runtime/selftest-too-long.md): `maxFrames` is over 36,000 (ten simulated minutes), or `timeout` is not 1 to 300 seconds - [sensor-shape-unsupported](api/runtime/sensor-shape-unsupported.md): the attached entity's trigger collider is not a box, sphere or capsule, which is what a sensor queries with - [session_mismatch](api/runtime/session-mismatch.md): 409: the session id or nonce is another server's (a restarted game on the same port) - [session_required](api/runtime/session-required.md): 428: this endpoint needs a session identity and the request had none - [snapshot-modified](api/runtime/snapshot-modified.md): the revision's files changed on disk after it was recorded - [spawn-bad-override](api/runtime/spawn-bad-override.md): an `overrides` key does not apply to the prefab (no such entity, component or path), overrides were given with `like`, or the prefab with t… - [spawn-duplicate-id](api/runtime/spawn-duplicate-id.md): the `id` asked for is empty or already taken by a live entity - [spawn-no-source](api/runtime/spawn-no-source.md): `ctx.world.spawn` was called with neither `like` nor `prefab`, so it names nothing to spawn (`SpawnError`) - [spawn-prefab-cycle](api/runtime/spawn-prefab-cycle.md): `prefab` names a prefab that nests itself, directly or through other prefabs (`prefab-cycle` in `engine check`); it has no finite copy, so… - [spawn-two-sources](api/runtime/spawn-two-sources.md): `ctx.world.spawn` was given both `like` and `prefab`; it spawns one or the other - [spawn-unknown-prefab](api/runtime/spawn-unknown-prefab.md): `prefab` names no prefab file of the scene's project, or one the contract refused at load (the load log and `engine check` say why), or the… - [spawn-unknown-source](api/runtime/spawn-unknown-source.md): no live entity has the id `like` names; spawn copies an entity the scene already has - [spawn-unsupported](api/runtime/spawn-unsupported.md): this world cannot spawn entities (a headless or mock world) - [splat-view-outside](api/runtime/splat-view-outside.md): the camera stood more than 1 m outside where a `splat` capture was taken (its camera trajectory, or its bounds when none is known), so the… - [spring-bone-unknown](api/runtime/spring-bone-unknown.md): a chain or collider names a bone the skeleton does not have (the message lists the bones it has), or the entity has no skeleton to swing (n… - [spring-chain-bad](api/runtime/spring-chain-bad.md): a chain is not a path down the skeleton: its `tip` is not below its `root`, a `joints` bone is not the child of the one before, or a bone i… - [sprite-frame-unknown](api/runtime/sprite-frame-unknown.md): `ctx.sprite.frame` was set to a name no frame of the sprite has - [sprite-image-missing](api/runtime/sprite-image-missing.md): a sprite picture's asset did not load: it is not in `scene.assets`, not a `texture` asset, its file is missing or not an image the engine r… - [sprite-play-unknown](api/runtime/sprite-play-unknown.md): `play` named an animation the sprite's component does not declare, or a `then` that is not one of its animations; the message lists the one… - [sprite-rect-outside](api/runtime/sprite-rect-outside.md): a view's `rect` reaches outside its image, so it was clamped to the image's edges - [stale_stamp](api/runtime/stale-stamp.md): 409: an exact read named a committed state the server no longer has - [synth-bad-name](api/runtime/synth-bad-name.md): `name` is missing or is not 1 to 64 of `a-z 0-9 - _` starting with a letter or digit; it becomes the asset id and the file name - [synth-bad-param](api/runtime/synth-bad-param.md): a parameter is the wrong kind or out of its range: a frequency outside 1 to 20,000 Hz, a wave or filter type the synthesiser does not have,… - [synth-bad-sample-rate](api/runtime/synth-bad-sample-rate.md): `sampleRate` is not a whole number from 8,000 to 48,000, or was given with a preset (a preset is made at 44,100 Hz) - [synth-bad-spec](api/runtime/synth-bad-spec.md): the description names both `preset` and `voices` or neither, has a field that level does not take, or pairs `options` with voices or `drive… - [synth-failed](api/runtime/synth-failed.md): the synthesiser ran and did not write the sound (it threw, printed no answer, or ran past 60 s) - [synth-not-found](api/runtime/synth-not-found.md): Node, or the recipe's `synth.mjs` (under the SDK folder or a checkout), is not on this machine - [synth-too-large](api/runtime/synth-too-large.md): the WAV would be over 1 MiB (about 11.9 s at 44.1 kHz) - [synth-too-long](api/runtime/synth-too-long.md): the sound would be longer than 12 s, an echo's tail included - [synth-unknown-preset](api/runtime/synth-unknown-preset.md): `preset` is not one of the recipe's: `blip`, `whoosh`, `engine-loop`, `explosion`, `jingle` - [teleport-heading-ignored](api/runtime/teleport-heading-ignored.md): a tool's `POST /entity/{id}/teleport` gave the character the camera films a `yaw`, and two ticks later the view still faces more than 0.1 r… - [teleport-position-ignored](api/runtime/teleport-position-ignored.md): a tool's teleport (`POST /entity/{id}/teleport`, an editor drag during Play, a test harness) moved an entity at least 0.25 m, and two ticks… - [terrain-multiple](api/runtime/terrain-multiple.md): a scene has a second entity with a `terrain` component; only the first one gets collision, and the log says which entity was refused (`repo… - [terrain-volume-invalid](api/runtime/terrain-volume-invalid.md): the terrain file has an enabled `volume.shape` or `volume.cliff` op and this engine build has no volume support (the `terrain-volume` featu… - [tilemap-layer-unknown](api/runtime/tilemap-layer-unknown.md): `ctx.tilemap.get`, `set` or `size` named a layer the component does not have; the message lists the ones it has - [tilemap-sheet-short](api/runtime/tilemap-sheet-short.md): the tileset image is smaller than `grid` × `tileSize` (with `margin` and `spacing`) says; tiles past its edge draw nothing - [time.after-invalid](api/runtime/time-after-invalid.md): `ctx.time.after` was given seconds that are negative or not finite, or was called outside a behaviour's hook or listener (`RangeError`); no… - [timeout](api/runtime/timeout.md): 503: the simulation did not answer in time (paused in a debugger, blocked on a load, shutting down) - [ui.activate.blocks](api/runtime/ui-activate-blocks.md): the node is a blocker: it takes a click only to stop one reaching the game, and activates nothing - [ui.activate.clipped](api/runtime/ui-activate-clipped.md): a clipping ancestor removes every pixel of the node, and no scroll container above it brings the node into view (activation scrolls those f… - [ui.activate.disabled](api/runtime/ui-activate-disabled.md): the node is disabled, and a disabled node refuses activation - [ui.activate.hidden](api/runtime/ui-activate-hidden.md): the node is under `display: none`, so it is not laid out or drawn - [ui.activate.no-such-node](api/runtime/ui-activate-no-such-node.md): no screen on the stack holds that id - [ui.activate.not-hittable](api/runtime/ui-activate-not-hittable.md): the node answers no hit test; on a click-through screen a node must say `hit="always"` - [ui.activate.not-interactive](api/runtime/ui-activate-not-interactive.md): neither the node nor any ancestor of it takes activation - [ui.activate.not-on-top](api/runtime/ui-activate-not-on-top.md): the node's screen is not the topmost screen taking input - [ui.activate.occluded](api/runtime/ui-activate-occluded.md): another node is painted over the point a click would land on - [ui.asset.atlas-budget](api/runtime/ui-asset-atlas-budget.md): the project's UI images are over the 32 MB atlas budget - [ui.asset.image-missing](api/runtime/ui-asset-image-missing.md): an `Image` or `Icon` names a file that is not in the project; a placeholder is drawn - [ui.bind.unknown-node](api/runtime/ui-bind-unknown-node.md): a binding names a node the screen does not have - [ui.bind.unknown-prop](api/runtime/ui-bind-unknown-prop.md): a binding names a property that is not bindable - [ui.bind.value-kind](api/runtime/ui-bind-value-kind.md): the bound value is the wrong kind for the property - [ui.css.calc](api/runtime/ui-css-calc.md): `calc()` is not supported - [ui.css.combinator-depth](api/runtime/ui-css-combinator-depth.md): a selector chains more than two child or descendant combinators (one inside `@size`) - [ui.css.deferred-property](api/runtime/ui-css-deferred-property.md): a property this engine has not implemented yet - [ui.css.duplicate-declaration](api/runtime/ui-css-duplicate-declaration.md): the same property twice in one rule; the last wins - [ui.css.important](api/runtime/ui-css-important.md): `!important` is not supported - [ui.css.media-query](api/runtime/ui-css-media-query.md): media queries are not supported - [ui.css.physical-side](api/runtime/ui-css-physical-side.md): a physical side (`left`, `margin-right`) where a logical one mirrors for right-to-left locales - [ui.css.reserved-token](api/runtime/ui-css-reserved-token.md): an attempt to define a token the engine reserves - [ui.css.syntax](api/runtime/ui-css-syntax.md): the stylesheet does not parse at that point - [ui.css.unknown-at-rule](api/runtime/ui-css-unknown-at-rule.md): an at-rule the engine does not support - [ui.css.unknown-function](api/runtime/ui-css-unknown-function.md): a CSS function the engine does not support - [ui.css.unknown-property](api/runtime/ui-css-unknown-property.md): a property the engine does not support - [ui.css.unknown-selector](api/runtime/ui-css-unknown-selector.md): a selector form outside the supported subset - [ui.css.unknown-semantic](api/runtime/ui-css-unknown-semantic.md): a semantic colour or token name the theme does not define - [ui.css.unknown-size-class](api/runtime/ui-css-unknown-size-class.md): a size class the engine does not define - [ui.css.unknown-unit](api/runtime/ui-css-unknown-unit.md): a unit the engine does not support - [ui.css.unknown-value](api/runtime/ui-css-unknown-value.md): a value the property does not take - [ui.css.value-range](api/runtime/ui-css-value-range.md): a value outside the range the property takes - [ui.describe.format](api/runtime/ui-describe-format.md): the screen description is not the format the engine reads - [ui.describe.model-view-subject.tentative](api/runtime/ui-describe-model-view-subject-tentative.md): TENTATIVE (code to be numbered): a `model-view` names neither `asset` nor `entity`, so it draws an empty box - [ui.describe.model-view-value.tentative](api/runtime/ui-describe-model-view-value-tentative.md): TENTATIVE: a `model-view` attribute is not a documented spelling (`camera`, `yaw`, `spin`, `fov`, an empty string, an unknown key) - [ui.describe.root-id](api/runtime/ui-describe-root-id.md): the screen's root carries an id; it is kept as an alias of `:root`, which is the name reports use - [ui.describe.too-large](api/runtime/ui-describe-too-large.md): the description is past the size the engine reads - [ui.describe.unknown-prop](api/runtime/ui-describe-unknown-prop.md): a prop the element does not take - [ui.describe.unknown-role](api/runtime/ui-describe-unknown-role.md): a node's role is not one the engine knows - [ui.describe.value](api/runtime/ui-describe-value.md): a prop's value is the wrong kind, a key repeats among siblings, or the root has an id - [ui.diagnostics.overflow](api/runtime/ui-diagnostics-overflow.md): more diagnostics than the sink holds; the count of the dropped ones is given - [ui.draw.gradient-truncated](api/runtime/ui-draw-gradient-truncated.md): a gradient has more stops than the renderer draws; the rest are dropped - [ui.draw.group-opacity](api/runtime/ui-draw-group-opacity.md): opacity on a group is applied to each child rather than the group as one - [ui.draw.rotate-unsupported](api/runtime/ui-draw-rotate-unsupported.md): a rotation in `transform`; the node is drawn unrotated - [ui.draw.view-box-outside](api/runtime/ui-draw-view-box-outside.md): an `object-view-box` reaches past its image; the part inside is drawn - [ui.focus.nav-target-missing](api/runtime/ui-focus-nav-target-missing.md): a `nav-up`/`nav-down`/`nav-left`/`nav-right` names a node that is not there - [ui.focus.no-focusable](api/runtime/ui-focus-no-focusable.md): a screen that takes input has nothing a pad or keyboard can focus - [ui.focus.no-such-node](api/runtime/ui-focus-no-such-node.md): no screen on the stack holds that id - [ui.focus.not-focusable](api/runtime/ui-focus-not-focusable.md): the node does not take focus, or is disabled - [ui.focus.target-missing](api/runtime/ui-focus-target-missing.md): the initial-focus target names a node that is not there - [ui.focus.unreachable](api/runtime/ui-focus-unreachable.md): the node takes focus and Tab never arrives at it - [ui.font.face](api/runtime/ui-font-face.md): an `@font-face` file is missing or not a font the engine reads; that family's text draws in the chain's font - [ui.font.glyph-missing](api/runtime/ui-font-glyph-missing.md): a bitmap font has no cell for a character in the text; it is skipped - [ui.font.unavailable](api/runtime/ui-font-unavailable.md): the project has screens and no font was found, so the text on them is not drawn - [ui.font.unusable](api/runtime/ui-font-unusable.md): a font file under the project's `ui/fonts/` (or named by an `@font-face` rule) cannot be read as a font (no faces, no family name, or no ma… - [ui.fx.bad-options](api/runtime/ui-fx-bad-options.md): `ctx.ui.fx`'s options were not `{ duration?, delay? - [ui.fx.unknown-node](api/runtime/ui-fx-unknown-node.md): `ctx.ui.fx` named a node no screen on the stack holds, or a bare id that is ambiguous - [ui.fx.unknown-preset](api/runtime/ui-fx-unknown-preset.md): `ctx.ui.fx` named a preset that is not in the library - [ui.get.not-a-field](api/runtime/ui-get-not-a-field.md): the node is not a text field, so it has no value to read - [ui.get.unknown-node](api/runtime/ui-get-unknown-node.md): no screen on the stack holds that id, or a bare id two screens answer to - [ui.get.unknown-prop](api/runtime/ui-get-unknown-prop.md): that property cannot be read - [ui.input.bad-key](api/runtime/ui-input-bad-key.md): no key by that name - [ui.input.no-field](api/runtime/ui-input-no-field.md): text arrived and no text field holds focus, so there is nothing to type into - [ui.layout.failed](api/runtime/ui-layout-failed.md): layout could not place the tree - [ui.layout.grid-placement-ignored](api/runtime/ui-layout-grid-placement-ignored.md): `grid-column` or `grid-row` on an item whose parent is not `display: grid` - [ui.layout.grid-tracks-truncated](api/runtime/ui-layout-grid-tracks-truncated.md): a track list longer than the engine's limit; only the first sixteen are used - [ui.layout.grid-unsupported](api/runtime/ui-layout-grid-unsupported.md): that part of grid is not in the supported subset - [ui.layout.image-zero-size](api/runtime/ui-layout-image-zero-size.md): an `image` whose file loaded laid out with no width or no height, so nothing of it is drawn - [ui.locale.file](api/runtime/ui-locale-file.md): a `ui/locales/.json` the engine cannot use; that one language is dropped - [ui.locale.missing-glyphs](api/runtime/ui-locale-missing-glyphs.md): a locale has characters no font in the project's font chain draws; they show as squares - [ui.locale.missing-param](api/runtime/ui-locale-missing-param.md): a `{name}` slot in a string has no parameter; it draws `key:name` - [ui.locale.unknown](api/runtime/ui-locale-unknown.md): the project ships no locale by that name; the message lists the ones it does - [ui.model-view.count-cap.tentative](api/runtime/ui-model-view-count-cap-tentative.md): TENTATIVE: more than 4 `model-view` nodes are visible; the extras draw only their background - [ui.model-view.unresolved.tentative](api/runtime/ui-model-view-unresolved-tentative.md): TENTATIVE: a `model-view`'s asset path or entity name did not resolve to a mesh; its box draws empty - [ui.scale.out-of-range](api/runtime/ui-scale-out-of-range.md): the UI-scale multiplier is outside the supported range - [ui.screen.bad-json](api/runtime/ui-screen-bad-json.md): the screen's description has an error, or its `render` threw at the props it was given - [ui.screen.compile](api/runtime/ui-screen-compile.md): a screen file failed to compile; it is not registered - [ui.screen.duplicate](api/runtime/ui-screen-duplicate.md): a push or replace named a screen already on the stack, or two screens share a name - [ui.screen.missing](api/runtime/ui-screen-missing.md): a screen names another screen that does not exist - [ui.screen.no-exit](api/runtime/ui-screen-no-exit.md): a screen that takes input has no way back out of it - [ui.screen.prepared](api/runtime/ui-screen-prepared.md): an exported build's prepared screens are missing or unreadable - [ui.screen.props-unbound](api/runtime/ui-screen-props-unbound.md): `render` reads props and the screen declares no scenario, so they were undefined when described - [ui.screen.scenarios](api/runtime/ui-screen-scenarios.md): a screen declares fewer than two scenarios, so the critic and the preview have little to show - [ui.screen.stack-empty](api/runtime/ui-screen-stack-empty.md): the screen stack was left empty where a screen was expected - [ui.screen.tools](api/runtime/ui-screen-tools.md): the screen describer could not start, so no screen was registered and every push is refused - [ui.screen.unknown](api/runtime/ui-screen-unknown.md): no screen answers to that name; the message lists the ones that do - [ui.scroll.not-scrollable](api/runtime/ui-scroll-not-scrollable.md): `scroll-top` or `scroll-left` written to a node that is not a scroll container - [ui.set.bad-value](api/runtime/ui-set-bad-value.md): the property is bindable and the value is the wrong kind for it - [ui.set.unknown-node](api/runtime/ui-set-unknown-node.md): no screen on the stack holds that id, or a bare id is ambiguous - [ui.set.unknown-prop](api/runtime/ui-set-unknown-prop.md): the property is not bindable; the message carries the hint - [ui.stack.empty](api/runtime/ui-stack-empty.md): `pop` with nothing on the stack - [ui.style.gradient-stops](api/runtime/ui-style-gradient-stops.md): a gradient's stops are malformed or out of order - [ui.style.root-size-ignored](api/runtime/ui-style-root-size-ignored.md): a width or height on a screen's root is ignored; the root fills the viewport - [ui.style.token-cycle](api/runtime/ui-style-token-cycle.md): tokens refer to one another in a loop - [ui.style.token-kind](api/runtime/ui-style-token-kind.md): a token's value is the wrong kind for the property using it (a length where a colour goes) - [ui.style.unknown-token](api/runtime/ui-style-unknown-token.md): a `var(--…)` or token names no declared token - [ui.style.unsupported-value](api/runtime/ui-style-unsupported-value.md): a value the engine cannot draw for that property - [ui.theme.unknown](api/runtime/ui-theme-unknown.md): the project's stylesheets declare no theme by that name - [ui.transition.not-animatable](api/runtime/ui-transition-not-animatable.md): a `transition` names a property that cannot be animated; it changes at once - [ui.tree.duplicate-id](api/runtime/ui-tree-duplicate-id.md): two nodes in one screen claim one id - [ui.tree.invalid-id](api/runtime/ui-tree-invalid-id.md): a node id holds `/` or `:`, the id grammar's own separators; the derived id was used instead - [ui.unavailable](api/runtime/ui-unavailable.md): this world has no UI runtime, so every `ctx.ui` call is refused - [ui.viewport.no-surface](api/runtime/ui-viewport-no-surface.md): this source has no surface of its own, so there is nothing to resize - [unavailable](api/runtime/unavailable.md): 503: the command queue is full or the simulation is shutting down - [unchecked-content](api/runtime/unchecked-content.md): a headless worker started with `--require-checked` was given no `--load-descriptor`, so it would run the authoring tree, whose TypeScript n… - [unsupported](api/runtime/unsupported.md): 501: this engine or source does not implement that endpoint - [unsupported_media_type](api/runtime/unsupported-media-type.md): 415: a POST body that is not `Content-Type: application/json` - [vehicle.boost-invalid](api/runtime/vehicle-boost-invalid.md): `vehicle.boost(speed, seconds)` was given a `speed` or `seconds` that is NaN, infinite, zero or negative - [vehicle.not-finite](api/runtime/vehicle-not-finite.md): `ctx.vehicle.drive` was given a `throttle`, `brake`, `steer` or `handbrake` that is NaN or infinite - [vehicle.not-own](api/runtime/vehicle-not-own.md): `drive`, `reset` or `wheels` through another entity's vehicle (`other.vehicle` in a trigger): it can be read and boosted, not driven - [views-layout-unknown](api/runtime/views-layout-unknown.md): `ctx.views.setLayout` was given a name that is not a layout, or `ctx.views.shared` a `split.layout` that is not a two-view split; it throws… - [views-out-of-range](api/runtime/views-out-of-range.md): a `ctx.views` member was given a view number that is not a whole number from 1 to 4; it throws `ViewsError` and nothing changes - [web-export-cancelled](api/runtime/web-export-cancelled.md): the web export was cancelled and the CLI stopped; the output folder is as it was - [web-exporter-failed](api/runtime/web-exporter-failed.md): the engine CLI ended with neither a report nor an error line: it crashed, or it is older than `--json` - [web-exporter-missing](api/runtime/web-exporter-missing.md): no Node, or no engine CLI, to run the web exporter: not named (`ARGUS_ENGINE_CLI`, `ARGUS_NODE`), not installed beside the editor, and no c… - [web-unsupported](api/runtime/web-unsupported.md): a behaviour running in the web runtime called a `ctx` member the web backend does not implement yet; it throws `WebUnsupportedError` naming… - [wheel.not-finite](api/runtime/wheel-not-finite.md): `ctx.wheel.setMotorTorque`, `setBrakeTorque` or `setSteer` was given a NaN or infinite number ## Optional - [What changed](whats-changed/index.html): items added, changed and removed since the previous series - [Changelog](changelog/index.html): the release notes for this version