Project1

标题: 【RGU】RGSS全系跨平台运行时 Windows/Linux/Android [打印本页]

作者: Admenri    时间: 2024-3-1 23:04
标题: 【RGU】RGSS全系跨平台运行时 Windows/Linux/Android
本帖最后由 Admenri 于 2024-4-14 12:04 编辑

    RGU Player Core

   项目概述


   项目结构



   一些截图


   

   
   



   写在后面


   原先的版本因为个人混乱代码管理导致源码无法发出,同时最初的目标移植到其他平台也变得十分困难,鉴于4年前的版本代码结构已经及其混乱,
   便有了重写这个项目的想法,经过半年的编写与调试,也终于是到了能基本平替原版RGSS的程度
   项目的详情可以查看Github开源仓库,这个项目也算是为RGSS小小的舔砖加瓦了,
   目前项目只由我一人维护编写,如果你有想法可以fork自己分支(个人不会用Git之类管理工具
   
   目前这个程序一些尚未完成的部分:
     Bitmap的blur
     Win32API

   目前已经加入的扩展功能:
     Bitmap像素处理
     Viewport离屏渲染
     Geometry批量绘制三角形
     Shader自定义着色器
     Input全键盘
     Mouse鼠标支持

   后续的计划     添加多渲染后端
     添加一些扩展(L2D一类,视频解码,网络库,steamapi)


   和原先的不同
     从核心到绑定全部重写,也修复和优化了不少问题,
     更重要的是把原先和msvc绑死的工程改成了cmake构建

   目前的不足
     由于OpenGL的性能限制,我个人只能优化到2W精灵在48帧左右
     这里推荐性能党去用guoxiaomi大佬的RGM(性能是真强,2W精灵可以跑满60帧
     同时由于需要跨平台,在功能上做出了一定妥协(比如砍掉了Win32API

   适用人群
     主用RGSS系的制作者,受制于原版的性能和功能急需扩展
     RGSS系统的研究者,或许你可以以此为基础开发更好的引擎?

    引擎附赠功能
     1. 图块大小破限 RGSS 1/2/3 均支持(图中为48x48)
     
     2. 分辨率破限:RGSS 1/2/3 均支持,没有设置上限
     3. 帧率破限:默认40/60,没有设置上限
     3. RGSS3功能下放:XP VX可以使用RGSS3的功能
     4. 数据打包:读取zip压缩包数据(支持audio)且后续会推出特制加密方式
    5. 可调边框窗口:可以在游戏运行中直接用鼠标拖拽改变游戏窗口大小(参考图一,注意最大化按钮不是灰色)

   程序获取


      https://admenri.lanzout.com/b0d6tmbbi 密码:cbx6


      https://github.com/Admenri/rguplayer





作者: 凯琳·赛拉菲姆    时间: 2024-3-2 14:32
强力支持!
作者: 非常白菜    时间: 2024-3-2 17:10
大佬居然把RGU重写了啊,太强了
试了一下不能直接替换旧版,新版里的鼠标scroll_x不知道有什么用,鼠标似乎也没有水平滚轮...
还有不知道是性能还是其他原因时不时有些卡顿,我使用老鹰的对话框脚本全家桶,打开对话框卡顿掉帧非常严重,用老鹰的范例demo测试都很卡

期待新版RGU能更加完善
作者: Admenri    时间: 2024-3-2 18:04
非常白菜 发表于 2024-3-2 17:10
大佬居然把RGU重写了啊,太强了
试了一下不能直接替换旧版,新版里的鼠标scroll_x不知道有什么用 ...

涉及audio部分就会拖慢整体速度,或许是对话框里的文字声音导致的
目前版本频繁播放se会导致整体掉帧
建议在ini中禁用audio避免过度影响,后期会对audio重写
此外Mouse.scroll_x其实是给触控板滚动准备的
作者: 非常白菜    时间: 2024-3-2 18:32
Admenri 发表于 2024-3-2 18:04
涉及audio部分就会拖慢整体速度,或许是对话框里的文字声音导致的
目前版本频繁播放se会导致整体掉帧
建 ...

明白了,不过老鹰的对话框脚本似乎不是这个问题,即使禁用audio还是非常卡,因为没有报错也搞不清楚问题出在哪里,为了避免其他因素影响,我使用老鹰提供的范例demo进行的测试,原版不使用RGU是满60帧的

这个是demo,您有空的话可以看看,移除掉 按键扩展,鼠标扩展,Add-On2 兼容鼠标 这三个涉及调用win32API的脚本就可以测试了
https://github.com/OneEyedEagle/ ... _EagleMessageEX.zip
作者: 张咚咚    时间: 2024-3-3 20:49
支持一下!
作者: miantouchi    时间: 2024-3-9 20:24
就等大佬的移动端出来测试了
作者: 智将Jesse    时间: 2024-3-9 23:01
想请问一下大佬,就是脚本兼容性方面有没有得到改善,因为之前的版本我尝试跑自己的测试游戏,结果把脚本全删完了才能运行()
作者: 企鹅大虾    时间: 2024-3-10 08:59
维护自己要死了
作者: Admenri    时间: 2024-3-10 13:06
智将Jesse 发表于 2024-3-9 23:01
想请问一下大佬,就是脚本兼容性方面有没有得到改善,因为之前的版本我尝试跑自己的测试游戏,结果把脚本全 ...

脚本方面为了效率已经把ruby版本升级到了3.2.2
同时我为了跨平台直接把Win32API砍掉了
所以成品游戏一般要做很大改动才能兼容
(不过为了性能,移动端和一堆高级特性还是很值的)

与RGD不同,RGU注重性能与通用的平衡,
如果你有性能上或者移植移动端的需求,再来尝试RGU吧(
作者: 智将Jesse    时间: 2024-3-13 17:29
Admenri 发表于 2024-3-10 13:06
脚本方面为了效率已经把ruby版本升级到了3.2.2
同时我为了跨平台直接把Win32API砍掉了
所以成品游戏一般 ...

好吧(笑),谢谢,我改天再看看(doge)
不过有一说一,效率确实挺快的
作者: BCJenbo    时间: 2024-6-23 20:52
我该如何使用它?我将我的项目复制到 RGU 文件夹中,但它说无法加载。
作者: Admenri    时间: 2024-6-24 11:38
BCJenbo 发表于 2024-6-23 20:52
我该如何使用它?我将我的项目复制到 RGU 文件夹中,但它说无法加载。

首先确保你的脚本里没有用到win32api,
然后用压缩包内的rgu-console.exe改名并覆盖Game.exe,
exe读取的是同名的ini文件(rgu.exe->rgu.ini,Game.exe->Game.ini)
复制一份字体,改名成Fonts/Default.ttf

如果你用到了win32api并且需要保留,请利用rgu提供的内部ruby接口实现相同的效果
作者: BCJenbo    时间: 2024-6-24 20:09
遗憾的是,我还是无法启动它,即使是使用默认的 VX Ace 游戏也无法启动。
您能用图片指导我完成这些步骤吗?
我需要在这里编译任何东西吗?


当我将 rgu_player.exe 重命名为 game.exe 时,什么都没有启动,使用 rgu_player_amd64.exe 会出现错误。
我没有使用 WIN 32 API。
作者: Admenri    时间: 2024-6-24 20:44
BCJenbo 发表于 2024-6-24 20:09
遗憾的是,我还是无法启动它,即使是使用默认的 VX Ace 游戏也无法启动。
您能用图片指导我完成这些步骤吗 ...


1. 创建一个新工程

2. 复制一份RTP到游戏目录,引擎不会读取系统的RTP


3. 覆盖原版Game.exe(用最新版)


4. 复制一份字体文件(Fonts/Default.ttf,引擎依然不能读取系统的字体,必须自带字体文件)


5. 直接双击Game.exe即可



作者: BCJenbo    时间: 2024-6-25 02:37
现在正在工作,谢谢。过几天我会尝试一下,稍后我可能会有一些问题。

只是检查以确保当前项目无法加密/压缩以使其正常工作,对吧?
作者: 魔法丶小肉包    时间: 5 天前
读取zip压缩包尝试了3天都没成功 压缩包读取不到呀,是UTF-8格式的,用的那个ADPPacker文件夹里的7z压缩的,ini配置文件里也各种尝试了,具体要怎么才能读取到zip呀

所以然后我就只能放弃压缩包,尝试用别的办法,然后选择了符号链接的方式暂时做下简单的加密



确认了目标链接是有效的,而且默认的game.exe是正常运行的



但是RGU还是读取不到呀 {:5_159:}



(x 所以特制加密方式什么时候可以推出呀

顺便反馈一下在适配自己工程的时候遇到的一些问题
1.在一些情况下,字符串貌似会被冻结?然后出现错误(默认va没有这个问题
2.在没有dispose下重新给变量赋值创建新的对象原本的对象会一直显示在画面中,比如图块(默认va没有这个问题
暂时用以下脚本处理修复了一下,还是希望作者可以修复一下
class Window_Base
  def convert_escape_characters(text)
    result = text.to_s.clone
    return result if result.empty?
    result.unfreeze if result.frozen?
    result.gsub!(/\\/)            { "\e" }
    result.gsub!(/\e\e/)          { "\\" }
    result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
    result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
    result.gsub!(/\eN\[(\d+)\]/i) { actor_name($1.to_i) }
    result.gsub!(/\eP\[(\d+)\]/i) { party_member_name($1.to_i) }
    result.gsub!(/\eG/i)          { Vocab::currency_unit }
    result
  end
end
class Scene_Map
  def create_spriteset
    dispose_spriteset if @spriteset
    @spriteset = Spriteset_Map.new
  end
end
作者: Admenri    时间: 4 天前
魔法丶小肉包 发表于 2025-3-26 22:37
读取zip压缩包尝试了3天都没成功 压缩包读取不到呀,是UTF-8格式的,用的那个ADPPacker文件夹里的 ...

0. 特制加密是有的,但我忘了哪个版本有了
1. 字符串冻结是ruby3.0的特性
2. 可能和ruby3.0的gc策略有关
3. RGU我要弃坑删库了,你可以关注一下即将推出的URGE:群794325843




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1