Skip to main content

Excluding Nodes According To Build Target

Sometimes, you may want to exclude certain nodes from being included in the build for specific build targets. This can be useful for various reasons, such as optimizing performance, reducing build size, or tailoring content for different platforms or audiences, especially for the network-related nodes that are only relevant for one specific host type.

Joint provides a way to achieve this via the Build Preset System.

Build Preset System

Joint Build Preset is an asset that defines whether your nodes will be included or excluded according to the build condition.

If a node that contains this asset is not allowed for type, then that node will be excluded on the package stages.

This will help you to reduce and optimize the dialogue manager asset according to the session type, and help you to prevent some memory corruption related security concerns.

info

Of course, we've supported a way to control the playback on each session, for example with some fragments like OnServer, OnClient, but they had their limitation since even if they are not be played, but still stays in the memory and object.

So basically, this new method is superior version of those fragments.

img_11.png

You can create a new preset in the content browser. right click and go Joint -> Joint Build Preset.

img_14.png

Once you created it, you can put it to each node's detail tab, to the property Build Preset.

img_13.png

In the asset, you can specify the behavior of the preset for each build platform.

  • On Client Behavior: Whether a node with this preset will be included in clients.
  • On Server Behavior: Whether a node with this preset will be included in servers.
  • Default Build Target Behavior : Default behavior for the build targets settings. If per build target settings doesn't have a setting for the current build target, it will be used instead.
  • Per Build Target Settings : behavior for the specific build targets settings. It takes the name of the build target.
info

These are the name it requires.

img_15.png

To add a new build target, you can make a new .Target.cs file and add a definition there. See more information related to this here: https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-engine-build-tool-target-reference

img_16.png

It's very straight forward to understand. All the behaviors will be overlapped; If the current build platform can be applied to multiple options, then that node with that preset will be included only when all options are set to be included

For example, a build platform for standalone game will be included when On Client, On Server is set to Include, and the build target you used is allowed in the system.

img_12.png