Architecture
Under-the-hood implementation: zero GC allocation designs, pre-compiled instruction execution, diagnostics, and assembly bounds.
High-Performance Runtime Design
Traditional timeline tools can cause performance stutter due to constant background operations. Animation Montages is built from the ground up to prevent this:
Fast Identifier Caching
All text labels (Notifies, Windows, Sections) are converted and cached as numeric hashes at edit time, ensuring zero comparison delay during gameplay updates.
Memory Pooling
Ticking playheads and timers are recycled using an internal object pooling system, ensuring smooth performance even on low-end mobile devices and consoles.
Direct Event Mapping
Event callbacks map directly to cached system functions, bypassing slow runtime reflection lookups entirely.
Direct Game Creator 2 Integration
Instead of interpreting instructions step-by-step through slow custom wrappers, the Montage Player compiles visual instructions into native Game Creator 2 runners during authoring. When an event is crossed, it runs at the native speed of Game Creator's own instruction assets.
Inspector Debug Diagnostics
Selecting a character with an active Player component during Play Mode unlocks a live diagnostic panel in the Unity inspector:
- Playhead Monitor: Track current percentages (0% to 100%) and playback speed.
- Live Active Windows: Visually inspect which range windows are active in real-time.
- Condition Branches: Log whether conditional branches succeeded or failed, alongside upcoming jumps.
Assembly Definitions (.asmdef)
To ensure universal compatibility out-of-the-box, the package does not ship with predefined assembly definition files. Since Game Creator 2 lives in standard Unity predefined scripts, this package compiles alongside it in the base assembly structure.
If your project is strictly structured using custom assembly definitions, you must create a custom .asmdef file inside Assets/Plugins/SkywardGames/AnimationMontages/ and specify references to the following libraries:
{
"name": "SkywardGames.AnimationMontages",
"references": [
"GameCreator.Runtime.Core",
"GameCreator.Runtime.Characters",
"Unity.InputSystem"
]
}