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

Project1

 找回密码
 注册会员
搜索
楼主: Admenri
打印 上一主题 下一主题

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2232
在线时间
1102 小时
注册时间
2006-1-10
帖子
800
41
发表于 2022-2-26 21:50:38 | 只看该作者
最近被一个很奇怪的问题困扰(虽然问题可能存在很长时间了),游戏在运行一段时间后会随机出现程序崩溃,更头疼的是完全找不到规律性,有时在场景切换时发生,有时在窗口光标移动时发生,有时候甚至会在地图行走时发生
虽然感觉问题可能跟自己的垃圾代码有关,但自己对这种不确定位置不确定时机的BUG完全没有头绪,所以想请教大佬们看看如何排查

以下是一些错误日志,控制台报的都是Segmentation fault,相关的代码位置大多指向Graphics.update偶尔有Graphics.transition,可自己也并没有魔改过这些地方,无念

error_log.zip (2.12 KB, 下载次数: 4)

{0302}:85: [BUG] Segmentation fault
ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x64-mswin64_140]

-- Control frame information -----------------------------------------------
c:0023 p:---- s:0089 e:000088 CFUNC  :update
c:0022 p:0003 s:0085 e:000084 METHOD {0302}:85
c:0021 p:0107 s:0081 e:000080 METHOD {0315}:89
c:0020 p:0011 s:0076 e:000075 METHOD {0104}:49
c:0019 p:0003 s:0072 e:000071 METHOD {0305}:5232
c:0018 p:0003 s:0068 e:000067 METHOD {0313}:861
c:0017 p:0080 s:0064 e:000063 METHOD {0315}:125
c:0016 p:0003 s:0060 e:000059 METHOD {0104}:43
c:0015 p:0003 s:0056 e:000055 METHOD {0163}:187
c:0014 p:0019 s:0052 e:000051 METHOD {0239}:633
c:0013 p:0003 s:0048 e:000047 METHOD {0243}:572
c:0012 p:0003 s:0044 e:000043 METHOD {0303}:157
c:0011 p:0017 s:0040 e:000039 METHOD {0104}:15
c:0010 p:0048 s:0036 e:000035 METHOD {0007}:23
c:0009 p:0007 s:0032 e:000031 METHOD {0163}:117
c:0008 p:0040 s:0028 e:000027 METHOD {0229}:90
c:0007 p:0016 s:0024 e:000023 METHOD {0250}:22
c:0006 p:0019 s:0020 e:000019 METHOD {0315}:101
c:0005 p:0012 s:0016 e:000015 BLOCK  {0316}:34 [FINISH]
c:0004 p:---- s:0013 e:000012 CFUNC  :rgss_main
c:0003 p:0089 s:0009 E:000370 EVAL   {0316}:34 [FINISH]
c:0002 p:---- s:0006 e:000005 CFUNC  :eval
c:0001 p:0000 s:0003 E:000210 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
-e:0:in `eval'
{0316}:34:in `<main>'
{0316}:34:in `rgss_main'
{0316}:34:in `block in <main>'
{0315}:101:in `run'
{0250}:22:in `run'
{0229}:90:in `run'
{0163}:117:in `run'
{0007}:23:in `run'
{0104}:15:in `main'
{0303}:157:in `update'
{0243}:572:in `update'
{0239}:633:in `update'
{0163}:187:in `update'
{0104}:43:in `update'
{0315}:125:in `update_basic'
{0313}:861:in `update_basic'
{0305}:5232:in `update_basic'
{0104}:49:in `update_basic'
{0315}:89:in `update'
{0302}:85:in `update'
{0302}:85:in `update'

-- C level backtrace information -------------------------------------------
C:\Windows\SYSTEM32\ntdll.dll(NtWaitForSingleObject+0x14) [0x00007FFE1AACCDF4]
C:\Windows\System32\KERNELBASE.dll(WaitForSingleObjectEx+0x8e) [0x00007FFE18191A5E]
[0x00007FF7342F2300]
[0x00007FF7342F23C9]
[0x00007FF734210E43]
[0x00007FF7342D7D4E]
C:\Windows\System32\ucrtbase.dll(seh_filter_exe+0x235) [0x00007FFE18670EF5]
C:\Windows\System32\ucrtbase.dll(_intrinsic_setjmpex+0x1015) [0x00007FFE1864BD95]
C:\Windows\System32\ucrtbase.dll(_C_specific_handler+0xa0) [0x00007FFE18640E10]
C:\Windows\SYSTEM32\ntdll.dll(_chkstk+0x11f) [0x00007FFE1AAD20CF]
C:\Windows\SYSTEM32\ntdll.dll(RtlRaiseException+0x434) [0x00007FFE1AA81454]
C:\Windows\SYSTEM32\ntdll.dll(KiUserExceptionDispatcher+0x2e) [0x00007FFE1AAD0BFE]
[0x00007FF733FFCCFE]
[0x00007FF73401EE07]
[0x00007FF734003C64]
[0x00007FF73400B4FE]
[0x00007FF73400C884]
[0x00007FF733FD84B8]
[0x00007FF734229792]
[0x00007FF7342330E8]
[0x00007FF73422DFAE]
[0x00007FF7342258E1]
[0x00007FF734230BD5]
[0x00007FF734225D8E]
[0x00007FF734228FFD]
[0x00007FF7342251B1]
[0x00007FF734220A55]
[0x00007FF734222468]
[0x00007FF733FCC9B6]
[0x00007FF7341F97B7]
[0x00007FF733FCB8B8]
[0x00007FF733FCCA42]
[0x00007FF734229792]
[0x00007FF73422A5A6]
[0x00007FF73422A2A8]
[0x00007FF7342330E8]
[0x00007FF73422DFAE]
[0x00007FF7342258E1]
[0x00007FF734221CDE]
[0x00007FF73422927A]
[0x00007FF73422902D]
[0x00007FF7342251B1]
[0x00007FF734220A55]
[0x00007FF734222468]
[0x00007FF733FCD12F]
[0x00007FF7341F9088]
[0x00007FF733FCDD29]
[0x00007FF733FCE7FA]
[0x00007FF734013387]
[0x00007FF734379E88]
[0x00007FF7343ACC82]
C:\Windows\System32\ucrtbase.dll(configthreadlocale+0x92) [0x00007FFE18621BB2]
C:\Windows\System32\KERNEL32.DLL(BaseThreadInitThunk+0x14) [0x00007FFE194F7034]

-- Other runtime information -----------------------------------------------

* Loaded script: -e

* Loaded features:

    0 enumerator.so
    1 thread.rb
    2 rational.so
    3 complex.so
    4 ruby2_keywords.rb

点评

eval都是程序内部的ruby运行时在调用,一块脚本eval一次这样的。  发表于 2022-6-16 18:21
大概率是内存访问越界,析构了nullptr啥的?  发表于 2022-3-1 21:24
发现你的错误日志也出现了eval。曾对脚本全局搜索都没找到这个名词,最后在f1的帮助文本里找到相同名词,但是问题具体是什么还是难以知晓。  发表于 2022-2-27 11:27
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6464
在线时间
825 小时
注册时间
2017-9-27
帖子
19
42
发表于 2022-8-1 00:00:35 | 只看该作者
求兼容sino的鼠标插件
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
5
星屑
3477
在线时间
600 小时
注册时间
2021-6-10
帖子
46
43
 楼主| 发表于 2022-8-17 14:24:09 | 只看该作者

专用脚本里已更新
基于OpenGL SDL2的RGU(已重制开源)
EMAIL: [email protected]
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6464
在线时间
825 小时
注册时间
2017-9-27
帖子
19
44
发表于 2022-9-14 10:37:46 | 只看该作者
有个不算问题的问题,如果涉及到战斗中显示战斗图,己方战斗图总要延迟一下才刷新出来,而原版VA都是进战斗直接显示
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2821
在线时间
585 小时
注册时间
2022-7-13
帖子
89
45
发表于 2022-9-22 23:38:26 | 只看该作者
本帖最后由 我为鱼肉 于 2022-9-22 23:40 编辑

bitmap.font.name似乎没有用
怎么在游戏中使用font目录下的其他字体呢
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
5
星屑
3477
在线时间
600 小时
注册时间
2021-6-10
帖子
46
46
 楼主| 发表于 2022-9-23 19:31:49 | 只看该作者
我为鱼肉 发表于 2022-9-22 23:38
bitmap.font.name似乎没有用
怎么在游戏中使用font目录下的其他字体呢

最新版使用字体的方式是直接输入字体的文件名“font.ttf”,注意字体文件需要放在Fonts里

点评

原来是这样  发表于 2022-9-23 21:53
基于OpenGL SDL2的RGU(已重制开源)
EMAIL: [email protected]
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2821
在线时间
585 小时
注册时间
2022-7-13
帖子
89
47
发表于 2022-9-25 00:06:04 | 只看该作者
能兼容一下对RGSS1的鼠标支持吗?
  1. $ShowCursor = Win32API.new("user32", "ShowCursor", 'i', 'l')
  2. $GetCursorPos = Win32API.new("user32", "GetCursorPos", 'p', 'i')
  3. $ScreenToClient = Win32API.new("user32", "ScreenToClient", 'ip', 'i')
  4. $GetActiveWindow = Win32API.new("user32", "GetActiveWindow", nil, 'l')
  5. $Window_HWND = $GetActiveWindow.call
  6. $GetKeyState = Win32API.new("user32", "GetKeyState", 'i', 'i')
复制代码

GetActiveWindow = Win32API.new("user32", "GetActiveWindow", nil, 'l') 报错

点评

换32位的rgu试试,不行就只能联系作者解决了  发表于 2022-10-2 12:56
这样虽然不会报错了,但是获取不到窗口句柄了。。。  发表于 2022-9-30 19:08
原来是这样  发表于 2022-9-29 01:04
nil换成'v'  发表于 2022-9-29 00:04
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
798
在线时间
89 小时
注册时间
2019-8-25
帖子
20
48
发表于 2022-12-28 02:52:55 | 只看该作者
我为鱼肉 发表于 2022-9-25 00:06
能兼容一下对RGSS1的鼠标支持吗?

GetActiveWindow = Win32API.new("user32", "GetActiveWindow", nil, ' ...

Graphics.window_hwnd可以直接获取句柄的

点评

原来是这样。。。感谢  发表于 2023-1-3 19:41
珍惜所有的不期而遇,看淡所有的不辞而别、
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2821
在线时间
585 小时
注册时间
2022-7-13
帖子
89
49
发表于 2023-1-3 21:07:31 | 只看该作者
请教,系统光标如何隐藏?

点评

不知道算不算BUG,使用Mouse.set_cursor改变鼠标图片,只要不动不点击图像就不会改变  发表于 2023-1-4 13:56
感谢  发表于 2023-1-3 22:27
Mouse.visible = false  发表于 2023-1-3 22:06
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8095
在线时间
1866 小时
注册时间
2017-10-23
帖子
356
50
发表于 2023-2-27 07:23:14 | 只看该作者
本帖最后由 xiaohuangdi 于 2023-3-5 14:37 编辑

1.20121215之后的版本   字体大小变成固定;
2.玩家4k显示器 会变成145fps   2.5倍加速 而不是60fps,需要玩家手动将显示器刷新率限制为60;


還要手動改名"game.exe" 手動開啓同步垂直;
再來手動改顯示器刷新率, 真的很影響用戶體驗
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 07:13

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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