Body Glow, Damage Feedback in the Character Material
Hit a fighter and the part of the body that took the damage lights up. Three painted masks, a scalar per region, and four blueprint nodes per event.
Rift Fighters splits damage into three targets: Stamina in the torso, Balance in the limbs, Flow in the head. A player has to know which one an attack just hit, and has to know it at the moment of contact, without reading a number off the HUD. The clearest place to say it is on the body that took the hit.
Three greyscale masks are painted against a dedicated UV layout, one per damage region: torso, limbs, head. Each is sampled on UV channel 2, and the red channel of each sample is multiplied by a scalar parameter and then by a color parameter, both held in that fighter's material parameter collection. The three products add together, and the sum joins the rim light and the underlighting on the way into Emissive Color.
The scalars sit at 0. The masks are in the material every frame and contribute nothing, because anything multiplied by zero is off. Setting one scalar to 1 reveals that region in its assigned color. That is the whole switch.
Timing is split in two on purpose. The sequence decides when a glow fires. The director blueprint decides what happens once it does.
In the sequence, an event track fires a custom event on SQ_UE4_Attack_02_DirectorBP at the frame of contact. The event runs four nodes: set that region's scalar to 1, read the state-duration parameter out of the same collection, feed that value into a Delay, then set the scalar back to 0. Because the duration is a parameter rather than a number typed into the node, how long a hit reads is one value in one place, and changing it does not mean reopening a sequence.
Each fighter has its own parameter collection, so the two characters hold independent state and one director blueprint drives both. A second group of events covers the defense window and lights individual limbs rather than whole damage regions, with a single event able to set more than one at once: the right elbow event lights the joint and the arm together.
I used AI to learn how to do this in Unreal: how a sequencer event track reaches a director blueprint, and how a blueprint writes into a material parameter collection. I placed and wired every node myself, and I tuned every value by looking at the result.
Every damage region on both fighters lights in its own color for a tuned duration, out of three textures, seven parameters per fighter, and four nodes per event. Adding a new hit is one key on an event track and one custom event. Retiming every hit in the fight is one number.
Keeping the state in a parameter collection rather than on the character means the material carries no combat logic at all. It samples three masks and multiplies them by whatever the numbers currently are. The combat lives in the blueprint and the shading lives in the material, so I can retime a hit without touching how it looks and retune how it looks without touching when it fires.


