设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 12077|回复: 48
打印 上一主题 下一主题

[原创发布] 让XP工程用上RGD的简易教程

[复制链接]

Lv4.逐梦者

梦石
1
星屑
9963
在线时间
4425 小时
注册时间
2005-10-22
帖子
6937

开拓者贵宾

跳转到指定楼层
1
发表于 2019-12-3 01:46:36 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 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:}

评分

参与人数 5+5 收起 理由
Cupidk爱呗茶 + 1 太触了
st251355 + 1 塞糖
hyrious + 1 塞糖
哇哇哇啊叭叭 + 1 好牛...
guoxiaomi + 1 tql

查看全部评分

Lv4.逐梦者

梦石
1
星屑
9963
在线时间
4425 小时
注册时间
2005-10-22
帖子
6937

开拓者贵宾

2
 楼主| 发表于 2019-12-3 20:48:39 | 显示全部楼层
本帖最后由 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的工具能开. 咦....这里突然有好多喵喵的表情 )

点评

喵~不可能~不可能~看楼下 (✺ω✺)  发表于 2019-12-5 00:37
用RGD的话连开始游戏都不行..  发表于 2019-12-4 22:37
不行..那XPA的GAME.EXE是和XPA的脚本兼容的..  发表于 2019-12-4 22:35
拿RGD的去覆盖掉就好了 0.0  发表于 2019-12-4 21:42
测试发现XPA这个与RGD並不兼容...因为都要上自制的GAME.EXE..  发表于 2019-12-4 19:20
回复 支持 1 反对 0

使用道具 举报

Lv4.逐梦者

梦石
1
星屑
9963
在线时间
4425 小时
注册时间
2005-10-22
帖子
6937

开拓者贵宾

3
 楼主| 发表于 2019-12-5 00:30:22 | 显示全部楼层
本帖最后由 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 星屑)

点评

INI的RTP写法是不是要跟VA格式的一样才行?  发表于 2019-12-6 14:23
那就不要用RTS了嘛,全部丢到工程文件夹里就好了 囧  发表于 2019-12-6 00:37
INI的RTP要设置什么?我把XP的RTP行走图扔到VA的RTP里还是报找不到文件..  发表于 2019-12-5 17:59
1,把RTP丢到工程文件夹 或 2,在INI里设置RTP并把RMXP的RTP丢到RMVA的位置 0.0  发表于 2019-12-5 17:06
有方法读RTP么..大神求救  发表于 2019-12-5 16:45
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
1
星屑
9963
在线时间
4425 小时
注册时间
2005-10-22
帖子
6937

开拓者贵宾

4
 楼主| 发表于 2019-12-5 13:31:53 | 显示全部楼层
本帖最后由 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+   这个功能甚至能让你的电脑在冬天发热做取暖设备(大雾)
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
1
星屑
9963
在线时间
4425 小时
注册时间
2005-10-22
帖子
6937

开拓者贵宾

5
 楼主| 发表于 2019-12-11 23:47:24 | 显示全部楼层
本帖最后由 orochi2k 于 2019-12-11 23:48 编辑

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

使用道具 举报

Lv4.逐梦者

梦石
1
星屑
9963
在线时间
4425 小时
注册时间
2005-10-22
帖子
6937

开拓者贵宾

6
 楼主| 发表于 2019-12-12 17:12:31 | 显示全部楼层
快乐时刻 发表于 2019-12-12 11:14
我也弄个一个,由于用的xp的的F1帮助内部函数部分缺失,用的xpa提供的RPG模型函数,
但是完成后物品和特技 ...

这里存在一个小问题,RMXP不一定初始化WINDOW的CONTENT,而RMVA普遍会初始化CONTENT。
然后RGD会以为所有窗口都有CONTENT,然后死在GRAPHICS.UPDATE的位置
处理方法其实也很简单,把这些WINDOW对应地加入content = bitmap.new之类的东西
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
1
星屑
9963
在线时间
4425 小时
注册时间
2005-10-22
帖子
6937

开拓者贵宾

7
 楼主| 发表于 2022-12-3 20:41:47 | 显示全部楼层
除非你把⑨姐姐复活过来把D3D换成OPENGL,否则RGD没法在安卓上直接跑。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-1 08:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表