RPGMakerMV接入Greenworks,以支持steamworks API

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目录/redistributable_bin下的steam_api.dllsteam_api.lib(也可以搬win64目录下的64位版本)
  5. 向www文件夹下的lib搬运steam SDK目录/public/steam/lib/win64下的sdkencryptedappticket.dllsdkencryptedappticket.lib(同样也有64位版本)
  6. 把nw.js压缩包中的所有内容覆盖到项目根目录,NW.exe就可以运行游戏,也可以改成Game.exe

完成后的lib目录如下图(包含了windows双版本):
RPGMakerMV接入Greenworks,以支持steamworks API_第1张图片

调用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

你可能感兴趣的:(RPGMakerMV,Steam,SDK,Greenworks,游戏,游戏引擎,javascript,nodejs,steam)