Core Concepts & Architecture

Texturge’s core philosophy is to treat every glyph in text as an independently animatable entity. By controlling each character’s transform (position, scale, rotation, shear), color, opacity, shadow, and letter spacing on a per-frame basis at runtime, it achieves everything from simple typewriter reveals to complex per-character animations.

Module Structure

Texturge consists of two modules:

ModuleTypeResponsibility
TexturgeRuntimeAnimation core, rich text parsing, Slate widgets, localization, sound effects
TexturgeEditorEditorAnimation blueprint editor, designer viewport, Sequencer integration, compiler

Core Data Flow

Texturge’s animation pipeline follows a Blueprint → Instance → Animator three-stage flow:

┌─────────────────────────────────────────────────────────────────────┐
│                        Editor (Edit Time)                            │
│                                                                     │
│  UTextAnimationBlueprint ──compile──▶ UTextAnimationBlueprintGeneratedClass │
│  (track config + keyframes)           (compiled GeneratedClass)      │
│                                                                     │
│  UTextAnimation ──Sequencer──▶ FloatChannel keyframe curves          │
│  (MovieScene sequence asset)                                         │
└─────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────┐
│                        Runtime                                        │
│                                                                     │
│  UTextAnimInstance ──CompileFromAsset()──▶ CompiledTrackData          │
│  (compiled from blueprint)               (per-track per-frame arrays) │
│         │                                                           │
│         ▼                                                           │
│  UTextAnimator ──TickAnimation()──▶ EvaluateTime()                   │
│  (pipeline engine)                  (realtime sample & blend tracks) │
│         │                                                           │
│         ▼                                                           │
│  FAnimationFrameData[] ──OnPaint──▶ FTextRun / SAnimatedTextBlock   │
│  (per-char frame cache)            (Slate per-glyph rendering)      │
└─────────────────────────────────────────────────────────────────────┘

Two Usage Paths

Texturge provides two widgets for different use cases:

PathWidgetUse Case
Plain Text PathUAnimatedTextBlockSingle animation effect for entire text. Directly assigns a TextAnimationBlueprint asset.
Rich Text PathUAnimatedRichTextBlockMultiple animation blends via inline tags. Uses TextAnimationDataAsset for tag-to-animation mappings.

Both paths share the same underlying pipeline (UTextAnimatorUTextAnimInstance), differing only in input:

  • Plain Text Path: One UTextAnimationBlueprint → one UTextAnimInstance.
  • Rich Text Path: FTagParserFRenderTreeBuilder → one UTextAnimInstance per animation tag.

Key Asset Types

AssetBase ClassRole
UTextAnimationBlueprintUBlueprintAnimation blueprint for configuring tracks and keyframes (analogous to UWidgetBlueprint)
UTextAnimationUMovieSceneSequenceText animation sequence storing MovieScene timeline data
UTextAnimationDataAssetUDataAssetRich text animation data asset defining tag→blueprint mappings
UTextAnimInstanceUObjectAnimation instance that compiles blueprint assets and evaluates frame data at runtime
UTextAnimatorUObjectAnimator — typewriter animation pipeline engine driving character reveal and frame generation

System Requirements

  • Engine Version: Unreal Engine 5.7+
  • Platforms: Windows (Win64), macOS, Linux
  • Dependencies: CommonUI (optional integration)
images/architecture-overview.png — Texturge Architecture Overview — complete data flow: editor toolchain → compile pipeline → runtime render output