For your Win screens scenario, I'd recommend option #1: using a single skeleton with skins as the most efficient approach. Here's why:
Why skins work well for your case:
Your Win screens are perfect candidates for skins because they share the same basic structure and animations can be reused across variations. The incremental nature (Base → Big → Mega → Unbelievable) means you're essentially showing/hiding and adding elements rather than fundamentally changing the skeleton structure.
How to structure it:
Create separate skins for each Win type (base-win, big-win, mega-win, unbelievable-win), where each skin contains only the attachments specific to that level. You can then use the mix-and-match approach - combine a base skin with additional skins to build up from Base Win to Unbelievable Win progressively.
For shared elements like the background or heading that appear across all versions, you can either:
- Include them in each skin
- Or keep them outside skin placeholders so they're available regardless of the active skin
Performance considerations:
Regarding your concern about option #1 being "overkill" - it's actually the opposite! A single skeleton with skins is typically more efficient than multiple skeletons because:
- You're loading one skeleton data structure
- Texture atlases can be shared across skins (you can manually pack attachments from each skin into separate atlases if memory is a concern)
- Draw calls are minimized when elements share the same texture atlas
- Animation data is shared across all variations
About draw calls:
Option #3 (separate skeletons per element) would indeed create unnecessary draw calls and complexity. The relationship between skeletons is only about draw order, so you'd need to manage multiple separate entities in your code, which adds overhead.
Workflow tip:
If you find yourself creating many similar skins with only minor variations, consider whether some elements could be handled through programmatic skins - your programmers could duplicate and modify skins at runtime based on patterns, reducing repetitive setup work.
The single skeleton + skins approach gives you the best balance of workflow efficiency, maintainability, and runtime performance for your incremental Win screen design! 💙