NPV - Tutorial - Part 0


The Process & Product


Before we dive into the technical parts of the NPV creation process, I want to be clear on the product which this tutorial will help you make.

At the end of this guide, you will have created the necessary mod files such that you (and\or any other Cyberpunk 2077 players that you give these files to) can use MaximiliumM's Appearance Menu Mod (AMM) to spawn your V as a unique NPC (an NPV). This spawned NPV can then be used as a companion, as per the companion functionality of AMM, or used for screenshot purposes, either by using any of the variety of NPC posing\animating mods that are currently available, via the swapping function of AMM, or via AMM's own posing functionality.

Through additional minor edits, the files created through this process may also be used in conjunction with xBaebsae's Nibbles to NPCs 2.0 mod in order to spawn and pose the NPV via Cyberpunk 2077's Photo Mode.



NPVs and Mods


The NPV creation process will strive to create a unique entity that looks like your V; to do so will require the handling of the components that make up the character, from textures to meshes. As many players use mods to achieve the unique look of their characters, these modded components must be adressed, one way or another, when creating an NPV that mimics the look of a modded character.

You may skip these subsections if your V is "vanilla" - entirely unmodded - and you intend for the created NPV to be used exclusively in unmodded games.


Mod Conflicts

Though in some cases you will be looking to create an NPV for your own personal use, in a situation without concern for mod conflicts, often the intended use of an NPV will be such that blanket-applied mods are not a suitable solution.

For example, let's say I were to create a FV NPV that utilized the player body mesh and I packed with it a custom body texture (without custom-pathing that mesh/texture). If I then I gave that NPV's files to a friend to allow them to spawn my V in their game, their FV would also be impacted by the custom body texture I packed or, depending on load order, if they had a different custom body texture mod installed, it's possible both their V and my NPV would use their mod's textures.

The above situation is similarly applicable to most textures and meshes that we do not hesitate to simply replace in our usual modding; in a game where I am only ever loading my V, there is no reason to worry about adversely impacting the textures of all Vs, as only one will be onscreen at a time. The existence of NPVs makes this a concern. Without being handled properly and custom-pathed, any non-custom mesh placed on your NPV via path inclusion is subject to texture/mesh/mlsetup replacement mods used by anyone utilizing your NPV mod. Even custom meshes, such as the head meshes you must include in your mod files, will be subject to texture/mlsetup mod interference if not custom-pathed.


Custom-Pathing

The easiest way to avoid possible conflicts between your NPV mod and mods which impact V's meshes, textures, and mlsetups is to include the meshes in your NPV mod's files, and to custom-path the materials of those meshes. Custom-pathing is simply a method where you edit the file paths that a mesh uses to call its materials, whether those are textures or mlsetups, mlmasks, and normal maps. By changing these paths, and then placing the desired textures/mlsetups/mlmasks/normal maps at the new destination, you can avoid situations where your NPV mod and other V-impacting mods you use will alter the same files, and thereby prevent conflicts between your NPV mod and other mods.

The most extreme version of this solution would be to include custom-pathed meshes for every single component that your NPV uses, vanilla or modded, from hair to nails to body mesh, in your mod structure, as well as all of the appropriate textures/mlsetups/mlmasks/normal maps (and more) and to exclusively reference these file locations. I personally employ this rather extreme solution, however, it does negate some of the convenience of this method of NPV assembly; it is tedious and will ultimately create a much larger file.

As with most things, a degree of moderation can still ensure very good, if not perfectly consistent results. There are some less extreme measures that will offer a degree of protection from mod conflicts without custom-pathing everything:

More information about how to custom-path your files can be found in Appendix 2 of the existing NPV Guide.


Mod Policies and Ethics

If you did not personally make all of the mods that your V uses, then it is necessary to consider the policies of the creators that made those mods before proceding. Some mod creators do not consider it acceptable to open their mod files, either at all or without explicit permission, even for private, unpublished projects such as a personal NPV. Other mod creators do not mind the opening or inclusion of their files in personal projects, but do not permit such use, or require you to seek permission if the resultant NPV project will be shared publicly or is being completed as a commission. Some creators allow the opening and inclusion of their files without individually seeking permission, even in these latter cases.

Partial policies of some mod authors can be found in Appendix 5 of the existing NPV guide, though it should be noted:

It is my belief that, as a mod user and mod creator, it is your duty to respect the wishes of the creators whose mods you are using; if you do not feel that you can respect the policies of a creator, then it is better to not use their mods, rather than to use their mods while violating the policies they have set forth.



Tools


As with many projects in Cyberpunk 2077 modding, there are multiple workflows and different tools that can be utilized in the creation of an NPV. Some methods that worked historically have also become deprecated or less functional over time. With this in mind, I will break the tools involved in the NPV creation process into two categories: blanket requirements and mesh-handling workflows. No matter your other modding preferences, you will need to have the tools listed as blanket requirements. Then, you will need to select either the Noesis-centric or the Wolvenkit-centric workflow for your mesh handling.

Ultimately, you should use whichever tools you are most comfortable using and find most dependable. When it comes to the personal prefernces of this guide's author- I would recommend choosing the Noesis-centric mesh handling workflow, as it is marginally more stable and dependable.

Note: As of the original release of this web tutorial, only the Noesis-centric mesh handling workflow is supported via full instruction. While file resources are available for those looking to use the WolvenKit-centric mesh handling workflow, instructions on how to complete this workflow are not included as a part of this initial publication.


Blanket Requirements

Blender - Download Blender 3.3 Here
Blender is a free tool for 3D modeling (and more). Though other 3D modeling utilities may be partially usable for the NPV creation process, certain NPV resource files are designed specifically for use in Blender. Additionally, the author of this guide cannot provide support for problems encountered in other 3D modeling utilities. The images in this guide depict Blender version 3.3 specifically, though other more recent versions should work as well.

Plain Text Editor
No specific plain text editor is required for the sake of this process; any should suffice. Notepad is widely available. Programs geared toward writing code, such as Notepad++ (Download Notepad++ Here), Visual Studio Code (Download Visual Studio Code Here), and others may provide some additional utility if they recognize the lua language and can thereby help to catch typos and general syntactic problems.

Wolvenkit App - Download Wolvenkit Here
The Wolvenkit app is designed as a standalone modding tool for Cyberpunk 2077 modding, though it can be used in conjunction with other tools. For this process, what is key is that it is capable of editing .app and .ent files, as well as performing other edits that will be required in order to custom-path files in your NPV project. The link provided here is for the most recent stable release of the tool. Specifically, you should download either the Wolvenkit or WolvenkitSetup file, not Wolvenkit.Console; the Wolvenkit.Console download is for the command line tools (Wolvenkit.CLI), not the app.

Mod Packing Tool - Download Wolvenkit Here
A mod packing utility is required in order to pack the NPV mod's files for use in Cyberpunk 2077. Either the command line tools (Wolvenkit.CLI) or full app version of Wolvenkit may be used for this purpose. Download the Wolvenkit.Console file if you wish to use the command line tools, or else you may simply use the app version of WolvenKit that you installed above.


Noesis-centric Mesh Handling

Noesis - Download Noesis Here
Noesis is a tool for viewing models and textures and for converting such files between various formats. In order to use Noesis to work with Cyberpunk 2077 files, you will need to download the Noesis Cyberpunk 2077 plugin by alphaZomega and install it, and you will also need to work in the 64-bit version of Noesis. To install the plugin:

  1. Install Noesis.
  2. Download and extract the the Noesis Cyberpunk 2077 plugin from the link above.
  3. Copy the fmt_CP77mesh.py file from the plugin download.
  4. Navigate to your Noesis installation folder, to Noesis\plugins\python , and paste the fmt_CP77mesh.py file here.
  5. In your Cyberpunk 2077 installation folder, navigate to Cyberpunk 2077\bin\x64 and copy the oo2ext_7_win64.dll file.
  6. Paste the oo2ext_7_win64.dll file in the same folder as you placed the plugin file, Noesis\plugins\python .

In most cases, working with Cyberpunk 2077 files in Noesis will also require a means of extracting the individual game files from the game archives. In the case of NPV head mesh creation specifically, this guide will provide the pre-extracted files for your convenience. In other situations, you may use the Wolvenkit app to retrieve individual game files or the Wolvenkit command line tools (Wolvenkit.CLI) to unbundle entire game archives.


Wolvenkit-centric Mesh Handling

You may choose to use the WolvenKit full app for the purpose of handling importing meshes for your NPV project, in addition to the other purposes outlined above.



Using The Guide


For all sections of this guide, I suggest that you read through the section in its entirety before attempting to complete that section's tasks. Then, return to the beginning of the section and follow along with the steps. This will seem more time-consuming without a doubt, but it is the approach most likely to save you from redundant work, frustration, and other possible issues, which will in turn save you time. The information in each section is laid out as sensibly as I could manage, but there will inevitably be portions where full knowledge of a section's contents will make the earlier parts of that section easier to understand and follow, allow you to choose a preferable workflow, or even allow you to skip steps.

With the exception of mod creators who already have a very solid understanding of all the underlying modding processes that go into creating an NPV, no one should expect to sit down and make an entire NPV, start to finish, in one afternoon. Work in chunks, don't rush, and when prompted by this guide to check your progress by testing something in-game, do.