Skip to content

Driving seasons from Blueprint

The season system runs through MPC_Seasons and is meant to be driven from Blueprint. APLM ships BP_APLMController plus a small set of reusable structs that cover the standard cycle. This guide walks through the standard pattern. Background on the system is in the Season system concept page, and the controller itself is documented in the APLM Controller reference.

  • APLM assigned to your landscape (see Basic setup).
  • A BP_APLMController instance somewhere in the level, or a custom Blueprint that owns the same logic.
  1. Pick or define the structs.

    APLM ships these:

    • F_ColorGrade: packed offset, gain, brightness, contrast, saturation.
    • F_SeasonCore: the eight seasonal parameters.
    • F_SeasonMetadata: identity and labelling fields.
    • F_SeasonParameters: the full seasonal block (metadata plus core).

    Use them as is for the standard cycle, or define your own structs if your project has a different season model (more than four seasons, weighted blends, gameplay-driven cycles).

  2. Build the per-biome variable.

    For each biome you want to animate, add a variable on BP_APLMController whose type is the data asset or struct that holds the per-season values for that biome. The shipped pattern uses BP_TundraData, BP_BorealData, BP_DesertData, and so on, each typed BP_Season (a Blueprint asset).

  3. Author the per-biome push function.

    Each biome gets a function (for example TundraVariables, BorealForestVariables, DesertVariables) that:

    • Takes the current season’s F_SeasonCore as input.
    • Calls a Season Lerp helper to interpolate between the previous season and the current target across the configured duration.
    • Pushes the resulting values into MPC_Seasons through Set Vector Parameter Value and Set Scalar Parameter Value calls, using the per-biome parameter names (BiomeTundraColor, BiomeTundraOffset, and so on).
  4. Run it on tick.

    On EventTick, call a master function (AllVariables in the shipped scheme) that calls each biome’s push function in turn. The shipped scheme also runs Per Biome Sorting and Set Season Index before the push, so the active season index is up to date before any biome pushes its values.

The result: one tick of BP_APLMController updates every biome’s seasonal parameters in MPC_Seasons. The materials sample those values automatically and the surface shifts in real time.

The four-step scheme covers a generic cycle. If your game has a single in-world season at a time and no per-biome variation, you can collapse the pattern: one struct for the current season, one push call per biome, no Season Lerp if the transition is event-driven instead of time-based.