Misaki
Hello, thank you again for the previous explanation, it helped us understand that timelines, animation switching frequency and mixing are the primary performance drivers.
We have a follow-up question regarding structure and performance.
Currently, our symbols are authored in a single Spine file with 18 skins and 6 animations (e.g. tumb, payline, flip, etc.). In Godot, this setup causes noticeable FPS drops. We tested alternative structures (including a large “many skins” approach), but those did not work for our use case either.
As a next step, we are now testing a hybrid approach, where:
- some visual states are handled via skins (static/idle/disabled/blur, etc.), and only the states that require real motion (such as payline and flip) remain as animations.
This should significantly reduce animation switching and the number of timelines actively used during gameplay.
Question:
From a performance perspective, could it be more efficient to split these remaining animations across multiple Spine files, for example:
File A: 18 skins + 1 animation (payline)
File B: 18 skins + 1 animation (tumb)
File C: 18 skins + 1 animation (flip)
…and then switch between these skeleton resources in the engine depending on the symbol state, instead of having all remaining animations in a single skeleton?
Our concern is whether this approach could reduce overhead by limiting the number of timelines per skeleton and simplifying the AnimationState, or whether the main cost still comes from applying the active animation only, meaning that splitting into multiple files would not provide meaningful gains.
Additional context:
In the game, multiple Spine files are already active simultaneously (game frame, character, background, etc.), but FPS drops only occur when the symbol skeletons using the 18 skins + 6 animations structure are present.
Based on your experience, which approach would generally be healthier for performance in this scenario:
keeping all the symbols in one file and further reducing timelines, switching, and mixing or
splitting the animations into separate Spine files (one animation per file) and switching between them at runtime?
Thank you in advance for your insight.