Runtime NPC Visual Replacer for Skyrim AE, SE, and VR
Recast is an SKSE plugin that lets you replace the face and body of any NPC at runtime by writing a small TOML file. Drop the patch into a folder, launch the game, and the target NPC renders with the new look. No ESP overrides, no save baking, no FaceGen regeneration.
What Recast Does
Recast swaps the visual identity of an NPC. That means:
- The face (head shape, eyes, hair, brows, tint layers)
- The body model (the WORN armor field in xEdit terms)
- Weight and height
- Sex flag
- Body tint color
The target NPC keeps everything else. Voice stays the same. Dialogue conditions still match. Faction memberships are untouched. Race ability spells from the original race are unchanged. The NPC's mechanical identity stays intact, which means quest dialogue, follower behavior, and stronghold logic all keep working correctly.
Key Features
Runtime only with no save baking. Recast never modifies your save file or the target NPC's record in any ESP. It works entirely in memory. That makes it safe to install, uninstall, or change at any point during a playthrough.
Compatible with everything. Because Recast does not override the target NPC's ESP record, mods like USSEP, AI Overhaul, and follower frameworks that share base NPCs all work alongside Recast cleanly. Recast layers on top of whatever the load order produced.
Body matches face by design. When Recast replaces a face, it also pulls the body from the same source NPC. The face the mod author designed comes with the body it was meant to pair with. No more mismatched looks from mixing a custom face with a vanilla body.
Cross-race friendly. Recast lets you replace any humanoid NPC's face with any other humanoid NPC's face. A Breton can wear a Nord face. A Redguard can wear an Imperial face. Recast logs a friendly note when the races differ so you can confirm the swap was intentional, but the replacement always applies.
Hot iterable. Edit a TOML file, relaunch Skyrim, see the change. No regenerating FaceGen. No rebuilding ESPs. No long MO2 setup. The cycle from "I want to try a different face" to "see the result in game" is one launch.
Steady state zero cost. Recast remembers what was applied last session in a tiny digest file. If nothing changed in your patches between launches, save loads do zero extra work. No flicker on already loaded NPCs, no actor refresh storms, no loading screen slowdown.
Simple file format. The TOML format is human readable and editable in any text editor. Most mod authors can pick it up in five minutes. Smart syntax detection means you can use EditorIDs (readable names) or FormIDs (precise hex codes) interchangeably in the same file.
FOMOD installer ready. Mod authors can ship one TOML per NPC face, so FOMOD installers can include or exclude individual faces at install time. Users get fine grained choice without the mod author having to ship multiple FOMOD options.
Recast and SkyPatcher
SkyPatcher and SPID are fantastic general-purpose patching frameworks that handle outfits, spells, perks, factions, keywords, stats, AI behavior, and much more. For all those tasks, SkyPatcher or SPID remain the right tool, and Recast is designed to coexist with them cleanly.
Recast was built specifically for swapping the face and body of an NPC. Here is what Recast brings to the table for that one focused task:
Fast loading. Recast's apply pipeline is around 250 lines of compact C++. The plugin parses and applies a 100-NPC library in 17 milliseconds on a modern CPU, measured end to end from "start parsing TOMLs" to "ready to render." The work is hidden behind the loading screen, but you do not have to give it any room.
Bug free by design. Recast uses an architecture called the faceNPC pivot. Instead of copying face data field by field, it points the target NPC's face slot at the source NPC and lets Skyrim's own rendering pipeline do the resolution. This is the same mechanism Skyrim itself uses internally for bandit and guard preset faces, so Recast is piggy backing on a path the engine already exercises every frame. The result is a clean, predictable application path with no shared heap state between target and source.
Clear logs. Recast writes one line per stage in a structured format. You can see exactly what got applied, what was skipped, and why. Error messages include the exact file and line number that caused the problem, so fixing a typo in a 100-entry TOML takes seconds.
Body and face stay coherent. When Recast replaces a vanilla NPC's face with a custom face NPC, the body also comes from the same custom NPC. The face the modder designed comes with the body it was meant to pair with. The result looks the way the modder intended without extra patch work.
Atomic per NPC. Every NPC mutation is snapshotted before any field is touched. The snapshot map enables future hot reload and undo features without requiring a game restart.
Steady state efficiency. Recast persists a per NPC digest hash across sessions. The next time you launch, if nothing changed in your patches, Recast does zero extra work. No actor refresh, no flicker, no loading screen impact.
Runs alongside SkyPatcher. or SPID Recast can be installed alongside SkyPatcher or SPID without conflict. Recast handles the face and body. SkyPatcher or SPID continue to handle outfits, spells, perks, factions, and everything else. They are designed to coexist.
Requirements
- Skyrim Special Edition, Anniversary Edition, or VR
- SKSE matching your runtime version
- Address Library
- Po3's Tweaks (optional, only needed if your patches use EditorID selectors instead of FormIDs)
Compatibility
- Unified Plugin works on AE/SE/VR versions of Skyrim SE.
- Compatible with USSEP, AI Overhaul, follower frameworks, and other mods that patch the same vanilla NPCs.
- Compatible with SkyPatcher for non face replacement patches.
- Compatible with any custom NPC mod (Foundation, Visions, Pantheon, third-party NPC packs).
- Save game safe to install, uninstall, or update at any point in your playthrough.
Credits
Recast was developed by ColdSun.
The faceNPC pivot architecture borrows the same mechanism Skyrim itself uses for bandit and guard preset faces. Recast simply makes that mechanism available to mod authors for runtime face replacement.






Comments (11)
Log in to post a comment.
Hi, so I tried to use Recast instead of one of my current SkyPatcher replacers. For most NPCs in that replacer it works fine, but for one it doesn't.
The replacer that doesn't work correctly is for Sanguine, who is DremoraRace by default. The replacer NPC 's race is BretonRace and the custom skin it uses (specifically the armor addons) are as well. If I just copy the appearance (visualStyle + skin with SkyPatcher, just the NPC with Recast), the head is applied correctly but the body is invisible in both cases. With SkyPatcher, if I also change Sanguine's race to BretonRace, the body/skin is visible, but currently there is no option to do that or work around it with Recast.
Thanks for this report. Honestly, I wasn't thinking people would replace Dremora NPCs. I'll have to add body support to recast.
Great mod
This looks great - I was wondering, if I were to use this script here -https://www.nexusmods.com/skyrimspecialedition/mods/141105 - to convert any replacer to new NPC records (and disabling all the skypatcher stuff), and then use those new NPCs as Recast -able faces? Cause that just opens up a world of possibilities if so.
I'm a bit behind catching up on things you've created. You say Recast is compatible with Patcher (but not face replacing). Is this the case for anyone's replacer? I have a few I use from time to time, bur don't want to make a mess if this is the case.
I read over the Recast doc and see it should get along ok, so don't spend any time replying. My mind goes to other worlds at times!
Your SkyPatcher patches will still work just fine with SkyPatcher. My Recast is completely separate and won't interfere unless you make Recast patches.
So, as I understand it, on the TOML, it's something like this(?):
[replacements]
TargetEditorID = "ReplacerEditorID"
So that can then be something like:
[replacements]
BrelynaMaryon = "D7_BrelynaMaryon"
And TargetEditorID can also either be TargetFormID:
[replacements]
"0x00000801~SeranaMultiformNG.esp" = "BND_Serana1"
But what about the Replacer being FormID? Is that possible? Something like:
[replacements]
"0x00000801~SeranaMultiformNG.esp" = "0x00000800~BloodNotIncludedSerana.esp"
No such example was given where both uses FormIDs on your instruction page.
Sorry, yes, that does work as well.
ColdSun Nice. Another question, if you don't mind.
So, SkyPatcher, it replaces with 'copyVisualStyle' and also 'skin'.
Recast meanwhile just asks for the EditorID / FormID of target / replacer source.
What'll happen in an instance where, say, the replacer NPC does not have WNAM - Worn Armor at all?
Some mods on my end utilize SkyPatcher and the replacer NPCs do not have WNAM at all, instead being defined by SkyPatcher.
It will use the default body if that is the case. That said, I'm going to add the skin feature in the next recast update for folks who want to use custom bodies.
Nice, will be waiting for that. Thanks for your replies.
This looks awesome. Are there any clear advantages you'd say Recast has over something like EasyNPC?
Well, I could see many, but its super easy to use. Best to read through the description and instructions to see if it interests you.
ColdSun I was able to get it working with a small subset of NPCs with Foundation, and holy moly is it seamless. Honestly I would say the biggest advantage is the freedom to choose and customize less popular individual NPCs who don't have many specific replacers or aren't covered by AIO replacers.
For context, I use multiple mass replacers: Nordic Faces, Anuketh AIO, Jarls Re-imagined in that order followed by a series of individual replacers like the Pantheon series, etc. EasyNPC does a great job handling the initial loading and selection of all those replacers, but its pretty powerless when it comes to npcs without many replacer options like Hamal or Hroki to list a few examples.
This worked perfectly to fill in the gap but if I were to give feedback on Recast, I'd say if there were some way to generate the toml file selections en masse I'd probably drop EasyNPC altogether. For example if there were a feature to load in an AIO replacer mod, collect the NPCs targeted, and generate the TOML with the ability to append/overwrite the TOML by loading in subsequent replacer mods that would be great.
Am I correct in understanding that currently Recast is only compatible with patches exported from Foundation?
happyleaf Glad you like it. You can use Recast with any mods - its not limited to Foundation.
ColdSun Wait that's insane. In this specific case, if I wanted to keep the original Housecarl Argis the Bulwark, but replace the appearance of Saadia; as an example, would this be a correct implementation?
[replacements]
# Saadia replaced using EditorID
Saadia = "HousecarlMarkarth" (Since this is the NPC record editor ID of the CS Shae the Bastion Mod)
This may be a dumb question but do I need to keep the mod and plugin enabled? My initial assumption would be to disable the plugin but keep the mod enabled in MO2's left window.
Since I am ignorant about this, where you have the replacement source given as:
"BWR_CarlottaReplacement"
is that the mod name or is that the .esp without the .esp ending?
That is the Editor ID.
do you post your source codes somewhere or no? if no is there a reason you dont?
There is no reason I do or don't. I'm a developer with 30+ years of experience. That said, if I feel like posting the source I will.
ColdSun No doubt you're a trustworthy figure in the community, was just wondering, keep up the great work ColdSun!
I'm sure if I ever get caught up on some of these more complex things I've made, I'll be posting the source at some point. Hang in there. :)
Does Recast have GUI like Foundation Faces?
Not at this time. It is simply a face replacer for now. It might expand with more features in the future.
how do i use it?
Look at the instructions tab of this page. It has detailed instructions.
So, the Foundation Faces replacer.zips i have already loaded and are part of my game, Recast will take over the distribution of them from Skypatcher once i have installed it without me doing anything else ? Any new ones, i just create the zip in Faces as before and drop it in the same way ?
Create new patches with Recast to replace the SkyPatcher patches you made.