OcclusionPlugin

OcclusionPlugin

#Overview

name: OcclusionPlugin

The value of this variable can be defined or overridden in .ini config files. 2 .ini config files referencing this setting variable.

It is referenced in 5 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of OcclusionPlugin is to specify which of the currently enabled occlusion plugins should be used for audio in the game. Occlusion plugins are responsible for simulating how sound waves interact with obstacles in the game environment, creating more realistic audio experiences.

This setting variable is primarily used in the audio system of Unreal Engine 5. It is referenced in various platform-specific target settings classes, indicating that it can be configured differently for different platforms.

Based on the Callsites section, the OcclusionPlugin variable is used in the following Unreal Engine subsystems and modules:

  1. LinuxTargetPlatform
  2. MacTargetPlatform
  3. WindowsTargetPlatform
  4. AndroidRuntimeSettings
  5. IOSRuntimeSettings

The value of this variable is set through the Unreal Engine Editor’s project settings interface. It is defined as a config property, which means it can be saved and loaded from configuration files.

There don’t appear to be any direct interactions with other variables shown in the provided code snippets. However, it is often used alongside other audio-related settings such as CompressionOverrides and SoundCueCookQualityIndex.

Developers should be aware of the following when using this variable:

  1. The chosen occlusion plugin can significantly impact the game’s audio performance and quality.
  2. Different platforms may have different available occlusion plugins or optimal choices.
  3. Changing this setting may require adjustments to other audio-related settings for optimal results.

Best practices when using this variable include:

  1. Choose an occlusion plugin that balances performance and audio quality for your target platforms.
  2. Test the chosen plugin thoroughly on all target platforms to ensure compatibility and desired audio behavior.
  3. Consider the computational cost of the selected occlusion plugin, especially on mobile platforms where resources may be more limited.
  4. Coordinate with the audio team to ensure the chosen plugin meets the game’s audio design requirements.
  5. Document the chosen occlusion plugin and any platform-specific configurations for future reference and maintenance.

#Setting Variables

#References In INI files

Location: <Workspace>/Projects/Lyra/Config/DefaultEngine.ini:310, section: [/Script/WindowsTargetPlatform.WindowsTargetSettings]

Location: <Workspace>/Projects/Lyra/Config/DefaultEngine.ini:384, section: [/Script/LinuxTargetPlatform.LinuxTargetSettings]

#References in C++ code

#Callsites

This variable is referenced in the following C++ source code:

#Loc: <Workspace>/Engine/Source/Developer/Linux/LinuxTargetPlatform/Classes/LinuxTargetSettings.h:37

Scope (from outer to inner):

file
class        class ULinuxTargetSettings : public UObject

Source code excerpt:

	/** Which of the currently enabled occlusion plugins to use. */
	UPROPERTY(config, EditAnywhere, Category = "Audio")
	FString OcclusionPlugin;

	/** Quality Level to COOK SoundCues at (if set, all other levels will be stripped by the cooker). */
	UPROPERTY(config, EditAnywhere, Category = "Audio|CookOverrides", meta = (DisplayName = "Sound Cue Cook Quality"))
	int32 SoundCueCookQualityIndex = INDEX_NONE;

	/**

#Loc: <Workspace>/Engine/Source/Developer/Mac/MacTargetPlatform/Classes/MacTargetSettings.h:161

Scope (from outer to inner):

file
class        class UMacTargetSettings : public UObject

Source code excerpt:

	/** Which of the currently enabled occlusion plugins to use. */
	UPROPERTY(config, EditAnywhere, Category = "Audio")
	FString OcclusionPlugin;
	
	/** Quality Level to COOK SoundCues at (if set, all other levels will be stripped by the cooker). */
	UPROPERTY(GlobalConfig, EditAnywhere, Category = "Audio|CookOverrides", meta = (DisplayName = "Sound Cue Cook Quality"))
	int32 SoundCueCookQualityIndex = INDEX_NONE;

};

#Loc: <Workspace>/Engine/Source/Developer/Windows/WindowsTargetPlatform/Classes/WindowsTargetSettings.h:98

Scope (from outer to inner):

file
class        class UWindowsTargetSettings : public UObject

Source code excerpt:

	/** Which of the currently enabled occlusion plugins to use. */
	UPROPERTY(config, EditAnywhere, Category = "Audio")
	FString OcclusionPlugin;

	/** Audio Cook Settings */

	/** Various overrides for how this platform should handle compression and decompression */
	UPROPERTY(GlobalConfig, EditAnywhere, Category = "Audio")
	FPlatformRuntimeAudioCompressionOverrides CompressionOverrides;

#Loc: <Workspace>/Engine/Source/Runtime/Android/AndroidRuntimeSettings/Classes/AndroidRuntimeSettings.h:596

Scope (from outer to inner):

file
class        class UAndroidRuntimeSettings : public UObject

Source code excerpt:

	/** Which of the currently enabled occlusion plugins to use. */
	UPROPERTY(config, EditAnywhere, Category = "Audio")
	FString OcclusionPlugin;

	/** Various overrides for how this platform should handle compression and decompression */
	UPROPERTY(config, EditAnywhere, Category = "Audio")
	FPlatformRuntimeAudioCompressionOverrides CompressionOverrides;

	/** This determines the max amount of memory that should be used for the cache at any given time. If set low (<= 8 MB), it lowers the size of individual chunks of audio during cook. */

#Loc: <Workspace>/Engine/Source/Runtime/IOS/IOSRuntimeSettings/Classes/IOSRuntimeSettings.h:539

Scope (from outer to inner):

file
class        class UIOSRuntimeSettings : public UObject

Source code excerpt:

	/** Which of the currently enabled occlusion plugins to use. */
	UPROPERTY(config, EditAnywhere, Category = "Audio")
	FString OcclusionPlugin;

	/** Various overrides for how this platform should handle compression and decompression */
	UPROPERTY(config, EditAnywhere, Category = "Audio")
	FPlatformRuntimeAudioCompressionOverrides CompressionOverrides;

    /** Whether this app's audio can be played when using other apps or on the springboard */