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 的方式一样。

 

(待补充)

Leave a Reply

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