WYVRN Unreal SDK
WYVRN SDK には、AI・Chroma・ハプティクスを統合するための C++ / ブループリント(Blueprint)ライブラリが用意されています。
この WYVRN SDK プラグインは、Unreal Engine 4.21 から 5.6 のバージョンでテストされています。
概要
WYVRN SDK は、ゲーム実行時のプラグインであり、イベント名を定義や外部 AI、Chroma 再生、ハプティックイベントのトリガー用の共通 API を提供するために共有されます。
セキュリティ
第三者による悪意のあるコードの注入を防ぐため、プラグインは Razer Chromatic Library の有効な署名を確認します。DLL の発行者は Razer USA Ltd. であることが検証されます。署名チェックに失敗した場合、Init および InitSDK は (非ゼロの) RZRESULT_DLL_INVALID_SIGNATURE を返します。
一般
- WYVRN SDK を使用すると、アプリケーションやゲームが
Chroma App内の Chroma Apps リストに表示される詳細情報を設定できます。
このドキュメントは、AI・Chroma・ハプティクスを WYVRN C++ SDK を使って統合するためのガイドです。
APIで利用可能なメソッド一覧:
-
Initialize SDK: ライブラリを利用するために WYVRN SDK を初期化します。
-
Set Event Name: ゲーム内イベントまたはトリガーにイベント名を付け、Chroma やハプティクスを追加します。
-
Uninitialize SDK: 使用後に WYVRN SDK をクリーンに終了します。
WYVRN SDK
WYVRN SDK は、AI、Chroma、Razer Sensa HD ハプティクスを1つのSDKに統合したものです。AI、RGB ライティング、ハプティクスをゲーム環境やイベントに組み込むことで、プレイヤーは真に没入感のあるゲーム体験を楽しむことができます。WYVRN SDK は、Razer Sensa HD ハプティクス対応デバイスで Chroma アニメーションやハプティクスを再生することが可能です。
SetEventName() を使用することで、AIとのインタラクション、RGB ライティング、ハプティクス、またはそれらすべてをトリガーできます。

ダウンロード
SDK一覧
- WYVRN SDK
| エンジン | Gitリポジトリ | ダウンロードリンク | Gitリポジトリ | ダウンロードリンク | Gitリポジトリ | ダウンロードリンク | |
|---|---|---|---|---|---|---|---|
| Encoding | UNICODE | ASCII | MULTI-BYTE | ||||
| WYVRN Design Template | Git | Download | |||||
| WYVRN C++ SDK | Git | Download | Git | Download | Git | Download | |
| WYVRN Unreal SDK | Git | Download | |||||
| WYVRN Unity SDK | Git | Download |
ランタイムプラグイン構造
プラグイン定義: Plugins/WyvrnSDKPlugin/WyvrnSDKPlugin.uplugin
プラグインソース: Wyvrn_Sample/Plugins/WyvrnSDKPlugin/Source/WyvrnSDKPlugin/
ヘッダ: Wyvrn_Sample/Plugins/WyvrnSDKPlugin/Source/WyvrnSDKPlugin/Public/
実装: Wyvrn_Sample/Plugins/WyvrnSDKPlugin/Source/WyvrnSDKPlugin/Private/
サンプル ブループリント Init / Uninit セットアップ
Event BeginPlay は InitSDK を呼び出し、Synapse → Connect → Apps 内に表示される情報を提供する AppInfo を渡します。InitSDK は成功すると 0 を返し、100ms の遅延後に WYVRN API が使用可能になります。InitSDK がゼロ以外を返した場合、以降の WYVRN API 呼び出しは行わないでください。
InitSDK

UnInit

SetEventName

名前空間
UWyvrnSDKPluginBPLibrary ブループリント ライブラリを利用可能にするためにグローバル名前空間を使用します。
#include "WyvrnSDKPluginBPLibrary.h"
API クラス
WyvrnAPI クラスは、WYVRN SDK ライブラリのラッパーを提供します。UWyvrnSDKPluginBPLibrary クラスは、WYVRN API をブループリントに公開します。
また、UWyvrnSDKPluginBPLibrary の関数は C++ から呼び出すことも可能です。
SDK の初期化(Initialize)
API を利用するには、まず WYVRN SDK を初期化する必要があります。InitSDK メソッドは AppInfo パラメータを受け取り、これは Synapse および Chroma Apps の Chroma App タブ内に表示されるアプリケーションまたはゲームの情報を定義します。期待される戻り値は RZRESULT_SUCCESS であり、これが返された場合、API を使用する準備が整ったことを示します。成功以外の値が返された場合は、アプリケーションまたはゲームが次回起動されるまで WYVRN の実装を無効化すべきです。初期化が失敗する主な理由としては、ユーザーが Synapse または Chroma App をインストールしていないことが挙げられます。WYVRN SDK の初期化に成功したら、イベントを設定する前に約 100 ms の待機を行ってください。

if (!UWyvrnSDKPluginBPLibrary::IsInitialized())
{
FWyvrnSDKAppInfoType appInfo;
appInfo.Title = "Unreal WYVRN Sample Game Application";
appInfo.Description = "A sample application using Razer Wyvrn SDK";
appInfo.Author_Name = "Razer";
appInfo.Author_Contact = "https://WYVRN.com";
// 0x01 | // Utility. (To specifiy this is an utility application)
// 0x02 // Game. (To specifiy this is a game);
appInfo.Category = 1;
int32 result = UWyvrnSDKPluginBPLibrary::WyvrnSDKInitSDK(appInfo);
if (result == RZRESULT_SUCCESS)
{
// Init Success! Ready to use the WYVRN SDK!
}
else
{
// Init Failed! Stop using the WYVRN SDK until the next game launch!";
}
}
イベント名の設定
ゲームイベントには名前を付けることができ、ライティング体験に追加のテクノロジーを加えることができます。ゲームイベントやトリガーに名前を付けることで、そのイベント名をキーとして、ハプティクス効果などを再生する際の参照として利用できます。例として、SetEventName("Jump") を呼び出すと、ジャンプ動作に対応した Chroma アニメーションを再生できます。Jump イベントは、タイトルの没入感を高めるために、対応するハプティクス効果を使用することもできます。ハプティクス効果を追加するために必要な API は SetEventName() の呼び出しのみです。Chroma やハプティクスを追加するために必要な API は、SetEventName() を呼び出すだけです。一部のゲームイベントはライティングのみ、ハプティクスのみ、または両方を持つ場合があります。どの組み合わせにするかは、プレイヤーに自然な体験を提供するゲームデザイン次第です。
// Trigger AI, Chroma, and haptics
UWyvrnSDKPluginBPLibrary::SetEventName("Jump");
API では、イベント名にフォールバックパラメータを使用できます。これにより、WYVRN 設定でイベント名が一致しない場合に、代替のイベント名を使用できます。EVENT_A;fallback=EVENT_B という指定を行うと、まず WYVRN 設定で EVENT_A を検索し、一致しない場合は EVENT_B がフォールバックとして使用されます。EVENT_A は、EVENT_B のフォールバックを試す前に、まず外部コマンドおよびフォールバック用コマンドとの一致を確認します。どちらのイベントも一致しない場合は、何も実行されません。両方のフォールバック方法が使用される場合、つまり SetEventName で fallback=EVENT_B が指定され、かつ設定でフォールバックイベントが指定されている場合、結果は SetEventName のフォールバックよりも設定の方が優先されます。
UWyvrnSDKPluginBPLibrary::SetEventName("EVENT_A;fallback=EVENT_B")
ジェネリックデータベース (Generic Database)
ゲームは、SetEventName が一致を確認するために使用する WYVRN 設定を提供できます。一致が見つからない場合、システムは次に GenericEvent の WYVRN 設定を確認して一致を探します。ゲーム側または GenericEvent のいずれの WYVRN 設定とも一致しない場合は、何も実行されません。
フォールバックコマンド (Fallback Commands)
WYVRN 設定には、FallbackCommands 配列が含まれており、これは ExternalCommands 配列と同じスキーマを使用します。FallbackCommands と ExternalCommands の両方で、Chroma_Events 配列および Haptic_Events 配列をサポートしています。
{
"ExternalCommands": [
{
"External_Command_ID": "EXTERNAL_ID",
"Chroma_Events": [],
"Haptic_Events": []
}
],
"FallbackCommands": [
{
"External_Command_ID": "FALLBACK_ID",
"Chroma_Events": [],
"Haptic_Events": []
}
]
}
ExternalCommands は完全一致で比較されるのに対し、FallbackCommands は正規表現によるマッチングを使用します。.* はワイルドカードとして部分的なイベント名にマッチさせることができます。
".*FALLBACK_ID"パターンは"FALLBACK_ID"で 終了する文字列 にマッチします。"FALLBACK_ID.*"パターンは"FALLBACK_ID"で 開始する文字列 にマッチします。".*FALLBACK_ID.*"パターンは"FALLBACK_ID"を 含む文字列 にマッチします。
{
"FallbackCommands": [
{
"External_Command_ID": ".*FALLBACK_ID.*"
}
]
}
SDK のアンイニシャライズ(Uninitialize)
アプリケーションは、終了時に WYVRN SDK をクリーンに終了させるために Uninit() を呼び出す必要があります。WYVRN SDK が正常に初期化されていない場合は、アンイニシャライズは不要です。正常にアンイニシャライズが行われた場合、返り値は RZRESULT_SUCCESS となることが期待されます。
int32 result = UWyvrnSDKPluginBPLibrary::WyvrnSDKUnInit();
if (result == RZRESULT_SUCCESS)
{
// WYVRN has been uninitialized!
}
else
{
// WYVRN uninitialization was unsuccessful!
}
対応フレームワーク
-
Windows WyvrnSDK (32-bit)
-
Windows WyvrnSDK (64-bit)
アセット
ゲームは SetEventName を使用してゲームトリガーに名前を付けます。ハプティクスやライティング効果を追加するために、他のアセットをゲームに含める必要はありません。再生は、名前付きイベント用の外部 Events.config から制御されます。
API 全一覧
WYVRN SDK ライブラリ メソッド:
PluginCoreInitSDK
ローレベル API への直接アクセス。
// DLL インターフェース
EXPORT_API RZRESULT PluginCoreInitSDK(
ChromaSDK::APPINFOTYPE* AppInfo);
// クラス プラグイン
int32 Result = UWyvrnSDKPluginBPLibrary::WyvrnSDKInitSDK(AppInfo);
PluginCoreSetEventName
ローレベル API への直接アクセス。
// DLL インターフェース
EXPORT_API RZRESULT PluginCoreSetEventName(LPCTSTR Name);
// クラス プラグイン
int32 Result = UWyvrnSDKPluginBPLibrary::SetEventName("Effect1");
PluginCoreUnInit
ローレベル API への直接アクセス。
// DLL インターフェース
EXPORT_API RZRESULT PluginCoreUnInit();
// クラス プラグイン
int32 Result = UWyvrnSDKPluginBPLibrary::WyvrnSDKUnInit();