Wyvrn C++ SDK
WYVRN SDK 提供了一个C++ 库,用于集成 AI、Chroma 灯效以及触觉反馈功能。
关于
The WYVRN SDK 是一个以游戏插件 DLL 形式提供的库,提供统一 API,用于为事件命名并触发外部 AI、Chroma 播放与触觉事件。
安全性
为避免第三方注入恶意代码,插件会检查 Razer Chromatic Library 的有效签名。DLL 签发方需为 Razer USA Ltd.。若签名校验失败,Init 与 InitSDK 将返回(非零)RZRESULT_DLL_INVALID_SIGNATURE。
通用说明
- WYVRN SDK 允许应用或游戏在
Chroma App中的 Chroma Apps 列表 中设置自己的展示信息。 本篇文档将指导您如何使用 WYVRN C++ SDK 集成 AI、Chroma 灯效以及触觉反馈功能。以下是该 SDK 提供的核心 API 方法: - Initialize SDK: 初始化 WYVRN SDK,使其可供程序使用。
- Set Event Name: 为游戏事件或触发器命名,以添加 Chroma 灯效与触觉反馈。
- Uninitialize SDK: 在不再使用时,干净地卸载 WYVRN SDK。
WYVRN SDK 概述
WYVRN SDK 是将 AI、Chroma RGB 灯光和雷蛇 Sensa HD 高清触觉技术融于一体的整合SDK。通过将 AI、RGB 灯光和触觉反馈集成到游戏环境和事件中,玩家可以享受真正沉浸式的游戏体验。WYVRN SDK 能够在支持雷蛇 Sensa HD 高清触觉技术的设备上播放 Chroma 灯光动画和体感触觉效果。通过在游戏程序中调用 SetEventName() 函数可以触发 AI 交互、RGB 灯光效果、触觉反馈,或同时触发所有特效。

下载
SDKs
- WYVRN SDK Engine Git Repo Download Link Git Repo Download Link Git Repo Download Link
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
命名空间
添加命名空间 WYVRN SDK 以使用其中的API
using namespace WyvrnSDK;
API Class
WyvrnAPI 类为 WyvrnSDK 库提供了一个封装接口。 可以通过引入 WyvrnAPI.h 来使用该 API。
#include "Razer\WyvrnAPI.h"
初始化SDK
在使用 API之前,首先需要初始化 WYVRN SDK。InitSDK 方法接收一个 AppInfo 参数,该参数定义了应用或游戏的相关信息,这些信息将会显示在雷云 (Synapse) 和Chroma幻彩应用 (Chroma App) 的 Chroma Apps 选项卡中。预期的返回结果应是 RZRESULT_SUCCESS,表示 API 已经准备就绪。如果返回结果不是成功状态,则需要在应用或游戏下次启动之前禁用 WYVRN 的所有实现。常见的失败原因包括用户未正确安装 Synapse 或 Chroma App。在成功初始化 WYVRN SDK 之后,需要等待大约100 毫秒后再开始设置事件。

APPINFOTYPE appInfo = {};
wcscpy_s(appInfo.Title, 256, L"游戏标题");
wcscpy_s(appInfo.Description, 1024, L"游戏简述");
wcscpy_s(appInfo.Author.Name, 256, L"公司名称");
wcscpy_s(appInfo.Author.Contact, 256, L"公司网站或邮箱");
// 0x01 // 工具类应用(用于标明这是一个工具类应用)
// 0x02 // 游戏 (用于标明这是一个游戏应用);
appInfo.Category = 0x02;
RZRESULT result = WyvrnAPI::CoreInitSDK(&appInfo);
if (result == RZRESULT_SUCCESS)
{
// 初始化成功!WYVRN SDK 已准备就绪,可以正常使用!
}
else
{
// 初始化失败!在下一次游戏启动之前,请停止使用 WYVRN SDK!
}
设置命名事件方法(Set Event Name)
游戏事件可以通过命名来设置,从而添加和触发外部技术效果,进而增强互动体验。
在为游戏中的事件命名后,这些事件名称可以被用作查找键,用以触发 AI、Chroma 灯效或触觉反馈(haptics)等功能。例如,调用 SetEventName(L"Jump") 方法设置跳跃事件,可以为该跳跃事件播放一段 Chroma 动画。同时,也可以用该方法添加对应的触觉反馈效果,从而进一步增强游戏沉浸感。除SetEventName()函数以外,无需额外调用其他 API 即可实现灯效和触觉反馈的触发。
// 触发体感特效
WyvrnAPI::CoreSetEventName(L"Jump");
该 API 支持在事件名称中使用fallback回退参数,以便在WYVRN 配置中未匹配到指定的事件名称时,使用一个备用事件名称进行触发。
例如:EVENT_A; fallback=EVENT_B 将会在 WYVRN 配置中优先查找 EVENT_A,如果未匹配,则会继续查找 EVENT_B。
在尝试查找 EVENT_B 之前,系统会优先检查 EVENT_A 是否与外部命令或回退命令匹配。
若两个事件均未匹配,则不会触发任何效果。
如果同时使用了两种回退机制,即在 SetEventName 中传入 fallback=EVENT_B,并且配置文件中也指定了回退事件,那么结果会优先使用配置文件中的设置,而不是 SetEventName 中的回退参数。
WyvrnAPI::CoreSetEventName(L"EVENT_A;fallback=EVENT_B")
通用数据库(Generic Database)
在游戏设计完成后,会提供一个对应的 WYVRN 配置文件,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
程序在退出时需要调用 Uninit()方法来卸载 WYVRN SDK,以确保干净退出。
只有在 WYVRN SDK 成功初始化过的情况下才需要执行反初始化卸载。
预期的成功返回结果应为 RZRESULT_SUCCESS。
int result = WyvrnAPI::CoreUninit();
if (result == RZRESULT_SUCCESS)
{
// WYVRN SDK 卸载成功!
}
else
{
// WYVRN SDK 未能成功卸载!
}
框架支持
- Windows WyvrnSDK (32-bit)
- Windows WyvrnSDK (64-bit)
资源
游戏中只需使用 SetEventName 函数来为游戏事件触发器命名。
无需在游戏中加入任何其他资源,即可添加触觉反馈和灯光效果。
这些效果的播放是通过外部的 Events.config 文件中定义的事件名称来控制的。
完整 API
PluginCoreInitSDK 可直接访问底层 API。
// DLL Interface
EXPORT_API RZRESULT PluginCoreInitSDK(
ChromaSDK::APPINFOTYPE* AppInfo);
// Class Plugin
RZRESULT result = WyvrnAPI::CoreInitSDK(
ChromaSDK::APPINFOTYPE* AppInfo);
PluginCoreSetEventName 可直接访问底层 API。
// DLL Interface
EXPORT_API RZRESULT PluginCoreSetEventName(LPCTSTR Name);
// Class Plugin
RZRESULT result = WyvrnAPI::CoreSetEventName(LPCTSTR Name);
PluginCoreUnInit 可直接访问底层 API。
// DLL Interface
EXPORT_API RZRESULT PluginCoreUnInit();
// Class Plugin
RZRESULT result = WyvrnAPI::CoreUnInit();