DFX7xxx — Provenance, drift and lint
Every DFX7xxx diagnostic, with its severity, verbatim message, cause and fix.
9 codes in this family (4 error, 5 warning). The message is the format string as the compiler holds it: %s, %d and %c are substituted at runtime.
DFX7001
errorraised byGeneration/DreamFXGenerator.cpp:3568Generation/DreamFXModuleGenerator.cpp:734
Asset '%s' carries no DreamFX provenance stamp: it was never generated from this source, or it was created by hand.
Cause. The asset carries no provenance stamp: it was never generated from this source, or it was built by hand.
Fix. Run the build. If the asset is hand-built and should stay that way, do not point a .dfs at its path -- a build would overwrite it.
DFX7002
errorraised byGeneration/DreamFXGenerator.cpp:3575Generation/DreamFXModuleGenerator.cpp:741
Asset '%s' is stale: it was generated from a different revision of this source. Run the DreamFX build.
Cause. The asset was generated from a different revision of this source. This is the case nobody notices on their own: someone edited a .dfs, did not rebuild, and committed both. A build alone would pass, because a build fixes it.
Fix. Run the DreamFX build and commit the asset with the source.
DFX7003
warningraised byGeneration/DreamFXGenerator.cpp:3582
Asset '%s' was generated by DreamFX %s; the current generator is %s. A rebuild is recommended.
Cause. The asset was generated by an older generator. The same text can lower to a different asset after a generator change, so the stamp records the version.
Fix. Rebuild.
DFX7004
errorraised byGeneration/DreamFXModuleGenerator.cpp:1067
Asset '%s' does not exist: this source has never been built.
Cause. -Verify found no asset at all for this source.
Fix. Run the build.
DFX7005
errorraised byGeneration/DreamFXGenerator.cpp:3619Generation/DreamFXGenerator.cpp:3624
(built at runtime)
Cause. R7 drift. The source did not change and the asset did not change, but a module they both depend on now exposes a different version -- so the asset was built against a different module than the one this build would use. Nothing in the source or the asset says anything about it, which is why the stamp records module versions.
Fix. Rebuild to adopt the new version, or pin the module with @<version> to have the mismatch reported at the call site. A warning by default because an engine upgrade hits every source at once and a rebuild resolves it; -StrictVersions makes it an error, for a release gate.
DFX7101
warningraised byLint/DreamFXLint.cpp:132
Emitter '%s' simulates on the GPU but declares no FixedBounds. GPU emitters cannot compute their own bounds, so it will use a default box and may be culled unexpectedly.
Cause. A GPU emitter cannot read its own particle positions back to compute bounds, so without a fixed box it gets a default one and vanishes the moment the camera looks at it from the wrong angle.
Fix. Set FixedBounds = box(...) on the emitter or the system.
DFX7102
warningraised byLint/DreamFXLint.cpp:144
Emitter '%s' spawns by rate ('%s') with no upper bound. Set AllocationMode = Fixed and PreAllocationCount to cap the particle count.
Cause. Rate-based spawning has no ceiling of its own: a long-lived emitter with an automatic allocation estimate keeps reallocating, and a runaway rate has nothing to stop it.
Fix. Set AllocationMode = Fixed; and PreAllocationCount to cap the particle count.
DFX7103
warningraised byLint/DreamFXLint.cpp:156
Emitter '%s' uses randomness ('%s') but does not set Determinism = true, so it will look different on every play. Add Determinism and RandomSeed to its Settings if reproducibility matters.
Cause. Randomness without a fixed seed means the effect differs every play. Fine for ambience, wrong for anything a cinematic or a test compares against.
Fix. Add Determinism = true; and a RandomSeed if reproducibility matters.
DFX7104
warningraised byGeneration/DreamFXGenerator.cpp:2968
This renderer has no Material and DreamFX knows no default for its type, so it will not draw. Set 'Material = \"...\";'.
Cause. The renderer has no material and DreamFX knows no engine default for its type, so it draws nothing at all.
Fix. Set Material = "...";