RGD 脚本兼容方案整理

整理了 RGSS 转移到 RGD 时可能产生的(正常操作、没有 bug 条件下)不兼容问题的解决方案。

如果因为 bug 而不兼容请直接联系作者修复,感谢你的反馈!

截图存档

截图存档有时会使用获取地址的方式实现 Bitmap#_dump 和 Bitmap#_load。以柳之一的 Bitmap Marshal 为例,实现方式如下:

其中,有根据内存地址获取 Bitmap 内部数据的操作。但是由于 RGD 重写了 Bitmap,导致内存数据和默认 RGSS 有差异,并且 DirectX 为了把数据更新到纹理上需要使用 LockRect 的方式,直接修改数据不是正确做法。在这里可以使用 RGD 的 Bitmap#process_color 方法保存颜色,方式如下:

使用上面的做法,就可以实现 Bitmap 的 Marshal 相关操作了。

注意,RGD 实现的 Marshal 和 RGSS 相比还有一个不同。RGSS 的位图存储是从最后一行开始反向到第一行,所以保存的数据是从下往上的,而 RGD 是比较普通的从上往下顺序保存的方式。如果使用 RGD 的方式读取以往 RGSS 保存的数据,会发现上下反转了。这是正常现象,只要从头到尾使用同一套保存和读取方式就不会出现上述问题,不会影响玩家体验。

 

位图扩展、像素字体

有些位图扩展使用外接的 DLL 实现 Bitmap 的快速读写。和上面的类似,因为 Bitmap 的结构改变,所以外接 DLL 不能达到之前的效果,甚至可能引起错误。以 tktk_bitmap 为例,一个简单的兼容方式是直接删去 tktk_bitmap 的基础脚本(Bitmapクラスの拡張),然后根据运行过程中的错误提示自行实现相关功能。有些功能可以使用 Bitmap#process_color 实现,而另一些功能推荐使用精灵的功能实现。因为 RGD 中精灵的表现更好,所以建议优先考虑精灵。举例如下:

如果要开启默认像素字体,只需要使用 Font.default_pixel = true 即可,如同设置 Font.default_name 的方式一样。

 

混用RGSS/RGD存档引起的色调问题

使用下面的脚本,覆盖Color和Tone的marshal操作,即可解决。但使用了下述脚本后生成的存档,和使用之前的存档,不能混用。

 

(待补充)

2 thoughts on “RGD 脚本兼容方案整理

  1. Sakura12546

    发现一个问题:覆盖1.5.4版本安装1.6之后,进行数次光标移动或直接进入游戏移动光标后,游戏会在移动时卡顿并且显示”停止运行”(APPCRASH)
    希望可以解决,非常感谢!

    Reply

Leave a Reply to invwindy Cancel reply

Your email address will not be published. Required fields are marked *