githubEdit

Sector Variants Practical Example & Project

Sector variant switching with Native Settings

Summary

Published: 22 Mar 2026 by Kaoziun Last documented edit: 22 Mar 2026 by mana vortex

This guide gives a practical example as to how variants work with the Native Settings integration and its project so you can visualize how everything links together.

Rather than boring you with theory, we're making a simple build with different kinds of variants, so that you can see how to structure, export, and script them.

Wait, this is not what I want!

Why would I need this?

Please check Why do I need sector variants? on the main page for this intel.

What can I do with variants?

The example project shows you a bunch of options. You are not limited to these — use sector variants to do whatever you want.

circle-info

Sufficiently complex sector variants are known as quest modding. You might want to stop before that happens.

Prerequisites

file-download
90KB

Assumed skill level

  • You have some basic experience with WorldBuilder (or a high frustration tolerance)

  • You do not need to know scripting

You can change anything in the template mod. Be encouraged to FAFO!

What's in the example?

circle-info

The fastest way to learn this is breaking something that works and then un-fucking it. Fortunately, the template above contains a working mod project that you can install and then mod it 'till it crashes.

When installing the example project, you will have a little pool with ladders to get in and out, and a bunch of toggle-able things:

  • Water fill levels (by default, it will be empty)

  • Three colours for the casing/trim (one of them will be always active)

  • A flamingo (off by default, you can toggle it on)

  • A white chicken

  • A brown chicken

Step 0: Teleport to the pool

The pool is set up on top of Watson's hospital. To get there, run the following CET command:

Step 1: Group structure

Each of the variants needs to go into its own group.

All of these groups can be toggled on and off according to your settings. We're setting unvarianted_assets as always loaded in Step 2: Export, so there's no toggling that one.

Step 2: Export

Head to the Export tab, but click on the Variants dropdown arrow under your parent group(s) name(s). Here's what you'll see:

What do these options mean?

Variant Node Ref

This is your unique identifier across all sectors. Make sure that it's unique (e.g. prefix it with your name).

Checkbox Default On

Any subgroup with its box checked is always loaded, and it will not be turned into a variant (our unvarianted assets subgroup)

Save as Template

It's strongly encouraged to save your export as a template to keep all the variant settings - otherwise, you'll have to configure them per import. In the template project, the following things are preconfigured:

  • WB object save path

  • Export

  • Export template

Step 3: Wolvenkit

We will now head to WolvenKit.

circle-info

This section assumes that you'll create your own script for toggling already-existing variants with the names used in the template project. If you are using your own exports, you need to update the corresponding files and names accordingly.

  1. Switch the Project Browser to the Source or Resources tab

  2. Re-name the VariantsExample folder to something unique (e.g. yourname)

  3. Optional: open all.streamingblock to see your node ref and all your variant names:

Step 4: Customizing the menu

There are several .lua files in the project, but you only need to edit two (variants.lua and variantSettings.lua). Open them with a text editor.

Variants.lua

Here, you can set the display name that your mod uses in ModSettings. You can ignore everything else.

variantSettings.lua

This is the main file where you create all options for your variants. Check the screenshot below - the code should be pretty much self-explanatory (every block controls a variant).

circle-info

The code folding feature in Notepad++ lets you collapse sections (you can see the little - buttons on the screenshot below). That makes it easy to identify the bits that you duplicate/delete.

As long as you don't make typos in the VariantNodeRef of the variant names, everything should just work.

Last updated