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

  1. Open and re-save the containing scene/prefab in the current Fyrox editor as the message instructs.
  2. Run a batch migration: load every scene/prefab and save it with the current engine before shipping.
  3. Verify by reloading that the warning no longer appears.
Defensive patterns

Strategy: fallback

Prevention

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


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)