버전
Wwise SDK 2021.1.9
Wwise 런처의 플러그인 패키지하기

이 페이지는 플러그인 제작자들을 위한 내용을 담고 있습니다. 여기서는 Wwise 런처와 Wwise 플러그인 스토어 모두에 호환되는 Wwise 플러그인 발행에 필요한 사항들을 안내합니다. 플러그인 제작 자체에 대한 더 자세한 정보는 새로운 플러그인 생성하기 를 참고하세요.

다음 섹션은 완전하게 호환 가능한 Wwise 플러그인을 발행하는 데 필요한 내용을 단계별로 설명합니다.

플러그인 패키지하기

Wwise 런처와 호환 가능하며 해당 플러그인 관리 프로세스의 장점을 누리기 위해서는 플러그인 제작자가 매우 상세하게 지정된 방법을 통해 플러그인을 패키지해야 합니다. Wwise 런처는, 플러그인 설치에 필요한 모든 파일과 메타데이터가 담긴 아카이브나 독립적인 폴더와 같은 묶음, 즉 번들(bundle)로 동작합니다.

정의

플러그인을 어떻게 패키지 하는지 자세히 알아보기에 앞서, 여기에 나오는 용어의 정의를 짚고 넘어갈 필요가 있습니다. 다음 표는 이러한 용어가 꺽쇠괄호 안에 나올 때마다 (<용어>) 여기에 사용될 값들을 규정합니다. 이 용어는 그에 해당하는 값으로 확장될 수 있습니다.

DeploymentPlatforms

SDKPlatforms

Android
iOS
tvOS
Mac
Linux
Windows_vc140
Windows_vc150
XboxOne
UWP_vc140
UWP_vc150
PS4
Vita
NX
android-9_armeabi-v7a
android-9_x86
android-21_arm64-v8a
android-21_x86_64
iOS
Linux_x32
Linux_x64
Mac
NX32
NX64
PS4
tvOS
UWP_Win32_vc140
UWP_Win32_vc150
UWP_x64_vc140
UWP_x64_vc150
UWP_ARM_vc140
UWP_ARM_vc150
Vita
Win32_vc140
Win32_vc150
x64_vc140
x64_vc150
XboxOne_vc140
XboxOne_vc150

번들 디렉터리 구조

플러그인 번들은 단일 디렉터리 또는 아카이브로서, 다음과 같은 파일들을 조합해 담을 수 있습니다 (bundle.json은 반드시 있어야 하며 다른 필수 파일은 없음).

bundle.json

플러그인 번들 설명 파일.
해당 파일은 반드시 있어야 합니다.

Authoring.tar.xz

바이너리, 데이터, 법적 공지 파일 등, 디렉터리에 들어있는 모든 저작 파일을 패키지합니다. 이 패키지는 필요시 여러 파일로 나눌 수 있습니다. 예: Data, Binary, Documentation으로 나눔. 그러나 모든 패키지가 항상 설치되어야 합니다.

SDK.tar.xz

플러그인 헤더 파일을 포함, 특정 플랫폼 전용이 아닌 모든 SDK 파일을 패키지합니다.

SDK_<DeploymentPlatforms>.tar.xz

배포 플랫폼에 특화된 Wwise SDK 플러그인 파일.
주의: 이름은 예제를 보여주기 위한 용도로만 사용되었습니다. 이름은 필수 사항이 아닙니다. 실질적으로 특정 플랫폼과 맞출 때에는 그룹/값 연관을 사용합니다.


참고: 아카이브 형식
번들 안의 아카이브 파일들은 TAR.XZ나 ZIP 형식이어야 하며, Wwise 런처에 의해 bundle.json 파일 안에 지정돼있는 메타데이터를 이용하여 추출됩니다. 번들은 폴더 형태 뿐만 아니라 그 자체를 .tar.xz 아카이브 형식으로 하여 Wwise 런처에 사용할 수 있습니다.

이 아카이브 내의 폴더 구조는 다음 형식을 준수해야 합니다. Wwise Authoring에서는 64 비트 플러그인만 지원된다는 점에 유의하세요. Wwise 2017.2의 32 비트 지원은 중단되었습니다.

PluginName/
├── bundle.json
├── Authoring.tar.xz
│ └── Authoring
│ ├── Help
│ ├── Data
│ | └── Factory Assets
│ | └── PluginName
│ └── x64
│ └── Release
│ └── bin
│ └── plugins
├── SDK.tar.xz
│ └── SDK
│ └── include
│ └── AK
| └── Plugin
└── SDK_<DeploymentPlatforms>.tar.xz
└── SDK
└── <SDKPlatforms>
├── Release
| ├── bin
| └── lib
├── Debug
| ├── bin
| └── lib
└── Profile
├── bin
└── lib
참고: 법적 공지
플러그인 프로그래머는 플러그인 코드의 법적 공지와 관련된 모든 파일을 이 곳에 복사해놓아야 합니다.: \Authoring\x64\Release\bin\plugins\PluginName.txt

예시

다음은 Wwise Authoring뿐 아니라 Linux_x32와 Linux_x64 Wwise SDK 플랫폼을 지원하는 플러그인 번들의 예시입니다.

PluginName/
├── bundle.json
├── Authoring.tar.xz
│ └── Authoring
│ ├── Help
│ | └── PluginName_UserGuide.pdf
│ ├── Data
│ | └── Factory Assets
│ | └── PluginName
│ | ├── Manifest.xml
│ | └── ...
│ └── x64
│ └── Release
│ └── bin
│ └── plugins
│ ├── PluginName.dll
│ ├── PluginName.xml
│ └── PluginName.txt
├── SDK.tar.xz
│ └── SDK
│ └── include
│ └── AK
| └── Plugin
| └── PluginName.h
└── SDK_Linux.tar.xz
└── SDK
├── Linux_x32
| ├── Release
| | ├── bin
| | | └── libPluginName.so
| | └── lib
| | └── libPluginNameFX.a
| ├── Debug
| | ├── bin
| | | └── libPluginName.so
| | └── lib
| | | └── libPluginNameFX.a
| └── Profile
| ├── bin
| | └── libPluginName.so
| └── lib
| └── libPluginNameFX.a
└── Linux_x64
├── Release
| ├── bin
| | └── libPluginName.so
| └── lib
| └── libPluginNameFX.a
├── Debug
| ├── bin
| | └── libPluginName.so
| └── lib
| └── libPluginNameFX.a
└── Profile
├── bin
| └── libPluginName.so
└── lib
└── libPluginNameFX.a

번들 메타데이터

번들에 들어있는 bundle.json파일은 다음과 같은 구조를 준수해야 합니다 (특별한 경우가 아닌 한 모든 입력란은 의무 사항입니다).

{
"id": string, // 해당 번들의 고유 식별자. ID는 모든 기존 플러그인과 버전을 통틀어 고유한 값이어야 합니다. ID 중복을 피하기 위해서는 회사 이름과 플러그인 이름, 버전 및 빌드 번호를 사용하세요. 예: audiokinetic_convolutionreverb_2017.2.3_4877
"name": string, // Wwise 런처에 표시되는 번들의 이름
"tag": string, // 플러그인을 고유하게 식별하는 태그 ([0-9A-z_]+ 형식, 최대 50자)
"description": string, // Wwise 런처에 표시되는 번들의 설명
"image": string, // Wwise 런처에 표시되는 번들의 Base64 이미지 표시 (PNG, JPEG 또는 GIF)
"vendor": string, // Wwise 런처에 표시되는 번들의 제공자 이름
"type": "plugin", // 번들 타입으로, 반드시 "plugin"이어야 함.
// 번들 타입에 특정된 데이터
"productDependentData": {
// 번들이 빌드된 Wwise 버전.
// 자신의 플러그인 호환 내용을 보려면 AK_OLDEST_SUPPORTED_WWISESDK_VERSION 을 확인하세요.
"targetWwiseVersion": {
"year": number,
"major": number
}
},
// 번들의 버전
"version": {
"year": number,
"major": number,
"minor": number,
"build": number
},
// 번들과 관련해 설치된 파일 목록
"files": [
{
"id": string, // 고유 식별자
"sha1": string, // 해당 파일의 SHA1
"size": number, // 파일 크기 (단위: 바이트)
"sourceName": string, // 파일 이름
"uncompressedSize": number, // 압축되지 않은 파일 크기(단위: 바이트)
// 해당 파일이 설치돼야 하는 그룹 목록 (플러그인이 접근할 수 있는 그룹의 전체 목록은 아래 표 참고)
"groups": [
{
"groupId": string, // 해당 그룹의 고유 식별자
"groupValueId": string // 해당 그룹의 값 영역 고유 식별자
},
...
]
},
...
],
// 해당 번들과 연관된 EULA 목록
"eulas": [
{
"displayName": string, // Wwise 런처에 표시되는 해당 EULA의 이름
"displayContent": string, // Wwise 런처에 표시되는 해당 EULA의 텍스트
"id": string // 해당 EULA의 고유 식별자
},
...
],
// 해당 번들 옆에 표시되는 라벨
"labels": [
{
"class": string, // 해당 라벨에 적용되는 스타일 클래스 (default, primary, success, info, warning, danger)
"displayName": string // Wwise 런처에 표시되는 해당 라벨의 이름
},
...
],
// 해당 번들에 연결된 온라인 문서
"links": [
{
"displayName": string, // Wwise 런처에 표시되는 해당 링크의 이름
"id": string, // 해당 링크의 고유 식별자
"url": string // 해당 링크의 대상 URL
},
...
],
// 해당 번들의 로컬 문서 파일
"documentation": [
{
"displayName": string, // Wwise 런처에 표시되는 해당 문서 파일의 이름
"filePath": string, // 문서 파일의 경로
"language": "en" | "ja" | "zh" // 문서 파일의 언어
},
...
]
}
참고: 고유 플러그인 식별자
다른 플러그인과의 충돌을 피하기 위해서는 반드시 플러그인 고유 식별자에 다음 정보를 인코딩해야 합니다.
  • 제공자 이름
  • 플러그인 이름
  • 완전한 버전 번호
  • 빌드 번호

번들 그룹

bundle.json에 지정된 각 파일은 하나 또는 둘 이상의 그룹에 연결돼야 합니다. 이 정보는 Wwise 런처에서 상황에 따라 특정 파일을 설치할 것인지 여부를 결정하는 데 사용됩니다.

groupId

groupValueId

Packages

Authoring
SDK

DeploymentPlatforms

( 정의 의 DeploymentPlatforms 열을 참고하세요..)

예시

이전 예시에 이어, Wwise Authoring 및Linux_x32와 Linux_x64 Wwise SDK 플랫폼을 지원하는 플러그인 번들의 bundle.json은 다음과 같으며, 영어 문서와 함께 제공됩니다.

{
"id": "PluginAuthor_PluginName_2017.1.0_0",
"name": "PluginName",
"description": "PluginName is an awesome Wwise plug-in that does XYZ.",
"image": "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==",
"vendor": "PluginAuthor",
"type": "plugin",
"version": {
"year": 2017,
"major": 1,
"minor": 0,
"build": 0
},
"productDependentData": {
"targetWwiseVersion": {
"year": 2017,
"major": 1
}
},
"files": [
{
"id": "Authoring.tar.xz",
"sha1": "2ab1fb750b2d4c6f9ad8f4c0b8966fe866a676c4",
"size": 7450993,
"uncompressedSize": 74509930,
"sourceName": "Authoring.tar.xz",
"groups": [
{
"groupId": "Packages",
"groupValueId": "Authoring"
}
]
},
{
"id": "SDK.tar.xz",
"sha1": "4e86453b2541ce4f3400778f932c850fd09cc0ff",
"size": 503316,
"uncompressedSize": 5033160,
"sourceName": "SDK.tar.xz",
"groups": [
{
"groupId": "Packages",
"groupValueId": "SDK"
}
]
},
{
"id": "SDK_Linux.tar.xz",
"sha1": "9cb1b7db241e476c4024d43aed46c2b17beee366",
"size": 263682,
"uncompressedSize": 2636820,
"sourceName": "SDK_Linux_x32_Debug.tar.xz",
"groups": [
{
"groupId": "Packages",
"groupValueId": "SDK"
},
{
"groupId": "DeploymentPlatforms",
"groupValueId": "Linux"
}
]
}
],
"eulas": [
{
"displayName": "PluginName",
"displayContent": "PluginName is provided for free on an \"as is\" basis. As such, ...",
"id": "EULA"
}
],
"labels": [
{
"class": "info",
"displayName": "Alpha"
}
],
"links": [
{
"displayName": "Release Notes",
"id": "ReleaseNotes",
"url": "https://www.releasenotes.com"
}
],
"documentation": [
{
"displayName": "User Guide",
"filePath": "Authoring/Help/PluginName_UserGuide.pdf",
"language": "en"
}
]
}

버전 관리

각 플러그인 번들은 특정 Wwise 버전을 대상으로 합니다. 그러나 각각의 Wwise 버전은 그 이전 버전 Wwise를 대상으로 하는 플러그인들을 지원할 수 있습니다.

Wwise 마이너 버전 간의 호환은 항상 지원됩니다. 예를 들어, 2017.1.1과 2017.1.2는 항상 호환됩니다. 메이저 릴리즈 또한 호환되는 경우가 있습니다. 그러나 자신의 플러그인이 Wwise 메이저 버전으로 업데이트되도록 준비해야 합니다. 어떤 플러그인 버전이 현재의 Wwise 버전과 호환되는지 확인하려면 Release Notes를 참고하세요.

오디오키네틱이 더 이상 호환되지 않는 Wwise 버전을 출시할 때마다 플러그인 제공자도 새로운 번들 버전을 출시해야 합니다. Wwise 런처에서 호환되지 않은 플러그인 버전을 설치하는 것은 불가능합니다. audiokinetic.com에 등록된 플러그인 번들이 호환되는 경우 Wwise를 설치할 때 자동으로 나타납니다.

Audiokinetic namespace