Switchboard Settings Reference

Details about the Settings offered by Switchboard.

Windows
MacOS
Linux

Switchboard Plugin Settings

Follow the steps below to modify the settings for the plugin.

  1. In the main menu of the Unreal Editor, choose Edit > Project Settings to open the Project Settings window.

  2. In the Project Settings window, find Switchboard in the Plugins section.

Switchboard plugin settings

Parameter

Description

Switchboard

Python Interpreter Path

The default Python version for Switchboard is Python 3.7.7. To use a different version of Python, change this field to point to a different Python interpreter on your machine.

Switchboard Path

The location of the Switchboard Python file.

Commandline Arguments

Switchboard does not expect any command line arguments currently.

Listener

Listener Path

The location of the SwitchboardListener executable.

Listener Commandline Arguments

SwitchboardListener expects the following arguments:

  • -ip: Sets the IP address that SwitchboardListener listens on

  • -port: Sets the port that SwitchboardListener listens on

OSC

Default Switchboard OSC Listener

Switchboard requires an OSC Listener to be able to use Take Recorder. See Take Recording with Switchboard for more details.

Switchboard Settings

  • Settings that are common to all device plugins are at the top of the Settings panel, including the values added during the initial project set up.

  • After you add a device, settings for those devices are appended to the settings panel.

  • Some general settings are repeated in a device's settings so you can override the value per device if needed.

  • If you override a setting in a specific device, a different background color appears. As long as the override is in place, changing the global setting will not cause a change for this setting in the device.

Switchboard settings panel

The following sections describe all the settings that can be modified in the Settings panel.

Switchboard project settings

Parameter

Description

IP Address

The IP address of the machine running Switchboard and the internal OSC server. Change the address here if you have multiple network controllers in the computer running Switchboard.

Transport Path

Currently not used in Switchboard.

Project Settings

Parameter

Description

Project Name

The name of the Switchboard project. Will be used as a basis for the filename that settings and devices are stored in.

UProject

The local path to the UE project file.

Engine Dir

The local path to the Unreal Engine directory.

Build Engine

The flag to enable building the engine from source in Switchboard.

Map Path

The relative path from the Content folder to maps that will appear in the Level dropdown in Switchboard.

Map Filter

The file filter for limiting what maps appear in the Level dropdown.

OSC

Server Port

The port for the OSC server in Switchboard to listen on.

Client Port

The port of the OSC client specified in the Unreal Editor.

Source Control

P4 Project Path

The Perforce depot path for the Unreal project specified in UProject. Only the depot folder containing the uproject file needs to be specified.

P4 Engine Path

The P4 Engine Path setting is only required if you plan to build the engine from source, and not just the project. See Syncing and Building for more details.

Workspace Name

The name of the Perforce workspace that maps to the depot project path.

Multi-User Server Settings

Parameter

Description

Server Name

The name appended to the Project Name to create the full server name.

Command Line Args

Optional arguments passed to the Multi-User Server executable.

Auto Join

Enable this option to have each Unreal or nDisplay device automatically join the Multi-User Server.

Clean History

Passes the argument -ConcertClean to the server so the server session's working directory is cleaned on launch.

Auto Launch

Enable this option to launch the Multi-User Server the first time either an Unreal or nDisplay device is started. The server always runs on the same device as Switchboard.

Unreal Device Settings

Switchboard Unreal device settings

Parameter

Description

Is Recording Device

Enable this option if this device type is going to record sequences.

Buffer Size

The internal buffer size of the socket client connected to SwitchboardListener.

Command Line Arguments

Optional command line arguments that are passed to Unreal on start.

ExecCmds

Sets -ExecCmds (console commands) that are passed to Unreal on start as command line arguments.

Listener Port

The port number the listener listens on. The default port is 2980.

Roles Filename

The filename of the .ini file that contains the Virtual Production Roles.

Stage Session ID

An ID that groups Stage Monitor providers and monitors. Instances with different Session IDs are invisible to each other in Stage Monitor.

UE4 Editor filename

The filename of the Unreal Editor executable.

Number of GPUs

The number of GPUs to use on a device in case there is more than one.

Instance Settings

IP address

The remote address on which the SwitchboardListener listens.

Roles

Dropdown menu enabling selection of a Virtual Production Role from those provided in the Roles .ini file.

Is Recording Device

Override for whether this device is used for recording.

Command Line Arguments

Override for optional command line arguments.

ExecCmds

Override for exec commands for Unreal.

Number of GPUs

Override for the GPU count to use.

Engine Directory

Override for the local path to the engine.

uProject Path

Override for the local path to the uproject file.

KiPro Device Settings

Switchboard Kipro device settings

Parameter

Description

Is Recording Device

Enable this option if this device type is going to record sequences.

IP address

The address of the KiPro web server.

Auto Play After Stop

Enable this option to playback automatically when the recording ends.

Live Link Face

Switchboard Live Link device settings

Parameter

Description

Is Recording Device

Enable this option if this device type is going to record sequences.

IP address

Currently not used in Switchboard.

nDisplay Device Settings

Switchboard nDisplay device settings

Parameter

Description

nDisplay Config File

Both the .cfg and the JSON formats are supported.

Use All Available Cores

Enable this option to use all cores.

Texture Streaming

Toggle texture streaming.

Render API

The options are DirectX11 or DirectX12.

Render Mode

Allows selection of nDisplay render modes.

Extra Cmd Line Args

Optional command line arguments that are passed to nDisplay on start.

ExecCmds

Sets -ExecCmds (console commands) that are passed to Unreal on start as command line arguments.

Number of GPUs

The number of GPUs to use on a device in case there is more than one.

Listener Port

The port number the listener listens on. The default port is 2980.

Roles

Dropdown menu enabling selection of a Virtual Production Role from those provided in the Roles .ini file.

Stage Session ID

An ID that groups Stage Monitor providers and monitors. Instances with different Session IDs are invisible to each other in Stage Monitor.

For each nDisplay scene node:

Parameter

Description

IP address

The remote address on which the SwitchboardListener listens.

Roles

Dropdown menu enabling selection of a Virtual Production Role from those provided in the Roles .ini file.

Extra Cmd Line Args

Override for optional command line arguments.

ExecCmds

Override for exec commands for nDisplay

Number of GPUs

Override for the GPU count to use.

Engine Directory

Override for the local path to the engine.

uProject Path

Override for the local path to the uproject file.

Shogun Device Settings

Switchboard Shogun device settings

Parameter

Description

Is Recording Device

Enable this option if this device type is going to record sequences.

IP Address

The address of the device running Shogun.

Save Path

Path to Shogun's capture folder.

SoundDevices Device Settings

Switchboard SoundDevices device settings

Parameter

Description

Is Recording Device

Enable this option if this device type is going to record sequences.

IP Address

The address of the SoundDevices web server.

Creating Your Own Device Plugin for Switchboard

Depending on your project's needs and the devices you are using, you may need to add or extend the device functionality in Switchboard. This section covers creating your own device plugin in Python. With some C++ knowledge, it is possible to extend the listener to accept more types of messages but this is not covered here.

The following instructions step through how to create a new device plugin, SampleDevice, for Switchboard that you can use as a starting point.

  1. For the device plugin to be discoverable on load in Switchboard, you must create a folder and Python file with the naming convention <plugin_name>\plugin_<plugin_name>.py in \Engine\Plugins\VirtualProduction\Switchboard\Source\Switchboard\switchboard\devices\.

    • For the SampleDevice plugin create the following file: \Engine\Plugins\VirtualProduction\Switchboard\Source\Switchboard\switchboard\devices\sampledevice\plugin_sampledevice.py.

  2. Extend the Device`class defined in \Engine\Plugins\VirtualProduction\Switchboard\Source\Switchboard\switchboard\devices\device_base.py in the plugin_sampledevice.py` file:

    • Import Device from device_base.py.

    • Create a new class DeviceSampleDevice which inherits from Device.

    • Import LOGGER from switchboard/switchboard_logging.py to report errors.

          from switchboard.devices.device_base import Device
          from switchboard.switchboard_logging import LOGGER
      
          class DeviceSampleDevice(Device):`
              def __init__(self, name, ip_address, **kwargs):
              super().__init__(name, ip_address, **kwargs)

    Verify the file is discoverable by Switchboard. Launch Switchboard and expand the Add Device dropdown menu. SampleDevice appears in the list.

    Adding your custom device to Switchboard

  3. Adding a SampleDevice to your Switchboard won't create a widget in the view. To create a SampleDevice widget, extend DeviceWidget in plugin_sampledevice.py:

    • Import DeviceWidget from device_widget_base.py.

    • Create the new class DeviceWidgetSampleDevice which inherits from DeviceWidget.

          from switchboard.devices.device_base import Device
          from switchboard.devices.device_widget_base import DeviceWidget
          from switchboard.switchboard_logging import LOGGER
      
          class DeviceSampleDevice(Device):
              def __init__(self, name, ip_address, **kwargs):
                  super().__init__(name, ip_address, **kwargs)
      
          class DeviceWidgetSampleDevice(DeviceWidget):
              def __init__(self, name, device_hash, ip_address, icons, parent=None):
                  super().__init__(name, device_hash, ip_address, icons, parent=parent)

    Verify the widget appears in Switchboard. Launch Switchboard and add a SampleDevice. A minimal SampleDevice widget appears in the view.

    Switchboard custom device widget

  4. Create a custom dialog when a new SampleDevice is added by creating a new class which inherits from AddDeviceDialog and assigning it to the static variable add_device_dialog in the DeviceSampleDevice class:

    • Import AddDeviceDialog from device_widget_base.py.

    • Import Qt modules from PySide2

    • Create a new class AddSampleDeviceDialog which inherits from AddDeviceDialog and set the device_type parameter to "SampleDevice" when calling the base class's constructor.

    • In the new class's constructor add a QLineEdit text field to the dialog.

    • Override the add_device_dialog static variable in DeviceSampleDevice with the new class.

          from switchboard.devices.device_base import Device
          from switchboard.devices.device_widget_base import AddDeviceDialog, DeviceWidget
          from switchboard.switchboard_logging import LOGGER
      
          from PySide2 import QtWidgets, QtGui, QtCore
      
          class AddSampleDeviceDialog(AddDeviceDialog):
              def __init__(self, existing_devices, parent=None):
                  super().__init__(device_type="SampleDevice", existing_devices=existing_devices, parent=parent)
      
                  # Create QTWidgets to add to the form
                  self.additional_text_field = QtWidgets.QLineEdit(self)
      
                  # Append the new options to the QTWidgets.QFormLayout object defined in the parent class
                  self.form_layout.addRow("Additional Text", self.additional_text_field)
      
          class DeviceSampleDevice(Device):
              # Override the add device dialog object associated with the device plugin
              add_device_dialog = AddSampleDeviceDialog
      
              def __init__(self, name, ip_address, **kwargs):
                  super().__init__(name, ip_address, **kwargs)
      
          class DeviceWidgetSampleDevice(DeviceWidget):
              def __init__(self, name, device_hash, ip_address, icons, parent=None):
                  super().__init__(name, device_hash, ip_address, icons, parent=parent)

      `

    Verify the new device dialog appears in Switchboard. Launch Switchboard and add a SampleDevice. The additional text field appears in the dialog.

    Switchboard adding custom device dialog

  5. Devices can also have a widget on the right side of Switchboard, tabbed with other extension dialogs, to share more information. To create this tab, override the classmethod plug_into_ui from the Device base class.

    • Create a new class SampleDeviceTabView which inherits from QtWidgets.QWidget.

    • Create the class member tab_view in DeviceSampleDevice to hold the instance of the widget.

    • Override the classmethod plug_into_ui in DeviceSampleDevice and initialize tab_view with the new class SampleDeviceTabView.

          from switchboard.devices.device_base import Device
          from switchboard.devices.device_widget_base import AddDeviceDialog, DeviceWidget
          from switchboard.switchboard_logging import LOGGER
      
          from PySide2 import QtWidgets, QtGui, QtCore
      
          class AddSampleDeviceDialog(AddDeviceDialog):
              def __init__(self, existing_devices, parent=None):
                  super().__init__(device_type="SampleDevice", existing_devices=existing_devices, parent=parent)
      
                  # Create QTWidgets to add to the form
                  self.additional_text_field = QtWidgets.QLineEdit(self)
      
                  # Append the new options to the QTWidgets.QFormLayout self.form_layout object defined in the parent class
                  self.form_layout.addRow("Additional Text", self.additional_text_field)
      
          class DeviceSampleDevice(Device):
              add_device_dialog = AddSampleDeviceDialog # Override the default dialog for the plugin
              tab_view = None
      
              def __init__(self, name, ip_address, **kwargs):
                  super().__init__(name, ip_address, **kwargs)
      
              @classmethod
              def plug_into_ui(cls, menubar, tabs):
                  ''' Implementation of base class function that allows plugin to inject UI elements.
                  '''
      
                  if not cls.tab_view:
                      cls.tab_view = SampleDeviceTabView(parent=tabs)
      
                  tabs.addTab(cls.tab_view, 'SampleDevice Tab')
      
          class DeviceWidgetSampleDevice(DeviceWidget):
              def __init__(self, name, device_hash, ip_address, icons, parent=None):
                  super().__init__(name, device_hash, ip_address, icons, parent=parent)
      
          class SampleDeviceTabView(QtWidgets.QWidget):
              def __init__(self, parent):
                  QtWidgets.QWidget.__init__(self, parent)

    Custom device added to Switchboard

These steps showed how to create a new device plugin for Switchboard. For an advanced example, see the nDisplay device plugin for Switchboard.

Tags
Help shape the future of Unreal Engine documentation! Tell us how we're doing so we can serve you better.
Take our survey
Dismiss