FyroxEngine/Fyrox · warning
Script instance of id
Error message
Script instance of id {} loaded successfully using compatibility loader! Resave the script! What it means
After successfully deserializing a script instance through the legacy-format compatibility loader, Fyrox logs this warning reminding the developer that the data was written in the old format. The load succeeded, but the scene file should be re-saved so future loads use the current format. Repeated warnings on every load indicate stale serialized assets.
Solutions
- Open and re-save the containing scene/prefab in the current Fyrox editor as the message instructs.
- Run a batch migration: load every scene/prefab and save it with the current engine before shipping.
- Verify by reloading that the warning no longer appears.
Defensive patterns
Strategy: fallback
Prevention
- Re-save the asset exactly as the message instructs.
- Add a migration step to your build pipeline: load and re-save all scenes after upgrades.
- Grep logs for this warning in CI to catch stale serialized assets.
When it happens
Trigger: Loading a scene/prefab with old-format script data where the compatibility visit (self.instance.visit(name, ...)) succeeds; every load of that asset until it is re-saved triggers the warning.
Common situations: Projects migrated from older Fyrox versions where some scenes were never re-saved; CI/headless loaders that consume assets without saving them back.
Understand the failure class
Background: "is deprecated and will be removed" — deprecation warnings for old API names, keywords, and options, and how to migrate before the removal release — this error's family across 29 libraries.
Related errors
- Unable to load script instance of id
- Graph pool must be empty on load!
- Script message was sent, but there's no receivers. Did you…
- No id specified for node
- There is a script instance on a node
AI-assisted analysis of FyroxEngine/Fyrox@76c91aad8e (2026-09-10).
Data as JSON: /api/errors/0c2c95ea082a6605.
Report an issue: GitHub.
Appendix: source
Thrown at fyrox-impl/src/script/mod.rs:749
let mut region_guard = visitor.enter_region(name)?;
// Check for new format first, this branch will fail only on attempt to deserialize
// scripts in old format.
if self.instance.visit("Data", &mut region_guard).is_ok() {
// Visit flags.
self.initialized.visit("Initialized", &mut region_guard)?;
} else {
Log::warn(format!(
"Unable to load script instance of id {} in new format! Trying to load in old format...",
self.id()
));
// Leave region and try to load in old format.
drop(region_guard);
self.instance.visit(name, visitor)?;
Log::warn(format!(
"Script instance of id {} loaded successfully using compatibility loader! Resave the script!",
self.id()
));
}
Ok(())
}
}
impl Clone for Script {
fn clone(&self) -> Self {
Self {
instance: self.instance.clone_box(),
initialized: false,
started: false,
}
}
}View on GitHub (pinned to 76c91aad8e)