跳到主要内容

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 灯光效果、触觉反馈,或同时触发所有特效。 image-8

下载

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 的所有实现。常见的失败原因包括用户未正确安装 SynapseChroma App。在成功初始化 WYVRN SDK 之后,需要等待大约100 毫秒后再开始设置事件。 image-5

 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 数组相同。FallbackCommandsExternalCommands 都支持 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();