MobFort

Characters that look like Valorant or Team Fortress 2. Or better - because Valorant is deliberately holding back. Unlit master materials for Unreal's mobile forward renderer.

cd YourProject/Plugins
git clone git@github.com:Vaei/MobFort.git

Install it →

Not officially released. Expect bugs and updates without versioning.

The idea

Riot tuned this model so that nothing about a character competes with spotting one. The restraint is the feature there: controlled contrast, tones that never fight the read, no flourish that could be mistaken for movement. If you are not making a tactical shooter you inherit the technique without the constraint, and you can push the gradients, the rim and the skin as far as your art direction wants to go.

Valve got there first - the wrapped falloff and the rim light are out of Team Fortress 2. Riot rebuilt it for a modern forward renderer and, unusually, wrote down how. This is that write-up implemented in Unreal.

How it works

A lit character is at the mercy of the room. Walk into a dark corner and the art direction goes with it - the palette shifts, the silhouette softens, and the model you spent a week on reads as a grey shape.

So none of this is lit. The masters are Unlit and every term is authored: one directional light read from a parameter collection, a gradient in place of the diffuse falloff, a pre-blurred HDR panorama in place of every reflection in the scene, and no ambient term at all - the gradient never reaches black, so nothing ever goes fully dark.

What that buys, in any genre: a character who looks like themselves everywhere, a look set by dragging gradient stops rather than by placing lights, and a cost that does not move.

Competitive shooters want this most acutely - lighting that can hide a player is a fairness problem, not just a visual one. But the technique came out of an art-direction problem before it was a clarity one, and a stylized single-player game gets the same three things without having to hold anything back.

What you get

CharacterGradient diffuse, panoramic specular, a two-palette rim weighted toward up-facing surfaces and the upper body, fake skin with a redder falloff and a wax underglow, and a distance response that keeps a character legible when they are small on screen.
WeaponA smoothstep diffuse instead of a gradient. A weapon is mostly shiny metal, so the specular carries it - which makes this the one to reach for on hard-surface props generally, not just weapons.
BaseThe three shared responses and nothing else. Environment, or anything that does not fit the other two.

What about environments?

Use MobMaterials. Its surface and landscape masters are lit, and they have the things a world needs and this does not: layers, triplanar, tiling break, parallax, weather, and terrain integration. A wall wants to be grounded in the level's light. That is the whole reason a character here is not.

What M_FortBase is for is the case where you want that unlit stylized read everywhere - or an object that would look pasted in if it were lit while the character beside it was not.

Reach for MobFortReach for MobMaterials
A game stylized hard enough to want one lighting model everywhereA world that should respond to its own light
An objective, pickup, deployable or ability propWalls, floors, buildings, terrain
Silhouetted geometry where grounding does not matterAnything large enough to need layers, tiling break or detail
A fixed cost per pixel, whatever the lightingAnything wet, snowed on, or trampled

The two coexist. Nothing stops a level using MobMaterials for the world and MobFort for what moves through it, and that is the expected setup.

Ten minutes to a character

  1. Enable the plugin and point SpecPanorama at an equirectangular HDR.
  2. Fort → Sync Sun From Directional Light.
  3. Instance M_FortCharacter, set three textures.
  4. Duplicate it, tick bEnemy. Two rim palettes, however you want to use them.

Design

The maths is not in the graphIt lives in MobFortShading.ush and is reached from Custom nodes. A master material is under ten nodes.
Nothing you turn off is paid forFeatures are gated by static bools on material function inputs, so a discarded input takes its texture taps with it. Measured, not claimed.
The materials ship builtNo recipe asset, no generate step. Three masters and their instances are content.

Light reading

Valorant shaders and gameplay clarityRiot's write-up, and the foundation this is built on. Gradient lambert, panoramic specular, the rim biases and the fake skin all come from here
Illustrative Rendering in Team Fortress 2where the wrapped falloff and the rim light came from in the first place, in 2007
Mobile Forward Rendering guidewhy this path exists and how to get on it
Forward Renderrecommended. Ticks the sun into the collection for you, and loads the editor in mobile preview
Gradient Toolrequired. Realtime gradients, which UE's Color Ramp cannot give you
MobMaterialsthe world these characters stand in. Lit surface, landscape and foliage masters on the same renderer

Where to go

Set it upPlugin, panorama, sun, and your first character. Look things upEvery parameter on all three masters, and what each one is for. Author gradientsThe atlas, the five rows, and giving a character its own. Fix somethingSymptom to cause, in order of likelihood.