Project1

标题: VA升级计划——Game.exe部分 [打印本页]

作者: Admenri    时间: 2024-6-6 16:11
标题: VA升级计划——Game.exe部分
本帖最后由 Admenri 于 2024-6-12 00:04 编辑

太长不看省流版:RGD跨平台开源版

======================================================
给还在坚持使用RGSS系的Maker的福利,
花了半年用Ruby 3 + SDL 3 + OGL ES 2.0重写的引擎,
虽然发过帖子但还是没人用,不过还是坚持更完了全部的RGSS1/2/3的内容
这套Game.exe的重要特性:(图先欠着之后补.png)
- Bitmap非软渲染,图像部分大量使用显卡代替原版的绘图工作
XP也能用VA的功能(截图,播视频)

- 画面帧数的极大提升
RGM > RGU > RGD >> 原版

- 极佳的跨平台可移植特性:
已完成安卓端移植和适配

- 充分利用现代CPU的多核特性:
音频解码播放部分和视频解码部分已与逻辑线程分离

- 其他没用的东西:
能播AV1编码的视频并解码成Bitmap
批量三角形绘制+支持OGL的着色器(WebGL同款)
移动端触屏,支持10指输入
内置全键盘+鼠标
输入法输入,但是无需外部DLL
F1菜单,但是不限制绑定的按键
特制游戏数据加密,支持字体,图片,音频,视频打包加密
(是的,引擎内部的设计是能读取的文件都可以走加密文件)





目前还在想办法改进性能和添加功能
业余程序编写,源码写的不好别喷>_<
写引擎真的很费时间精力,但是看到开始有人用后也就有了动力更新
希望RGSS系用户都能摆脱软渲染的噩梦

- 注意事项:
Q:如何判断自己的游戏适不适合这个引擎?
A:打开脚本编辑器搜索Win32API,没有的话可以直接替换使用
Q:很多脚本不兼容怎么办
A:引擎内置不少功能,完全可以平替,就是需要做适配,但是比起原版的帧数是很值得的
Q:有使用教程吗
A:教程没有,但是有扩展功能的说明文档(压缩包自带),如果你需要更详细地描述问题,可以加群:794325843

- 当前进度(24.6.11更):
正在准备将渲染部分从古老的OpenGL更换到现代的图形API(Vulkan D3D12)
为此学习计算机图形学中

有疑问可在此贴提问,希望各位Maker都能做出自己想要的游戏
后续更新也会发到这里

==============================================================

源码仓库(持续更新,欢迎贡献):
https://github.com/Admenri/rguplayer
开箱即用exe下载:
https://admenri.lanzout.com/b0d6tmbbi 密码:cbx6







作者: 烁灵    时间: 2024-6-6 16:53
期待画多边形功能
作者: kangxi0109    时间: 2024-6-6 19:53
支持!作为一个XP的拥护者,看到这个就滚进来了
话说搜索win32api出来了外挂脚本也可以吗?

作者: Admenri    时间: 2024-6-6 20:08
kangxi0109 发表于 2024-6-6 19:53
支持!作为一个XP的拥护者,看到这个就滚进来了
话说搜索win32api出来了外挂脚本也可以吗?
...

引擎为了跨平台砍掉了win32api,这部分需要用户用引擎提供的功能实现
坏处是麻烦,好处是移植手机的时候非常简单
作者: Admenri    时间: 2024-6-6 22:29
kangxi0109 发表于 2024-6-6 19:53
支持!作为一个XP的拥护者,看到这个就滚进来了
话说搜索win32api出来了外挂脚本也可以吗?
...

RUBY 代码复制
  1. class Font
  2.   def marshal_dump
  3.   end
  4.   def marshal_load(obj)
  5.   end
  6. end
  7. class Bitmap
  8.   def _dump(limit)
  9.     data = "\0" * width * height * 4
  10.     process_pixel { |pixels| pixels.save_data(data) }
  11.     [width, height, Zlib::Deflate.deflate(data)].pack("LLa*")
  12.   end
  13.   def self._load(str)
  14.     w, h, zdata = str.unpack("LLa*")
  15.     data = Zlib::Inflate.inflate(zdata)
  16.     bmp = self.new(w, h)
  17.     bmp.process_pixel { |pixels| pixels.load_data(data) }
  18.     return bmp
  19.   end
  20. end


可直接替换截图存档的核心
作者: 哇哇哇啊叭叭    时间: 2024-6-7 21:04
  
  感谢楼主慷慨分享!
  感觉完全没明白为什么,va和之前的版本就被淘汰了。看起来跟win32、openGL有关,是意味着跟操作系统的位数、网页图像渲染有关吗?
  
作者: Admenri    时间: 2024-6-7 21:49
kangxi0109 发表于 2024-6-6 19:53
支持!作为一个XP的拥护者,看到这个就滚进来了
话说搜索win32api出来了外挂脚本也可以吗?
...

截图功能忘说了,这个引擎把va的功能下放给xp了,现在截图可以直接Graphics.snap_to_bitmap
也可以取Viewport的截图:Viewport.snap_to_bitmap(target)
Bitmap对象也有Bitmap#save_png(path) 功能可以直接把位图保存为png
作者: Admenri    时间: 2024-6-7 21:56
本帖最后由 Admenri 于 2024-6-7 22:01 编辑
哇哇哇啊叭叭 发表于 2024-6-7 21:04
感谢楼主慷慨分享!
  感觉完全没明白为什么,va和之前的版本就被淘汰了。看起来跟win32、openGL有关 ...

原版RGSS的运行时(Game.exe)基本就是和Windows绑定的,
目前研究来看,XP,VX这两代的引擎在渲染时是一点GPU也没用的(软渲染)
VA有些GPU使用但是效率依然拉垮,
后来者RGD虽然提升了绘图效率,但脚本引擎还是原版的1.9,要知道这个版本是2010年的了
而且依然和Windows绑死了
目前认为RGSS衰落原因之一就是绑死Windows平台和效率底下以及不开源的特性
所以我也把3年前的RGU拉出来全部重写开源了,
Ruby用的是3x3升级的3.0版本
绘制也用OGL分担了大量CPU的工作,
比MVMZ的浏览器环境轻量,且引擎是开源的,可以自己随便加功能
(顺便一提,MV以后的48x48图块我的引擎也是支持的)

目前引擎的功能都是经过跨平台论证后才加入的,
理论上用户游戏如果只用了RGSS的接口和引擎提供的功能是可以无障碍移植到各个平台的(Android Windows Linux ...)

作者: 凯琳·赛拉菲姆    时间: 2024-6-11 22:10
内置功能怎么使用啊
作者: Admenri    时间: 2024-6-11 22:56
凯琳·赛拉菲姆 发表于 2024-6-11 22:10
内置功能怎么使用啊

自带了扩展API的说明文档(脚本)
如果你不懂脚本可以进群了解已经编写好的脚本:794325843




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