TyranoScript 从入门到魔改 5 Steamworks 接入

TyranoScript 从入门到魔改 5 Steamworks 接入

💡 原文中文,约2000字,阅读约需5分钟。
📝

内容提要

本文介绍如何用 greenworks 让 TyranoScript 游戏接入 Steamworks:安装 greenworks 并下载匹配系统和 Electron 版本的已编译 .node 文件,放入 node_modules/greenworks/lib;下载 Steamworks SDK,将 steam_api64.dll 和 sdkencryptedappticket64.dll 放入同目录;版本报错时替换 .node 文件;最后通过自定义标签调用 greenworks.init 和 activateAchievement 实现成就功能。

🔎

延伸解读

为什么需要 greenworks 来接入 Steamworks

TyranoScript 游戏通常运行在 NW.js 或 Electron 等网页套壳环境中,而 Steamworks 官方并未提供 JavaScript SDK。greenworks 作为中间层,让这些环境能够调用 Steamworks 的原生接口。文章指出,借助 greenworks 可以避免直接研究 Node 与 C++ 的对接,从而以较低成本实现成就等功能。

接入前的环境匹配与文件放置

文章强调,下载 greenworks 的已编译 .node 文件时,必须注意操作系统和 Electron 版本是否匹配。具体操作包括:将 greenworks-win64.node 放入 node_modules/greenworks/lib,并将 Steamworks SDK 中的 steam_api64.dll 和 sdkencryptedappticket64.dll 也放入同一目录。这些步骤是后续功能调用的基础。

版本报错的处理与自定义标签调用

如果遇到版本错误,文章提到报错信息会直接显示当前版本,此时只需更换对应的 .node 文件即可解决。功能调用方面,通过自定义标签实现:先定义 greenworks_init 标签调用 greenworks.init,再定义 activate_achievement 标签调用 greenworks.activateAchievement,传入成就名称和回调函数。

❓

Q&A

TyranoScript 游戏如何接入 Steam 成就?

使用 greenworks 库。通过 npm 安装 greenworks,下载匹配系统和 Electron 版本的已编译 .node 文件,放入 node_modules/greenworks/lib,并下载 Steamworks SDK,将 steam_api64.dll 和 sdkencryptedappticket64.dll 放入同一目录。然后在 TyranoScript 中自定义标签调用 greenworks.init 和 greenworks.activateAchievement 实现成就功能。

greenworks 安装时需要注意什么?

安装 greenworks 时,需要使用 npm install --save --ignore-scripts git+https://github.com/greenheartgames/greenworks.git 命令。关键是要选择与你的操作系统和 Electron 版本匹配的已编译 .node 文件,否则可能出现版本错误。

如何解决 greenworks 版本错误?

如果遇到版本错误,报错信息会直接告诉你当前版本,只需更换对应的 .node 文件即可解决。

Steamworks SDK 中的哪些文件需要放入 greenworks 目录?

需要将 Steamworks SDK 中的 redistributable_bin/win64/steam_api64.dll 和 public/steam/lib/win64/sdkencryptedappticket64.dll 放入 node_modules/greenworks/lib 目录。

如何在 TyranoScript 中调用 greenworks 初始化?

在 TyranoScript 中定义自定义标签,例如:tyrano.plugin.kag.tag.greenworks_init = { start: function () { greenworks.init(); this.kag.ftag.nextOrder(); }, }; 然后在脚本中使用该标签即可初始化 greenworks。

如何用 greenworks 激活 Steam 成就?

定义自定义标签 activate_achievement,参数为成就名称,调用 greenworks.activateAchievement(pm.name, successCallback, errorCallback)。例如:tyrano.plugin.kag.tag.activate_achievement = { pm: { name: "" }, start: function (pm) { greenworks.activateAchievement(pm.name, function () { console.log("Activating achievement successfully"); }, function (err) { console.log(err); }); this.kag.ftag.nextOrder(); }, }; 然后在脚本中使用该标签并传入成就名称。

🏷️

标签

➡️

继续阅读