Plugin referenceDiagnostics
DreamFX diagnostics
DreamFX diagnostics
DreamFX diagnostics
Every DFXnnnn DreamFX can emit. The leading digit is the stage that raises it:
- DFX1xxx --- Driver and file I/O --- DFX1xxx.md
- DFX2xxx --- Lexer and syntax --- DFX2xxx.md
- DFX3xxx --- Declarations and document structure --- DFX3xxx.md
- DFX4xxx --- Values, types and expressions --- DFX4xxx.md
- DFX5xxx --- Generation and asset writing --- DFX5xxx.md
- DFX6xxx --- Niagara compilation --- DFX6xxx.md
- DFX7xxx --- Provenance, drift and lint --- DFX7xxx.md
- DFX8xxx --- Decompiler --- DFX8xxx.md
Generated by .skill/gen-diagnostics.ps1; run it after adding a code.
| Code | Severity | Message |
|---|---|---|
| DFX1000 | error | Could not read source file '%s'. |
| DFX1001 | error | Unterminated string literal. |
| DFX1002 | error | Unterminated block comment. |
| DFX1003 | error | Unexpected character '%c' (U+%04X). |
| DFX1004 | error | Unterminated raw block: missing '}'. |
| DFX1005 | error | Unterminated back-quoted name. A name must close on the same line. |
| DFX2000 | error | Unknown document type '%s'. Expected System, Emitter, Module or DynamicInput. |
| DFX2001 | error | Expected '{' to open a raw block but found '%s'. |
| DFX2002 | error | Expected a name but found %s. |
| DFX2003 | error | Expected a number but found '%s'. |
| DFX2004 | error | Expected a value but found %s. |
| DFX2005 | error | '#EndRegion' has no matching '#Region'. |
| DFX2006 | error | Unknown directive '#%s'. Expected Region or EndRegion. |
| DFX2007 | error | Expected a version after '@'. |
| DFX2008 | error | Module '%s' was given a positional argument. Module inputs must be written as 'Name = Value'. |
| DFX2010 | warning | '#Region "%s"' was never closed with '#EndRegion'. |
| DFX2013 | error | '%s' is a system-scope stack and must be written at the top level of a .dfs, not inside an emitter. |
| DFX2015 | error | 'from' must be followed by a quoted path to a .dfe source file. |
| DFX2016 | error | (built at runtime) |
| DFX2018 | error | A Module or DynamicInput must declare a 'Body = { }' block. |
| DFX2019 | error | Header argument '%s' must be a quoted string. |
| DFX2020 | error | Unknown curve key attribute '%s'. Expected Interp, Tangent, Arrive or Leave. |
| DFX2021 | error | File declares '%s' but its extension is '%s'. Rename the file to '%s' or change the declaration. |
| DFX2022 | error | Unexpected '%s' after the end of the document. A DreamFX file declares exactly one top-level object. |
| DFX2023 | error | '%s' is a module call, so it cannot be given a type. Types are written only on assignments. |
| DFX2024 | error | A Defaults declaration cannot be disabled; defaults are not executed stack nodes. |
| DFX2025 | error | Unknown OnEvent argument '%s'. Expected Source, Event, Mode, SpawnNumber, MaxEventsPerFrame, UpdateAttribut... |
| DFX2026 | error | Unknown Stage argument '%s'. Expected a stage iteration, enabled, dispatch or particle-state option; see th... |
| DFX2027 | error | Group(...) takes a quoted name: Group("Name") { ... }. |
| DFX2028 | error | Group(...) requires a non-empty name. |
| DFX3000 | error | (built at runtime) |
| DFX3001 | error | (built at runtime) |
| DFX3002 | error | Could not read the input schema of module '%s': %s |
| DFX3003 | error | Module '%s' has no input named '%s'.%s Available inputs: %s |
| DFX3004 | error | Unknown renderer type '%s'. Expected one of SpriteRenderer, MeshRenderer, RibbonRenderer, LightRenderer, De... |
| DFX3005 | error | Emitter '%s' is declared more than once. Emitter names are stable keys and must be unique. |
| DFX3006 | error | '%s' is neither an allowed inline function (%s) nor a dynamic input: %s |
| DFX3007 | error | Could not read the input schema of dynamic input '%s': %s |
| DFX3008 | error | Dynamic input '%s' has no input named '%s'. Available inputs: %s |
| DFX3009 | error | Dynamic input '%s' is pinned to version %s, which its asset does not offer. Available version(s): %s. |
| DFX3010 | error | Property '%s': %s |
| DFX3020 | error | Cannot read the default for %s setting '%s'. |
| DFX3021 | error | User parameter '%s' is declared more than once. |
| DFX3030 | error | A Module or DynamicInput must declare Settings.Usage -- it decides which stacks the module can be placed in. |
| DFX3031 | error | A DynamicInput must declare Settings.Output -- its return type cannot be inferred from the body. |
| DFX3032 | error | A DynamicInput's Usage must be DynamicInput or a nonempty array of stack names. |
| DFX3033 | error | Input '%s' is declared more than once. |
| DFX3034 | error | Input '%s' is marked [StaticSwitch] but is a %s. A static switch must be a bool, an int or an enum. |
| DFX3035 | error | Input '%s' is a [StaticSwitch], so its default must be a compile-time constant. |
| DFX3036 | error | The Body block is empty. |
| DFX3037 | error | (built at runtime) |
| DFX3038 | error | '%s' is not a stack a module can be placed in. Use one of: %s. |
| DFX3039 | error | A DynamicInput cannot return a data interface; its Output must be a value type. |
| DFX3040 | error | (built at runtime) |
| DFX3041 | error | '%s' could not be parsed; see the errors above. |
| DFX3042 | error | '%s' declares a %s, but 'from' needs an Emitter document. |
| DFX3043 | error | '%s' reads user parameters this system does not declare: %s. Add them to the Properties block. |
| DFX3044 | error | The default for input '%s' has to be a literal or an enum entry. A module input default is stored on the as... |
| DFX3046 | error | '%s' is not a particle attribute DreamFX knows the type of. Write its type at first use, for example `float... |
| DFX3047 | error | A DynamicInput computes a value; it cannot write '%s'. Move the write into a Module. |
| DFX3048 | error | Default override '%s' changes its type from %s to %s. Overrides must keep the base parameter's type. |
| DFX3049 | error | MeshRenderer has no Material property. Set OverrideMaterials = ["/path/to/material"]; and bOverrideMateri... |
| DFX3050 | error | (built at runtime) |
| DFX3051 | error | Only a System document can inherit a .dfs parent. |
| DFX3052 | error | System inheritance contains a cycle or exceeds 128 sources: %s -> %s. |
| DFX3053 | error | Inherited parameter '%s' changes type from %s to %s. An override must preserve the parent's parameter type. |
| DFX3054 | error | Parameter '%s' is declared twice in one inheritance layer. An override must be declared in the child source... |
| DFX3055 | error | (built at runtime) |
| DFX3056 | error | Native parent has an unavailable version or a cyclic parent chain: %s. |
| DFX3057 | error | Attribute '%s' is declared with conflicting types. |
| DFX4001 | error | Input '%s' expects %s, but a number was written. |
| DFX4002 | error | Expression for '%s': a vector literal must have 2 to 4 components. |
| DFX4003 | error | Input '%s' is an integer, but %s was written. Narrowing is not implicit -- write int(%s) if truncation is i... |
| DFX4004 | error | Input '%s' has no resolvable Niagara type. |
| DFX4005 | error | Property '%s': component %d is not a number. |
| DFX4006 | error | Input '%s' is a %s, which has no entry named '%s'. Valid entries: %s |
| DFX4007 | error | Input '%s' expects %s. '%s' is neither a literal of that type nor a parameter reference -- parameter refere... |
| DFX4010 | error | Input '%s' is set more than once on dynamic input '%s'. |
| DFX4020 | error | Parameter '%s': 'Object' needs an inner type, e.g. Object. |
| DFX4021 | error | Parameter '%s': no UObject class named '%s'. Object<> takes a class name such as Object or Object<... |
| DFX4022 | error | Cannot infer the type of '%s' from its value. A first assignment to a new attribute must use a literal, so ... |
| DFX4023 | error | Property '%s': box() takes 6 numbers -- minX, minY, minZ, maxX, maxY, maxZ. |
| DFX4024 | error | Cannot type '%s = %s': the type of '%s' is not known here. Declare it in Properties, or assign a literal fi... |
| DFX4025 | error | '%s' is not a valid assignment target. Parameter names are namespace-qualified, e.g. Particles.MyValue or E... |
| DFX4026 | error | 'Bind %s -> %s': the target must be a qualified parameter -- either a namespace such as Particles.SpriteSiz... |
| DFX4027 | error | '%s' is %s, but '%s' is %s. Linking binds a parameter directly -- there is no conversion. Declare '%s' as %... |
| DFX4028 | error | Default for '%s' needs a declared type. A default has no module signature to infer one from, so write it: `... |
| DFX4029 | error | Default for '%s' must be a literal, an enum or another parameter. A dynamic input computes a value per part... |
| DFX4030 | error | The hlsl block for '%s' must be a single expression: no statements, no local variables, no return. Move mul... |
| DFX4031 | error | '%s' is not an allowed inline function. Allowed: %s. Anything else belongs in a .dfm dynamic input or an hl... |
| DFX4032 | error | '%s' in the expression for '%s' is not a parameter. Only namespace-qualified parameters (User.X, Particles.... |
| DFX4033 | error | Builtin '%s' takes positional arguments, not named ones. |
| DFX4034 | error | Builtin '%s' takes %d argument(s), but %d were written. |
| DFX4035 | error | Expression for '%s' contains a value that has no HLSL form. |
| DFX4036 | error | The hlsl block for '%s' is empty. |
| DFX4037 | error | '%s' is %s; a curve { } literal only fits a curve data interface input. |
| DFX4038 | error | The curve for '%s' has no keys. |
| DFX4039 | error | Unknown curve interpolation '%s'. Expected Auto, Cubic, Linear or Constant. |
| DFX4040 | error | Parameter '%s': no asset at '%s'. |
| DFX4041 | error | Parameter '%s': '%s' is a %s, which is not a %s. |
| DFX4042 | error | Unknown curve tangent mode '%s'. Expected Auto, User, Break or None. |
| DFX4043 | error | Input '%s' is an instance-backed %s and cannot have a literal or asset-path default. Omit the default and s... |
| DFX4044 | error | An int(...) default requires one numeric literal. Runtime casts belong in a stack expression. |
| DFX4091 | error | Input '%s': dynamic inputs, hlsl blocks, curves and inline expressions are not available yet (planned for P... |
| DFX5001 | error | Stack '%s' has no Niagara script usage mapping. |
| DFX5002 | warning | This system declares no emitters, so it will produce nothing. |
| DFX5003 | info | '%s' is not declared in this source, so its existing modules are left as-is: %s |
| DFX5004 | info | No Material was set, so the engine default was applied: %s. Write 'Material = "...";' to choose your own. |
| DFX5015 | error | Emitter '%s' has no record in the last build's plan. |
| DFX5020 | error | The last build of this stack recorded %d module node(s) for %d module(s), so its nodes cannot be addressed. |
| DFX5027 | error | Could not read native parent defaults: %s. |
| DFX5030 | error | SavePackage failed for '%s'. |
| DFX5031 | error | Emitter '%s' declares more than one OnEvent block. Only one event handler per emitter is representable; spl... |
| DFX5032 | error | Emitter '%s' declares two Stage blocks named '%s'. Stages are identified by name; rename one. |
| DFX5033 | error | Emitter '%s' declares Stage blocks but simulates on the CPU. Simulation stages are a GPU feature: set `SimT... |
| DFX5034 | error | Emitter '%s' uses 'as %s' on two module calls. Node names are unique per emitter; rename one. |
| DFX5035 | error | '%s' is still open in the Niagara script editor. The rebuild was cancelled to protect its editable copy. Cl... |
| DFX5036 | warning | OnEvent source '%s' is an id no emitter in this system answers to, so this handler never fires. Point it at... |
| DFX5093 | error | 'MaterialParam' is reserved syntax and is not implemented in v1 (plan section 7). |
| DFX5097 | error | Only System documents can be generated right now; this file declares a %s. |
| DFX5098 | error | Data interface parameter '%s' takes its configuration as a quoted JSON object, the form the decompiler writes. |
| DFX5100 | error | '%s' is a %s with no generated asset at '%s', and %s |
| DFX5101 | error | (built at runtime) |
| DFX5102 | info | Input '%s' is marked [StaticSwitch]. Tier-one generation (plan 3.3) lowers the whole Body to a single custo... |
| DFX5103 | error | Package '%s' exists on disk but could not be loaded. |
| DFX5104 | error | Package '%s' exists but holds no Niagara script named '%s'. Refusing to overwrite it. |
| DFX5105 | error | Could not create package '%s'. |
| DFX5106 | error | Could not wire the module graph. The Niagara schema rejected a parameter map connection. |
| DFX5107 | error | '%s' no longer matches the module asset at '%s', and this build cannot regenerate it. Rebuild it where a gr... |
| DFX6001 | error | (built at runtime) |
| DFX6002 | warning | (built at runtime) |
| DFX6003 | error | (built at runtime) |
| DFX6004 | warning | (built at runtime) |
| DFX6005 | error | Niagara compilation of '%s' did not succeed (status %s). |
| DFX6006 | error | Niagara could not compile the body of '%s':\n%s |
| DFX6007 | info | Nothing in this source writes that parameter, so there is no graph parameter for a default to sit on and Ni... |
| DFX6008 | error | '%s' finished its compile with stale scripts: %s. The compiled VM was not rebuilt from the graphs this buil... |
| DFX7001 | error | Asset '%s' carries no DreamFX provenance stamp: it was never generated from this source, or it was created ... |
| DFX7002 | error | Asset '%s' is stale: it was generated from a different revision of this source. Run the DreamFX build. |
| DFX7003 | warning | Asset '%s' was generated by DreamFX %s; the current generator is %s. A rebuild is recommended. |
| DFX7004 | error | Asset '%s' does not exist: this source has never been built. |
| DFX7005 | error | (built at runtime) |
| DFX7101 | warning | Emitter '%s' simulates on the GPU but declares no FixedBounds. GPU emitters cannot compute their own bounds... |
| DFX7102 | warning | Emitter '%s' spawns by rate ('%s') with no upper bound. Set AllocationMode = Fixed and PreAllocationCount t... |
| DFX7103 | warning | Emitter '%s' uses randomness ('%s') but does not set Determinism = true, so it will look different on every... |
| DFX7104 | warning | This renderer has no Material and DreamFX knows no default for its type, so it will not draw. Set 'Material... |
| DFX7105 | warning | MeshRenderer OverrideMaterials is nonempty but material overrides are disabled. Set bOverrideMaterials = tr... |
| DFX7106 | info | pull: %s.%s is stored on the asset and not declared in this text -- skipped. pull adds no structure. |
| DFX7107 | info | pull: '%s' already holds every value '%s' stores for the input(s) it declares (%d compared, %d not declared... |
| DFX7108 | error | pull reads a .dfs and the Niagara system it names: '%s' declares a %s document. |
| DFX7109 | warning | pull: %s: %s. pull rewrites literals inside a structure both sides agree on, so nothing in this stack was a... |
| DFX7110 | error | pull: the rewritten text does not read back (%s), so '%s' was left untouched. |
| DFX7111 | info | pull: %s is declared but was not written back: %s |
| DFX7112 | info | pull: %s: %s |
| DFX7113 | warning | pull: %s: the asset has %s that the text does not, and the text has %s that the asset does not. The two lis... |
| DFX7114 | warning | pull: the baseline could not be used (%s), so every value this text declares was compared from scratch. |
| DFX7115 | info | pull: %s differs from this text but the asset has not moved since the last apply, so the text's value stands. |
| DFX7116 | info | pull: %s: %s -> %s |
| DFX8000 | error | Cannot decompile a null system. |
| DFX8001 | error | Could not read emitters: %s |
| DFX8002 | warning | Skipping emitter '%s': %s |
| DFX8003 | error | Cannot decompile a null emitter. |
| DFX8004 | error | Could not create a host system to read the emitter through: %s |
| DFX8005 | error | Could not copy emitter '%s' into a host system: %s |
| DFX8006 | error | Could not read emitter '%s': %s |
| DFX8010 | error | '%s' cannot be adopted: '%s' has no DreamFXLang form yet, so adopting would destroy it on the first rebuild... |
| DFX8011 | error | Cannot adopt '%s': source destination or another source already exists at '%s'. Edit that file instead; Ado... |
| DFX8012 | error | '%s' was adopted, but re-exporting the rebuilt asset does not reproduce this file. First difference at %s |
| DFX8013 | error | This file sits in the decompiled output directory but Name="%s" builds '%s', outside the '%s/' namespace.... |
| DFX8014 | warning | Emitter '%s' inherits from '%s'. The export flattens the inheritance: the merged stack is carried in full, ... |
| DFX8015 | warning | Emitter '%s' carries %d event handler(s) this export cannot represent%s. The rebuilt emitter will receive n... |
| DFX8016 | warning | Emitter '%s' carries %d simulation stage(s) this export cannot represent (custom stage class or missing scr... |
| DFX8017 | warning | emitter '%s' uses unsupported Lightweight/Stateless mode. Keep this emitter in Niagara; DreamFX cannot rebu... |
| DFX8018 | error | '%s' was not saved: rebuilding it would drop %d fact(s) this source cannot express, and a save would destro... |