Appearances: change the looks
Changing an NPC's default appearances (and adding more via AMM)
Created by @manavortex Published December 27 2022
This guide will walk you through editing NPC appearances for Cyberpunk 2077.
If you want to create your own custom NPC, see here.
It uses the following versions:
Cyberpunk 2077 game version >= 1.6
WolvenKit >= 8.7.1-nightly.2022-11-04
(only if you want to add new appearances) AppearanceMenuMod >= 1.15
The .ent file
The game's first point of contact is the .ent file. You can find it by searching WolvenKit like this:
<npcName>*.ent
If you come up blank, try around with variations. E.g., Johnny is "silverhand", Viktor is "ripperdoc".
You don't need to add the .ent file to your project, unless you want to add more appearances.
However, the file contains the path to an .app file. Find and add it to your project.

The .app file
The array appearances will contain a list with every appearance that's defined for this NPC, matching the key appearanceName in the .ent file.
The only thing you need to care about is the components
array, where you can add, remove, or modify parts of an NPC's appearance:

This is where the magic happens.
Changing and removing components
Change items by selecting a different appearance or a different mesh:

Remove items by deleting their entries from the list:

Animations: if you can't avoid them, copy them as well!
Anything of the type entAnimatedComponent
means that components are animated. That's mostly the case for physics-enabled stuff influenced by gravity, such as coats, jackets, or long hair.
Animations are usually unique to meshes on a by-pixel basis and do not react kindly to edits or swaps. (Try splitting the obi from Saburo's kimono into its own submesh if you don't believe me).
If you copy an animated component (e.g. Johnny's vest), then you need to copy the corresponding entAnimatedComponent
as well, or the mesh won't move.

(Safely) adding components
The obvious thing to do if you want to add a new item is to duplicate another component and then act as if it was just another change:

And this might work. Or it might end up leaving them standing in an exploded pixel cloud. In case of animated components, editing them will almost certainly break them.
Anything of the type entGarmentSkinnedMeshComponent
will not take kindly to manipulation.
In that case, you need to browse the files for any occurances of the component you want to add and copy the relevant components. For example, if you want to put Johnny into a different kind of vest, this is how you'd go about it:
Search for the mesh name of the vest that you want to use (e.g.
ma_vest__high_collar*.mesh
)Select the mesh, then "find files using this":
If you run into an error, make sure that you have the "Wolvenkit Resources" plugin installed!I
Find an .app file that looks promising - for example Scorpion's:
Open it without adding it to the project (you don't need the file).
Find and select the components in the other NPC's appearance list:
Select "Copy Selection From Array/Buffer"
Go back to your original .app file and select either the "components" array or any component inside it. Now right-click and select "Paste Selection From Array/Buffer".
If you haven't done that yet, delete the original component(s) and animations:
Save the .app file, pack your mod, and go testing!
Adding new appearances
This part of the guide requires Appearance Menu Mod
Adding a new appearance to AMM requires you to register it in three files:
the .lua
the .ent
the .app
If you are using HotReload, don't forget to "reload all mods" to make AMM pick up the changes in the script.
The .lua file
To tell AMM about your new appearances and make them available, you have to create a LUA file in the following folder: Cyberpunk 2077\bin\x64\plugins\cyber_engine_tweaks\mods\AppearanceMenuMod\Collabs\Custom Appearances
. Let's call it AMM_JohnnyTutorial.lua
.
Give it the following content:
return {
modder = "tutorial",
unique_identifier = "tutorial_johnny_appearances",
entity_id = "0x5E611B16, 24",
appearances = {
"silverhand_cyberspace_glasses",
"silverhand_fluffy_socks",
},
}
The entity_id is unique for each NPC and tells AMM which file to load.
You can find the correct entity ID by looking at the character with AMM:
Now, we have to hook up the new appearances.
The .ent file
Find the .ent file that you've identified in the first step of this guide, and add it to your WolvenKit project. Open it, then duplicate the last item in the appearances array. Now, change the new entry to match your custom appearance:
appearanceName
cyberspace_glasses
name
silverhand_cyberspace_glasses

The .app file
In the app file, duplicate one of the already existing appearances, and change the name of the new item to the one you specified in the .ent file:

Congratulations — that's it! Install your mod and go testing!
Troubleshooting
My new component won't move at all!
You may have forgotten to copy the animation file. Look for an entAnimatedComponent inside the .app — they're usually called something like xxx_dangle(s)
or collar.
(See here)
I added an appearance, but a random one is showing when I select it
That's what happens when the game can't find the appearance you picked. You're probably trying to add an AMM appearance. Check the spelling between your lua file with the appearance name, the mapping entry inside the .ent, and the appearance's name in the .app file.
For further troubleshooting steps, see here.
Last updated