Project1

标题: 让XP工程用上RGD的简易教程 [打印本页]

作者: orochi2k    时间: 2019-12-3 01:46
标题: 让XP工程用上RGD的简易教程
本帖最后由 orochi2k 于 2019-12-3 01:58 编辑

事先准备:
1, RMXP
2, RMVA的RGSS301.DLL
3, RGD
如果需要加密
则还需要整个RMVA(加密的正确姿势: RMVA新建一个工程,开着这个RMVA工程的同时跑到这个工程文件夹里删光所有东西,把RMXP的工程全部拷贝过来,在RMVA里选择打包和加密 对,就是这么奇葩,是不是很好玩(大雾))
如果需要商业发布,则RMXP和RMVA都必须是正版.(或者依法等到RMXP和RMVA首次发布后50年 )

流程如下:
首先打开RMXP
1, 用RMXP打开你的RMXP工程
2, 打开F1帮助文件
3,打开脚本编辑器
4,在F1帮助文件中找到RGSS参考  游戏库 RPGXP数据结构
5, 将此条目下所有的脚本插入到脚本编辑器里的最上端.

6, 找一个实现RMXP的TILEMAP的脚本,放入工程内.
7, 在main里加入一行Graphics.SAresize_screen(640,480)
8,现在你差不多可以关掉RMXP了

在RMXP工程文件夹内建立Fonts和Windowskins 文件夹 然后从RMVA那里找到喜欢的字体并修改原来RMXP的窗口皮肤为RMVA对应的样子. (这步并不重要)

找到RMVA的RGSS301.DLL丢到RMXP的工程文件夹里
找到小黄鸡和⑨写的RGD的EXE覆盖掉RMXP的GAME.EXE
找到GAME.INI把里面的RGSS103J.DLL改成RGSS301.DLL

一般的同学到这步就差不多了.
对于脚本使用较多的同学可能遇到一些常见问题如下:
如果发生字符串ASCII和UTF8打架
参考这段东西来重载字符串吧. (打架原因是RMXP用的RUBY1.8字符串比较奔放随意,RMVA和RGD用RUBY1.9的字符串自带编码属性,可以考虑自己逐个检查,但是像我这样懒得去检查RMXP工程里几万行代码的同学用下面这段基本都能搞定.)
RUBY 代码复制
  1. class String
  2.   alias old_plus +
  3.   def +(other)
  4.     if self.is_a?(String) and other.is_a?(String)
  5.       if self.encoding.name != "UTF-8"
  6.        #p self.encoding.name
  7.       end
  8.       if self.encoding.name == "UTF-8" and other.encoding.name == "ASCII-8BIT"
  9.         news = old_plus(other.force_encoding("UTF-8"))
  10.         #p news
  11.         return news
  12.       end
  13.       if self.encoding.name == "ASCII-8BIT" and other.encoding.name == "UTF-8"
  14.         news = self.force_encoding("UTF-8").old_plus(other)
  15.         return news
  16.       end
  17.     end
  18.     return old_plus(other)
  19.   end
  20. end


如果脚本中有用到DIR/REQUIRE之类的函数发生ASCII-8BIT暴毙问题,请寻找转码脚本解决.

目前石器的测试版本经过3天测试未发生严重异常.
已知现存的所有RMXP工程复杂程度都不可能超过石器,毕竟你们的项目都没开发超过15年 (大雾),所以大家应该不会出什么问题.(大雾)

按照这个方法来玩的话@fux2 就不用额外写RGDXP了 {:4_117:}
作者: fux2    时间: 2019-12-3 09:18
脚本实现的内部类还是存在效率隐患(x
作者: warback    时间: 2019-12-3 09:51
stream上的dll不是104的吗
作者: 哇哇哇啊叭叭    时间: 2019-12-3 10:28

看到很多人在说《石器》,是指的《石器时代》(日本jss公司开发的游戏:https://baike.baidu.com/item/%E7 ... /3553771?fr=aladdin)吗?

还是有个xp的脚本,叫做“石器”呢?


作者: soulsaga    时间: 2019-12-3 12:42
有没改好的范例工程..
作者: YukiYukidesu    时间: 2019-12-3 15:26
我刚花了两周把一个复杂的XP工程移植到VA上就看见了这个(死目)
不过VA功能和逻辑性也强不少就是了……

作者: orochi2k    时间: 2019-12-3 20:48
本帖最后由 orochi2k 于 2019-12-3 23:07 编辑
soulsaga 发表于 2019-12-3 12:42
有没改好的范例工程..


来自https://forum.chaos-project.com/index.php/topic,12899.0.html的外国人民
做了一个RMXP转RMVA的工程,在这里:
https://www.dropbox.com/s/41jgf2gv3mca3d3/XPA_2.34.zip?dl=0  (需要科学上网)

然后貌似把RGD丢进去就好了
不过反正我根本没看这个工程里有什么.

石器的加密发布测试版在此
https://mega.nz/#!W9EV3AJB!XdO1i ... BbBhW55ur1yippAumu4
(没有特殊防护,随便找个解RGSS3A的工具能开. 咦....这里突然有好多喵喵的表情 )
作者: orochi2k    时间: 2019-12-5 00:30
本帖最后由 orochi2k 于 2019-12-5 00:40 编辑

于是随手做了个工程,
1,因为懒得从F1拖RMXP的默认的东西了,所以直接拿了XPA的那段丢里面
2, 随便找了个史前TILEMAP实现,(因为石器的那个已经被魔改了,不能给大家直接用 (✺ω✺) 这个效率是很坑的,所以大家还是找个更高效的比较好.)
3,强行压到论坛可耻的2MB大小以内
4,窗口皮肤没改成VA格式,所以窗口很囧,大家自己动手吧
5,因为我是坏人的缘故,所以顺便抢劫论坛货币,售价高达1块钱,喵哈哈哈哈哈哈哈~
6,其实RGD比RMVA的报错时提供的信息少 (✺ω✺)
XPtoRGD_lite.rar (1.91 MB, 下载次数: 121, 售价: 1 星屑)


作者: 89444640    时间: 2019-12-5 13:17
orochi2k 发表于 2019-12-5 00:30
于是随手做了个工程,
1,因为懒得从F1拖RMXP的默认的东西了,所以直接拿了XPA的那段丢里面
2, 随便找了个史 ...

窗口大小还是640*480 角色会走到屏幕外怎么处理?刷新率确实变成60fps明显流畅多了
我新建了一个事件然后保存,显示错误的dll,rmxp编辑器不能用了?
作者: orochi2k    时间: 2019-12-5 13:31
本帖最后由 orochi2k 于 2019-12-5 13:35 编辑
89444640 发表于 2019-12-5 13:17
窗口大小还是640*480 角色会走到屏幕外怎么处理?刷新率确实变成60fps明显流畅多了
我新建了一个事件然后 ...


game.ini里设置正确的dll
偷懒的做法是复制一个RGSS301.DLL 改名为RGSS10(某数字)J.dll

窗口大小的问题,插一段 Graphics.resize_screen(640,480) 到MAIN里面你觉得合适的地方    
刷新频率可以写脚本改到120+   这个功能甚至能让你的电脑在冬天发热做取暖设备(大雾)

作者: miantouchi    时间: 2019-12-11 22:43
TILEMAP 是实现什么功能的脚本,直接用你给的范例里面TILEMAP这个也行吧。
等我明天按照教程制作一份模板,上传下,请楼主指点下。
这个XP用上RGD是不是运行效率和帧速率都能得到提高。
作者: orochi2k    时间: 2019-12-11 23:47
本帖最后由 orochi2k 于 2019-12-11 23:48 编辑

tilemap实现的是图块(因为RMXP和RMVA的图块实现是不一样的,所以要重新插一段进去)
理论上RGD可以解决很多XP的限制,包括绝对没有10秒挂起暴毙那种事情,可以随便更改分辨率,可以用SHADER,具体可参考RGD官方页面。理论上效率可以极大提升。
不过由于RMXP是RUBY1.8 RMVA和RGD都是RUBY1.9,会有各种需要修补的地方(主要存在于编码问题上) 不过基本上都不是大问题,毕竟一个开发了15年的巨型RMXP工程已经基本成功移植完毕。
作者: 快乐时刻    时间: 2019-12-12 00:07
谢谢分享经验
作者: fux2    时间: 2019-12-12 02:20
orochi2k 发表于 2019-12-11 23:47
tilemap实现的是图块(因为RMXP和RMVA的图块实现是不一样的,所以要重新插一段进去)
理论上RGD可 ...


RGDXP.zip (220.41 KB, 下载次数: 106)

扔一个坑掉的RGDXP版,依然需要301的dll,除tilemap以外的其他元素均还原成了XP版本
包括window,内部类等等,无敌蛇可以看看能不能更方便的鼓捣
由于tilemap完全没有实现,所以完全不能用内置的tilemap
作者: miantouchi    时间: 2019-12-12 10:24
按照你教程里面弄了,报错,不知道哪里弄得不对

1.png (57.85 KB, 下载次数: 42)

1.png

2.png (67.12 KB, 下载次数: 34)

2.png

RGD XP.rar

1.41 MB, 下载次数: 67


作者: 快乐时刻    时间: 2019-12-12 11:11
miantouchi 发表于 2019-12-12 10:24
按照你教程里面弄了,报错,不知道哪里弄得不对

是因为函数错了,应该是
  class MoveCommand
    def initialize(code = 0, parameters = [])
      @code = code
      @parameters = parameters
    end
    attr_accessor :code
    attr_accessor :parameters
  end
作者: 快乐时刻    时间: 2019-12-12 11:14
我也弄个一个,由于用的xp的的F1帮助内部函数部分缺失,用的xpa提供的RPG模型函数,
但是完成后物品和特技一点击就会停止运行,应该脚本也需要重写吧,还是需要一个比较完美的tilemap
顺便附件传一下吧

XPRGD_demo.7z

1.88 MB, 下载次数: 80


作者: orochi2k    时间: 2019-12-12 17:12
快乐时刻 发表于 2019-12-12 11:14
我也弄个一个,由于用的xp的的F1帮助内部函数部分缺失,用的xpa提供的RPG模型函数,
但是完成后物品和特技 ...

这里存在一个小问题,RMXP不一定初始化WINDOW的CONTENT,而RMVA普遍会初始化CONTENT。
然后RGD会以为所有窗口都有CONTENT,然后死在GRAPHICS.UPDATE的位置
处理方法其实也很简单,把这些WINDOW对应地加入content = bitmap.new之类的东西
作者: soulsaga    时间: 2020-8-13 12:15
XPA好像有些人的电脑不能运行啊..怎么破..
作者: 157515199    时间: 2022-12-3 12:16
YukiYukidesu 发表于 2019-12-3 15:26
我刚花了两周把一个复杂的XP工程移植到VA上就看见了这个(死目)
不过VA功能和逻辑性也强不少就是了……
{: ...

能不能帮我转一下 大佬 有偿
作者: 939034448    时间: 2022-12-3 12:51
这样可以直接把xp的工程打包成安卓的安装包吗
作者: orochi2k    时间: 2022-12-3 20:41
除非你把⑨姐姐复活过来把D3D换成OPENGL,否则RGD没法在安卓上直接跑。




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