Project1

标题: RMVA的次世代式开发【雾 [打印本页]

作者: shitake    时间: 2018-4-6 00:43
标题: RMVA的次世代式开发【雾
本帖最后由 shitake 于 2018-4-6 00:54 编辑

众所周知,rm 新三作(此处借用晴兰的说法,RPG Maker 95、RPG Maker 2000、RPG Maker 2003 为旧三作,RMXP/RMVX/RMVA 为新三作)虽然有脚本支持,且编辑器也自带了脚本编辑器。但是,由于脚本被存在 Scripts.rvdata2 中。很难像开发普通的 ruby 程序一样开发(例如使用 JB 家的IDE之类的)。

即使如此,不少前辈也做过各种把脚本编写这一工作搬到外部的尝试。比如写完再手动粘回去之类的。期间我个人也搞出了 RM.dll 这种方法:https://rpg.blue/thread-380195-1-1.html
这种把脚本打包在一个文件的情况,在很多场景都会遇到。比如前端开发。不过人家有完整的工具流(以前的gulp,现在的webpack等)。最近看到⑨姐姐和黄鸡的工作,有动手重启了 RGUI 的坑。开发过程中顺手写了个按依赖对rm文件做合并的脚本。有了这个,无论是把脚本合并在一个文件再复制到 Scripts.rvdata2 中,或者直接由此来生成  Scripts.rvdata2 都行。

代码


由于只是单纯的字符串操作,并没有实际对脚本做解释,所以对于动态的 require 是没法支持的。对于循环引用也需要手动消除,否则就会爆栈。另外,目前只写了 require_relative 所对应的 loader。所以也只对 require_relative有响应。

消除方法是在其中一方的 require_relative 后加上 #delete。例如

a.rb
RUBY 代码复制
  1. require_relative  'b'

b.rb
RUBY 代码复制
  1. require_relative  'a' #delete


在最后的文件中, a.rb 的内容将位于 b.rb 之后。

另外,一个约定是 require_relative 后跟的字符串用单引号。


用这个脚本,再加上 https://rpg.blue/thread-396263-1-1.html 这个,我们就可以很愉快的把脚本开发挪到 Ruby Mine/vs code/sublime text 等编辑器/集成开发环境上啦

一个使用这套方法的例子:https://github.com/molingyu/rgui



作者: chd114    时间: 2018-4-6 00:54
感觉现阶段脚本编辑器加一个自动补全和备选补全应该够了···




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1