Loading...
Loading...
How to install Object Spawner
Make sure to always keep the mod and it's dependencies up to date
Next, download Object Spawner:
Nexus Page
Install the mod as any other mod, by extracting the downloaded file into the base game directory, or using a mod manager
The base game directory is called Cyberpunk 2077
and contains the folders bin
and archive
If you unzipped the file correctly, you will now have the following folder:
Cyberpunk 2077\bin\x64\plugins\cyber_engine_tweaks\mods\entSpawner
This example guides you through the process of building a small place
This example leaves out a lot of features and details
It will try and explain how to do a very simple build, incorporating the basics you need to know
It assumes you know how to open the CET overlay and find the main "Object Spawner" window
Lets start by spawning some things, we will start with some meshes
To do so, switch to the "Spawn New" tab, and select the Mesh
object type and the Mesh
object variant
Some tips:
Separate the "Spawn New" tab, by clicking the ...
in the upper right corner
Check out the options header
If you have found what you wish to spawn, simply click it's list entry
Tip: You can also drag and drop the list entry directly onto the position in the world where you want it to spawn
Lets quickly take a look at how to organize the things you have spawned, and save them, before it gets too messy
All the editing is done via the "Spawned" tab, so switch there (Hence why i recommend separating the "Spawn New" tab)
Hover the I
icon in the top toolbar, to get a list of all hotkeys available
In order to save what you have built, it needs to be inside a group
Make a new group by hitting the "Add group" button
Rename the group by double-clicking its entry (This works for everything)
Now lets move what you have spawned so far into the group:
You can either drag and drop each element on its own into the group
You can also use range select (Hold shift while clicking the first and last element), then drag and drop all the selected elements at once
You can also first select everything (CTRL-A
), then use CTRL-G
to put everything selected into a new group
Use groups inside groups to further organize your build
Now, hit the save icon of the group (Or CTRL-S
to save all groups), to save your build
You can also bring up a context menu by right-clicking an element:
All the controls for changing object's properties can be found by selecting the object, this will show it's controls in the bottom part
You can drag the vertical divider bar to change the ratio of tree view (Top) to properties (Bottom)
In order to move the selected object (Or group), simply drag the controls under the "Transform" header
While hovering the controls, the corresponding axis arrow of the object will be highlighted
Explore all the control options you have for each type of object
This page explains how to organize and group big builds
Especially for larger builds, it is important to keep in mind how the game actually deals with loading the world
Since the build is to be converted into a native world edit, meaning all the loading etc. is handled by the game engine itself, it is important to structure it similarly to the vanilla world
Not adhering to a similar structure as the game-world can lead to performance issues and bugs
The vanilla game world is made up of streamingsector's (.streamingsector
files), each containing a cluster of nodes in a general area
Which nodes are part of which sector is determined automatically during the build process of the game
Sectors have so-called extents, a volume around the contained nodes, in which the player needs to be in order for the sector to be streamed in
Only once the sector is streamed in, can the nodes which it contains be streamed in, and be visible
Each node additionally has its own streaming-distance, defining at what distance it shows
Sector extents can be configured during the export process from OS
Each node's own streaming-distance can be controlled under it's "World Node" header
A root group in OS is a group which is not part of another group, meaning it can be saved.
Each root group will become it's own streaming sector during export.
To avoid unnecessary streaming in of parts of a build, you should separate parts of the build which are relatively far away into separate root groups
That way, during export, each part of your build will become its own streaming sector, allowing the game to only load the part of your build which is relevant
E.g. Imagine you have an apartment build, with a lobby part at ground level, and the actual apartment at the 23rd floor.
If you put both parts into the same root group, thus the same sector, the game would always load lobby + apartment
Putting each part into its own root group, thus sector, means the game can load the lobby while you're at ground level, with the other part only being loaded once the player is close
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
This guide requires that you have
Take a look at the different "Object type" options, and explore the "Object variants" of each type, there is everything from
, in order to turn it into a native world edit
Reading up on (Or exploring yourself),
Using the
Creating
Section for in-depth UI explanations
This section will cover all features of each UI tab (Hopefully nothing has been forgoten)
Spawn New: The place to spawn new things from
Favorites and Prefabs: This is where you spawn favorites from, organize and browse them
Spawned: This is the core of the mod, with a split view giving you the spawned objects and properties
Saved: This is where you find everything you have saved, and allows you to add it to the export
Export: This is where the final steps happen, before importing the build into WolvenKit
Page that explains how to use 3-D Editor mode, and all its controls and features
It gives viewport style editing, similar to e.g. blender or other 3-D Editors
While the mode is active:
Snaps main window to the right, width is changeable by dragging the left edge
Click objects to select them, and other selection methods
You can rotate, move and zoom the camera
Move objects by dragging their arrows
Multitude of hotkeys (Once again inspired by blender)
A list of all controls can also be found by hovering the information icon "ℹ" which can be found to the far right of the editor mode toggle
All the hotkeys from the main tree view are still available, such as right click to open context menu, copy, paste, hide, drop to floor, delete, undo / redo, etc...
To activate the editor mode, click the "3-D" button which is part of the toolbar of the "Spawned" tab
The camera position of editor mode is independent of the player's position
The basic camera controls are as follows:
Rotate camera: Drag mouse while holding middle mouse button (MMB
)
Move camera: Hold shift, then drag the mouse while holding MMB
Zoom: Hold CTRL
, then drag mouse up/down while holding MMB
Center camera on selection: Press Tab
There are multiple ways of selecting things:
Select hovered: Press left mouse button (LMB
)
Box select: Hold CTRL
, then drag a box using LMB
Shift-D
MenuIn cases where the selected object is wrong, you can use the Depth Select menu instead
Hover over the object you wish to select
Hit Shift + D
This brings up a list of all objects underneath your cursor, sorted by distance
Objects can be moved by dragging the axis arrows
Additionally, hotkeys are available (Basically the same as in blender):
G/R/S + X/Y/Z
: Enables movement/rotation/scaling along the specified axis (For scaling you can also leave out the axis, to scale uniformly)
LMB / RMB
: Confirm / cancel edit
Holding Shift
while pressing the axis key will lock the editing on the specified axis. E.g. G, Shift + Z
will enable movement, locked to the horizontal plane
Numeric input: After enabling editing (Rotate / Scale), input numeric values (Supports decimal and negative) to rotate / scale by that amount (Scale is applied as multiplier, rotation is relative)
E.g. R + Z + 90 + LMB / Enter
will rotate the object by 90 on the Z
axis and confirm the edit
While in edit mode, you can press CTRL-R
to repeat the last spawn under your cursor
This is very useful for e.g. quickly building an area using outline markers
Shift-A
MenuBesides the regular "Spawn New" tab methods such as dragging an item into the scene, you can also use the Shift-A
menu
This menu is mostly useful to quickly spawn something where you only have a few options, e.g. colliders, light or markers
That way, you don't have to first select the category / variant in the "Spawn New" tab
This guide explains how to go from an Object Spawner build to a native world edit
Usage
When building something using Object Spawner, it will use an intermediary format optimized for editing
In order to go from that editing focused format to the final native world edit, Object Spawner provides a workflow to make this as easy as possible
You need to have a basic understanding of:
Working with WolvenKit
Common sense
While building in Object Spawner, you are able to save things on a root-group level
This means you can save any group that is not contained within another group
The game operates on sectors, which objects are assigned to what sector is an automatic process there
For the Object Spawner workflow, each group you saved can get turned into a sector
A finished mod can consist of multiple root-groups / sectors
There are different streaming ranges, determining when objects and sectors get streamed in / out
Object Based Range:
These determine when each individual object gets streamed in / out
It is usually dependent on the size of the object
Can be found under each object's "World Node" header
Sector Range:
This determines when then entire sector gets streamed in / out
This over-rules the object based ranges, meaning when the sector streams out all objects within also stream out, even if their individual range is larger
Can be found in the export tab, under each groups header
Why this matters:
You should keep this in mind while building, and make sure that if you have sub-builds which are far apart, that those are in their own root-groups (Thus becoming their own sectors)
That way you make sure that only the parts of your build that are currently close will be streamed in (Thanks to having separated it into multiple sectors, with their own ranges)
Start by going to the "Saved" tab, and adding all the groups you want to be part of your finished mod, by using the "Add to export" button of those groups
Next, head over to the "Export" tab
Enter a project name, this will be used for the folder and file names in WolvenKit
Now you can specify sector specific settings:
Sector Category, usually just use interior or exterior
Hit "Export"
Open your WolvenKit project (Make a new one if you do not have one yet)
In the top menu bar, navigate to
File -> Import -> Object Spawner .json
In the file dialog, choose the previously exported file, named projectName_exported.json
Multiple files should have been generated (At least one .streamingsector
, and one .streamingblock
)
Click the "Install" button, in the top menu bar
Overview over what the current world editing mod is, how it operates and its biggest features
Object Spawner is a tool that allows you to build new structures in the game world
It is not restrained by pre-configured lists of things you can spawn, and gives you full access to all game resources, and most node types
It is made for building, and tries to stay close to how other map editors might work (E.g. TW3 Redkit, RedEngine editor)
Building with Object Spawner is divided into two parts:
First, you build your creation using the tool, in-game and in real-time. This allows you to see what you are doing and how it looks in-engine, but some features will not be previewed (E.g. Device connections)
Then, you will convert your build into the final, native world edit, which then can take advantage of all the things that come with it being native (Better performance, easy usage, full features)
Object Spawner tries to stay as close as possible to the way the game's world is built, since it's final step involves converting your build to a native world edit
Object Spawner operates on a "Node" level, meaning everything you spawn is a type of node
This can range from entity nodes (Which are used to spawn simple entities, think AMM "props"), over a range of decorative node types like lights, decals, particles and sounds, to meta-nodes used for defining NPC spawns, performance optimization and area specific actions like safe zones.
"Native World Edit" means the additions to the game world are present in the form of streamingsector files, which ArchiveXL then instructs the game to load
This is just an example of what you might want to do in order to get started, the most important thing is to just install the tool, experiment with it, try things out and have fun building
This is not an exhaustive list of all the features, but rather the biggest and most important ones
Modular UI
This page covers what favorites and prefabs are, how to create them, use them and organize them
Favorites and prefabs let you alias anything you want (Single objects to whole groups)
Things marked as favorite can be assigned a name, category and tags
The combination of categories and tags allow for both for browsing through your library, and also highly specifc and organized searching
The favorites system offer multiple ways of browsing and searching:
Simple text based search
Tag based filters
Grouping a categories contents by tags
Categories can be easily shared and merged
Category files can be found in Cyberpunk 2077\bin\x64\plugins\cyber_engine_tweaks\mods\entSpawner\data\favorite
(E.g. For sharing)
Favorite: This is a single object
Prefab: This is an entire group, made to be re-usable just like single objects
In the following, "Favorite" and "Prefab" is used interchangeably, since they are treated exactly the same
The main favorites view can be found on the "Spawn New" tab, specifically the Favorites
subtab
Underneath the Add Category
header, you can find everything you need to make a new category
There are two ways of creating them:
Right-Click any item in the "Spawn New" list, and choose Make Favorite
Right-Click any item (Group or object) in the "Spawned UI" hierarchy, and select Make Favorite / Prefab
Tip: You can also simply hit CTRL-F
, and make the currently selected item a favorite / prefab
A popup will appear, allowing you to assign a name, tags and category:
You can always bring back this menu, by clicking the configuration button for the favorite you like to edit, in the main favorites view
To spawn a favorite, simply click it in the main favorites view
You can also do any of the more advanced things, such as drag and dropping a favorite into the world
This works the same as spawning anything from the All
tab
Clicking the icon on the right of a category will group its contents by their tags
This can be done recursively for each created tag category
If you already know what to look for, you can also use the search bar, and the Search Tags
selection
Search tags can be set to be either in AND or OR mode
Often you might end up with multiple tags that indicate the same thing:
E.g. "Large", "large", "L", "big"
To combine these tags, you can use the Rename Tags
header, where you can select which tags to rename, and what the new name should be
Categories can be merged in two ways:
Automatic: If you ever end up having two categories with the same name (E.g. You added someone else's categories), they will be merged
Explicitly
To explicitly merge a category into another, simply use the category configuration menu (Wheel button)
When merging categories, any favorites which contain the same data (E.g. the same mesh) will be merged as well (Tags will be combined).
Additonally, a pre-merge copy of both categories will be placed in the preMerge
subfolder of the favorites folder
Information on export templates
Since you will probably want to export your builds frequently, to make sure everything looks correct and works as expected in the native world edit, you can use export templates to save export settings
Simply add all the groups to export as you would, setup their extents, variants, category, etc.
Then, press "Save as Template", to save everything you setup into an easily reusable template
Keep in mind that changing a groups name will remove it from any template in which it is used
Explanations on loading and searching for saved things, as well as importing AMM presets
You can search, load and delete them from here
In convert an AMM decor preset, and turn it into a group, do:
Place the AMM decor preset .json
inside Cyberpunk 2077\bin\x64\plugins\cyber_engine_tweaks\mods\entSpawner\data\AMMImport
Make sure you have all requirements for that decor preset installed (Custom archives)
Press the Import AMM Presets
button
The import can take a while, and will lag
You can track the progress via the loading bar
During the conversion, "props" (Entities) will get converted to meshes, when possible
If you just want to quickly convert your project to a native edit, jump to the section. It is highly recommended to read the previous sections on the theory and things to consider tho.
(1.15.0 or newer)
(With latest version of Object Spawner import script)
, used for determining when to stream the whole sector in / out
Follow the guide
Take a look at the example
Learn how to
Familiarize yourself with the and it's reasons
Learn about the , which can significantly speed up your workflow
Take a look at the and get overwhelmed by the possibilities
Read the , and what features there are (And what to use them for)
Take a look at any of the other, more specific guides found in the section and the general section
Produces
Access to , across
, similar to e.g. blender or redkit (Click to select, hotkeys, draggable arrows)
for meshes, entities, decals, effects, particles, AISpots and sounds
of objects directly into the world
with loads of hotkeys, drag and drop and focus on organizing things
system with custom categories and tags
for groups and objects
to send an existing world node directly to the OS search
support for entity type nodes
(E.g. Elevators and custom FT points)
, scalable (With generation option for meshes)
5 types of area nodes,
(Defining NPC placement, distribution and amount, per time of day)
For information on how to export, follow the guide
: Gives a quick overview on what OS is used for, how it operates and its most essential features
: Covers how to install the tool, and its requirements
: Gives a short example of how to spawn and organize things
: Explains how to lay out your builds, and what things to take into consideration
: Gives detailed instructions on how to convert the build to the final, native world edit
: Covers how to use OS's 3-D Editor more, it's controls and features
: Lists all types of nodes that are currently supported, and what they are used for
: Detailed explanation of each UI tab, what it is used for and what features it offers
: Explains how to place custom resources (E.g. Entities or custom meshes), and share them in an easy-to-use way with other modders
: Covers what sector variants are used for, how to split your build into variants and how to toggle them
: Explains what it is, and what it can all do
: Covers how areas are built with OS, how to create the outline using markers and link it to an area node
: Explains how to convert a part of the game-world into a ready to use OS Prefab / Group
Any root group you save in the "" tab will appear here
Additionally this is also where you can add groups to the
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:
Everything there is know to effectively spawn anything you want
There is a wide range of things you can spawn, so they are organized into categories
Each category has has multiple variants, with each variant corresponding to a type of node
By hovering over the dropdown for the Object variant you can also bring up a panel displaying some helpful information for the selected variant
Target group
This selector lets you choose a group which to put new objects into
You can also hit CTRL-N
on the spawned tab to set it to the selected group
Under the options header you can find:
Strip Paths: If this is enabled, resource paths will be shortened: base\object.mesh
becomes object
Asset preview: Lets you toggle asset preview for the supported object types
Spawn position: See next section
There are multiple ways of controlling the position in which new objects spawn:
Use the "Spawn position" selector to determine the position used when simply clicking a list entry to spawn
Drag and drop a list entry into the scene to spawn it under the cursor
In 3-D editor mode, use CTRL-R
to repeat the last spawn under the cursor
Additionally, you can use the Shift-A
spawn menu while editor mode is active
Asset preview is available for:
With background: Meshes, entities, decals
In-Place: Effects, particles, AISpots and sounds
It gets activated simply by hovering a list entry
At the very top you can find the main search, which supports pattern matching:
E.g. wall.*large
will match anything that has the words "wall" followed by some characters, followed by "large" in it
You can make something a favorite either from the "Spawned" tab, or from the "Spawn New" tab
In either cases, simply right-click the element you wish to make a favorite
If you see an asset used in the gameworld, you can use RHT to send it directly to OS's search
This is supported for: Entity, Entity Record, Device, Mesh, Decal, Particle, Effect, Static Sound, AI Spot and Reflection Probe
You can also import your list of AMM props
AMM props will spawned as entity nodes, as they are just .ent
files with an alias name
Do this by selecting Entity -> Template (AMM)
then pressing the "Generate AMM Props" button
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 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:
It's usually best to share them as a custom favorites' category (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 explained above
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:
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.
Created: Mar 15 2025 by Simarilius
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 guide explains how to add variants to your sectors, using Object Spawner
Further information on how sector variants work under the hood, and how to manually work with them can be found on the Switching between sector states page
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
Using Object Spawner (Spawning things and importing into 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:
In order for mod users to quickly and conveniently toggle variants, one could e.g. hook up the above code to some UI
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)
Explanation on the main editing tab, where you organize and modify your spawned objects
At the top (Underneat the search and add group options), you will find the toolbar:
From the left to right you have:
3-D Editor mode toggle
Save All button, saving all loaded root groups
Expand and collapse all, expanding / collapsing all groups
Hide / Show all, spawning / despawning everything
Undo and redo
Shortcut info
This is main part from which you organize your build
It is a tree type hierarchy, similar to the one in e.g. blender, with groups and objects
Hovering the I
icon gives you a list of all available shortcuts
These are very similar to the ones found in most file explorers
LMB
: Select
CTRL + LMB
: Make a multi-selection
SHIFT + LMB
: Make a range-selection
CTRL-A
: Select all
Esc
: Unselect all
To move elements:
Drag selected elements onto group element, to move into group
You can change whether or not an object or group is visible by either:
Use the little "Eye" icon on the right of a element
Press H
, to toggle visiblity of all selected element
Double Click
: Rename double clicked element
Delete
: Delete all selected
CTRL-C:
: Copy selected
CTRL-V
: Paste selected
CTRL-X
: Cut selected
CTRL-D
: Duplicate selected
CTRL-G
: Put all selected into a new group
CTRL-S
: Save all root groups
CTRL-E
: Drop selected too floor
CTRL-N
: Set selected group as "Spawn New" target group
CTRL-F
: Make selected a favorite / prefab
Backspace
: Move all selected to root
A "root group" is just a group which is not inside another group, thus you can save it
If you want to save a sub-group, to make it reusable, make it a prefab
Additionally you can bring up a context menu for the current selection, by right-clicking
Use the controls under the "Transform" header to move and rotate your current selection
You can move single objects, but also groups and multi-selections
You can also copy transforms from one object to the other, using the transforms context menu
You can open it by right-clicking any of the transform controls
Enable precision mode by holding down shift while using the transform controls
When having multiple elements selected (Or a group), you can use the "Group Properties" header to control certain properties of all elements of a type
E.g. Visibility of all colliders inside the selection
Here you can give each object a NodeRef
A NodeRef is a unique identifier which can be used to reference one specific object (If you do not need it, just leave it empty)
As already mentioned in the Exporting to WolvenKit guide, there are multiple values controlling streaming ranges
The ranges found under the World Node header of each object control when that specifc object streams in / out
To make setting these easier, there is a "Auto-Set" button
As seen in the Group properties section, you can also auto-generate the values for all your builds objects at once
Having too large or too small primary/secondary range can lead to bugs
E.g. Too large range can cause performance issues and audio bugs Too small range for things like markers can lead to issues, if other objects depend on the marker being streamed in
This page covers all supported nodes / what each object type in OS does
If there is some type of node / a property of a node which is not currently supported, but you want it, voice your wishes either on GitHub, or in the #world-editing channel on the modding discord
All Entity type nodes support Entity Instance Data editing (Changing any component's value)
Related guides: Devices
Entity Template
Spawns an entity from a given .ent
file. Appearance is configurable.
---
worldEntityNode
Entity Record
Spawns an entity from a given TweakDB record. Must be used for vehicles.
Movement update is slow, does not spawn if player is not standing on the ground.
worldPopulationSpawnerNode
Device
Same as Entity Template, but allows defining device connections to other entities. Used extensively to handle anything where two or more entities need to be able to communicate.
Connections are not previewed in the editor, only work once converted to native world edit.
worldDeviceNode
Mesh nodes are used for most visible things, as they support scaling, and entities are overkill if nothing else but a visible mesh is needed
Static Mesh
Places a static mesh, from a given .mesh file. Does not have any collision, but has an option to generate a fitting collider shape.
---
worldMeshNode
Rotating Mesh
Same as Static Mesh, but allows defining an axis and speed around which it will rotate.
---
worldRotatingMeshNode
Cloth Mesh
Same as Static Mesh, but has simulated cloth physics (E.g. Curtains)
Does not have simulated physics until converted to native world edit.
worldClothMeshNode
Dynamic Mesh
Places a mesh with simulated rigid-body physics. Not destructible.
---
worldDynamicMeshNode
Decals
Places a decal on the nearest surface, from a given .mi
file, scalable and options for alpha and flipping.
---
worldStaticDecalNode
Particles
Plays a particle system, from a given .particle
file.
---
worldStaticParticleNode
Effects
Plays an effect, from a given .effect
file.
---
worldEffectNode
Static Audio Emitter
Plays a sound from a single point.
---
worldStaticSoundEmitterNode
Water Patch
Places a water patch, with physics / swimmability.
Does not have physics / reactivity until converted to native world edit.
worldWaterPatchNode
Fog Volume
Places a fog volume of variable size.
Sometimes not visible until converted to native world edit, due to light channels.
worldStaticFogVolumeNode
Collision Shape
A scalable collision shape, can be a box, capsule or sphere. Options to choose the material, affecting impact effect.
---
worldCollisionNode
Static Light
Places a static light of type point, spot or area. Lots of controls, such as color, intensity, angles, EV, flicker settings, radius, shadow / fog settings and more.
---
worldStaticLightNode
AI Spot
Defines a spot at which NPCs use a workspot. Must be used together with a community node.
---
worldAISpotNode
Community
A collection of NPCs, with their phases, time periods and assigned spots.
Build must be converted to native world edit before community takes effect
worldCompiledCommunityAreaNode_Streamable
All area type nodes work the same, requiring an outline to be defined using a group of outline markers
None of the area nodes functionality (E.g. Restrictions) are previewed, for them to take effect the build needs to be converted to native world edit
Outline Marker
Places a marker for an outline. Automatically connects with other outline markers in the same group, to form an outline. The parent group can be used to reference the contained outline.
---
Is not a real node
Trigger Area
General purpose node for an area with an associated trigger. Triggers supported: Interior, Location, Quest Notifier, Prevention, Vehicle Forbidden, Content Block
---
worldTriggerAreaNode
Ambient Area
Trigger used for modifying the soundstage. E.g. Muffling outdoor sounds while in an interior, or playing spatial ambient sounds.
---
worldAmbientAreaNode
Kill Area
Instantly kills the player when inside the area.
---
gameKillTriggerNode
Prevention Free Area
Prevents police from entering the area. Does not clear wanted level.
---
worldPreventionFreeAreaNode
Water Null Area
Removes the underwater effect, and swimmability from the area. Does not remove the water mesh.
---
worldWaterNullAreaNode
Dummy Area
---
Is not a real node
Occluder
Places an occluder of variable size and shape, which will cause anything completely behind it to not be rendered.
---
worldStaticOccluderMeshNode
Reflection Probe
Places a reflection probe of variable size. Can be used to make indoors have appropriate base lighting.
---
worldReflectionProbeNode
Static Marker
Places a static marker node. Useful if you need a NodeRef as a reference point. Usually best placed in an AlwaysLoaded Sector.
---
worldStaticMarkerNode
Spline Point
Places a point of a spline. Automatically connects with other spline points in the same group, to form a path. The parent group can be used to refernce the contained spline.
Is not a real node
Spline
Basic spline with auto-tangents, which can be referenced using its NodeRef.
---
worldSplineNode
Spawns a dummy area, which can be used for .
Works the same way as .
.ent
paths