How to add a new appearance to an NPV
This will show you how to add a new appearance to an NPV if you maybe didn't make it yourself.
Summary
Created: Jul 3 2025 by ratstick Last documented update Jul 3 2025 by mana vortex
This page will show you how to add an appearance to an already-existing NPV.
Introduction
Commissioned an NPV or had someone make one for you and want to add new appearances yourself? It’s easy! Well, sort of. All the hard work has been done, but there are still some things you’ll want to consider. Here’s a guide walking you through it, step by step.
Don’t hesitate to DM me on Discord or Nexus (ratstick
on both) if you need help, or if the guide is unclear! You can find me in the modding community discord, the AMM server, the KS server, and Veegee’s server. <3
Disclaimer
I love subfolders and organizing my NPVs. The screenshots I’ll be sharing are from a mostly vanilla fem V NPV that I was commissioned to make. You’ll see my stupidly detailed folder organization for clothing meshes and textures. If you want to use this in your own projects, you can download it here!
These steps will be the same for adding new hairstyles, tattoos, cyberware, that is only on a new appearance and not the base appearance.
The Mr. Potato Head and Barbie Dress-Up Metaphor
The .ent
file tells the game what file to reference for a given entity to load its appearances. You can elarn more about it on its own page (Entity: .ent files), but don't have to.
The .app
file tells the game what to load when spawning the character entity. You can learn more about it on its own page (Appearance: .app files), but don't have to.
The .app
file is where most of the work takes place. It’s where we’ll start. You can think of it like a Mr. Potato Head doll. The components are the eyes, nose, ears, mouth, hats, bowtie of the Mr. Potato Head doll. When we add items to the .app file, we’re playing dress up with our Mr. Potato Head or Barbie.
What does “custom pathing” mean, and why do we do it?
Custom pathing is changing the folder structure or the name of a file so that vanilla or other modded files don’t overwrite what you’re putting together. This means that if I have Arkhe’s Universal Skin Tone mod installed, but your NPV uses a different skin file, then your file wouldn’t be overwritten by me having that mod installed.
I take a broad approach to custom pathing and path nearly everything that isn’t an engine file or file type not commonly edited. I still recommend doing this for vanilla clothing items, as replacers are still used for some clothing items. In general, I recommend custom pathing the following file types:
.mesh
.mi
.xbm
.mlsetup
.mlmask
Adding new appearances
Step 1: The project
If you already have a Wolvenkit project for your NPV, you can skip this step and go straight to Step 2: Duplicating an existing appearance.
Open WolvenKit and select “create a new project”.
Fill out the stuff. Make sure you use underscores instead of spaces. WolvenKit will freak out, and your shit may not work if you use spaces in folders and such.
Follow the guide for Analysing other mods on how to add your NPV's files from the
.archive
you have installed. Add every file in the archive.Find your NPV's control files - there should be an
.xl
and (maybe) a.lua
.The
.xl
file goes directly into your project'sresources/
folderThe
.lua
file goes into the folderbin\x64\plugins\cyber_engine_tweaks\mods\AppearanceMenuMod\Collabs\Custom Entities
. You can use Wolvenkit's Create Folder button to create the entire thing in one go, then move the .lua file there.
Step 2: Duplicating an existing appearance
Since all the hard work has been done for you with the base appearance, you can duplicate an existing appearance. Personally, I usually duplicate one with the same t0 submeshes hidden because I frequently forget to unhide them. (We’ll get to this in a later step).
Find your .app file and click the blue button to open it (you’ll see it when you hover the file).
Right-click on the appearance you want to duplicate and select “Duplicate in Array/Buffer”.
After duplicating, make sure the new appearance is selected. In the right pane, you’ll see a field that says “name”, that’s where you can change the appearance name. Remember!! You must use underscores, no spaces!
Step 3: Playing Barbie Dress-Up (Adding items)
Once the name has been changed, click the carat next to the appearance to expand it
Click the carat next to
components
In most NPV .app files, clothing has its own section. Scroll down to find it.
A brief explanation on .app file component names
Your .app file may look different. Modded items will usually have their own mesh names. For vanilla appearances, you will find the items that start with the following:
t1 (inner torso)
t2 (outer torso)
s1 (shoes)
h1 and h2 (headwear)
l1 (legs)
g1 (gloves)
i1 (items, e.g., pouches and bags)
3.1 Delete the components you don't want
I don’t want the sunglasses in this appearance, so I’m going to delete it. Right-click on the item and select “Delete Item in Array/Buffer”.
Now it's time to play some dress-up with our barbie.
Finding shoes
I want to use a different pair of shoes.
First, let's start by finding our mesh. You can either
Search for the item's file name (if you don't know it, here's how you can find out)
Go through the asset or mod browser to find it in the folder structure
Use the Wolvenkit Search
I want to use the converse.
Right-click on the .mesh (p)ma = (player) male average; (p)wa = (player) woman average
Click “Add selected items to the project”. This will duplicate the folder structure in your project as well.
Remember, we generally want to custom path most items.
I’m going to add a new subfolder (right click on one of the folders) to “feet” for the converse and add another subfolder inside that for the textures. You can also rename the mesh, however I prefer a more organized file structure as I find it easier to navigate, especially if I ever need to change textures!
Drag and drop the .mesh into the new subfolder.
Updating the boots component
I’m going to swap the existing boot component in the .app file for the converse.
Change the path to the
.mesh:
Right-click on the mesh and select “copy relative path to game file”.
Paste it into the “DepotPath” section on the right pane.
The component can be renamed to whatever you want. I’m going to put “converse”.
Finding mesh appearances
Now we need to find the mesh appearance and clean up any unused mesh appearances. This just keeps it nice and tidy and easy to find the materials you actually need to change. Just like we did when opening the .app file, hover over the mesh and click the blue button to open it.
The first section you see contains the mesh appearance names, and these are what we’ll put in the meshAppearance
field. I like the look of the black converse, so I’m going to choose the “black” meshAppearance
.
The component in the .app should now have the mesh appearance, component name, and path to the mesh changed.
Optional, but recommended: Cleanup
Now, it’s time to clean up the mesh appearances! If you use more than one appearance in the mesh, it’s fine to keep those entries in the mesh file. I only want to use the black appearance, so I’m going to delete the rest of the material entries. WolvenKit has a very handy tool that will do this part for you.
Select the appearance entries you don’t want, then right click and hit “Delete Item in Array/Buffer”. Alternatively, you can also select the entry you want, hold shift, and click "Delete everything but selection".
Click on “Clean up” and then “Delete unused materials”.
Everyone say “thank you WolvenKit devs.”
Custompath the material files
Now to edit the path of the textures. Find the localMaterialBuffer and click the carat on the left to expand it. Do the same thing for materials, CMaterialInstance and the values. These contain the paths to the textures we’re going to change.
Click the yellow arrow to add the texture to your project. We can ignore the baseMaterial because that’s an engine\materials file and I don’t think those are ever changed in any mod.
Just like when we added the mesh to our project, the textures will replicate the folder structure.
And just like we did with the mesh, we want to drag and drop those into the “textures” subfolder.
Just like we did the mesh path, right-click on the texture, select “copy relative path” and paste it into the corresponding field in the .mesh. Then save it. Do this for all the textures that need to be pathed.
This guide is getting hella long already, so I won’t bore you with adding more clothes. The process will be the same no matter what you add.
One thing you may want to do is hide some of the body submeshes to prevent clipping through clothes. Find the t0 mesh component in your appearance and toggle off or on the chunkmasks. You can also open the mesh and switch to the preview tab to see which submeshes you may want to hide.
Step 4: The Paperwork
Save the .app
file after you’re done updating and adding your clothing. This can take a while sometimes depending on a few different factors. But just wait until it’s done.
Now, we need to tell the game that there’s a new appearance that can be used for the entity. That means we have to update the .ent file. Find that file in your project and click the blue icon to open it.
Right click on any one of the .ent entries and select “Duplicate in array/buffer.” Just like we did when we duplicated the .app appearance, we’ll need to rename it. Rename it to the same name you used for the appearance. Pay close attention to the formatting of the “name” field. You only need to append the new name to the end of the NPV name.=
This is what it should look like.
Save the .ent
file now.
Optional: Add the appearance to AMM
If you don't want to use AMM, you can skip straight ahead to Step 5: The Finish Line
If you also want it to spawn in AMM, we’ll need to add the appearance to the .lua
too. You can do this in any text editor, I use notepad++
Pay close attention to the formatting of these names!
And don’t forget the comma!
If you also want the NPV to show up in photomode, you’ll need to regenerate the photomode files. Thankfully, WolvenKit has a way to do this automatically too! You can find the guide to do that on the wiki.
Step 5: The Finish Line
This guide assumes you’ve never opened WolvenKit in your life so I’m going to show you how to pack the project.
In the top bar, you can click on "Install and launch":

This will pack your mod, install it to the game directory, and then launch the game for you.
If you made a new project and aren’t using the one the modder did, make sure you uninstall the old NPV by deleting all of its files.
And that’s it! Install and go, test it out!
Final Notes
Garment support doesn’t work on NPVs. You can hide submeshes in ACM or in WolvenKit. You can also edit the mesh(es) in Blender to cut out or resize the parts that clip with other items. I’m too lazy for that and just edit out the clipping in Photoshop lol.
This process should work for NPC+ too. And again, please don’t hesitate to reach out to me (ratstick
) if you need help!
Last updated