This page quickly outlines what Entity Instance Data is, what it is used for and some basic examples
Entity Instance Data can be defined for any Entity type node
It is used to override properties of the entity and its components, on a instance basis
This means you can make changes to once specific instance of an entity, without changing all the other ones which use the same .ent
It can change any component's properties, just like you would in WolvenKit
Often this is used for:
Changing component size or offset
Changing the mesh a component uses
Changing behavior of e.g. Doors and other devices
Setting up devices such as elevators and FT points
The sky is the limit, as you can change each components properties
It can be also very helpful for prototyping custom entities, as you get a realtime preview of the changes, for most properties
You can see it being used in the guides for elevators, FT points and security areas
You can right-click any property or component to reset it back to default
This guide explains how to add variants to your sectors, using Object Spawner
Sector variants allow you to assign different parts of a sector to a variant
You can then toggle those variants on / off, while the game is running
This can be used to e.g. offer different variations of a build, within a single mod download, and allow the user to toggle different parts / layers at will
Unlike the name "Variants" may suggest, you can have multiple ones active at the same time, allowing you to mix and match
You need to have a basic understanding of:
Working with WolvenKit
Variants are something you should keep in mind during the building process, if you want to use them
You will be able to assign each group, which sits directly within in main group, to a variant
In the above example, you will be able to assign each of the three groups to a variant
All objects placed directly within the root group (The group that you saved and export), will be part of the default variant
Once you have added your group(s) to the export, you can start assigning variants
Variant settings can be found under the same named header (One per group)
By default, each group will be assigned to the default
variant, meaning they will be always active
Variant Node Ref:
This MUST be set to some unique NodeRef, in order for the variants to be controllable
Below you can assign a variant to each group
You can assign multiple groups to the same variant
Optionally change whether the variant should be active by default
In order to quickly toggle variants on and off, during development and testing, you can use the following commands in the CET-Console:
To make it easier, below there will be a ready to use Native Settings UI based menu, that allows toggling variants
In order to configure it, simply change the values at the top of the init.lua
file:
settingsMainName/settingsSubName
: Controls the names displayed for the category, in Native Settings UI
defaultMutuallyExclusiveVariants
: Here you define string selectors for variants which should be mutually exclusive (Only one active at a time)
ref
: This is the variant node ref
displayName
: This is a more human-readable string, gets actually shown in the UI
currentIndex
: This is the default state (Will override what is defined during export)
variants
: This array contains the variants which should be mutually exclusive, with a display name
defaultAdditiveVariants
: Here you define simple switches for variants which can be mixed and matched
ref
: This is the variant node ref
variant
: The name of the variant, as defined during export
displayName
: This is a more human-readable string, gets actually shown in the UI
defaultState
: The default state of the variant (Overrides what is set during export)
Further information on how sector variants work under the hood, and how to manually work with them can be found on the page
(1.15.0 or newer)
(With latest version of Object Spawner import script)
Using Object Spawner (Spawning things and into WolvenKit)
In order for mod users to quickly and conveniently toggle variants, one could e.g. hook up the code to some UI
Using the Blender Plugin to Steal stuff from Game locations. Plagerism is after all the sincerest form of flattery...
The script described below is a WIP, and only supports about half the node types Wheeze has implemented (I cant keep up) if in doubt, use the latest plugin artifact, and if somethings missing you need, bug me on discord about it.
I'm too lazy to always build every thing from scratch, so I like to optimise my workflow by spending loads of time writing a script to do stuff later. Lucky for you I share them so you get to be optimised too.
Theres a script included with the Blender addon that lets us export the current selection from an imported sector to an OS group json. This can then be turned into a prefab which you can reuse and share. No more hunting for bed + pillows + duvet etc. Just find one you like in game, use RHT to get the sector names, import them to blender and steal borrow it, complete with all the little extras that make it feel polished.
The first step is to export the location of your inspiration to blender, as explained in the Editing Locations in Blender guide. I use RHT to scan the location and then use the copy sectors button to just take a list of every sector in the immediate vicinity. add ot project, run the sector export script and import the project to Blender, and we're good to go.
And unlike Mr Burns, we're not going to struggle. Select some stuff, switch to the scripting tab. In the empty text window, click the little arrow to the right to expand out the side panel.
in the CP77 Modding tab theres a list of scripts, click the export_to_OS.py one (1 below). This will open in the text window. At the top of the script, theres a variable for the folder to save to, and the groupname (2). Set the folder, and define a group name. Currently it writes over that filename everytime you run it, so change it between selections.
When you've set them, hit the play button. (3)
You should now have a json in the folder you specified, this needs copying to the EntSpawner objects folder, which can be found at
Load the game up, bring up your CET console etc and in the object spawner window, switch to the saved tab. Your jsons should be in the list, and if you click on one you can hit load.
At this point OS loads them at the position they were defined at, which is wherever we borrowed them from.
I always move them to my location to test them and check nothings gone wrong, as its all too easy to either miss something you intended to include, or include something you didnt want. to do this switch to the spawned tab, select the top level group and in the transform bit below the group, hit the person button to bring it to your location.
If your happy with it, right click the group, and select Make Prefab
This pops up a dialog that lets you select tags and put it in a Category. You can just select any existing tags, or create new ones from the dialog. Hit the little tick at the bottom of the dialog to ok it.
Switch to the Spawn new tab, and your new prefab should be in the list under the category you selected. you can filter the list by the tags too.
This guide will describe the steps necessary to setup an area outline, and link it to an area node, using Object Spawner
Area nodes are used for a wide variety of things, for example:
Soundscapes (E.g. Muffling of outdoor sounds while indoor)
Locations (For location notifications)
Vehicle Forbidden (Prevents you from driving cars into the area)
Prevention (E.g. Removing wanted level)
Interior (E.g. For applying gameplay restrictions like no weapons)
Death areas
Quest Notifiers
And more...
Object Spawner (v.0.9. or newer)
Codeware (1.14.1 or newer)
WolvenKit (With latest version of Object Spawner import script)
You need to have a basic understanding of:
Working with WolvenKit
Using Object Spawner (Spawning things and importing into WolvenKit)
In order to have an area node that functions, you need:
An area node
An outline, defined as a group containing multiple outline markers
It is generally recommended to create a new group for each outline, which only contains the markers for that specific outline
Additionally, it is good practice to have one group containing all the outline groups
An outline consists of a group containing at least 3 Outline Markers
Ideally, the group contains only the markers and nothing else
The outline is only useable within the same root group
Select Area -> Outline Marker
in Object Spawner, as the spawn category
Spawn the markers, one by one (Make sure you put them in the correct group, e.g. by selecting the group in the "Spawn New" tab)
The markers will connect in the order in which they are within the group
To insert a marker in the middle, simply duplicate the closest marker (CTRL-D
)
In order to make an area node use the outline, select the path of the outline group from the Outline Path
dropdown of the area node
Note that only groups containing at least 3 markers, and located within the same root group (In our case the common root group is Some Mod
) are valid outlines
Since the outlines get linked via their path, if you change the name of the outline group, or any parent group (Thus changing its path), the link will break.
Thus it is recommended to keep the outlines in their own group which's name and path will not get changed
Now simply export your group from Object Spawner, and import into WKit using the Object Spawner import feature
This page explains how to spawn and use custom resources, and how to best share them with other modders
To permanently add any custom resource (E.g. .ent
, .mesh
, .mi
etc.) to the list of things you can spawn via the "Spawn New" tab, you can do the following:
Locate the data folder, found in Cyberpunk 2077\bin\x64\plugins\cyber_engine_tweaks\mods\entSpawner\data\spawnables\...
Find the specific sub folder for the type of resource you wish to spawn
E.g. For entity templates .ent
, this would be ...\spawnables\entity\templates
Create a new .txt
file in the sub-folder
Add all the resource paths you want to the file, each path being on a new line
If you do not want to do this, and just want to quickly spawn something from it's resource path, simply paste it into the "Spawn New" tabs search bar, and press "Spawn anyways" if you get told that it cannot be found
AMM props are just entity files .ent
To add existing AMM props (Including such from other prop packs) to the "Spawn New" list, do:
Select the Entity -> Template (AMM)
category
Click the "Generate AMM props" button
AMM props are just entity files (.ent
). The only difference is that when using the prop import feature, instead of showing the raw resource path in the list, it shows the alias / names which have been assigned
If you add some spawnable custom resources to the game (Such as custom entities or meshes), and want to share those in an easy-to-use way with other builders, you can use two methods:
OS caches a lot of data, including the list of appearances an entity / mesh has
This can lead to issues if you e.g. spawn a custom entity before adding custom appearances, then spawn it after you've made changes to it in WolvenKit
Since the list of appearances is cached, it will be empty even after adding apps to your .ent
In order to avoid caching you can add a cache exclusion in the settings:
Section for other features and guides
Guides for the topics of devices and AI / NPCs can be found here
This section contains guides / information for:
Created: Mar 15 2025 by
It's usually best to share them as a custom (Or multiple categories). This allows assigning more meaningful names, and tags, for easier browsing and searching of your resources.
Additionally, you can share them as custom resources lists, as
.ent
paths