欢迎光临散文网 会员登陆 & 注册

在iOS上部署web服务,用浏览器运行krkr游戏

2023-09-13 23:27 作者:chuweifensi  | 我要投稿

这样就可以很方便地制作跨平台的小游戏了,在iOS、安卓、Windows等系统上都可以运行。 其实在iOS上运行krkr游戏的正确做法是购买xp3player。这里介绍的方法不能直接运行网上下载的krkr版游戏,需要自己打包才行,还有各种兼容性的问题。 先讲如何打包data.xp3,再讲如何部署web服务,最后讲整件事的背景。

一、如何打包data.xp3

接下来的说法可能会有错误,主要是我其实也没有深入研究过吉里吉里2,对软件汉化、高压版制作、tjs编程等等也没有了解,也没用过NVL Maker和TyranoScript,也不想过多接触这个圈子。这里只讲一些大概的情况和做法。打包过程是在windows平台上完成的。 1、关于CDDP KAGeXpress 3.0 beta2中文版

一般用来制作游戏的应该是CDDP KAGeXpress 3.0 beta2,这是一个汉化的版本,下载下来是一个压缩包。 在软件根目录的Template文件夹内是一个模板,里面有一些dll文件、startup.tjs、config.tjs和一些文件夹,其中scenario文件夹内有一个first.ks,system文件夹内有一堆tjs之类的文件。 其中,tjs和ks文件都是ANSI或UTF-16 LE编码。 一般就是从first.ks开始编写代码,可以对config.tjs修改设置,在各文件夹内放入图像、音频等文件。 回到软件根目录,krkr.eXe可以自动读取data.xp3或data目录下未封包的文件。所以,只要把Template改名为data,然后双击krkr.exe就能运行了。 如果要把data文件夹打包成data.xp3,就需要用到tools目录下的krkrrel。这个krkrrel和外面的krkr.eXe都是汉化版的。日文版的krkrrel在tools-org目录下。 打包后,data目录下会多出一个default.rpf。如果在增加或删除文件后重新打包,就需要先删除这个default.rpf。 根目录下还有一个Wizard可以方便地生成一个初始的data文件夹。 2、关于krkrsdl2

用来部署web服务的是另一个版本,叫做krkrsdl2,主页链接如下: https://krkrsdl2.github.io/krkrsdl2/ 这个版本除了web版还有其他的。现在只看web版,有个“Webポート”可以点击下载。 下载到的压缩包内有3个文件:index.html, krkrsdl2.js, krkrsdl2.wasm。只要把data.xp3放在同一目录下,然后用浏览器访问index.html,就可以运行游戏了。 但这个data.xp3是有要求的,而且要先部署web服务才能用浏览器访问,不能直接双击index.html。 3、关于data.xp3

在krkrsdl2的主页开头附近,有一个kag3-krkrsdl2的链接: https://github.com/krkrsdl2/kag3 里面有一个data文件夹和readme.md 如果要用web部署,那么data.xp3就要用这个data文件夹作为模板,而不是汉化版的那个Template。 在data文件夹内,并没有那一堆dll,startup.tjs还在,config.tjs被移到了system文件夹内,first.ks还是在scenario文件夹。 所有tjs和ks文件都是UTF-8编码,而不是ANSI或UTF-16 LE。因此,无论是汉化版还是原版的krkr.exe,都无法运行这个模板下的游戏。可以部署web服务来做测试,但必须先打包成data.xp3。 打包可以使用汉化版krkrrel。如果用日文版,有些文件名的中文字可能会导致无法打包。 4、如何更换到新模板

先把原模板上自己加的文件复制过来。 config.tjs在system目录下,进行对应的修改。 用记事本的“另存为”将tjs和ks文件转为UTF-8编码。 有些中文字无法显示,是字体的问题,可以更改system_polyfill文件夹内的font.ttf。 有一些命令是汉化版支持、但krkrsdl2不支持的,比如button,可以用link或click代替。还有menul、bg等命令也不支持。 MP3和OGG格式的音频无法播放。WAV有的可以播放,也有的会卡住,可能和文件大小有关。 可以看出,从网上下载到的krkr版游戏,应该是不能直接运行的,并且可能面临各种兼容性问题。 5、关于存档

存档位置是System.dataPath(见system/MainWindow中的saveDataLocation),我不知道具体位置。清除cookie会删除存档。如果有多个游戏要存档,应该要修改saveDataLocation为System.dataPath+"游戏名"(带英文双引号),这样游戏之间就不会发生冲突。 对于sf.xxx这样要保存在全局存档的变量,在关闭浏览器的时候并不会被保存,只能在点击关闭按钮(执行close命令)或者其他可能的情况下才会被保存。 6、测试

用nginx部署web服务,在电脑上进行测试。只要把krkrsdl2的3个文件和data.xp3放在同一个文件夹内,配置nginx.conf里面的root设成这个文件夹就行,可以用autoindex。尽量避免在电脑和手机之间反复传输。

二、如何部署web服务

所谓启动web服务,大概就是启动某个程序,让它一直在运行,一直监听着某个端口。浏览器访问网页的时候,会向这个端口发送请求。这时,那个一直在运行的程序就会收到请求,然后可以执行一些操作。 在windows系统上,可以用nginx启动web服务,也可以用其他软件,非常方便。 安卓系统可以用termux运行linux命令行,可以在里面安装nginx。 实际上,汉化版封包的data.xp3可以直接用krkr.exe或吉里吉里2模拟器来运行,不需要搞这么复杂。 而在iOS系统上,似乎只有收费的xp3player可以运行data.xp3,如果是想拿自己写的游戏去传教,就会出问题。因此,考虑部署web服务。 1、

从应用商店下载iSH。这个软件可以模拟linux系统,运行一些简单的程序。 不幸的是,nginx在iSH上有问题,无法打开网页。因此,改用一句python命令。 2、

进入iSH,输入“apk add python3”安装python3 关于网络服务,先暂时允许访问数据流量和wifi。 3、

这时,虽然可以直接输一句命令启动web服务,但会有一些问题,而且不够优雅。所以,在电脑上准备这样一个脚本xxx.sh: cat /dev/location > /dev/null & while true; do python3 -m http.server 2222 > /dev/null 2> /dev/null; done 在电脑上保存为文本文件,稍后再传到手机里。 稍微解释一下,第1句是请求位置信息,这样可以保证即使iSH被切换到后台,也不会退出。如果没有这一句,那么网页加载速度会很慢,而且很容易断连。 第2句是循环执行“python3 -m http.server 2222”,用python3启动web服务,当服务异常退出时,立即重新启动。 其中,2222是端口号,可以改成别的。 4、

将xxx.sh、data.xp3和krkrsdl2的文件从电脑传到手机。 可以搞点花样,在电脑上用nginx的autoindex模块,使得局域网内的设备能够访问电脑上的指定文件夹。然后在手机上,进入iSH,用wget命令把电脑上的文件下载进来。 5、

以上操作都是在/root目录下完成的,所有文件都在/root目录下(包括krkrsdl2内的3个文件)。执行命令: sh xxx.sh & 即可启动web服务。 提示请求位置信息,选始终允许。刚才说了这是为了让iSH在后台持续运行。 6、

进入浏览器,输入: 127.0.0.1:2222 就可以运行data.xp3了。 7、

退出游戏时,如果在浏览器内点击“退出”之类的按钮,那么画面会停住不动,此时关闭浏览器页面即可。直接关掉页面也可以,但有可能影响全局存档(比如记录是否已通关之类的)。 退出iSH,即可停止web服务,同时也会停止获取定位。手写kill也可以。 8、

上述做法有一个问题,就是局域网内任何设备都能通过手机IP:2222进行访问。 试想一下,在校园网环境,计算中心的老师突然扫描端口…… 所以,要在“设置”里面,禁止iSH使用数据流量和wifi。这样就只有本机可以访问了。 如果想把web服务提供给别人,就换其他操作系统,用nginx来部署web服务,用htpasswd(windows系统在apache httpd里面有)来配置用户名密码。

三、背景

1、

最近突然想到,能不能自己写一个图形界面的小游戏,在苹果手机上运行。 直观的方法是做一个APP然后安装。问题是苹果手机的APP一般只能从应用商店下载。如果是自己的APP安装包,要么做一个7天有效的签名,要么就是越狱。 如果要把这个小游戏分享给别人(传教),那么就需要对方执行这一系列操作,肯定是不合适的。 因此,只能借助已有的APP,运行自己写的程序。 2、

正好,我稍微接触过一点点关于吉里吉里2游戏的做法。所以,一个方案就是用吉里吉里2去制作游戏,然后用iOS的xp3player来运行。 同理,也可以用ons或者renpy。 然而,不同于安卓的免费发布,iOS的xp3player、onsplayer、renpyviewer都是要收费的。这样就有一个问题:被分享游戏的人要花钱才能玩,对传教很不利。 微信或者其他APP的小程序也是一种选择。但如果只想自己玩、单机离线玩,就不合适了。 目前在苹果的应用商店里没有安卓模拟器。 用iSH可以在iOS上运行Linux,但是没有图形界面。 想了半天,最后我找到了一个方案:用web服务器+浏览器。先在iSH的Linux上启动web服务,再用浏览器访问。 这样,只要写一个网页小游戏就行了。 3、

然后我就想有没有办法在网页上玩xp3格式的游戏,没想到还真有办法,那就是krkrsdl2。于是一通操作猛如虎,总算能跑通一点简单的东西了。 不过,我并没有深入研究过吉里吉里2,对软件汉化、高压版制作、tjs编程等等都没有了解,而且对游戏设计也基本上是一窍不通,所以只能在这里提供一个基本的思路。如果有愿意用这种方式做开发的朋友,那应该会非常有趣吧。 另外,其实RPG Maker MV制作的游戏也可以用浏览器运行。Unity相关的WebGL也是一种更合理的选择。关于NVL Maker、TyranoScript等等,我也没用过,看freem上面有些在线游戏就是用的TyranoScript,应该也是一个很方便的方案。雀魂不就是全平台的浏览器都能玩嘛。总之,更合理的思路还有很多。

在iOS上部署web服务,用浏览器运行krkr游戏的评论 (共 条)

分享到微博请遵守国家法律