TyranoScript 教程第五部分:Steamworks 集成

TyranoScript 教程第五部分:Steamworks 集成

💡 原文英文,约600词,阅读约需2分钟。
📝

内容提要

本文介绍如何用 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()。

🏷️

标签

➡️

继续阅读