Developer Core Setup

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"
  ]
}