Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Stuff that didn't fit the other categories
This collects all guides that didn't fit any of the other categories. Check the navigation tree on the left / in your phone's menu.
For a guide on making , check the world editing section!
If you want to make custom translations, you can check #how-does-the-game-assign-display-namesfor a guide.
Importing textured items (and creating an AMM prop set in the process)
This guide will walk you through importing 3d objects into Cyberpunk 2077, which can then be spawned via Appearance Menu Mod.
Level of difficulty: You know how to read.
You can learn more about materials under Textures, Materials and Shaders
Find a look-up list of cool materials under Cheat sheet: Materials
For a more detailed guide about prop creation, check Custom props
Or maybe you wonder #where-to-find-models
If you only want to know how to apply Cyberpunk materials to parts of your mesh, check "Splitting off submeshes" below.
For a guide about changing materials, check Changing materials, colors and textures
If you want to understand material assignment, check 3d objects: .mesh files-> #material-assignment
Appearance Menu Mod (> 2.0.2)
This section is already covered in the guide for custom props, using the source folder variant, or directly download this archive and extract it into your Wolvenkit project.
Optional: Complete the creating another prop section from the custom props guide, or alter one of the two existing template items.
This guide will assume that you are editing template_no_variants.mesh
, as our focus is on mesh import and material assignment. You can delete the folder amm_props\template
, since we won't need it.
Delete obsolete files (Windows Explorer or WKit):
amm_props\template
amm_props\template_no_variants\template_no_variants_multilayered.mesh
textures\6_layers.mlmask
textures\6_layers.mlsetup
The first step to importing a mesh is exporting a mesh, since the import needs to overwrite already-existing files.
This will create the following files under the project's raw
section:
Optional: Download this archive - I have prepared it for import. It contains both the original glb from sketchfab and the version I prepared for import:
Use the Windows Explorer to copy these .glb files and textures into the same folder as the ones you exported in the previous step.
Replace the files from your export with the files from your download. The names need to be exactly the same.
Use baseball_02_d.png
, as the other one doesn't have transparency.
The import/export process has its own guide. There's also a troubleshooting page if you're stuck.
The next step is to assign materials to the object.
Good! You've been paying attention! Step 2 is to prepare the downloaded 3d asset to work with Cyberpunk. Depending on your target file, this can be any level of difficult, but the steps below should be enough for most meshes.
All of these steps will be taking place in Blender.
The files you download will have all sorts of structures. In the end, you want to end up with a flat hierarchy of object(s):
LOD_1 indicates the level of detail
The submesh numbers are important for material assignment in Wolvenkit.
The easiest way to get there is by running this python script (source: manavortex's github) in Blender after import: - Switch to the "Scripting" perspective - Create a new file - Paste the contents of the script into the file - Hit the "play" button
A mesh that I imported with 9 simultaneously visible submeshes made the game crash with a likelihood of ~ 80% when I spawned or de-spawned it (scaling was fine). You might want to create two separate files if you have too many objects.
Since it clearly works for e.g. the body mesh with ten submeshes, make of this what you will.
Sketchfab meshes often use dozens of submeshes, but we want to split by cyberpunk's logic:
Every submesh can have its own material assigned in the mesh, and can be hidden or displayed via chunkmask. This is how you assign Cyberpunk materials to parts of your imported asset.
I've always found it easiest to join all meshes into a single one:
In Object Mode, select all meshes but one (Hotkey: A
, then Ctrl+
click a mesh to deselect it)
Select the last mesh (hold Shift
or Ctrl
)
Press Ctrl+J
to merge everything into that last mesh
Switch to Edit Mode
Select everything (Shortcut: A
)
Optional, but recommended: run the script again to get properly numbered submeshes.
This will let us assign one material per "section" of your mesh.
Especially when exporting meshes from sketchfab, there are often duplicate materials. Feel free to fuse everything that you want to e.g. slap black plastic on.
I usually join everything into one object that'll have the same material in the game, unless I want to hide parts of it to make variants.
But the opposite is also possible: You can split off parts from the original object, putting them into their own submeshes. I have done this in the baseball example: the seams will get a texture, and the rest of the mesh will be coloured with a cyberpunk material.
You do that by changing into the edit mode, then selecting everything that you want to split off ("Select Linked" or "Select More" is your friend here), and splitting it (P -> Split Selection).
You can duplicate your selection first (Shift+D
, ESC
)
Now, switch back to Object mode and select your new mesh before going back to Edit Mode. Make sure to scale your new mesh, so that it is slightly above the surface of the old one - otherwise, you will have two things in the same place, which will look like shit.
Make sure to correctly name your new submesh, or run the script again.
You can complete unparent + apply transformations via Blender script: Switch to the Blender "Scripting" perspective, create a new file, paste the code from mana's github, and click the play button.
Select everything (click the viewport and press A), then unparent the objects by pressing Alt+P. Select "Clear and Keep Transformation".
Since those are saved relatively and Wolvenkit will ignore them, your objects might end up larger or smaler than you expect them, or be in different places.
Select your objects in the viewport, then press Ctrl+A
and choose "All Transforms".
Scale your 3d object in Blender until it has the size you expect it to be in-game.
If you do this in the object mode, you need to apply transformations afterwards. Alternatively, you can scale the vertices in edit mode.
If your mesh still scales weirdly in Wolvenkit / the game, you can create a new mesh in Blender, delete its vertices in edit mode, and then join your original object on top of it.
If you need a reference object, you can use this lightsaber from my props.
Keep in mind that your prop will rotate around the world origin, and position it accordingly.
Once you are done, import the glb file over your original mesh (you can consult the troubleshooting section below).
Your import has been successful when the preview in Wolvenkit changes (you might have to select another file first).
For an overview of materials that you might want to use for something, check here.
You can check a material's properties by opening the file inside of Wolvenkit and checking the last entry of the "parameters" array, or search for "files using this" and looking at how they're doing things.
You can find explanation and documentation about materials here.
Select the entry "texture" inside the array materialEntries
Duplicate it
Select the new entry
Change the name to mlsetup
Change the index to 1
Open the array appearances
, select the first appearance (default
) and select the array chunkMaterials
. Create a new entry, or duplicate the existing one. Make sure the list order shows
Open baseball_textured.mesh
Find the CMaterialInstance "texture" inside localMaterialBuffer.materials
.
Select it, then copy it via right-click (Copy (Selection) from Array/Buffer)
Switch to baseball_tml.mesh
Select localMaterialBuffer.materials
Paste the textured material (Right click, Paste (Selection in) to Array/Buffer)
You can now delete the second mesh, as you don't need it anymore.
Let's update paths and values. Still inside of localMaterialBuffer.materials
, change the following properties:
For the leather texture, I've just picked a random mlsetup from the game files (which I found by searching Wolvenkit for leather > .mlsetup
). If you want to make your own mlsetups, see here.
Save the mesh. You can check the "Mesh Preview" tab if the materials show up. If the mesh turns invisible, you'll want to double-check your paths, though!
Open the baseball's entity file (your_name\your_prop_pack\baseball\baseball.ent
).
Open the components
array.
Select the second component (amm_prop_slot1
)
Change the mesh -> depotPath to the path of your baseball mesh (your_name\your_prop_pack\baseball\baseball_ml.mesh
).
Leave meshAppearance
on default
, unless your mesh has multiple appearances: This is where you select which entry in the mesh's appearance array will be used.
Delete the other amm_prop_slot
components. (These are where you would add more mesh files to your prop - but keeping them makes your prop be full of glowing cubes).
Save the entity file.
If you have more than four mesh files assigned to your entity's components, the prop will no longer be scaleable (as of AMM 2.0.2). You can get around this limitation by making meshes with more submeshes instead of individual files.
Open the lua file under resources\bin\x64\plugins\cyber_engine_tweaks\mods\AppearanceMenuMod\Collabs\Custom Props\your_prop_pack.lua
.
Set modder to your name and unique_identifier to anything, e.g. your_name_your_props
. Now, adjust the first entry in the "props" list to point to your entity file:
The "path" parameter is the relative path to your entity file, but every backslash has to be doubled.
"name" is what you'll search for in AMM. "distanceFromGround" is pretty self-explanatory, but I prefer it if my objects are floating.
Save the lua file, install your mod, and launch the game. Time to test!
For an explanation how materials are assigned to a mesh, check this page - this guide will just tell you what to do.
You can copy entire materials between meshes: select one, right-click, and pick one of the "copy from…" entries.
Open template_no_variants_textured.mesh in WKit. All of the following operations will take place in that file.
Open appearances/default/chunkMaterials
. You need to have one per submesh.
For a more detailed explanation/guide, see the next section. If you don't care, you can skip straight to the next section and fix up the material entries.
chunkMaterials
are where you assign materials by submeshes. The identifier here is the name.
Before changes, the first (and only) submesh will use the material mat_textured
. Our newly imported mesh (the baseball) has two.
Add a new chunkMaterial to the array by either
right-click the existing chunkMaterial and select duplicate
select the array chunkMaterials
and then click the yellow (+) button int he side panel
then change the name of the first entry to mat_ingame
:
You can name your materials whatever you like, as long as you stick to the following rules:
You need one chunk material per submesh
chunkMaterials needs to be in the same order as your submeshes — if you're uncertain, check the "Mesh Preview" tab
The names should be lower case without spaces and special characters. Numbers are fine!
Find the array materialEntries
at the root level of the mesh and open it. It will have two entries:
Select the second entry and change its name to the one from your chunkMaterial (mat_ingame
). Numerical order does not matter here.
MaterialEntries are a lookup map between the material names in the chunkMaterials and the actual materials (see here for an explanation). You can have local or external materials or a mix of both; check this page for an explanation.
Now, we adjust the materials — we'll just change a few properties to show you how it works, and then you can go play.
For another guide on how to edit materials in detail, check here.
Find the array localMaterialBuffer/materials
and open it. It contains two materials. Wolvenkit will display the names corresponding to the material entries so you can see which is which.
For an explanation of material parameters, see this page.
The first one, mat_textured
, is the one that we will use for the seams. If you imported your textures by overwriting the original export, you shouldn't need to do anything here.
Instead, we will change the second material, mat_ingame
.
If you rather want to make your own mlsetups, see here.
Select mat_ingame
Expand the material and its values
array
Delete the parameter MultilayerMask
GlobalNormal: Re-use the same as your textured material (by default: tutorial\amm_props\template\textures\template_01_n.xbm
)
MultilayerSetup: Set it to base\characters\garment\gang_nomad\legs\l1_021_pants__cargo_computer\textures\leather_red_basic.mlsetup
Select mat_ingame
Delete all parameters from the values array
Set the baseMaterial to base\environment\decoration\containers\cases\coffin\textures\m_z_gold.mi
The possibilities are basically endless, so go and explore them already! For a nifty list with materials to get you started, check here. For a guide on creating AMM props, see here.
This section will only cover troubleshooting steps for this guide. For general 3d model troubleshooting (including import errors), see here.
AMM can't find your .ent file. Check the paths in the lua.
This can be one of the following issues:
the path from .ent to .mesh is wrong
the mesh appearance in the .ent file can't be found (check spelling in both .ent and .mesh)
the mesh appearances's chunk materials can't be found (check spelling in the .mesh, both in the chunkMaterial assignments and the CMaterialInstance in localMaterialBuffer.materials
)
Check your mesh's face orientation in Blender — inside-facing meshes are usually transparent.
Check your mesh's chunkmasks in the .ent file: maybe you have accidentally hidden a submesh?
If that doesn't help as well, try assigning a default game material (search for anything ending in .mt and put the path in your material's baseMaterial.DepotPath
).
Try assigning a default game material by searching for
Check the scaling in Blender and make sure that you have applied transformations.
Use engine\textures\editor\normal.xbm
These ones will have a blue normal map as opposed to a yellow one. Invert the blue normal texture before importing it..
Published: February 11 2023 by Last documented update: Mar 18 2024 by
In Wolvenkit, open the (Tools -> Export), and export everything in your folder: the mesh(es) you want to use and the textures.
Now that all files are in place, open the in Wolvenkit (Tools -> Import), and re-import the files. The Wolvenkit preview should show your new imported mesh.
optional: You can now and spawn the prop.
Separate (Shortcut: P
) and select "By Material"
Material | name of KeyValuePair | value |
---|---|---|
textured
Normal
your_name\your_prop_pack\baseball\baseball_n01.xbm
BaseColor
your_name\your_prop_pack\baseball\baseball_d01.xbm
mlsetup
GlobalNormal
your_name\your_prop_pack\baseball\baseball_n01.xbm
MultilayerMask
delete it
MultilayerSetup
base\characters\garment\gang_nomad\legs\l1_021_pants__cargo_computer\textures\leather_red_basic.mlsetup
As you have probably noticed, female V has two different feet states because fuck you, that's why. Fortunately, that's why a bunch of really smart people came up with ToggleableFeet, which gives you some freedom for ArchiveXL and EquipmentEx.
To see the documentation, scroll to the bottom of the Nexus mod's page and click on the spoiler tags
Created by @Pinkydude Published Summer 2021
Go in the two little lines with circle thingies, and go to “edit” / the second option. Click on the “Media” tab and you’ll be able to put any pictures!
Mind the resolution, and put something smaller than the ones recommended (it doesn’t work if it’s exactly 660x930px)
How to avoid changing every single depotPath in your mod by hand
Check the following steps:
In Wolvenkit, save all your open tabs and close them. You don't want any files to be open in Wolvenkit for what comes next.
Move and rename your files and folders, e.g. tutorial\myshirt
to your_modder_name\my_tshirt
. (If Wolvenkit doesn't let you, you can use the Windows Explorer.)
Make sure that you stick to lower case letters and use _ instead of spaces!
Good: your_modder_name\my_tshirt
Bad: yourModderName\myShirt
Horrible: your modder name\My Shirt
In Wolvenkit, right-click on the top level folder under archive and select "Convert to JSON"
We will use Notepad++ to adjust the file paths in all files in your project. For that, we need to find and replace the following entries. If you aren't sure about that, see the next section.
If you already know what to do, you can skip forward to Importing Back.
Switch Wolvenkit's project browser to raw
, then open one of the created .json
files in Notepad++.
Use "Search: Find in Files..." (Ctrl+Shift+F
)
In Find What
, enter the name of your old folder (e.g. tutorial
)
Click Find All
- that will give you all the entries you have to replace.
Make sure that you are using the same kind of slashes. If the old path has double backslashes, the new path must have them as well.
You know what to replace now. For every type of entry, do the following:
Use "Search: Find in Files..." (Ctrl+Shift+F
)
Check the Follow Current Doc.
checkbox.
Click into the Directory
field. It now has the path to the file you've just opened
Cut off the subdirectories: you'll want to search and replace directly under source
For Find what
put the name of your old folder that you copied in step 6
For Replace with
put the name of your new folder. Make sure that you have double backslashes!
Click on Replace in Files
Now that we have changed the paths, we need to get those changes back into our Wolvenkit project. In the project's raw
view, right-click on the toplevel folder and select "Import from JSON" (however it is named, there's just one item that will let you import your json files)
If you have packed any tutorial projects before renaming files or folders, make sure to delete leftover files from your Cyberpunk 2077 directory. It's easiest to search the root folder for tutorial
and delete everything that looks like your old stuff — if it's from your project, the next install will put it back.
That's it! Have fun!
Created by @Pinkydude Published Summer 2021
What you’ll need :
WolvenKit or the extracted game files
Photoshop / Art program
I’ll assume you already know some basic modding (extracting the files with the console or WKit etc)
First of you’ll need to create your mod folder, it should look like this
This is where the Loading screen image are stocked, so go in that exact same folder in your Game Extracts!
Depending on the resolution you’re using, you’ll have to edit either the 4k files or the 4k_1080p files
I personally need the 4k files ; There is 13 loading screens in total, and you’ll need the .tga .dds and .xbm files for each one, meaning 39 files in total in your mod folder
Now open Photoshop, and edit the .tga files with your screenshots!
You’ll notice that the loading pics are vertically swapped; be sure to also vertically swap your pics so that it’ll look normal in game
Once you’re done editing all 13 .tga files, you save them
We now open Noesis, and navigate to our mod folder
You’ll need to Right Click on your .tga files and select Export, and change the Main Output Type to .xbm
Click export, you should see a pop up window; simply click OK
Once you’re done exporting all your 13 .tga files to .xbm, you can delete the .tga files from the mod folder (or keep them somewhere else! remember to put them back in the mod folder to export them if you do want to edit them later)
You should now have 52 files - the originals and your exported .xbm with “out” at the end of the name. Delete the originals and rename your exported .xbm to take out the “out” !
Then you’re left with 26 files, it should look like that :
We now open CP77 Tools / Wolvenkit Console ! We need to rebuild the .xbm files
cp77tools import -p [PATH] –keep
Pack your mod and test it!
Guide to creating neon signs from 2d textures
This guide will take you through the steps of replacing one of Cyberpunk's neon signs with a custom mesh.
If you want, you can then turn your replacers into new Custom props for AMM!
To learn how material assignment works, check 3d objects: .mesh files and its sub-page Submeshes, Materials and Chunks
To learn more on how materials in general work, read Textures, Materials and Shaders
For a guide on changing an existing mesh, read Changing materials, colors and textures
You need the following software:
Start with an image. We're aiming for our own neon sign here, and we'll aassign the colours later in Wolvenkit, so make sure that it is something with clean lines and good contrasts. I'll use this:
Make sure that your image is as clean as possible. I can't stress this enough – any rough or fuzzy edges will result in extra geometry, making the cleanup in Blender much harder.
I started by following this guide, but I'll write you a TL;DR
Open Inkscape and create a new document
Select File -> Import and import your .png from step 0
Make sure that your image is selected (click on it if you're not sure, it will have that resizing handle)
From the menu, select Path -> Trace Bitmap (it doesn't have to be a bitmap)
Pick your options in the right-hand panel. I won't cover them in detail here, check the linked guide or noodle around until the result looks OK.
Press the Apply button at the bottom
Your new traced path will be auto-selected for you.
Select File -> Save As and save it as an *.svg file.
Time to switch to Blender to turn it into a mesh!
For this, I've originally followed this guide, but here's a TL;DR for you again:
In Blender, select File -> Import -> Scalable Vector Graphic (SVG)
Import your SVG. It will show up as solid black:
With an active selection, find the curve properties panel in the bottom right (the green icon).
In the "Geometry" section and find "Extrude".
Set it to something like 0.001 — play around with it until your mesh is appropriately extruded.
Do not bevel it! We want the corners nice and sharp, we can always make it round l,ater.
Once you're satisfied, transform the curve into a mesh: Object -> Convert -> Mesh
We're now leaving the previous guide.
Scale, rotate, and move your curve to the centre of the viewport
Fix rotation: Press R
-> X
-> 90
Fix scale: Press S
and move the mouse
Fix position:
Press G
-> Z
to move the mesh up and down
Press G
-> X
to move the mesh left and right
You don't need to move it on the y axis
Apply transformations: Press Ctrl+A
-> T
You will get much better results with the Blender AddOn QuadRemesher; however, after the first 30 days it costs money. You can download a trial version here.
Let's reduce poly count and clean up our mesh. For a detailed guide, see here, I'm going to give you a TL;DR again:
Switch to the "Modifiers" tab in the sidebar panel on the right (the wrench, below the one highlighted in the screenshot above)
From the dropdown, select Generate -> Remesh
Your mesh will be a black box now. Don't panic, we'll fix this by setting the modifier proprerties:
Switch back to Object Mode (press Tab) and apply the modifier. The result should be something like this:
Now, triangulate: switch to edit mode, select everything, and press Ctrl+T. It's necessary for the Cyberpunk reimport.
For better results, I cheated: I split off the ghosts' eyes, the ghosts themselves and Pacman, and used Quad Remesher on each of them. This guide will show you the basics, you can make prettier meshes on your own later once you got it to work.
Switch to the Object Data Properties in the right sidebar, fold out "UV Maps" and click the + button. This is necessary for material projection, and Wolvenkit won't let you import if you didn't do it.
Rename your original mesh to submesh_00_LOD_1
— we need that for the import in Wolvenkit.
You can assign one material per submesh. To split off a part of the mesh,
Change back to Edit Mode
Turn on X-Ray (Alt+Z) and select the shape that you want to split off
Press P
-> S
(Split -> Selection)
Rinse and repeat until you have all the submeshes split off
Time to pull up Wolvenkit.
You can obviously use any kind of mesh or material here!
I'll be replacing base\environment\decoration\advertising\signage\sex_shop_neon_sign\sex_shop_neon_sign_b.mesh
, the heart-shaped ad banner.
Decide on a mesh and add it to your project.
In the project explorer, right-click on the exported file (sex_shop_neon_sign_b.glb
) and select Show in Windows Explorer, because we will now overwrite this file in Blender.
In Blender,
select all the meshes that you want included (in Object Mode)
use the Wolvenkit Blender IO Suiteto export into the file from the previous step.
I'll give the TL;DR version, you should be able to follow along. If not, feel free to read up on how materials work in meshes or find us on Discord!
Open sex_shop_neon_sign_b.mesh
in Wolvenkit and open the appearance on
(as this is the one they're using on Jig Jig Street).
To learn more about this, check Submeshes, Materials and Chunks. This is not necessary for completing this guide.
At the very top of the mesh, we'll need to change the chunkMaterials
as follows:
Now, we define the materials:
Find the array materialEntries
Add four new entries (or duplicate one four times, or…)
Name each item according to the entries in the previous step
Make sure that their index
property is unique and corresponds to their array position.
… and finally, we actually add the materials.
Find and expand the array localMaterialBuffer
and its child materials
Copy the second entry, sex_shop_neon_sign_emissive_red_on
via right-click menu
paste it into materials
Duplicate it three more times
In the new material entries, find the property ColorOneStart
and change it in the side panel.
Repeat for each material, then save the mesh.
Let's hit up Jig Jig Street to look at our sign…
Please remember that you are currently replacing all heart neon signs in the entire game! Before sharing your custom neon, consider making Custom props!
Congratulations! If everything works, you just made a mod!
That's A-OK, but exceeds the scope of this guide. Fortunately, you can just head over to Custom props and proceed from there.
There is really very little that can go wrong here if you closely follow this guide.
If you can't export your mesh from Blender or import it into Wolvenkit, make a cube (right-click into the viewport, Add
, select Cube
. Before you get hung up on this step and burn out, let's add a few cubes to the game to give you a success. After that, you can hit us up on Discord in the #textures-and-models
so we can fix your mesh.
Check the Troubleshooting your mesh edits pages or find us on discord. :)
How to create custom props to use with AMM or sector editing
Published: April 2023 by @manavortex Last documented update: May 07 2024 by @manavortex
This guide will teach you how to create AMM props in two variants:
Its focus is on the file structure and the relations between the files.
… or use the wiki's AI-assisted search function, or simply poke around
For game design or rendering, usually textured:
For 3d printing, usually not textured:
Cyberpunk 2077 game version
Level of difficulty: You know how to read.
Tutorial item
Tutorial item (customizable)
Prepare your Wolvenkit project by merging the source folder you downloaded with the one from your project. By the end of it, you should have the following files:
Optional, but very recommended: Read through the next section to understand what's going on here.
The second part (under "resources") is where AMM will look for custom props. You can't change it other than creating subfolders under "Custom Props".
This section gives an explanation of the included files, explaining the difference in file structure between props with vs without variants.
This file registers your prop with AMM. File content looks like this:
Without a lua
file, AMM (as of version 2.1) won't be able to spawn your props.
Here's what the lines do:
When you edit the .lua, it's usually enough to reload all mods
in CET.
Defined in your LUA
file, this file holds the game entity that AMM spawns when you click the button. There are two ways of using entity files:
One entity file per variant. The props will not have appearances — AMM's prop browser has one entry per entity file (e.g. cube_black
, cube_white
, cube_glowing
).
Edit this kind of prop by opening the following file in Wolvenkit:
Fun fact: The cluttered prop browser annoyed manavortex so much that she joined the AMM developer team, helped Max implement the alternative workflow described below the picture, and wrote this guide!
It was bad!
You add props by putting meshes directly into the components array:
One entity file per prop, one entry in AMM's prop browser (e.g. cube
). After spawning it, you can toggle its appearances (white
, black
, glowing
) the same way you do it with NPCs.
Edit this kind of prop by opening the following file in Wolvenkit:
We will only use entPhysicalMeshComponent
s, and they must be named amm_prop_slot1
.. amm_prop_slot4
if you want to enable scaling.
If you have more than four mesh files assigned to your app's components, the prop will no longer be scaleable (as of AMM 2.1). You can get around this limitation by making meshes with more submeshes instead of having individual files.
template_01_d.xbm
: A diffuse (albedo) map, colouring the mesh
template_01_n.xbm
: A normal (bump) map, adding depth to the object.
If you stick to this naming convention and have your filenames end in _d
or _n
, Wolvenkit will recognize and identify the correct settings for image import.
template_01_n.xbm
: A normal (bump) map, adding depth to the object.
If you have downloaded the example Wolvenkit project, you can now install it and launch the game, seeing everything in action.
Okay, now that we've gone through the theory, let's have a quick overview how everything hangs together:
You can point the prop at a different mesh by changing the depot path of the component. If you have no idea how to do that, read on!
Open the appearance
file tutorial\amm_props\template\template.app
Find the array appearances
at the top of the file
For each appearance, open the components
array
Click on the first component amm_prop_slot1
. In the panel to the right of the tree, change the following properties:
mesh -> DepotPath
. Put the relative path to your .mesh (right-click on the file)
Repeat the process for the other appearances.
Save the file and start the game. If you've done everything right, you will now see your new mesh.
Find the components
array and open it
Click on the first component amm_prop_slot1
. In the panel to the right of the tree, change the following properties:
mesh -> DepotPath
. Put the relative path to your .mesh (right-click on the file)
If you don't want to load more than one mesh, select amm_prop_slot2
and delete the depotPath
. Otherwise, you'll see your prop and a floating cube.
Currently (October 31 2023), AppearanceMenuMod can only scale objects by targeting their components by name. For that reason, yours have to be named as they are.
If you use more than 4 components or change their name, then your prop will no longer scale.
This step is optional. If you just want to see how this works, you can pack your project with Wolvenkit and search AMM for "tutorial item". However, assuming that you actually want to make cool things, you will be doing this a lot.
If you want to create another prop, here's the fastest non-script way to go about it (tried and tested by manavortex).
In Windows Explorer, duplicate the template
folder
Rename the new folder (template - Copy
) to the name of your prop (e.g. baseball
).
It's important that you stick to a schema here, because otherwise, the search and replace below will not work and you have to change all the paths by hand.
Use the exact same value to replace template
in both the folder and the file names!
Good: folder: baseball, file: baseball.ent Bad: folder: baseball, file: my_baseball.ent
Rename all files inside of the folder: replace template
with the name of your prop (e.g. baseball
). Not all files will have template in their names; just ignore the ones that don't.
Capitalization matters. If you use uppercase letters in folder names, the game will get confused, and Wolvenkit will secretly convert them back to lowercase before packing.
Good: baseball
Bad: Baseball
Switch to the raw
tab in Wolvenkit and open your json files in Notepad++
Via Search and Replace in Files
(Ctrl+Shift+F), replace template
with the name of your new prop and folder (e.g. baseball
). Replace it in all files, using Match case:
Optional: If you have changed the folder structure (e.g. moved your folder from the subfolder stuff
to the subfolder misc
), run another Search and Replace in Files
(Ctrl+Shift+F) to adjust your file paths.
In the project browser's raw section, right-click on the folder and select Convert from json
. This will have updated the relationships between the files to your renamed files.
Delete the files / appearances that you don't need. Save and close the mesh file.
To register the prop with AMM, add another entry to the props array in your LUA
file:
Save the LUA file.
Install and launch the game
Spawn your new prop Baseball (customizable)
with AMM.
If everything went well, you should see something like this now:
Before you can share your custom props, you have to change the folder structure and file paths. Otherwise, two people overwrite tutorial.lua
, and one of the mods stops working.
If the syntax is okay and your prop still doesn't show up, double-check your category and make sure that it is one of the existing ones.
AMM can't find your .ent file. Make sure that your .lua points to the correct path in your archive (right-click -> copy relative path and paste it to your lua file.
Toy around with the scaling. Sometimes, your prop doesn't show because it's the size of Johnny's ego and hovers somewhere above your city block – or the opposite, it's microscopically tiny. Don't be afraid to change it by the factor 10 or even 100 and see if that does anything.
If that's not it and if you have a customizable prop (with a root entity), try adding an appearance default
to the mesh. The game will fall back to that one if there are issues with your custom appearances.
How to set up an atelier store for your mod
You also have to add it to your mod's requirements, as atelier stores will cause script errors if users don't have it installed.
Now, add your item.
In atlasResource
, you have to replace all \
with /
Your atelier store will cause script errors if you don't.
Ignore "Icon path" and "description", we have these in the item itself.
Click "Add Item". Repeat the process with as many items as you want.
Click "Generate".
In the downloaded file, check that atlasResource
has forward slashes /
instead of backwards slashes \
, as per the warning box above.
In your project's resources
folder, create a subdirectory r6/scripts (if it doesn't exist already), and move the atelier file that you downloaded into there:
Now, it's time to test! Install the mod and start Cyberpunk.
I'm not sure how you managed to read past all the red and yellow boxes on this page, but make sure that the path under atlasResource
has forward slashes /
instead of backwards slashes \
.
If that wasn't it, you might have to re-generate your Atelier store.
That happens when there are two atelier stores with the same store ID. Do a full-text search for the store ID (MyTutorialAtelierStore
) in r6\scripts
and make sure that you don't have any duplicates.
How to add light components with AMM
This page will show you how to add a light component to AMM props.
This enables the AMM light panel in the target tools.
Not all light components actually support colour and intensity changes. Candlelight, for example, does not.
Your lights will be anywhere relative to your prop. How can you position them relative to the actual object?
Add an Empty in Blender (Viewport, Hotkey: Shift+A
-> Empty -> Plain Axes)
Move the empty to the position where you want your light to be
Switch to the Object tab and see its location transform:
Now that you have the relative position, switch back to Wolvenkit: we need to add it to our entSlotComponent
.
Open the slots
array and select your first entSlot
Find the relativePosition
property in the box on the right
Copy the values from the "Transform" field in Blender (Screenshot above) to the corresponding fields under relativePosition
(screenshot below)
Save and see your effect changing positions!
If your light doesn't seem to be in the right spot, try multiplying the value for z with -1
This tutorial will teach you how to replace your Cyberpunk 2077 Breaching Screen
WolvenKit
RAD Video Tools
Your own custom video (bear in mind that the video file is limited to 10 seconds and it will play on a loop)
Download and install RAD Video Tools (no special assistance with this as its straight forward)
Open RAD Video Tools and browse your video file that that will replace the Breach Screen
Select the video file and click Bink it!
Make sure to change the name of the file and the extension to splash_logo.bk2 and click Bink
After the conversion is done your newly created file will be next to your custom video
Click Done and you have your own video converted to bk2 format and ready to replace the original one
Open WolvenKit and create a new project
From right side of WolvenKit window select Asset Browser
Find splash_logo.bk2 in the following location:
Add that file to your Project and your project should look like this
Select splash_logo.bk2 and Open in Explorer (now you have the location where you are going to put the new video file that will replace the original one)
Copy your own converted video in this location and replace the original one
Close the Window and go back to WolvenKit and save you changes
Now you are ready to either Install the Mod or Pack it and use it later
If everything in this guide was followed step by step, you should now have your very own custom Breach Screen.
Created by @DBK Published on April 2024
What kind of file: | Find What (your old path) | Replace with (your new path) |
---|---|---|
Published August 2023 by Last documented update: March 18 2024 by
Software | What's it for? |
---|---|
Setting | Value | explanation |
---|---|---|
Assuming you have Wolvenkit , you can now . Let's find ourselves an in-game neon sign to replace by searching in the Asset Browser for neon > .mesh
and scrolling through the entries until we find one that we like.
In Wolvenkit, use the to import sex_shop_neon_sign_b.glb
. The preview in the File Information
panel should update.
In Wolvenkit's top bar, select and then boot up Cyberpunk.
the "vanilla" way by using a with a file with only one appearance
customizable by chaining a , an , and a file with multiple appearances.
If you want to play around with materials and an existing prop, check
If you want to enable collisions, see
If you want to make meshes out of 2d textures, see
Many websites host free stuff; you can find the largest archives below. Browse for a more comprehensive collection, or use the following queries in your search engine of choice:
(there's a drop-down menu on the left-hand side where you can select to search for free models!)
>= 8.12 for 2.1, 8.8.1 for 1.6.1 (DLSS)
(>= version 2.1, anything earlier won't have customizable appearances)
Optional, but recommended if you want to create multiple props:
This section will tell you how to get the files, then give you an of what they do and finally show you a on how they hang together.
At any part during the process, you can and launch the game to spawn the props with AMM. In the decor tab, search for
Create a and give it a name. This will later be the name of your archive file.
Download the AMM prop template from . Download the complete source folder, as it will have the files as depicted below.
If you want to move or rename anything, please do it as specified in . Doing anything else will break the mod.
Optional, but recommended: Start the game and spawn the props, as in the green hint box at .
If you're the more hands-on kind of learner, skip to or to fuck around and find out.
The first part of the structure is up to you, although for the sake of the tutorial you might want to stick to it. There's a section later on .
If you don't want to know this, you can skip ahead to or to get crackin', or check the to see how the files connect.
(the legacy version)
If you have , then this will be familiar to you. If you haven't, please ignore the link and keep reading — this is the simpler version!
Instead of adding items directly via the components array, we link appearances to an . The only component we keep in the is the targeting component for the CET cursor: this way, it will be added to each appearance in the .app file.
holds a list of appearances
. Inside each appearance
, you can define any number of things to be loaded (components) and specify or override their behaviour.
A pre-configured for a textured material. Uses the following files in the subfolder textures
:
You can learn more about textured materials . This is not necessary for the purpose of this guide.
A pre-configured for a multilayered material. Uses the following files in the subfolder textures
:
6_layers.mlsetup
: A with colour properties
6_layers.mlmask
: A , determining which parts of the mesh are affected by which layer of the mlsetup. In this case, it just contains six blank layers.
You can learn more about multilayered materials . This is not necessary for the purpose of this guide.
mesh -> meshAppearance
. Put something that , otherwise the first appearance from the list will be used as default.
If you want to use more than one mesh, repeat the process for the other components. If you want to use more than 4, check below.
Open the tutorial\amm_props\template_no_variants\template_no_variants.ent
mesh -> meshAppearance
. Put something that , otherwise the first appearance from the list will be used as default.
If you want to load more than one mesh, repeat the process for the other components. If you want to use more than four, read
Finally, change the defaultAppearance
to . If no appearance with this name can be found, the prop will be invisible when it spawns.
Back in Wolvenkit, right-click on your folder and .
Import your meshes and textures over the ones from the template. For a guide on how to do that, check .
To make sure that everything went okay, open your new root entity (tutorial\\amm_props\\baseball\\baseball.ent
) in Wolvenkit and save it to trigger . Check the Wolvenkit log window for errors. If you made no mistakes in the renaming process, there shouldn't be any.
If not, it is time to hit up the .
You can find a step-by-step guide on the process .
This section will only cover troubleshooting steps for this guide. For anything related to mesh imports, see . For general 3d model troubleshooting (including import errors), see .
The problem is in your .lua file. Use to check the syntax and make sure that there are no errors - usually, it is missing/extra commas and/or missing/extra braces.
Make sure that you don't delete any quotation marks or commas while you do that. If you're unsure, you can double-check .
In general, your answer is probably in the guide on , section 2 () – check that guide's .
This guide will detail how to add an Atelier store with your items. It is part of the ArchiveXL tutorial, but you can complete these steps independently.
Find a guide on
Learn more about
You need to install the mod for this.
First of all, the template archive (kindly provided by Apart) and find the folder virtual_atelier_inkatlas_icon_template
with the following files:
Put the .inkatlas and .xbm into your project (if you're using the , you can put them into the ops
folder). Then, rename them to atelier_icon
:
Now, create your icon. The process is the same as for "". The resulting slot will be named slot_01
.
Visit website and fill out the information:
Field | Content |
---|
Here's an explanation for the fields below. Rather than filling them by hand, you should use website to generate your store files.
Field | Content |
---|
Published: Feb 09 2024 by Last documented edit: Feb 11 2024 by
For a quick overview on lights and their properties, check (currently WIP)
For an explanation about light, check (currently WIP)
You can learn more about effect components (e.g. how to remove or create effect spawns) on the page.
This is as easy as finding the right component, adding it to your prop (either in the or in each appearance in the ) and naming it Light:
Inside the .archive (with double slashes)
tutorial\\myshirt
your_modder_name\\my_tshirt
in resource files (e.g. .xl)
tutorial\myshirt
your_modder_name\my_tshirt
in script files (e.g. reds)
tutorial/myshirt
your_modder_name/my_tshirt
Inkscape 1.3
Converting your picture into an svg which you can then import into Blender to create a mesh
Wolvenkit (recent)
converting your mesh to an in-game-item
Blender 3.6
Converting your SVG to a 3d object that you can import into Cyberpunk.
Exporting from Blender to Cyberpunk
Mode
sharp
Remesh type: preserving sharp edges
Octree Depth
8
Level of detail
Scale
0.1
Size of quads in the remeshed object
Sharpness
1
Preserve sharp edges
| what you search for in AMM |
| what AMM sorty by (you can only reuse exisitng categories) |
| how far away from the ground should your prop be? (This moves the origin in Blender's 3d viewport) |
| If you're using a root entity, these are the appearance names to switch through and the entries in AMM's "appearance" dropdown / spawn tab |
Store ID (characters only, w/o spaces, '-', '_' and etc.) |
|
Store Name |
|
Atlas Resource |
|
Texture Part |
|
TweakDBID | as defined in your yaml, e.g.
|
Price | Whatever price you want, 0 means that it's free |
Quality | Are we settling for anything but legendary here?
Allowed values are:
- |
This guide will teach you how to create own copies of game assets instead of overwriting the original files.
Published: January 16 2024 by @madmaximusjb
This guide will teach you how to set game assets as new files. Don't worry, it's really simple! We're taking this Liberty handgun mesh (I think it used to belong to some Dexter guy`?) and make our own copy of the file.
You have added a game file to your project, or you have downloaded a template file, and now want to change the references.
For more information about .this, check 3d objects: .mesh files
Find your CMaterialInstance
in either localMaterialBuffer.materials
or preloadLocalMaterials
, then change any depot paths in the properties:
For more information about this, check Game icons: The inkatlas file
For modded files, you only need slot 0 - 1 and 2 can be blank.
The texture
property is optional.
[Knowledge of WolvenKit at BASIC level is required] Below we will explain how to translate any mod
This guide will teach you how to translate a mod. It will cover the following processes:
There are mainly two ways to translate a mod. One is to use WolvenKit, GIT and GitHub. On the other hand, the author of the mod provides the files (an Excel sheet for example) where the sentences to be translated are written.
You need a Wolvenkit Project with the relevant files from the original mod:
.wem
for audio translations
.json
for text translations
For how to get there, see Analysing other mods
Most mods will be using in-game files for this. You'll run into one of two cases:
The mod is only "pointing" at the original game files, and they're loaded from the player's local copy and will be in whatever language they're running.
TODO: Which file(s) defines those? If there is no original mod author and the mod links to in-game files, how can we custompath them?
If you want to translate them anyway, you need to add the audio files from your translated version to your Wolvenkit project and send them to the original mod's author.
Assuming that the original mod author did not rename the files, this makes it easier for you.
Add the file to your Wolvenkit project
Overwrite the original file
When you pack your mod now, it will use the translated files. If it doesn't, make sure to check your load order.
If you are lucky, you are translating this for someone else, and the person has given you an excel sheet. Otherwise, you need to edit the mod's .json
files (see #prerequisites).
When you are done translating you can contact the original mod author to see if they want to include your changes into the main mod.
If not, then you can pack your mod as a standalone addition and upload it independently. In this case, it is important to consider the Load Order: your mod has to load first.
How to run scripts in Python (and merge AMM deco presets)
Summary Published: Dec 14 2023 by manavortex Last documented update: Mar 18 2024 by manavortex
This guide will teach you how to execute Python scripts under Windows.
This guide is for running files outside of Blender.
If you want to run a Python script in Blender, you need to switch your viewport to the scripting perspective and click "play". Now go away, your princess is in another castle!
We start by checking if you have Python installed already.
Open a Windows command prompt (Hotkeys: Windows+R
, type cmd
, press enter)
In the window that now opens, type the following:
If you have Python installed, it will now say something like "Python 3.11.3
" . In that case, you can go directly to #step-1-downloading-the-script.
Otherwise, please keep reading.
Close the command window - after installing Python, you need to open a new one.
Go to python.org and download the correct installer package for your system - that will usually be Windows installer (64-bit). Take the latest stable release, it will be at the very top of the page.
Now, follow this guide until you have installed Python, or google something like install python on windows for dummies
and follow that guide until you have installed Python.
Proceed to #step-1-downloading-the-script
The link in this guide is an example script in case you don't have one. If you do, use that one instead.
Go to mana's github repo and grab the .py script to merge AMM presets:
Download the file by clicking the corresponding button. Save it somewhere where you can find it easily.
Open the script with a text editor of your choice (we recommend Notepad++ under Windows)
Check the top of the file for anything that needs to be adjusted:
Ignore the lines starting with import
Read the lines starting with #
. They are comments and will tell you what to put.
Once you have everything set up, save the script.
Now it is time to run it. Keep reading!
Open a command window again (Hotkey: Windows+R, type cmd
, press enter)
Type python "
(python
, space, quotation mark)
Drag-and-drop the script you downloaded on the console window
Type another quotation mark and hit enter
The quotation marks will prevent error with spaces in path names. Leave them away at own risk :)
That's it - the script will now run and do things
Step the Python version (#step-0-getting-python, item 1 and 2). As of 2023, the version should start with a 3.
If that isn't it, you made a mistake while editing the script file. Make sure that you don't have single backslashes in strings:
If it's not that, you can use a Python syntax checker, or ask ChatGPT (I'm not kidding). Good luck!
If you are running into this error in Blender, it should be enough to run the program as admin.
Otherwise, you are missing a Python module, and need to install it. You can do that by running the following code from your Windows cmd:
If that does not work, google for something like pip install module your_module_name windows
.
You need a . But if you're reading this, you probably have one already.
You can either download a template file (for example, from the wiki's repository), or simply find a game file and and .
Once you have the file, you can move it wherever you want it, either in the Windows Explorer or in Wolvenkit's :
If your file type isn't included in the lists of examples, you need to look through the file, or use Wolvenkit's
Published: 19 Mar 2024 by Last documented edit: 19 Mar 2024 by
You can listen to audio files by simply selecting them in the Wolvenkit Project Browser and using the built-in audio player. See on the Wolvenkit wiki for a screenshot.
with each file name
You'l have no choice but to find the right file from hand in the sources, which means you have to for the extension .wem
.
The JSON files are actually encoded – this means that you have to edit them in Wolvenkit, or . (Yo dawg, I hear you like exporting as JSON!)