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

Project1

 找回密码
 注册会员
搜索
楼主: Admenri

[原创发布] 【RGU】基于OpenGL&SDL2 RGSS 1/2/3 通用Runtime

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4899
在线时间
445 小时
注册时间
2011-3-26
帖子
101
发表于 2022-1-1 15:22:30 | 显示全部楼层
本帖最后由 rfvtgbzxc 于 2022-1-1 16:49 编辑

1004版本 RGSS1 闪退反馈:
Graphic.transition调用后,发生闪退
触发条件:
self.opacity 设为255以外的值,且 self.windowskin = nil 时(两者都满足时触发)
测试代码:
  1. class Window_Test < Window_Base
  2.   def initialize
  3.     super(0,0,100,100)
  4.     self.opacity = 0
  5.     self.windowskin = nil
  6.   end
  7. end
  8. class Scene_Test
  9.   def main
  10.     $data_system        = load_data("Data/System.rxdata")
  11.     $game_system = Game_System.new
  12.     @test_window = Window_Test.new
  13.     # 执行过渡
  14.     Graphics.transition
  15.     # 主循环
  16.     loop do
  17.       # 刷新游戏画面
  18.       Graphics.update
  19.       # 刷新输入信息
  20.       Input.update
  21.       if Input.trigger?(Input::C)
  22.         $scene = nil
  23.       end
  24.       # 如果画面被切换就中断循环
  25.       if $scene != self
  26.         break
  27.       end
  28.     end
  29.     @test_window.dispose
  30.   end
  31. end
复制代码

点评

感谢反馈,已修复,将会随下一个版本发布(另外以后反馈BUG可以说一下RGSS版本,不同RGSS版本内部会有差异  发表于 2022-1-1 18:15
啊我道歉,不是这个bug,我样例没写好,而且没有及时撤销这个反馈(楼主回复真快)。新的闪退现象在本层更新了。  发表于 2022-1-1 16:48
设成255也会报错(因为你没创建Window,需要先super调用父类初始化后才能设置属性,否则在c++程序里会导致找不到内存地址闪退  发表于 2022-1-1 16:12
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
19269
在线时间
3073 小时
注册时间
2013-1-11
帖子
1288
发表于 2022-1-4 18:24:32 | 显示全部楼层
本帖最后由 张咚咚 于 2022-1-4 23:16 编辑

更新了,支持一波。不知道什么时候可以把RGD的Sprite#add_child相关的几个方法更新,好想尽快把游戏移植到RGU
还有一个Input.trigger?(:F10/F11/F12)是检测的鼠标单击,就算EnableReset=0禁用了F12重启这三个键也还是检测的鼠标单击,不知道算不算bug

点评

收到  发表于 2022-1-15 17:34
220115版已更新,感谢提供建议  发表于 2022-1-15 11:47
Input原版支持的按键是按帮助文档写的,帮助文档里只写了F5-F9,所以其他我就没管( Sprite#add_child下个版本加入,感谢支持  发表于 2022-1-12 21:55
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
19269
在线时间
3073 小时
注册时间
2013-1-11
帖子
1288
发表于 2022-1-15 20:47:00 | 显示全部楼层
本帖最后由 张咚咚 于 2022-1-15 21:06 编辑

反馈一个从RGD兼容过来的问题
  1. class Test
  2.   def initialize
  3.     @test = Color.new
  4.   end
  5. end
  6. # 保存
  7. File.open('test', 'wb') do |f|
  8.   Marshal.dump(Test.new, f)
  9. end
  10. # 读取
  11. File.open('test', 'rb') do |f|
  12.   p Marshal.load(f)
  13. end
复制代码

上面这段脚本是对一个类的实例进行存储读取。
只在RGD或RGU里写入+读取都没问题。。
但是如果在RGD里保存后, 然后在RGU里读取就会提示:Serialized data invalid
猜测可能是color存储的格式不一样导致的?


还有一个兼容问题:Bitmap.new(w, h) # 宽高必须要大于 0。
因为之前RGD旧工程的话填0是没问题的,当然这个可以用脚本解决, 不过如果能引擎兼容就更好了。


第三个反馈就是精灵的children,测试了下坐标好像并没有以父精灵为基准点。
应该是x, y, z, opacity, zoom_x, zoom_y, color, tone这些属性是和父类的属性进行关联。
子xyz = 父xyz + 子xyz
opacity,zoom,color,tone 等应该是:子opacity实际显示效果 = 父opacity * (子opacity / 255)
比如父opacity设置180,子opacity设置0,那实际效果就是0,子opacity设置255,那实际显示的透明程度也最高只到180。


第四个就是希望可以添加 Mouse.clip 方法。

还有一些与RGD逻辑不一样的,比如Mouse.scroll的值。
不过这些简单的用脚本三两句就转换过来了,应该没什么大问题。

另外辛苦了~,其他还有一些问题没找到具体原因,等找到了再来继续补充吧emmm


回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
5
星屑
2814
在线时间
421 小时
注册时间
2021-6-10
帖子
33
 楼主| 发表于 2022-1-16 23:04:13 | 显示全部楼层
张咚咚 发表于 2022-1-15 20:47
反馈一个从RGD兼容过来的问题

上面这段脚本是对一个类的实例进行存储读取。

color与tone我用的都是8字节的double,与rgd4字节会有差异
Bitmap我感觉创建一个0*0的位图完全没有意义(或者不知道逻辑怎么写了
Sprite的child属性初步测试可以以父精灵为参考,具体写在帮助文档中,
目前我测试的效果与RGD大致相同,z轴的话由于实现方式差异不打算参考父精灵了
鼠标的话,clip这个方法我没在sdl的支持里看到(不过还是可以试一试)

如果可以的话我需要详细的Sprite#add_child测试数据(
基于OpenGL SDL2的RGU(已重制开源)
EMAIL: [email protected]
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
19269
在线时间
3073 小时
注册时间
2013-1-11
帖子
1288
发表于 2022-1-17 07:09:05 | 显示全部楼层
本帖最后由 张咚咚 于 2022-1-17 07:55 编辑
Admenri 发表于 2022-1-16 23:04
color与tone我用的都是8字节的double,与rgd4字节会有差异
Bitmap我感觉创建一个0*0的位图完全没有意义( ...

  1. red = Sprite.new
  2. red.bitmap = Bitmap.new(10,10)
  3. red.bitmap.fill_rect(red.bitmap.rect, Color.new(255,0,0))
  4. red.x = 300

  5. green = Sprite.new
  6. green.bitmap = Bitmap.new(10,10)
  7. green.bitmap.fill_rect(green.bitmap.rect, Color.new(0,255,0))
  8. green.x = 50

  9. red.add_child(green)

  10. loop{Graphics.update}
复制代码

比如上面这段脚本,正常应该是红点在300位置,绿点在350的位置。
但实际上是红点在300位置,绿点在50位置,绿点没生效父精灵的属性。

点评

另外Font.default_name好像没效果,不知道我使用方法对不对。字体放到了Fonts文件夹。但是好像还是读取的Default字体。  发表于 2022-1-18 09:26
辛苦了~测试了一下好像只有xyz生效了,opacity等属性好像没生效  发表于 2022-1-18 09:25
已修复,add后忘记更新状态了,感谢反馈  发表于 2022-1-17 23:02
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
631
在线时间
67 小时
注册时间
2019-8-25
帖子
13
发表于 2022-2-7 01:49:34 | 显示全部楼层
提交个BUG:Fonts文件夹下如果没有Default.ttf字体文件,按F1调出设置时会闪退,不知道是我电脑问题还是本身就有的bug,我用的程序是2月5日的版本,电脑是华硕天选2,R7-5800H,RTX3060的,换了好几个游戏测试都是这样,只要没有Default.ttf按F1必定闪退。
珍惜所有的不期而遇,看淡所有的不辞而别、
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
5
星屑
2814
在线时间
421 小时
注册时间
2021-6-10
帖子
33
 楼主| 发表于 2022-2-7 08:49:36 | 显示全部楼层
雨之沉默 发表于 2022-2-7 01:49
提交个BUG:Fonts文件夹下如果没有Default.ttf字体文件,按F1调出设置时会闪退,不知道是我电脑问题还是本 ...

肯定啊(F1里绘制文字要用到字体
基于OpenGL SDL2的RGU(已重制开源)
EMAIL: [email protected]
回复 支持 1 反对 0

使用道具 举报

Lv2.观梦者

梦石
0
星屑
766
在线时间
49 小时
注册时间
2020-8-28
帖子
23
发表于 2022-2-7 12:32:17 | 显示全部楼层
新加的设置tilemap图层z轴高度的功能挺好,但能不能把图层index的判定改成tilemap的data?求~
现在是根据图块id类型判断层数的,就没法做出墙壁遮挡角色的效果
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14033
在线时间
2069 小时
注册时间
2016-9-20
帖子
844
发表于 2022-2-8 13:15:54 | 显示全部楼层
@张咚咚
你试了条条丝丝, 我试了一下之前的测试工程,
9X9 = 81台机体同台情况下,
普通XP(RGSS1):
不发射发射时均低于1FPS
普通VA(RGSS3):
不发射8FPS,  发射时6FPS


RGD :
不发射52FPS,  发射时33FPS

RGU:
不发射可达到100FPS, 发射时也可达到60FPS
由于图大就发RGU的
87.gif

点评

《左上角FPS仅供参考》  发表于 2022-2-8 14:14
《流畅》  发表于 2022-2-8 13:43
内容仅供参考,
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22393
在线时间
2335 小时
注册时间
2005-10-15
帖子
1160

开拓者

发表于 2022-2-9 09:53:54 | 显示全部楼层
对内部没有公开成attr_accessor的类变量做instance_variable_set,能行吗?
a = Game_Actor.new
a.instance_variable_set(:@weapon_id, 15)

1.81,1.92和2.45都没事,2.45也就是不能将:@weapon_id写成"@weapon_id"而已,但3.0我不知道啊
ruby低版本真的是可以各种黑写法,代价当然就是兼容性

(在考虑要不要让SEP RGSS1插件支援RGU的猫)

点评

请猫大务必尝试一下~!SEP对RGSS1的深度优化加上RGU的优秀性能简直完美,虽然舍不得XP的地图编辑器,但原版的XP性能实在是太差了,完全经不起折腾....  发表于 2022-2-9 15:04
我记得可以直接instance_variable_set("weapon_id", 15) ruby部分我不熟悉,而且这个3.0还是魔改版本(  发表于 2022-2-9 10:33
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 15:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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