Talos docs

Runtime codes

What a script is thrown, a query refuses with, or the log prints while a game runs or builds.

NameSummary
animator-clip-missingan 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 the rest pose; printed once per asset when the animator is built and counted in the load report
animator-ik-unknownthe animator declares no IK chain by that name, or the entity has no animator (AnimatorIkError)
animator-layer-bone-unknowna layer's mask (include, exclude or weights) names a bone the rig does not have; printed once per asset when the animator is built, and that layer is left out while the others work
animator-layer-unknownplay(name, { layer }), layerWeight or stopLayer named a layer the animator component does not declare in layers, or the entity has no animator (AnimatorLayerError)
animator-look-at-missingthe animator component declares no lookAt, or the entity has no animator (AnimatorLookAtError)
animator-loop-seama 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 pose jumps at every wrap; printed once per asset and state when the animator is built, listed on GET /feel → loop_seams
animator-morph-unknownctx.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 or its model no morph targets (AnimatorMorphError)
animator-param-unknownthe animator declares no parameter by that name, or the entity has no animator (AnimatorParamError)
animator-play-invalida blend or blendOut time is negative or not a number (AnimatorPlayError)
animator-play-unknownplay named a state, or a then, the animator does not have (AnimatorPlayError)
animator-retarget-clips-invalidan asset in retarget.clips has no skeleton and clips, or its skeleton lacks the canonical humanoid's required bones, so its clips were not retargeted; printed once per asset
animator-retarget-suspectthe 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 character's right for a rig facing +Z), or it leaves out the chest, neck, head or shoulders; printed once per asset
animator-root-motion-hipsa rootMotion state plays a clip whose root does not travel but whose hips (the canonical Hips through retarget.map, or a joint of that name) travel more than half a metre on the ground, and the animator has no rootMotionFrom, so the mesh walks away from a capsule that does not move; printed once per asset and state when the animator is built
animator-root-motion-joint-missingthe 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 the field were absent; printed once per asset
animator-stride-ratea 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's ground speed (measured from its feet or root, or its refSpeed) is far from where it sits; printed once per asset and point when the animator is built, listed on GET /feel → strides
animator-transition-unheardan animator has transitions whose on nothing hands to it: the entity runs no built-in animator behaviour (the script that matches on against bus events), or runs one whose events prop leaves the name out and it is not one of the controller's moving, idle, jump, land; the transition is never taken and the state never changes; printed once per asset and set of names when the animator is built
animator-unknownset named a state the animator does not have, so nothing changed; printed once per entity and name, every call counted on GET /feel → animator_misses
animator-window-unreachablea one-shot state (once, or ctx.animator.play with blendOut) plays a clip with a window event (until) that opens at or after the hand-back time (the clip's length less blendOut) or past the clip's end, so a cancel or active window authored there is never usable; printed once per asset when the animator is built (counted in the load report) and once per state and options on play
at_capacity503: a bounded resource is full, so the request was refused rather than queued
attach-bone-unknownthe 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-missingthe 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-stackedthree or more loops of one sound play at once with none placed in the world (ctx.audio.play(asset, { loop: true }) without at, or looping non-spatial audio components), so they add up in the centre to one sound up to 20·log10(n) dB louder that masks the rest of the mix: usually one loop per entity, such as every car's engine; said once per asset, against the behaviour (or the audio component's entity) that started the third
author-failedan authoring script (authoring/<name>.ts, run by behaviour.write with run) did not run to the end: it threw (with its line), a read it made was refused (outside the project, a dot-folder, node_modules, a link out, not text, over 16 MB), it ran past 10 s or 256 MB or made over 20,000 entities, or its default export is not a function; the scene is left as it was
bad_request400: the body or query parameters are wrong; the message quotes what was expected
behaviour-detacheda Behaviour instance's engine members were used on an instance the engine did not construct (new MyBehaviour() in a script)
behaviour-hook-unknowna class X extends Behaviour has a method Behaviour never calls — Awake, FixedUpdate, LateUpdate, OnTriggerStay, OnCollisionStay, OnCollisionExit, or an object-form hook such as update; thrown in init
behaviour-prop-unknowna 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 the behaviour); the message lists the fields
body.not-finitea ctx.body force, torque, impulse or point has a NaN or infinite component
body.not-ownwheels through another entity's body (other.body in a trigger): it can be pushed and its velocity set, not its wheels driven
body.space-invalida ctx.body push was given a space other than "world" or "local"
body.velocity-not-dynamicctx.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 of its own to set
build-not-readythe revision asked for has no Ready build
build-pipeline-runninga build pipeline already runs for this workspace
build-pipeline-stoppingthe build pipeline is stopping
build.asset-missinga 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 folder) is not in this revision where it resolves; Play and export refuse the scene (content-incomplete), a bare argus run draws a placeholder. Also on a scene write (scene.patch and the other structural tools), checked on disk
build.asset-outside-projectan asset path leads outside the project, so no revision holds it
build.font-unusablea .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 it (ui.font.unusable) and draws with the other fonts. The warning names the file and why
build.importa behaviour imports something the engine does not bundle (an npm package, a Node built-in, a file outside the project, a value from @argus/api); the message opens with script-import
build.infrastructurethe build could not read its own inputs
build.material-layer-missinga 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 own folder) is not in this revision; the layer is left out at run time (HD) rather than the scene refused. Also on a scene write, checked on disk
build.module-loada behaviour threw while its module was evaluated
build.module-not-founda scene names a script module with no .ts or .js file
build.module-outside-projecta script module path leads outside the project
build.module-unreadablea built-in module could not be read
build.not-publishedevery check passed, but publishing the build failed
build.sandboxa behaviour touches something the engine's sandbox does not provide (window, fetch, require, …)
build.scene-invalida scene breaks a contract rule; the message opens with the rule's code
build.scene-warninga scene triggers a contract warning; the message opens with the rule's code
build.shader-hd-partialan 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 what is pending (the same words as the runtime code render.hd.user-shader-partial): per-entity floats, transmission, tonemap: off on unlit. A family HD cannot draw at all is not a warning: the export is refused (project-invalid) naming the material, the shader and why
build.shader-pass-not-exportedthe project contains a *.shader.wgsl with //! kind: pass; nothing in a project runs pass shaders yet, so the export leaves it out of the pack
build.shader-scene-prewarm-heavya 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 would hitch
build.startup-scene-missingthe project's startupScene is not in this revision
build.toolchain-unavailablethe TypeScript toolchain could not be found, so behaviours were not checked
build.transpilea behaviour does not compile (esbuild's error)
build.transpile-failedesbuild itself did not run to its end, or a .js behaviour does not parse
build.typechecka behaviour has a TypeScript type error at the line and column given
build.typecheck-failedthe TypeScript checker itself did not run to its end
camera-fov-overrides-scenea 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's is never seen; said once until ctx.camera.follow(null), with the scene camera as the entity
camera-overlay-not-drawnthe scene has a camera with output: "overlay", which the engine does not draw yet; the screen view is drawn without it. Said once per load, naming the camera
camera-point-invalidGET /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 entity together with x, y or z; the query server answers 400 and the message names the problem
camera-probe-wider-than-bodyctx.camera.set's probeRadius is wider than the body the camera follows, so the arm sweeps the body's radius instead; said once per follow target, with the followed entity as the entity
camera-view-unknownGET /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, no more than the views ctx.views has set); the query server answers 400 and the message says how many views are live
capability_denied403: the session does not grant what the endpoint needs
component-absentthe entity has no component of that kind to read or write (ComponentWriteError)
component-field-typea field was given a value of the wrong type (a colour that is not #rrggbb or [r, g, b] in 0..1, …)
component-field-unknownthe component has no writable field by that name
component-not-writablethat component cannot be written at run time; entity.set takes material, light or mesh
data.recordctx.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, a boolean or a string of at most 256 characters; the call throws and nothing is recorded for that tick
entity-despawneda handle kept across frames names an entity that has since been despawned (DespawnedEntityError); from a per-tick hook it ends that call only and the behaviour keeps running (disabled: false), from init it disables the behaviour
entity.not-finiteentity.yaw was set to NaN or an infinite number (RangeError); the rotation is unchanged
entity.parent-cycleentity.setParent was given this entity or one of its descendants as the parent, which would make the hierarchy a loop (RangeError); nothing changed
entity.parent-despawnedentity.setParent was given a handle whose entity has been despawned (ReparentError); nothing changed
entity.parent-unknownentity.setParent was given a scene id no live entity has (ReparentError); nothing changed
face-degraded<entity>: <what is missing>; that part is off: the model has none of the ARKit shapes for blinks, brows, cheeks or gaze, a bone named in head or eyes is not in the rig, or no head bone was found so head motion is off. Once per entity
files-bad-jsonreadJson was given a file that is not JSON; the message has the line and column
files-missingthe project has no file at that path, the path names a folder, or a segment's case differs from the file's
files-not-textthe file is not UTF-8 text
files-path-refusedthe 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 . segment, or reaches outside the project through a symbolic link
files-too-largethe file is over 1 MiB, the most ctx.files reads
fluid.sample-invalidctx.water.sample or ctx.wind.sample was given a coordinate that is NaN or infinite (RangeError); nothing is read
host_rejected403: the Host header does not name this server by a loopback name (DNS rebinding, or a client that set Host)
input-binding-aritythe 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 alternate sets of them back to back
input-no-mapthis world has no action map, so there is nothing to rebind
input-read-without-routingA behaviour read ctx.input on an entity that has the handle (a controller or vehicle) but that player input is not routed to: input reaches one entity, the scene's spawn { "for": "player" } beside another component (else the first controller, else the first vehicle), so every action on this one reads false and every axis zero. Said once per entity per session, with the entity as the entity
input-unknown-actionthe context (the live one, or the one rebind named) binds no action by that name
input-unknown-bindinga bare token matched no device, or a pad:/mouse: name is not one
input-unknown-contextctx.input.rebind or bindings named a context the scene's input map does not have
input-unknown-keya keys entry, or a key:-prefixed token, is not a key name
instances-format-unsupportedthe .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-invalidthe 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 rotation, a scale not above zero), or carries a different number of custom floats than customData names
instances-source-missingthe instancedMesh component's source file is missing or unreadable, so it has no instances
internal500: the engine failed while answering
joint.limits-invalidctx.joint.setLimits was given something other than [min, max] with both finite and min at most max, or null
joint.motor-invalidctx.joint.setMotor was given a target that is not finite, a maxForce, stiffness or damping that is negative or not finite, a mode other than velocity or position, or no maxForce for the joint's first motor
lipsync-degradedthe 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 all, or no morph targets), or the track did not load, did not parse, or was made for another sound (the mouth follows loudness instead), or the voice streams so its loudness is not read at load. The message says which
look-lut-path-emptya colour LUT was given with no path, so it was dropped
look-range-inverteda look range's minimum was above its maximum; the maximum was raised to it
look-value-not-finitea camera look value was NaN or infinite and its default was used
look-value-out-of-rangea camera look (post-processing) value was outside its range and was clamped
mesh-material-name-unknowna 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 if the entry were absent. The message lists the names the model has, once per model and name
mesh-uv-missinga 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 colour, and the model's other meshes keep their textures. Printed once per model when it loads, naming the meshes
nav-bounds-required400 on GET /navmesh: the navmesh has more polygons than one answer carries
nav-bounds-too-large400 on GET /navmesh: more polygons fall inside the bounds than one answer carries
nav-undeclaredthe scene declares no navigation, so it has no navmesh to route on
not-newest-revisiona newer revision has been submitted, so this one is not built
not_found404: the named entity, frame or navmesh does not exist
null-handlea 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_rejected403: the request came from a web page on another site (Origin)
particles-collide-unavailablea *.vfx.json effect has a collide module, but the engine was built without the vfx-collide cargo feature, so the effect runs without collision; said once per effect
particles-effect-unknownctx.particles.play named an effect the scene did not load, so nothing played (it also counts in unwired.particles_emit); said once per name
particles-override-ignoreda 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 the others applied; said once per key
particles-param-unknownan effect param was not applied: the particles component's params, a ctx.particles.play call or ctx.particles.setParam named a param the effect does not declare, or gave a value that does not fit its type (a number param takes a number; a vec3 [x, y, z]; a colour [r, g, b, a] or "#rrggbb"); said once per source and name
particles-texture-missinga *.vfx.json emitter's sprite texture did not load, so that emitter draws the built-in sprite; said once per emitter
physics.buoyancy.force-refusedthe solver refused a buoyancy force on a body that should be dynamic (a non-finite force, or a body that stopped being dynamic); reported once per entity, and that body is not floating
physics.buoyancy.probe-capa 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 used the largest grid under the cap or the first 256 probes
physics.layer-unknownan entity's layer (or a camera's layers, hideLayers or rig.collisionLayers) names a layer the project does not declare, and the scene has no table the layer-unknown rule could check it against (no project, no meta.layers) or the entity was spawned after the check; the entity is put on default. Reported once per name, on stderr and by World::layer_problems. As the layers option of ctx.world.raycast / shapeCast it is thrown as a RangeError and the cast is not made
physics.water.lake-capthe scene has more than 4 water components; only the 4 with the highest levels count (ties by priority, then scene order) and the rest are ignored
physics.water.river-capthe terrain's hydrology has more than 32 rivers or 256 k centreline points under waterways; the rivers with the smallest discharge are dropped (the log lists their ids) and bodies do not float on them
plant-bake-missinga recipe has no cooked meshes in the project's state folder, or its bake.json lists a mesh that is gone
plant-bake-stalethe 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-hda project with kind "2d" asks for render.profile "hd"; a 2D project draws with the standard renderer, so this one does (the validator says so too)
quality-custom-defaultsa custom quality profile without basedOn left out optional knobs (it predates them), so they took their declared defaults; said once, naming them
quality-custom-missingthe preset is Custom and no Custom knobs were given, so High was used
quality-not-available-in-rendererthis renderer has no path for that value yet, so the knob fell back
quality-unsupported-on-devicethe GPU cannot do what the knob asks, so it fell back to what it can
quality-value-not-a-stepa 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-finitea quality knob was NaN or infinite and the preset's value was used
quality-value-out-of-rangea quality knob was outside its range and was clamped
quality-value-unknowna 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 value (transparency.sorting: per-instance; hair.mode: cards)
render-backend-forced-unavailablethe project forces a graphics backend (render.backend "vulkan" or "dx12") that cannot start on this machine (no adapter on it, or DirectX 12 off Windows); the game stops rather than fall back.
render-decal-range-inverteda decal fade ended before it started; the end was moved to the start
render-decal-rotation-not-unita decal rotation was not a unit quaternion and was normalised (identity when zero)
render-decal-texture-unknowna decal named a texture that was never registered, so that channel has none
render-decal-value-not-finitea decal value was NaN or infinite and its default was used
render-decal-value-out-of-rangea decal value was outside its range and was clamped
render-decals-over-budgetmore decals than the budget; the lowest-priority ones were dropped
render-decals-unsupportedthe device cannot run the decal pass, so no decal is drawn
render-tonemap-substitutedmeta.render.tonemap names a curve the renderer does not have: on the standard renderer HD's unreal-filmic, drawn as aces; on HD aces, drawn as unreal-filmic (ACES-based)
render.hd.black_framean 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; record.json counts them in blackFrames. Usually a closed mesh around the camera: its ray-traced shadows block every light outside it, and GI replaces the flat ambient with what bounces inside
render.hd.cloud_shadow_unavailablethe 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 or the particles
render.hd.ground-cover-no-heightreserved: 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-budgetreserved: 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_unavailablethe device allows fewer than 18 sampled textures per shader stage, so HD leaves out the terrain horizon map: terrain casts no shadow past the sun's shadow distance and valleys get the open sky's light
render.hd.pass-point-skippeda 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-budgetswaying virtual-geometry instances within the ray-tracing deformation range (RtCoreDesc::deform_wind_range) are tracing their undeformed shape (sheared by the stem sway) because the per-frame deformation budget (deform_budget_instances, deform_budget_vertices) or the slot cap (deform_max_wind_slots) is spent; logged when it starts, the count is RtStats.deform.over_budget
render.hd.rt-proxy-invalida 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 triangles, has more than 65,536 triangles, or names a material slot the mesh does not have; the mesh was not added
render.hd.rt_mesh_proxieda 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 through an automatic simplified copy (about an eighth of its triangles, between 20,000 and 250,000, fewer only if that does not fit) in place of the full mesh; the copy is rebuilt on each load, not cached, so a mesh of millions of triangles adds simplification time to its load: shadows, reflections and GI see the simplified shape, within the measured self-hit distance; raster stays at full detail. Named once per mesh. A mesh whose simplified copy does not fit either is render.hd.rt_mesh_too_large
render.hd.rt_mesh_too_largea 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), so that mesh is drawn but not ray traced (a static mesh first gets an automatic simplified copy, render.hd.rt_mesh_proxied; this is for a mesh whose copy does not fit either, or a skinned or morph mesh): it casts no ray-traced shadow and shows in no ray-traced reflection or GI. For a skinned or morph mesh each traced instance takes its own copy, so in a crowd the instances past the limit are drawn but not traced; the skinned meshes' own rest and skin pools are held to the same limit. Named once per mesh
render.hd.rt_unavailablethe device or build has no ray tracing, so HD3 ray-traced effects are off
render.hd.screen-fx-viewsa frame of several views (a headset's stereo pair) on HD cannot draw screen effects or user-shader particles, so it draws without them; said once
render.hd.shading_substituteda material draws with vertex (Gouraud) shading (meta.render.shading or a material file's shading), which HD lights per pixel rather than per vertex: diffuse only, no specular, metal, normal or ORM map
render.hd.splat_formata 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 coloured point cloud, or a .splat whose size is not whole 32-byte records); nothing was loaded
render.hd.splat_too_largea 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_truncateda Gaussian splat file ends before the data its header promises; nothing was loaded
render.hd.unavailablethe HD renderer could not start on this device, so the standard renderer draws instead
render.hd.user-rt-staticHD's ray-traced paths (reflections, global illumination, ray-traced shadows through a cut-out) see a drawn user family as a bake made once when its materials register: its surface() at time 0, instanceRandom 0.5, white vertex colour, no wind and a flat card facing the viewer, 256x256 texels by default. Once per family, when its source reads one of those inputs (in.time, in.wind, in.instanceRandom, in.viewDir, in.screenUv, in.frontFacing, in.worldPos, in.objectPos, in.normal, in.tangent, its whole input passed to a helper) or the header declares per-entity floats (they bake at the header defaults); the line names them. Raster draws the live surface, so reflections of a family that animates or varies per entity show its frozen look
render.hd.user-shader-partialHD 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, blend)) and what is pending. Either the family is not drawn by HD at all and its materials draw the family's flat PBR fallback (a vertex() family needs HD's vertex stage; a device without the bindless texture table; or its pipeline did not build), or it is drawn (opaque and mask lit/unlit in the G-buffer pass; stylized, blend, add and reads: depth in the forward and weighted-OIT passes) and names the paths still on the fallback: ray-traced hits when the family has no bake (reflections, global illumination, ray-traced shadows; with ray tracing on, a drawn family's materials are baked at the end of the load (when they register, after it) and that is not pending), per-entity floats (they read the header defaults), transmission. A G-buffer family's meshes may be virtual geometry (its own merge draws them); a forward family's stay raster and say nothing; a family whose virtual-geometry merge did not build says so, and those pixels show the fallback
render.hd.vg_resident_fulla headless run, capture or --record keeps frames exact, so virtual-geometry pages never stream; a mesh whose pages no longer fit the resident pool is drawn as an ordinary mesh instead
render.hd.vg_streaming_autothe virtual-geometry meshes' pages no longer fit one resident pool, so they stream within it from then on (coarser detail loads first, finer detail follows the view)
render.hd.water.river-flow-inconsistentfor one river the discharge its drawn geometry carries (width, depth, speed) and the terrain's flow_m3s differ by more than 4 times, once per river; speed follows the geometry
render.hd.water.river-id-unknowna waterways override names a river, waterfall or lake id the terrain's hydrology does not hold (ids change when the terrain's drainage does); the override is ignored
render.hd.water.river-junction-gapa 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-effecta screen effect listed in the scene's render settings was skipped (its shader did not build or its params were refused) or the renderer refused the set, so the frame draws without it
render.shader.compiled-after-loada user shader's pipeline was first compiled after the scene loaded, so one frame hitched; the pre-warm list did not hold it. On HD the line can name a family's variant (shader family X (two-sided, skinned) in HD) first drawn after the load: it builds behind the frames and its draws show the material's fallback until it is ready
render.shader.downgradeda shader effect this device or renderer cannot draw was replaced by the nearest one it can, as on web, phones and the standard renderer where HD features do not apply; the line names what changed (also named at export time for a raw screen derivative in an HD project's hit and bake variants)
render.shader.fallbacka user shader's pipeline failed to compile, once per shader family; its materials draw with the built-in fallback derived from the shader at t=0 (its average base colour, emission, roughness and metallic)
render.shader.families-manymore shader families are visible than the advised count for the target (64 on web, Android and iOS), so draws and pipelines cost more than they need
render.shader.param-droppeda 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 the new default draws; the line names the shader, the material and the param
render.shader.reload-failedan 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 draws the running version and cannot draw the new one (the line names why, e.g. the edit adds vertex()); the hot reload returns the same text as a shader-compile-error
render.shader.vg-skippeda 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_hda 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-ignoreda material file's layer has maskFrom (procedural coverage from the mesh's height and facing), which only the HD renderer draws; once per material, the standard renderer blends that layer by its mask alone
replay-bad-filethe replay file cannot be read, is not a Talos replay, is a format this engine does not read (it reads formats 1 to 3), has lines out of order, has a menu line ("ui") that is malformed or in a format 1 file, or has a pointer line ("p") that is malformed or in a format 1 or 2 file
replay-camera-unknown--replay-camera entity:ID names an entity the scene does not have
replay-engine-mismatchthe replay was recorded by another engine version, which does not promise the same simulation
replay-scene-mismatchthe 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--seed names a different seed than the replay was recorded with
replay-start-mismatchthe world is not at the tick the replay starts from
road-material-unknownthe 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-invalidthe 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-missingthe road component's source file is missing or unreadable, so the road, its walls and its gates were not built
road.atctx.world.road(name).at(s) was given an s that is NaN or infinite (RangeError); nothing is answered
save-bad-keythe key is not 1 to 64 characters of A-Z a-z 0-9 . _ -
save-fullwriting the value would take the save file past its size limit
scene-invalidthe scene file is not a valid scene; the message lists the contract violations
scene-load-faileda scene switch was refused and the current scene is still running; the event's code says why
scene-missingthere is no scene file at that path in this project
scene-no-rootthis world was opened from a document, not a file, so it has no folder to resolve a scene path against
scene-path-refusedthe scene path breaks a project-path rule (absolute, .., outside the project)
script-call-inapplicablea behaviour called entity.visible = … on an entity with no mesh, sprite or children, or ctx.ui.set("screen:node", …) on a screen that is not on the stack; the call did nothing and the behaviour kept running; said once per entity or screen and call per session
script-errora behaviour threw, ran away (work budget or hard cap) or was interrupted, and is disabled from that frame on; disabled: false marks the two that leave it running: a stale handle from a per-tick hook, and an update over its wall-clock budget (phase budget) for 10 ticks in a row, reported at once and then at most every 600 ticks
script-importa behaviour imports something the engine does not bundle: an npm package, a Node built-in, a file outside the project, a value from the types-only @argus/api, or @argus/gameplay with no gameplay build to bundle it from; the load is refused, naming the file and line
script-unknown-hooka behaviour's default export has a member named like another engine's hook (Update, Start, FixedUpdate, OnTriggerEnter, _process) or a Talos hook in the wrong case, which the engine never calls; said once per module version at load, and refused by behaviour.write's check when the export is not written with satisfies Behavior
script-warninga behaviour did something the engine accepted but that is almost certainly a mistake; the log line and the script_warning event carry the specific code (e.g. null-handle)
selftest-bad-scenariothe 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 or share, .., or a link or junction out of it)
selftest-crashedthe engine stopped with an internal error while playing the scenario
selftest-load-failedthe scene did not load (it does not validate, or a file it needs is missing), so no step ran
selftest-not-foundthe named scenario is not selftest/<name>.json (or the project-relative .json named) in the project, or none was named and the project has no selftest/*.json
selftest-too-longmaxFrames is over 36,000 (ten simulated minutes), or timeout is not 1 to 300 seconds
sensor-shape-unsupportedthe attached entity's trigger collider is not a box, sphere or capsule, which is what a sensor queries with
session_mismatch409: the session id or nonce is another server's (a restarted game on the same port)
session_required428: this endpoint needs a session identity and the request had none
snapshot-modifiedthe revision's files changed on disk after it was recorded
spawn-bad-overridean overrides key does not apply to the prefab (no such entity, component or path), overrides were given with like, or the prefab with them fails the contract
spawn-duplicate-idthe id asked for is empty or already taken by a live entity
spawn-no-sourcectx.world.spawn was called with neither like nor prefab, so it names nothing to spawn (SpawnError)
spawn-prefab-cycleprefab names a prefab that nests itself, directly or through other prefabs (prefab-cycle in engine check); it has no finite copy, so it is refused at load and every spawn of it, or of a prefab that nests it, answers this
spawn-two-sourcesctx.world.spawn was given both like and prefab; it spawns one or the other
spawn-unknown-prefabprefab 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 scene is in no project
spawn-unknown-sourceno live entity has the id like names; spawn copies an entity the scene already has
spawn-unsupportedthis world cannot spawn entities (a headless or mock world)
splat-view-outsidethe 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 capture shows streaks and holes from there; printed once as the view leaves, and World::splat_views gives the distance every frame
spring-bone-unknowna 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 (no animator, or its asset has no skin or did not load)
spring-chain-bada 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 is in two chains
sprite-frame-unknownctx.sprite.frame was set to a name no frame of the sprite has
sprite-image-missinga 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 reads, or it is larger than the GPU's largest texture; the frames that show it draw nothing (LoadReport::sprite_images_missing counts them)
sprite-play-unknownplay named an animation the sprite's component does not declare, or a then that is not one of its animations; the message lists the ones it has
sprite-rect-outsidea view's rect reaches outside its image, so it was clamped to the image's edges
stale_stamp409: an exact read named a committed state the server no longer has
synth-bad-namename 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-parama 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, a note name it cannot read, a voice with no dur
synth-bad-sample-ratesampleRate 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-specthe description names both preset and voices or neither, has a field that level does not take, or pairs options with voices or drive/echo with a preset
synth-failedthe synthesiser ran and did not write the sound (it threw, printed no answer, or ran past 60 s)
synth-not-foundNode, or the recipe's synth.mjs (under the SDK folder or a checkout), is not on this machine
synth-too-largethe WAV would be over 1 MiB (about 11.9 s at 44.1 kHz)
synth-too-longthe sound would be longer than 12 s, an echo's tail included
synth-unknown-presetpreset is not one of the recipe's: blip, whoosh, engine-loop, explosion, jingle
teleport-heading-ignoreda 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 rad away from it: a behaviour wrote its own old heading back over the turn (ctx.camera.set with its yaw), so shots and uses aimed along the view still go the old way; said once per teleport, with the character as the entity and teleport as the module
teleport-position-ignoreda 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 later its own motion started back where it was (or more than half the jump from where it was put) while a behaviour wrote its position: that behaviour keeps the position in its own variables (a module-level let, a ctx.state copy) and wrote it over the move; said once per entity per run, with the writing behaviour as the module (native only: the web runtime does not attribute writes yet)
terrain-multiplea scene has a second entity with a terrain component; only the first one gets collision, and the log says which entity was refused (report.terrains_refused)
terrain-volume-invalidthe terrain file has an enabled volume.shape or volume.cliff op and this engine build has no volume support (the terrain-volume feature); the terrain is not built
tilemap-layer-unknownctx.tilemap.get, set or size named a layer the component does not have; the message lists the ones it has
tilemap-sheet-shortthe tileset image is smaller than grid × tileSize (with margin and spacing) says; tiles past its edge draw nothing
time.after-invalidctx.time.after was given seconds that are negative or not finite, or was called outside a behaviour's hook or listener (RangeError); no timer is set
timeout503: the simulation did not answer in time (paused in a debugger, blocked on a load, shutting down)
ui.activate.blocksthe node is a blocker: it takes a click only to stop one reaching the game, and activates nothing
ui.activate.clippeda clipping ancestor removes every pixel of the node, and no scroll container above it brings the node into view (activation scrolls those first)
ui.activate.disabledthe node is disabled, and a disabled node refuses activation
ui.activate.hiddenthe node is under display: none, so it is not laid out or drawn
ui.activate.no-such-nodeno screen on the stack holds that id
ui.activate.not-hittablethe node answers no hit test; on a click-through screen a node must say hit="always"
ui.activate.not-interactiveneither the node nor any ancestor of it takes activation
ui.activate.not-on-topthe node's screen is not the topmost screen taking input
ui.activate.occludedanother node is painted over the point a click would land on
ui.asset.atlas-budgetthe project's UI images are over the 32 MB atlas budget
ui.asset.image-missingan Image or Icon names a file that is not in the project; a placeholder is drawn
ui.bind.unknown-nodea binding names a node the screen does not have
ui.bind.unknown-propa binding names a property that is not bindable
ui.bind.value-kindthe bound value is the wrong kind for the property
ui.css.calccalc() is not supported
ui.css.combinator-deptha selector chains more than two child or descendant combinators (one inside @size)
ui.css.deferred-propertya property this engine has not implemented yet
ui.css.duplicate-declarationthe same property twice in one rule; the last wins
ui.css.important!important is not supported
ui.css.media-querymedia queries are not supported
ui.css.physical-sidea physical side (left, margin-right) where a logical one mirrors for right-to-left locales
ui.css.reserved-tokenan attempt to define a token the engine reserves
ui.css.syntaxthe stylesheet does not parse at that point
ui.css.unknown-at-rulean at-rule the engine does not support
ui.css.unknown-functiona CSS function the engine does not support
ui.css.unknown-propertya property the engine does not support
ui.css.unknown-selectora selector form outside the supported subset
ui.css.unknown-semantica semantic colour or token name the theme does not define
ui.css.unknown-size-classa size class the engine does not define
ui.css.unknown-unita unit the engine does not support
ui.css.unknown-valuea value the property does not take
ui.css.value-rangea value outside the range the property takes
ui.describe.formatthe screen description is not the format the engine reads
ui.describe.model-view-subject.tentativeTENTATIVE (code to be numbered): a model-view names neither asset nor entity, so it draws an empty box
ui.describe.model-view-value.tentativeTENTATIVE: a model-view attribute is not a documented spelling (camera, yaw, spin, fov, an empty string, an unknown key)
ui.describe.root-idthe screen's root carries an id; it is kept as an alias of <screen>:root, which is the name reports use
ui.describe.too-largethe description is past the size the engine reads
ui.describe.unknown-propa prop the element does not take
ui.describe.unknown-rolea node's role is not one the engine knows
ui.describe.valuea prop's value is the wrong kind, a key repeats among siblings, or the root has an id
ui.diagnostics.overflowmore diagnostics than the sink holds; the count of the dropped ones is given
ui.draw.gradient-truncateda gradient has more stops than the renderer draws; the rest are dropped
ui.draw.group-opacityopacity on a group is applied to each child rather than the group as one
ui.draw.rotate-unsupporteda rotation in transform; the node is drawn unrotated
ui.draw.view-box-outsidean object-view-box reaches past its image; the part inside is drawn
ui.focus.nav-target-missinga nav-up/nav-down/nav-left/nav-right names a node that is not there
ui.focus.no-focusablea screen that takes input has nothing a pad or keyboard can focus
ui.focus.no-such-nodeno screen on the stack holds that id
ui.focus.not-focusablethe node does not take focus, or is disabled
ui.focus.target-missingthe initial-focus target names a node that is not there
ui.focus.unreachablethe node takes focus and Tab never arrives at it
ui.font.facean @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-missinga bitmap font has no cell for a character in the text; it is skipped
ui.font.unavailablethe project has screens and no font was found, so the text on them is not drawn
ui.font.unusablea 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 mapped characters); that one font is skipped and the rest of the chain, then the engine's fallbacks, draw. A font named with --font / the font environment variable that cannot be read is an error naming that file instead
ui.fx.bad-optionsctx.ui.fx's options were not { duration?, delay? } in seconds of zero or more
ui.fx.unknown-nodectx.ui.fx named a node no screen on the stack holds, or a bare id that is ambiguous
ui.fx.unknown-presetctx.ui.fx named a preset that is not in the library
ui.get.not-a-fieldthe node is not a text field, so it has no value to read
ui.get.unknown-nodeno screen on the stack holds that id, or a bare id two screens answer to
ui.get.unknown-propthat property cannot be read
ui.input.bad-keyno key by that name
ui.input.no-fieldtext arrived and no text field holds focus, so there is nothing to type into
ui.layout.failedlayout could not place the tree
ui.layout.grid-placement-ignoredgrid-column or grid-row on an item whose parent is not display: grid
ui.layout.grid-tracks-truncateda track list longer than the engine's limit; only the first sixteen are used
ui.layout.grid-unsupportedthat part of grid is not in the supported subset
ui.layout.image-zero-sizean image whose file loaded laid out with no width or no height, so nothing of it is drawn
ui.locale.filea ui/locales/<tag>.json the engine cannot use; that one language is dropped
ui.locale.missing-glyphsa locale has characters no font in the project's font chain draws; they show as squares
ui.locale.missing-parama {name} slot in a string has no parameter; it draws [[key:name]]
ui.locale.unknownthe project ships no locale by that name; the message lists the ones it does
ui.model-view.count-cap.tentativeTENTATIVE: more than 4 model-view nodes are visible; the extras draw only their background
ui.model-view.unresolved.tentativeTENTATIVE: a model-view's asset path or entity name did not resolve to a mesh; its box draws empty
ui.scale.out-of-rangethe UI-scale multiplier is outside the supported range
ui.screen.bad-jsonthe screen's description has an error, or its render threw at the props it was given
ui.screen.compilea screen file failed to compile; it is not registered
ui.screen.duplicatea push or replace named a screen already on the stack, or two screens share a name
ui.screen.missinga screen names another screen that does not exist
ui.screen.no-exita screen that takes input has no way back out of it
ui.screen.preparedan exported build's prepared screens are missing or unreadable
ui.screen.props-unboundrender reads props and the screen declares no scenario, so they were undefined when described
ui.screen.scenariosa screen declares fewer than two scenarios, so the critic and the preview have little to show
ui.screen.stack-emptythe screen stack was left empty where a screen was expected
ui.screen.toolsthe screen describer could not start, so no screen was registered and every push is refused
ui.screen.unknownno screen answers to that name; the message lists the ones that do
ui.scroll.not-scrollablescroll-top or scroll-left written to a node that is not a scroll container
ui.set.bad-valuethe property is bindable and the value is the wrong kind for it
ui.set.unknown-nodeno screen on the stack holds that id, or a bare id is ambiguous
ui.set.unknown-propthe property is not bindable; the message carries the hint
ui.stack.emptypop with nothing on the stack
ui.style.gradient-stopsa gradient's stops are malformed or out of order
ui.style.root-size-ignoreda width or height on a screen's root is ignored; the root fills the viewport
ui.style.token-cycletokens refer to one another in a loop
ui.style.token-kinda token's value is the wrong kind for the property using it (a length where a colour goes)
ui.style.unknown-tokena var(--…) or token names no declared token
ui.style.unsupported-valuea value the engine cannot draw for that property
ui.theme.unknownthe project's stylesheets declare no theme by that name
ui.transition.not-animatablea transition names a property that cannot be animated; it changes at once
ui.tree.duplicate-idtwo nodes in one screen claim one id
ui.tree.invalid-ida node id holds / or :, the id grammar's own separators; the derived id was used instead
ui.unavailablethis world has no UI runtime, so every ctx.ui call is refused
ui.viewport.no-surfacethis source has no surface of its own, so there is nothing to resize
unavailable503: the command queue is full or the simulation is shutting down
unchecked-contenta headless worker started with --require-checked was given no --load-descriptor, so it would run the authoring tree, whose TypeScript no check has seen; it refuses to start
unsupported501: this engine or source does not implement that endpoint
unsupported_media_type415: a POST body that is not Content-Type: application/json
vehicle.boost-invalidvehicle.boost(speed, seconds) was given a speed or seconds that is NaN, infinite, zero or negative
vehicle.not-finitectx.vehicle.drive was given a throttle, brake, steer or handbrake that is NaN or infinite
vehicle.not-owndrive, reset or wheels through another entity's vehicle (other.vehicle in a trigger): it can be read and boosted, not driven
views-layout-unknownctx.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 ViewsError and the layout is unchanged
views-out-of-rangea 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-cancelledthe web export was cancelled and the CLI stopped; the output folder is as it was
web-exporter-failedthe engine CLI ended with neither a report nor an error line: it crashed, or it is older than --json
web-exporter-missingno Node, or no engine CLI, to run the web exporter: not named (ARGUS_ENGINE_CLI, ARGUS_NODE), not installed beside the editor, and no checkout above the project
web-unsupporteda behaviour running in the web runtime called a ctx member the web backend does not implement yet; it throws WebUnsupportedError naming the member
wheel.not-finitectx.wheel.setMotorTorque, setBrakeTorque or setSteer was given a NaN or infinite number