Wwise SDK 2022.1.18
|
The open architecture of Wwise supports different kinds of plug-ins:
Audio Plug-ins describe their model in the form of an XML file. This allows you to quickly change any of the settings of your plug-in, including default property values, without having to recompile the code. Properties described in this model are also used to provide a default graphical interface in the form of a properties table in Wwise if no custom GUI is provided by the plug-in.
XML 설명 파일에는 다음과 같은 Wwise 플러그인 관련 정보가 담겨있습니다.
When using the wp.py development tool, a default XML file is provided and is pre-filled with the information you provided at creation time. Refer to 오디오 플러그인 만들기 for more details.
참고: A Wwise plug-in dynamic library can contain multiple plug-ins (see 플러그인 라이브러리 형식 저작하기), each of which must be described in a single associated XML file. |
The XML description file for each Wwise plug-in dynamic library must have the same name as the dynamic library, except for the XML file extension and any lib prefix.
For example, if your dynamic library is named "MyPlugin.dll" or "libMyPlugin.dylib", then the plug-in description file must be named "MyPlugin.xml".
다음은 플러그인 XML 설명 파일의 간단한 예시입니다.
XML 파일의 다양한 부분을 자세히 살펴보겠습니다.
이 XML 파일의 헤더 부분을 살펴보고 자세한 내용을 알아봅시다.
어떤 XML 파일이든 첫 번째 라인에서는 XML 버전과 인코딩을 정의합니다. 여기서는, XML 버전은 1.0이고 인코딩은 UTF-8
입니다. 모든 Wwise 플러그인 설명 파일의 첫 번째 라인은 항상 위의 것과 같은 양식이어야 합니다. 두 번째 라인은 XML 주석으로, 여기서는 저작권 공고입니다. 필요에 따라 XML 파일 안 다양한 곳에 주석을 입력할 수 있습니다.
이 문서의 주요 XML 요소는 PluginModule
라고 이름 붙였으며, 파일 안에 정의된 다양한 플러그인의 모든 정보를 담고 있습니다.
In the category of Audio plug-ins, there are three possible plug-in type elements:
The EffectPlugin
element is the main element for the definition of a single effect plug-in, while SourcePlugin
and SinkPlugin
are the element names for source plug-ins and sink plug-ins, respectively.
참고: If more than one plug-in is implemented in the dynamic library, the XML file will contain multiple plug-in elements. A dynamic library is not limited to a single type of audio plug-in. |
These elements contain three required attributes:
Name
(mandatory): This string specifies the display name of the plug-in as it will appear in Wwise. wwiseplugin_xml_id_specification
) Two optional attributes can be specified:
SupportsIsSendModeEffect
(optional): (Effect plug-in only) This boolean value indicates if the plug-in supports the send mode by querying AK::IAkEffectPluginContext::IsSendModeEffect()
during the initialization part. When IsSendModeEffect()
returns true, the plug-in should not output the dry signal and should ignore the dry level properties. EngineDllName
(optional): This string value overrides the name of the Sound Engine dynamic library to load at game runtime (by default it will be the same name as the XML). If EngineDllName
is specified, ensure that both of your Sound Engine static and dynamic libraries share the same name. Unity나 Unreal 4와 같은 상업용 게임 엔진에서 지원될 수 있도록 하려면 반드시 자신의 플러그인과 함께 DLL/so 파일을 제공해야합니다. This does not affect the naming of the Authoring plug-in dynamic library, which should strictly correspond to the name of your XML file. Wwise associates plug-in model definitions and plug-in implementations using numeral IDs. These IDs are provided in the XML description of each plug-in and in the plug-in descriptor in the plug-in library.
The CompanyID
is an ID corresponding to your organization. Three ranges exist:
The PluginID
is a unique numeral ID in the range 0-32767 that corresponds to a plug-in within a single organization.
For example, if you are developing plug-ins for in-house use only, you can pick any CompanyID
between 64 and 255, and any three PluginIDs between 0 and 32767. 이 숫자들은 연속된 숫자가 아니어도 상관 없습니다.
The CompanyID and PluginID need to be passed to the Sound Engine plug-in declaration macro AK_IMPLEMENT_PLUGIN_FACTORY
.
경고: Important considerations:
|
For more details on IDs, refer to Wwise Plug-in ID.
PluginInfo/PlatformSupport
섹션에서 자신의 플러그인이 지원하는 플랫폼을 정의합니다. 여기에는 하나 이상의 Platform
구성 요소가 들어있으며, 이 각각의 구성 요소는 각 플랫폼에서 플러그인이 지원하는 다양한 기능을 명시하고 있습니다. 다음과 같은 기능이 명시됩니다.
CanBeInsertOnBusses
는 효과가 버스 제어에 적용될 수 있는지를 결정합니다. 대부분의 경우 효과가 서라운드 오디오 환경 설정을 지원해야 합니다.CanBeInsertOnAuxBusses
determines whether the effect can be applied to control and master auxiliary busses. 대부분의 경우 효과가 서라운드 오디오 환경 설정을 지원해야 합니다. Note that if CanBeInsertOnBusses
is already set, the effect is already available on Aux busses.CanBeInsertOnAudioObjects
는 효과가 SFX에 삽입으로 적용될 수 있는지를 결정합니다 (모노와 스테레오 처리 둘 다 지원해야 함).CanBeRendered
는 효과가 오프라인 렌더링에 사용될 수 있는지를 결정합니다.CanSendMonitorData
determines whether the effect can send monitoring data. Refer to AK::Wwise::Plugin::Notifications::Monitor::NotifyMonitorData
for more information.CanBeSourceOnSound
determines whether source plug-in can be a source for a sound.CanBeInsertEndOfPipeline
은 효과가 오디오 파이프라인의 마지막, 즉 상위 레벨 Audio Bus의 마지막 효과가 있는 자리에만 추가될 수 있는지를 결정합니다 (Audiokinetic 전용).자신의 플러그인은 Wwise 안에서 지정된 플랫폼에 대해서만 사용 가능합니다.
모든 지원 플랫폼을 나열하는 대신 "Any (모든)" 플랫폼을 추가할 수도 있습니다. 단, 이 플러그인은 Wwise 안에서 모든 플랫폼에서 사용 가능한 것으로 소개된다는 점을 기억하세요. 또한, 일치하는 런타임 라이브러리가 플러그인에 없는 경우 사용자는 해당 플랫폼으로 가져올 때에야 이 사실을 알게 되다는 점에 유의하세요.
Each audio plug-in can define properties and references. 속성과 레퍼런스에 대한 더 자세한 정보는 Properties XML Description 을(를) 참고하세요.
InnerTypes
섹션은 자신의 플러그인 안에서 인스턴스화하고 사용할 수 있는 Inner Object Types를 정의합니다. InnerTypes
섹션 안에 여러 개의 InnerType
을 정의할 수 있습니다. 각 InnerType
은 고유의 이름과 플러그인 ID를 갖고있어야 합니다. InnerType
섹션에는 Properties
섹션이 포함돼있으며, 여기에서 플러그인 속성을 정의하는 방식과 동일하게 속성을 정의할 수 있습니다.
Inner Types 는 플러그인에 여러 오브젝트 인스턴스가 필요할 때 매우 유용합니다. 예를 들어, 가변수의 EQ 밴드가 있을 경우, EQ 플러그인의 Inner Type Band
를 정의할 수 있습니다. 각 밴드에는, 각 밴드의 서로 다른 값과 함께 동일한 속성 정의가 있습니다.
참고: Inner Types의 속성은 RTPC를 지원하지 않습니다. 따라서 SupportRTPCType 속성과 AudioEnginePropertyID 구성 요소를 사용할 수 없습니다. |
참고: InnerTypes are only supported inside audio plug-ins. |
To manipulate the Inner Type instances (Inner Objects) in your plug-in code, you need to request the service by deriving AK::Wwise::Plugin::RequestObjectStore
in your plug-in class and using the AK::Wwise::Plugin::ObjectStore
m_objectStore
member. The AK::Wwise::Plugin::ObjectStore
interface provides functions for creating and deleting inner objects (AK::Wwise::Plugin::ObjectStore::CreatePropertySet
and AK::Wwise::Plugin::ObjectStore::DeletePropertySet
). Inner Objects' properties are manipulated using the PropertySet interface (see Property Set).
When objects are created, they must be stored in a named list using the insertion (AK::Wwise::Plugin::ObjectStore::InsertPropertySet
) and removal (AK::Wwise::Plugin::ObjectStore::RemovePropertySet
) functions. 예를 들어, 다음과 같이 Band
타입의 Inner Object를 생성하고, 이를 BandList
에 저장할 수 있습니다.
참고: An inner object can only be stored in a single list at any one time. |
The persistence in the project Work Units is automatically handled by Wwise. However, you must implement the serialization of the inner objects in the SoundBanks and for the Sound Engine data. You must serialize the inner objects inside AK::Wwise::Plugin::CustomData::GetPluginData
and AK::Wwise::Plugin::AudioPlugin::GetBankParameters
.
오브젝트 저장소에 Inner Object를 추가할 때, 연관 Undo 체계가 Wwise에 자동으로 생성됩니다. 실행 취소 시스템을 별도로 구현할 필요가 없습니다. However, to support undo events correctly, you need to update your user interface only at the reception of notifications from the framework.
The interface AK::Wwise::Plugin::NotificationsObjectStore
provides handlers to override that allow to act on notification events related to inner objects. These are primarily meant to update custom GUI elements on model changes that could be triggered by a user interaction, an undo event or even a WAAPI call.
For example, after calling AK::Wwise::Plugin::ObjectStore::InsertPropertySet
, do not update the UI right-away. Wait for the notification AK::Wwise::Plugin::NotificationsObjectStore::NotifyInnerObjectAddedRemoved
to be called on your plug-in. 이 알림은, 오브젝트가 목록에 추가 또는 삭제되었다고 알려줍니다.
Similarly, you can react on AK::Wwise::Plugin::NotificationsObjectStore::NotifyInnerObjectPropertyChanged
, which is called when the value of a property changes in an inner object.
문제가 발생할 경우 Wwise 음원 플러그인 및 효과 플러그인 문제 해결 안내 을 참고하세요.
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요