保姆级教程!如何在iOS机器上运行RPGMaker MV游戏

写在前面:
本专栏部分内容参考自

感谢 @True_end_WTF 带来的启发

1)原理
出对跨平台能力的考量,RPGMaker MV(后文都简称为RMMV)相较于前代的 XP / VX / VX ACE 抛弃了一直以来基于Ruby语言的RGSS(Ruby Game Scripting System)系统,而采用了基于JavaScript的游戏系统,这给予了RMMV无与伦比的跨平台能力。你甚至可以像部署静态网站一样在服务器上部署一个RMMV游戏,然后在任何可以使用浏览器的终端上游玩到这个游戏(前提是你的服务器带宽以及终端的网速足以支持assets文件的传输)。
由于其强大的跨平台能力,开发者很容易就能将游戏打包成适用于Windows、安卓、iOS、MacOS的格式,但是因为iOS系统的特殊生态和AppStore审核的存在,大部分RMMV游戏都没有做iOS适配的版本,于是本教程应运而生,旨在将未上架AppStore的RMMV游戏移植到iOS设备上运行。
本教程的每一步都分两部分:
如果只有移动端,请看分割线上面的部分
如果有一台电脑,请看分割线下面的部分
2)准备工作
需要安装以下软件
只有 iPhone / iPad
解压软件(推荐iZip)
Koder

有电脑
电脑上:
iTunes
手机上:
Koder
3)提取游戏本体
只有 iPhone / iPad
*游戏下载以百度网盘为例。
*如果游戏为安卓的apk格式,可以将apk改为zip来解压。
更改网盘中游戏压缩包的后缀,将rar、zip、7z等常见压缩文件后缀改为其他任意字符,防止百度识别到。(手机百度网盘一旦识别到压缩包,就只能用其自带的在线解压功能了,不能将压缩包拷贝给其他软件了)
下载文件
点击「用其他应用打开」,然后点击「拷贝到iZip」
打开iZip,将文件的后缀改回来,解压压缩包。
解压后,其中的www文件夹就是游戏本体(如果是从apk解压,则assets文件夹才是游戏本体)

有电脑
在电脑上下载后直接解压。解压后,其中的www文件夹就是游戏本体(如果是从apk解压,则assets文件夹才是游戏本体)
4)拷贝游戏本体
只有 iPhone / iPad
打开iOS自带的「文件」应用
点击「我的iPhone」,将iZip中解压出的www文件夹移动到Koder中的Local目录 中

有电脑
将手机连接到电脑,选择信任此设备
打开电脑上的iTunes
将刚解压出的游戏本体拖拽到Koder的文档框中
打开iOS自带的「文件」应用
点击「我的iPhone」,将刚传的游戏本体从Koder根目录移动到Local目录下


5)测试游戏
打开Koder,进入www目录,点击打开index.html

点击预览图标

游戏就能成功运行,就说明移植初步成功了。
大部分RMMV游戏都是采用的ogg音频,而iOS是不支持播放ogg格式的音频,所以这一步运行的游戏大概率是没有声音的
所以需要解决音频问题
6)安装音频插件
从评论区的链接下载
AudioStreaming.js
stbvorbis_stream.js
stbvorbis_stream_asm.js
将这三个文件复制到www/js/plugins目录下
用Koder打开www/js/plugin.js文件,将以下内容复制粘贴到plugins列表中
注意不要缺结尾那个英文逗号


退出文件即会自动保存
然后再打开www目录下的index.html,点击预览,此时游戏就有声音了,能正常游戏。
至此移植完成。

Q&A
Q:RMMV游戏能用手柄玩吗?
A:RMMV游戏对手柄支持非常好,但是Koder内置的预览并没有对手柄进行适配,所以无法将手柄输入传递给游戏。
iPhone自带的Safari浏览器可以使用手柄,你可以尝试将Koder预览时的url复制到safari中打开,就可以使用手柄进行游戏了。
但有个比较大的缺陷就是,游戏的运行依赖于Koder提供在9898端口上的fileserver,你在用Safari进行游戏的时候,Koder必定要切到后台。iOS系统下所有后台应用都是挂起状态,所以Safari上游戏一旦要请求新资源,就会卡loading,必须将Koder切到前台后再切回Safari才能加载成功。频繁的切换前后台势必会极大降低游玩体验。
所以综上,目前还没找到比较完美的可以在手机上使用手柄进行RMMV游戏的解决方案


Q:如果移植多个游戏,游戏本体文件夹都叫www,会不会冲突?
A:会冲突。解决方案就是可以将www目录改成任意英文名(不要有空格),改名不会影响游戏运行。

Q:游戏存档在哪,会不会丢失?
A:游戏存档存在Koder内置浏览器的LocalStorage中。只要不清除Koder这个应用的应用缓存,存档就不会丢失。

Q:为什么多个游戏的情况下,不同游戏的存档会混在一起
A:由于存档是保存在浏览器的LocalStorage中。LocalStorage的空间是按照域名及端口来划分的。不同游戏的url不同,但皆在 http://localhost:9898 这个地址下,所以不同游戏的存档就混在了一起。但是这并不影响正常游戏,A游戏的存档并不能在B游戏中打开。


Q:感觉游戏画面太小了,有没有方法变大?
A:可以在将手机的竖屏锁定取消,横过来后再打开index.html的预览,画面会显示比较大一些。感觉反而变小了啊丢!
