目次

Wwise Launcher向けプラグインのパッケージング

このページは、プラグイン作成者を対象としています。Wwise LauncherとWwiseプラグインストアの両方に対応したWwiseプラグインのパブリッシュ関連の要件を、作成者に説明することが目的です。プラグイン作成そのものに関しては、 独自プラグインの作成 を参照してください。

完全に互換性のあるWwiseプラグインをパブリッシュするための必要な手順を、以下のセクションで説明します:

プラグインのパッケージング

Wwise Launcherと互換性を保ち、そのプラグイン管理ワークフローを活用するには、プラグイン作成者はプラグインを非常に特殊な方法でパッケージングする必要があります。Wwise Launcherはバンドルを作業単位として、バンドルは例えばプラグインのインストールを進める上で必要なファイルやメタデータを全て含む、自己完結フォルダまたはアーカイブのことです。

定義

プラグインのパッケージング方法に入る前に、ここで使う用語の定義を最初に行います。用語に対して可能な設定値を下表で定義しますが、もし以下の1つがカギ括弧(<Term>)で囲われていれば、該当する数値に拡張できます。

DeploymentPlatforms

SDKPlatforms

Android
iOS
tvOS
Mac
Linux
Windows_vc120
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_vc120
Win32_vc140
Win32_vc150
x64_vc120
x64_vc140
x64_vc150
XboxOne_vc140
XboxOne_vc150

バンドルのディレクトリ構造

プラグインバンドルとは、平面のディレクトリつまりアーカイブに以下のファイルを複数組み合わせたものです(bundle.js以外の必須ファイルはありません)。

bundle.json

プラグインの、バンドルディスクリプションファイル。
このファイルは必須です。

Authoring.tar.xz

すべてのオーサリングファイルの入ったパッケージで、バイナリ、データ、リーガルノーティスなどのファイルが含まれます。このパッケージは、実際には必要に応じて複数のファイルに分けることができます。例: Data、Binary、Documentationと分割できます。ただし、全てのパッケージが必ずインストールされます。

SDK.tar.xz

プラットフォーム固有でないSDKファイルが全て入ったパッケージで、プラグインヘッダファイルも含む。

SDK_<DeploymentPlatforms>.tar.xz

あるデプロイメントプラットフォーム専用の、Wwise SDKプラグインファイル。
注: 名前スキームは事例として記載しています。必須の名前はありません。実際には、group/valueアソシエーションを使って特定プラットフォームと合わせています。


Note.gif
注釈: アーカイブフォーマット
バンドル内にあるアーカイブファイルは必ずTAR.XZ、またはZIP形式として、Wwise Launcherは、bundle.jsonファイルの中に指定されたメタデータを使って、これを抽出します。なお、バンドル自体もWwise Launcherに対して.tar.xzアーカイブとして(フォルダの代わりに)渡すことができます。

これらのアーカイブ内のフォルダ構成は、必ず以下のフォーマットに従うものとします。Wwiseオーサリングは、64-bitプラグインだけをサポートしているので、ご注意ください。Wwise 2017.2で、32-bitサポートを削除しました。

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
Note.gif
注釈: Legal Notice
プラグイン開発者は、自分のプラグインコードに関連するすべての法的通知を、必ずここにコピーしてください: \Authoring\x64\Release\bin\plugins\PluginName.txt

以下は、Wwiseオーサリングと、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は、全ての既存プラグインやバージョンにおいて固有のIDとします。コンフリクト回避のために、会社名、プラルイン名、バージョン、ビルドナンバーなどをIDに使います。例: audiokinetic_convolutionreverb_2017.2.3_4877
 
    "name": string, // このバンドルの名前としてWwise Launcherに表示される
 
    "description": string, // このバンドルの説明としてWwise Launcherに表示される
 
    "image": string, // このバンドルのイメージ図としてWwise Launcher で表示されるイメージのBase64版(PNG、JPEG、またはGIF)
 
    "vendor": string, // このバンドルのベンダー名としてWwise Launcherに表示される
 
    "type": "plugin", // バンドルのタイプで、必ず"plugin"とする
 
    // このバンドルタイプ専用のデータ
    "productDependentData": {
        // このバンドルをビルドした対象のWwiseバージョン。
        // あなたのプラグインの互換性を確認するには、AK_OLDEST_SUPPORTED_WWISESDK_VERSIONを参照してください。
        "targetWwiseVersion": {
            "year": number,
            "major": number
        }
    },
 
    // Version of this bundle
    "version": {
        "year": number,
        "major": number,
        "minor": number,
        "build": number
    },
 
    // List of files to be installed for this bundle
    "files": [
        {
            "id": string, // Unique identifier
            "sha1": string, // SHA1 of the file
            "size": number, // Size of the file (in bytes)
            "sourceName": string, // Name of the file
            "uncompressedSize": number, // Uncompressed size of the file (in bytes)
 
            // List of groups for which this file should be installed (refer to the table below for the complete list of groups plug-ins have access to)
            "groups": [
                {
                    "groupId": string, // Unique identifier of the group
                    "groupValueId": string // Unique identifier of the group's value field
                },
                ...
            ]
        },
        ...
    ],
 
    // List of EULAs associated with this bundle
    "eulas": [
        {
            "displayName": string, // Name displayed in the Wwise Launcher for this EULA
            "displayContent": string, // Text displayed in the Wwise Launcher for this EULA
            "id": string // Unique identifier of this EULA
        },
        ...
    ],
     
    // Labels displayed next to this bundle
    "labels": [
        {
            "class": string, // Style class applied to this label (default, primary, success, info, warning, danger)
            "displayName": string // Name displayed in the Wwise Launcher for this label
        },
        ...
    ],
 
    // Online documentation links for this bundle
    "links": [
        {
            "displayName": string, // Name displayed in the Wwise Launcher for this link
            "id": string, // Unique identifier of this link
            "url": string // Target URL of this link
        },
        ...
    ],
 
 
    // Local documentation files for this bundle
    "documentation": [
        {
            "displayName": string, // Name displayed in the Wwise Launcher for this documentation file
            "filePath": string, // Path to the documentation file
            "language": "en" | "ja" | "zh" // Language of the documentation file
        },
        ...
    ]
}
Note.gif
注釈: 固有プラグインID
ほかのプラグインとのコンフリクトを回避するために、以下の情報をプラグインの固有IDにエンコードすることが、必須です:
  • ベンダー名
  • プラグイン名
  • 完成バージョン
  • ビルドナンバー

バンドルグループ

bundle.jsonで指定した全てのファイルが、1つ以上のグループにリンクしている必要があります。Wwise Launcherはこの情報を使って、特定のファイルをインストールする必要があるのかを状況に応じて判断します。

groupId

groupValueId

Packages

Authoring
SDK

DeploymentPlatforms

(定義のDeploymentPlatforms列を参照。)

前述の例に続き、以下は、Wwiseオーサリングと、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のマイナーバージョン同士の互換性は、常に維持されます。例えば、2017.1.1と2017.1.2は、互いに互換性があります。また、メジャーリリース同士も互換性を保つ可能性がありますが、Wwiseのメジャーバージョンに合わせてプラグインもアップデートするつもりでいてください。Wwiseの現行バージョンと互換性のあるプラグインバージョンを確認するには、Release Notesを参照してください。

互換性が終了する度に、プラグインベンダーはバンドルの新バージョンをリリースする必要があります。Launcherは、互換性のないバージョンのプラグインをインストールすることを防ぎます。プラグインバンドルをaudiokinetic.comに登録してホストされると、互換性があればWwiseインストールの際に自動的にオプションとして表示されます。