APLM Controller
BP_APLMController is the Blueprint that brings APLM to life at runtime. It is the bridge between your project (your sky system, your save game, your in-world calendar) and the two Material Parameter Collections that the material reads every frame: MPC_Seasons and MPC_Weathers.
You drop it in your level once. You assign one data asset per biome. From that point on it handles the rest: pushing seasonal color shifts into the material, exposing weather entry points that you can call when it rains or snows, and managing the transitions in between.
If you have ever wondered how a tropical rainforest can stay green in summer and turn rich after rain while the neighbouring desert keeps its sun-baked look, this is the actor doing the orchestration.
What it controls
Section titled “What it controls”- Seasons, by writing the per-biome color, brightness, contrast, specular, and roughness values into
MPC_Seasonsevery tick. - Weather, by exposing one rain entry point and one snow entry point per layer (each biome and most base layers). Calling these from your weather system pushes the right intensity values into
MPC_Weathers. - Smooth transitions between consecutive seasons through an internal lerp helper, so a forest does not snap from summer to autumn.
How you use it
Section titled “How you use it”- Drag
BP_APLMControllerinto your level. One instance per level is enough. - In the Details panel, assign one data asset per biome:
BP_TundraData,BP_BorealData,BP_DesertData,BP_MediterraneanData,BP_SavannaData,BP_TemperateForestData,BP_TropicalRainforestData,BP_WetlandData,BP_GrasslandData,BP_Custom1Data,BP_Custom2Data,BP_Custom3Data.- Each data asset holds the per-season values (color, color grade, specular, roughness) for that biome.
- From your gameplay or sky/weather system, call the per-layer weather entry points when conditions change. For example, when rain starts in the forest region, call
TemperateForestWeatherRain. When it stops, call it again with the value you want to ease back to. - The controller’s tick logic does the rest: it picks the current and next season, runs the lerp, and writes the resulting values into
MPC_Seasons.
Public functions
Section titled “Public functions”The controller exposes a small set of functions you might call from your own Blueprints. Most users only ever call the per-layer weather ones; the rest run on tick automatically.
Per-layer weather
Section titled “Per-layer weather”For every biome layer (Tundra, BorealForest, Desert, Mediterranean, Savanna, TemperateForest, TropicalRainForest, Wetland, Grassland, Custom1, Custom2, Custom3) and most base layers (Beach, Cliff, Grass, Gravel):
[Layer]WeatherRain— set the rain intensity for that layer.[Layer]WeatherSnow— set the snow intensity for that layer.
Cliff has only the rain variant, which matches how cliffs respond in the material.
Season pipeline (runs automatically)
Section titled “Season pipeline (runs automatically)”| Function | What it does |
|---|---|
AllVariables | Calls every per-biome push function in turn. Runs once per tick. |
AllNodes | Wider master that bundles related setup steps. |
PerBiomeSorting | Keeps each biome’s per-season list in the right order before reading. |
SetSeasonIndex | Updates which season is currently active. |
GetCurrentSeasonData | Returns the data for the active season. |
GetNextSeasonData | Returns the data for the season we are blending toward. |
SeasonLerp | Interpolates between current and next season values. The result drives the MPC writes. |
SeasonTransition | Owns the transition lifecycle (when to advance, how long to blend). |
[Biome]Variables | One push function per biome (e.g. TundraVariables, BorealForestVariables). Reads the lerp result and writes that biome’s parameters into MPC_Seasons. |
You normally do not call these. They run on tick. They are documented here so you know what is happening when you inspect the Blueprint.
Variables on the controller
Section titled “Variables on the controller”| Variable | Type | What it holds |
|---|---|---|
BP_TundraData | BP_Season | Per-season values for the Tundra biome. |
BP_BorealData | BP_Season | Per-season values for Boreal Forest. |
BP_DesertData | BP_Season | Per-season values for Desert. |
BP_MediterraneanData | BP_Season | Per-season values for Mediterranean. |
BP_SavannaData | BP_Season | Per-season values for Savanna. |
BP_TemperateForestData | BP_Season | Per-season values for Temperate Forest. |
BP_TropicalRainforestData | BP_Season | Per-season values for Tropical Rainforest. |
BP_WetlandData | BP_Season | Per-season values for Wetland. |
BP_GrasslandData | BP_Season | Per-season values for Grassland. |
BP_Custom1Data | BP_Season | Per-season values for Custom 1. |
BP_Custom2Data | BP_Season | Per-season values for Custom 2. |
BP_Custom3Data | BP_Season | Per-season values for Custom 3. |
Each BP_Season data asset stores an ordered list of F_SeasonParameters entries, one per season. The order in the asset is the order the controller cycles through them.
Structs it uses
Section titled “Structs it uses”| Struct | What it holds |
|---|---|
F_ColorGrade | Offset, gain, brightness, contrast, saturation. |
F_SeasonCore | The eight seasonal values per biome (color, color grade, specular, roughness). |
F_SeasonMetadata | Identity and labelling fields for one season entry (display name, index, and so on). |
F_SeasonParameters | One full season entry: metadata plus the core values. |
F_WeatherParameters | The weather payload (rain and snow intensities) the controller writes into MPC_Weathers. |
You can use these structs as is, or extend them in your own Blueprints. Many projects only need the shipped structs.
Where to next
Section titled “Where to next”- Driving seasons from Blueprint: the four-step setup that uses this controller end to end
- Season system concept: the design rationale for the season pipeline
- Weather system concept: how
MPC_Weathersdrives per-material rain and snow - Season parameters reference: the eight per-biome seasonal overrides this controller writes
- Weather parameters reference: the per-layer weather controls this controller drives