RPGMakerMV接入Greenworks,以支持steamworks API

2023-05-16

RPGMaker MV的基本原理

在查看Greenworks的github页面时有提到NW.JS,实际上RPGMakerMV部署好的工程就是基于NW.JS运行的。在根目录下的Game.exe实际上可以用网上下载的NW.exe替代。
在本文撰写时对应的Greenworks支持的版本是NW 0.32.4

  • 其中SDK版本带调试界面,按F12能够打开。
  • 普通版本就是正式版本使用的。

使用Archeia_Steamworks插件

Archeia_Steamworks插件中替换了场景初始化的方法,加入了调用steam命令的内容。
也增加了Shift+Tab打开SteamOverlay的功能,插件代码中都有继承,不需要额外操作。

增加steam初始化失败的提示

   SceneManager.initialize = function() {
        this.initSteamworks();
        Archeia.Steamworks.SceneManager_initialize.call(this);
    };

    SceneManager.initSteamworks = function() {
        this._steamInitialized = steamworks.initAPI();
        if (this.steamworksInitialized() == true) {
            console.warn("Initialized Steamworks API");
        } else {
            console.warn("Steamworks failed to initialize.");

        	alert('Steamworks failed to initialize.');//**手动增加 初始化失败提示,原本只会在console中提示错误**
            SceneManager.exit();//**手动增加 在提示后退出游戏**
        }
    };

其他坑

我直接把itch.io下载的插件加入工程中发现运行是会报nw.js版本过低,于是又把原来方案中的0.32.4 64位版本拖入工程进行替代,同时也加入了傻瓜步骤中网盘所分享的libs文件夹需要的各种运行库文件确保更换NWJS后能正常运行。

NW.JS相关的坑

版本

原本按照github的首页下载了0.33.3版本,出现了require函数无法正确读取greenword.node文件的问题,在RPGMaker的讨论网站上看到有类似问题,通过降级NWJS版本得到解决。

package.json

根目录下的这个文件指定了一个html文件,通常就是www文件夹下的Index.html。index.html中有游戏所有的脚本关联信息,就是很标准的网页写法。
从NWJS压缩包中解压出的文件不包含package.json就可以直接覆盖到根目录。
当然推荐做法是删除www和package.json以外的所有文件再覆盖。 不过既然知道哪些文件对应什么功能就没必要害怕删错。

Greenworks

greenworks担任了从js调用steamworks API的桥梁,具体有哪些接口可以从github的文档中找到。

版本

原则上greenworks会一直更新,本文撰写时为0.14版本,支持:

  • node v0.8, v0.10, v0.12, v4, v5, v6, v7, v8, v9 and v10
  • NW.js v0.8, v0.11+
  • Electron v1.0.0+
  • Steam SDK v1.42

原则上要选择对应的steam SDK版本,避免兼容问题,当然我没测过更高版本会发生什么。
steam SDK 各版本下载链接
Greenworks Github首页

傻瓜式步骤

准备

除NWJS傻瓜包度盘链接提取码: wd69

  1. 下载Greenworks、steamSDK和NW.JS
  2. 如果使用Archeia_Steamworks插件,在RM界面激活插件并根据需要修改初始化失败的代码。
  3. 部署RPGMakerMV项目
  4. 测试的话可以在打包好的根目录新建steam_appid.txt,里面填写你的游戏的steam app id

搬运

  1. 在项目根目录下保留www文件夹package.json和其他可以删除
  2. 向www文件夹下搬运来自greenworkds的greenworks.js
  3. 向www文件夹下的lib搬运greenworks-win32.node/greenworks-win64.node(根据操作系统版本选择。我是都加了,还没有尝试是否和NW.JS版本有关。)
  4. 向www文件夹下的lib搬运steam SDK目录<steam_sdk_path>/redistributable_bin下的steam_api.dllsteam_api.lib(也可以搬win64目录下的64位版本)
  5. 向www文件夹下的lib搬运steam SDK目录<steam_sdk-path>/public/steam/lib/win64下的sdkencryptedappticket.dllsdkencryptedappticket.lib(同样也有64位版本)
  6. 把nw.js压缩包中的所有内容覆盖到项目根目录,NW.exe就可以运行游戏,也可以改成Game.exe

完成后的lib目录如下图(包含了windows双版本):
完成后的lib目录如下图

调用steam功能(如果使用了Archeia_Steamworks插件可以忽略)

我的需求是给游戏加入steam验证,如果未启动steam或未在steam上购买就退出游戏,对应的在游戏启动的时候验证steam状态

  1. 工程目录\www\js\main.js中加入
    try{
    	var greenworks = require('./greenworks');
	    if(greenworks.init()){//初始化失败会抛出错误,故包含在try catch中,否则黑死没后文
    		if(greenworks.getAppId() != steam_appid)//steam_appid在你的steam后台获得
	    		SceneManager.terminate();//退出游戏
	    	SceneManager.run(Scene_Boot);//开始游戏
	    }
    }
	catch(error){
		SceneManager.terminate();
	}

其他steam功能

没测试,回头补充XP

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RPGMakerMV接入Greenworks,以支持steamworks API 的相关文章

  • Lua userdata:无法同时进行数组访问和方法

    我遇到了这个人的问题 Lua userdata数组访问及方法 https stackoverflow com questions 26970316 lua userdata array access and methods 其中 当我设置用
  • 如何使用 ODBC 检查数据库是否存在

    各位程序员大家好 我已经在互联网上搜索了几天 但找不到仅使用 ODBC 和 SQL 解决此问题的通用方法 有没有办法查看数据库是否已经存在 仅使用ODBC 它必须是标准 SQL 因为用户可以选择自己选择的 DSN 即他自己的 SQL Ser
  • Postman如何发送请求? ajax,同源策略

    我发现了这个非常有用的 Chrome 扩展程序 名为 Postman 这是一个非常有用的扩展 特别是当您正在编写 RESTful 应用程序时 我感到困惑的一件事是这个插件 扩展如何能够在不同的域上成功发送 POST 请求 我尝试像这样使用
  • Rails:使用 RestClient 的外部 API 集成(未定义的局部变量或方法“user”)

    我正在建设一个数字图书馆 我已经完成了很多需要的功能 我目前在将数字图书馆与学习管理系统 LMS 集成时遇到问题 我已经有一个数字图书馆的管理员身份验证系统 使用设计宝石 我的目标是允许想要访问数字图书馆的用户使用其学习管理系统 LMS 凭
  • 获取 Youtube 上的游戏直播列表

    我正在尝试使用 Youtube 数据 API 来获取当前与游戏相关的直播流列表 但我找不到任何符合我需要的端点并返回每个频道的观看者数量 你们知道我该如何做到这一点吗 Thanks 游戏直播列表 videoCategoryId 20 是 游
  • iOS 应用程序上的 Youtube API v3。我的 API 密钥不起作用,但其他人的密钥可以在同一应用程序上起作用。错误403

    这可能是 Google 的 Youtube 团队直接提出的问题 但我想先在这里问 以防将来也能帮助其他人 我在 iOS 应用程序上使用简单的 API 密钥 没有 OAuth 2 0 该应用程序只是从特定的播放列表 ID 返回视频 ID 列表
  • 通过 Office API 将多个 Word 文档保存为 HTML

    我有大量的Word文档需要解析 由于它们都是从同一个模板创建的 我认为最好的方法是将它们保存为 HTML 文件并解析 HTML 本身 虽然将单个 Word 文档保存为 HTML 相当容易 但我还没有找到从 Word 内部执行批量过程的方法
  • 用于分享帖子的 Yammers REST API

    我想使用 REST API 从我的业务应用程序共享帖子 不是发布新消息 而是共享现有帖子 有谁知道要使用哪个端点以及如何实现它 当您使用 Yammer API 创建新帖子时 请将参数 shared message id 与要共享的消息的 m
  • .NET Web API - 添加日志记录

    我正在寻找有关处理 API 日志记录的最佳方法的帮助 我想将所有请求和响应记录到 sql 或文本文件 如果这是最好的方法 目前我已经在 SQL Server 的日志表中插入一行 我使用名为 LogAction 的静态方法来执行此操作 并在
  • 如何按城市过滤 WikiVoyage API 结果?

    我目前正在尝试使用 wikivoyage API 我当前的 API 调用如下所示 en wikivoyage org w api php action query list search srwhat text srsearch Pari
  • 将 Django 模型映射到外部 API

    上下文 我有一个外部 API 提供数据并允许发布新数据或修补现有数据 API 响应示例 response requests get http api band 4 print response json id 4 name The Beat
  • 如何在S3中存储数据并允许用户使用rails API / iOS客户端以安全的方式访问?

    我是编写 Rails 和 API 的新手 我需要一些有关 S3 存储解决方案的帮助 这是我的问题 我正在为 iOS 应用程序编写一个 API 用户在 iOS 上使用 Facebook API 登录 服务器根据 Facebook 向 iOS
  • 简单的跨平台 TCP IP API?

    我不打算使用像 QT 或 wxWidgets 的 API 这样的大东西 我只想要可以在 Android iOS Windows Mac Linux 上运行的简单套接字 我正在制作一个事件驱动的纸牌游戏 所以 TCP 是最好的 本质上 我只想
  • 如何从网站中提取冠状病毒病例?

    我正在尝试从网站中提取冠状病毒 https www trackcorona live https www trackcorona live 但我得到了一个错误 这是我的代码 response requests get https www t
  • 如何获取优酷access_token

    我在哪里可以找到access token refresh token在我的优酷账号里 我找到了如何使用外部脚本通过 API 将视频上传到 youku com 但我需要access token refresh token使用它 您需要对优酷应
  • 使用 python 更新 Google 搜索方法

    我试图使用xgoogle https github com pkrumins xgoogle但我已经 3 年没有更新了 即使我设置每页 100 个结果 我也只能得到不超过 5 个结果 如果有人使用 xgoogle 没有任何问题 请告诉我 现
  • 如何在 NodeJS 中允许表单数据

    我最近创建了一个接受文件的 API 我正在尝试使用 Postman 测试 API 如果我使用发出帖子请求x wwww form urlencoded身体类型 一切正常 我得到了所有预期的数据 唯一的问题是它不允许发送文件 如果我使用form
  • 无法在 Angular 10 中的“pdf-viewer”=>“ng2-pdf-viewer”中显示 blob url

    我有一个 API 它将上传的文件作为 blob 返回 当我尝试绑定时src如果使用 blob URL 则它不会显示任何内容 但是 当我尝试绑定直接 URL 时 它可以显示 PDF 文件 这是我下面给出的代码 我的 TS 代码 downloa
  • 使用 PRAW 帮助获取 Reddit 帖子链接到的 URL

    我正在尝试使用 Praw 获取 Reddit 提交标题中链接的帖子 例如提交 http www reddit com r AdviceAnimals comments 1adu71 apparently people still need
  • Twitter Streaming API 使用的官方编码?是UTF-8吗?

    Twitter 流 API 的官方编码是什么 根据我所看到的 我最好的猜测是 UTF 8 但我想避免做出假设 我见过的 Twitter 网站上唯一暗示他们使用什么作为官方编码的部分是在这里 Twitter 不想因为我们使用 UTF 8 或相

随机推荐