内容提要
本文介绍如何用 greenworks 将 TyranoScript 游戏接入 Steamworks。由于 Steam 没有官方 JS SDK,作者推荐使用 greenworks,使基于 NW.js 和 Electron 的网页游戏能够接入 Steam。步骤包括:通过 npm 安装 greenworks,下载匹配的 .node 文件及 Steamworks SDK 的 dll 并放入 lib 目录;遇到版本错误时替换 .node 文件即可。之后用 require 引入,并自定义 greenworks_init 和 activate_achievement 标签,实现初始化与成就功能。
延伸解读
为何需要 greenworks 桥接
Steam 没有官方 JavaScript SDK,因此用 TyranoScript 开发的网页游戏无法直接调用 Steamworks 接口。greenworks 作为第三方 Node.js 模块,为 NW.js 和 Electron 环境提供了 Steamworks 的绑定,让开发者无需从零编写 C++ 原生模块即可接入 Steam 功能。这降低了技术门槛,但依赖社区维护,需留意其与 Electron 版本的兼容性。
手动配置的关键文件
文章以 64 位 Windows 和 Electron 为例,要求将预编译的 greenworks-win64.node 放入 node_modules/greenworks/lib,并下载 Steamworks SDK(v1.41),把 steam_api64.dll 和 sdkencryptedappticket64.dll 也放入同一目录。这些文件必须与系统架构和 Electron 版本匹配,否则初始化会失败。
版本错误的应对方式
配置完成后若出现版本错误,文章指出错误信息会直接提示当前版本,只需替换对应的 .node 文件即可解决。这意味着 greenworks 的预编译二进制与 Electron 版本强相关,升级 Electron 或更换环境时可能需要重新寻找匹配的 .node 文件,而非重新编译。
自定义标签的用法
通过 require 引入 greenworks 后,可以定义 tyrano.plugin.kag.tag 下的自定义标签,例如 greenworks_init 用于初始化,activate_achievement 用于解锁成就。标签的 start 函数中调用 greenworks 方法,并通过 this.kag.ftag.nextOrder() 继续流程。成就标签接受 name 参数,对应 Steamworks 中配置的成就 API 名称。
Q&A
TyranoScript 游戏如何接入 Steamworks?
使用 greenworks 库。通过 npm 安装 greenworks,下载匹配的 .node 文件和 Steamworks SDK 的 dll 文件放入指定目录,然后用 require 引入并自定义标签实现功能。
为什么 TyranoScript 集成 Steam 需要 greenworks?
因为 Steam 没有官方 JavaScript SDK,而 greenworks 可以让基于 NW.js 和 Electron 的网页游戏接入 Steamworks。
greenworks 安装的具体步骤是什么?
1. 在终端运行 npm install --save --ignore-scripts git+https://github.com/greenheartgames/greenworks.git;2. 下载合适的预编译 .node 文件并放入 node_modules/greenworks/lib;3. 下载 Steamworks SDK,将 steam_api64.dll 和 sdkencryptedappticket64.dll 放入同一 lib 目录。
安装 greenworks 时遇到版本错误怎么办?
错误信息会直接显示当前版本,只需替换对应的 .node 文件即可解决。
如何在 TyranoScript 中初始化 greenworks?
自定义 greenworks_init 标签,在 start 方法中调用 greenworks.init(),然后执行 this.kag.ftag.nextOrder()。
如何在 TyranoScript 中激活 Steam 成就?
自定义 activate_achievement 标签,参数为成就名称,在 start 方法中调用 greenworks.activateAchievement(pm.name, successCallback, errorCallback),然后执行 this.kag.ftag.nextOrder()。