查看: 57773|回复: 42

[原创发布] 【跨平台(Win32/安卓/Switch)OpenGL RGSS3 引擎】Lanziss 发布帖

[复制链接]
梦石
0
星屑
9687
在线时间
3224 小时
注册时间
2011-3-24
回帖
616

开拓者

发表于 2020-2-28 13:45:46 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 Mr.Jin 于 2023-8-10 20:10 编辑

2023.7.10 ---- 停止服务通知 ----因空余时间有限,lanziss 相关的所有服务暂时处于停止状态;
请理解,感谢在之前的关注和支持。


众所周知~我们的RMVA~RGSS3提供的runtime是有一些bug,而且在现代显卡之下性能不佳的。
我们英明神武的黄鸡哥哥和⑨姐姐已经以DirectX制作了RGD来解决硬件加速的问题——

那么,作为凑热闹心态而言,我用Opengl+SDL+mruby实现了另一个全新的兼容RGSS3的游戏引擎。
目标是在兼容RGSS3大部分内容的情况下,尝试跨平台、并且加入更多的功能来增强其适用范围。
由于脚本层是采用mruby实现的,因此它必然和cruby有很多不兼容的地方,已发现的不兼容和注意事项我已经在示例工程中注明。

【用 Lanziss 完成的 Nswitch 端移植作品已经登陆 EShop ! @回转寿司 发布帖】

移植到Nswitch、Android端的演示录像

示例工程(并不携带最新版的player程序。)百度网盘下载 - 提取码: kv5h

这是主程序的下载链接。现阶段仍然只提供windows/android版,其它平台择日放出。
2021.10.14 关于 Nswitch 平台的补充说明
鉴于之前有朋友问我该项目在 Nswitch 的情况,现做如下几点说明:
1. 该项目现阶段 Nswitch 端实现完全基于官方开发机及SDK,并非是为破解机型所用(如 devkitpro 中提供的开发库)
2. Nswitch 端实现已用于正式的商业项目,而商业项目的制作规范和提交流程都需要有专业资质的发行机构来负责
3. 该项目在各个平台的实现都留有扩展脚本接口的可能性,如 Nswitch 端为符合制作规范就有账户登陆、存储文件管理、多语言环境检测等专有功能

永硕E盘链接 lanzainc.xyz 科技->Lanziss(lanza-s-rgss3-runtime)->player (已经失效)
win32/android版-百度盘下载 - 提取码: hds5
(建议选择最新日期和标号的版本来试用~)

Lanziss对图像部分增加了跳帧/自动跳帧功能。
当你将Graphics.frame_skip赋值为一个正整数时,每次渲染将会固定跳过指定的帧数;当你将Graphics.frame_autoskip设为true时,将开启自动跳帧功能,同时Graphics.frame_skip的值将指定自动跳帧时的最大跳帧数目。

当然,保证跨平台的情况下,我还加入了很多其它的扩展内容,
比如你可以利用置入的Genann库来实验一些简单的人工神经网络功能?用法示例
比如你可以利用置入的Fossa库来制作简易的网络联机功能?用法示例
又或者,得益于SDL的强大,你可以获取全键盘/触摸/鼠标/手柄的输入信息等~

本项目还在测试的阶段,欢迎大家多多试用,多提建议以及捉拿BUG!
※测试工程暂只提供windows版,以后有机会将会给大家提供android等平台的移植实现。(已经上传)

2021.03.20 更新
修复了内存泄露问题。


2021.03.07 更新更新到mruby 3.0.0版本!
大幅度减少内存消耗、加快了执行效率。
同时更改了读写文件的方式,使得存档速度有所提升。
在为Nswitch疯狂做适配中……(天啊,这真是最头疼的事情之一)


2020.11.25 更新这将是mruby正式发布3.0版本前的最后一次更新。
修复了一些导致闪退的问题,增加了临时的音频加载接口。
[pre lang="ruby"]sound = Lanziss::AudioEx::Sound.new('Audio/SE/test')
sound.play(100) # play with a volume(0 ~ 100)
# sound.stop # stop the sound[/pre]
这只是一个临时的东西,用于预加载音频以解决播放SE时的卡顿问题,之后可能会删除/改变。


2020.08.16 更新(附Android说明)更新到mruby 2.1.2 版本。这可以修正一些闪退错误的BUG。
Android版从之前的示例工程开始,就更改了资源文件的存储方式,不再采用压缩包,而是直接放入assets文件夹,特此说明。


2020.06.04 更新更新到mruby 2.1.1版本。


2020.05.17 更新修复了一些BUG,优化了渲染性能。
为win32 player绘制了图标……


2020.04.24 更新在Win32平台增加了Win32API,你可以继续运用一些以前的脚本插件,当然这仅限于Win32平台。
修复了一些BUG。


2020.04.12 更新修正了Sprite#angle绘制的表现。
用了新的方法渲染Plane,表现更接近原版效果。

更新了android工程。

2020.04.11 更新增加了Viewport#render([target])方法,该方法将viewport渲染到一张bitmap对象上。可能会消耗较多的时间。如果没有传入target,将会返回一张渲染好的新建Bitmap对象。
增加了load_data_buffer/save_data_buffer方法,类似load_data/save_data,只是不会调用Marshal,而是存取raw的字符串数据。
修改了Graphics.transition方法。该方法现可传入一个block,将在渐变过程中的每一帧前调用,该block还会获得当前渐变所进行到的帧计数。
将播放音频时的操作加锁,确保异步模式下不会因音频操作而产生访问冲突。
※未来将可能加入dll、so扩展的功能。
※未来将可能改变音频解码器。


2020.04.09 更新增加了读取Game.ini设置的扩展。设置Title项可以指定窗口的标题,
设置Script项可以直接从rb文件加载程序,如Script=boot.rb。
类似地还有Scriptcode项可以直接从mruby字节码文件中加载程序,如Scriptcode=boot.mrb,
当然,默认的Scripts现在也可以自由指定位置了。


2020.04.06 更新添加了android版示例工程!请用新版android studio及ndk进行构建。
工程资源在res/raw目录下以zip压缩包的形式存放。
注意:当工程资源中有非英文文件名时,请确保压缩文件的文件名编码为UTF-8。
工程资源内的文件名是区分大小写的,请务必注意这一点。(如默认工程中对图标文件的调用名是"Iconset",而实际上RTP默认的文件名是"IconSet",这就会导致无法访问文件。


2020.04.02 更新修复了Viewport#tone渲染时的问题。(感谢16L的反馈!这是第一次针对本贴反馈修正的BUG。)
优化了Graphics#transition的实现。


2020.03.26 实验更新mruby版本和构建工具后,在某些平台运行时出现段错误:经过检查发现是mruby的bug,改用MRB_METHOD_T_STRUCT选项规避。
即将推出适用于android的测试工程!(一周内)


2020.03.18 更新添加了mod和xm音频格式的支持。它们都是module式的音乐,同时具有midi般的"曲谱"和任意真实波形的采样数据。因此可以在很小的体积获得不俗的效果。通过openmpt软件也可将midi曲谱转换成mod和xm格式。


2020.03.16 更新优化了Tilemap,现在在地图界面可以减少卡顿了。
优化了Sprite的性能。


2020.03.15 更新更正了Graphics.frame_reset的行为。
修改了Graphics.transition的实现方式,现在你可以获得更贴近RM原版的transition效果了。
增强了opengl兼容性,一些原本可能显示黑屏的设备现在可以显示了。


2020.03.14 更新修复了一些可能导致闪退的问题(#Viewport.dispose相关)
将mruby版本提升到v2.1.0。
优化了自动跳帧的计算方式。


2020.03.13 更新使用soloud库重写了Audio模块。现在支持各种采样率的ogg、wav、mp3、flac格式声音了。
音频播放也从单声道改为立体声。
也在Lanziss::AudioEx提供了reset方法供大家重新设定音频引擎的参数(采样率、缓冲字节数、声道数目、是否异步)。默认是44100hz, 1024bytes, 2 Channels, 异步。
当你使用reset方法将音频设为同步时,可以设置Lanziss::AudioEx.auto_update的true/false来决定是否在更新图像时一并更新音频,关闭后,你可以选择用Lanziss::AudioEx.update单独更新音频(还可传入固定的deltatime)。
同步的好处是可以让音频准确地跟着画面帧步进,这对制作MTV等功能有好处,但是它可能导致一定的声音延迟。因此默认开启的是异步方式。
另外,用新的方法编写了Graphics.snap_to_bitmap和Graphics.freeze,减少了CPU/GPU提交数据的次数,速度增快(但内存使用少许增加)。
另修复了Window绘制时的缺失(主要是内容超出窗口范围的箭头)。
另修复了Marshal模块和Table的写法。我编写的mruby用Marshal模块已经上传到github,这可能是当前你能用到的最好的mruby上的marshal实现。
新计划:增添内置的ULDS实现。


2020.03.05 更新修复了一些BUG(主要是Marshal和Table部分的)。
增加了Bitmap的一些扩展功能,示例代码如下:
[pre lang="ruby"]bitmap = Bitmap.new(Graphics.width, Graphics.height)
bitmap.font.color = Color.new(0xFF, 0xFF, 0xFF)

sprite = Sprite.new
sprite.bitmap = bitmap

x, y = bitmap.width / 2, bitmap.height / 2

256.times do |i|
  bitmap.clear
  # -----------------------------------------------
  # bitmap.draw_arc x, y, width, height, color
  # -----------------------------------------------
  bitmap.draw_arc x, y, i * 0.25, i * 2, i * 3, Color.new(0xFF, 0, 0)
  Graphics.update
end

256.times do |i|
  i = i / 64.0
  bitmap.clear
  # -----------------------------------------------
  # bitmap.draw_line x1, y1, x2, y2, color
  # -----------------------------------------------
  bitmap.draw_line x, y, x + Math.cos(i) * 64, y + Math.sin(i) * 64, Color.new(0xFF, 0, 0)
  Graphics.update
end

256.times do |i|
  i = i / 64.0
  bitmap.clear
  # -----------------------------------------------
  # bitmap.draw_line_aa x1, y1, x2, y2, color
  # -----------------------------------------------
  bitmap.draw_line_aa x, y, x + Math.cos(i) * 64, y + Math.sin(i) * 64, Color.new(0xFF, 0, 0)
  Graphics.update
end

256.times do |i|
  i = i / 64.0
  bitmap.clear
  # -----------------------------------------------
  # bitmap.draw_line_thick x1, y1, x2, y2, width, color
  # -----------------------------------------------
  bitmap.draw_line_thick x, y, x + Math.cos(i) * 64, y + Math.sin(i) * 64, 4, Color.new(0xFF, 0, 0)
  Graphics.update
end

128.times do |i|
  bitmap.clear
  # -----------------------------------------------
  # bitmap.fill_circle x, y, radius, color
  # -----------------------------------------------
  bitmap.fill_circle x, y, i, Color.new(0xFF, 0, 0)
  Graphics.update
end

128.times do |i|
  bitmap.clear
  # -----------------------------------------------
  # bitmap.draw_circle x, y, radius, color
  # -----------------------------------------------
  bitmap.draw_circle x, y, i, Color.new(0xFF, 0, 0)
  Graphics.update
end

128.times do |i|
  bitmap.clear
  # -----------------------------------------------
  # bitmap.draw_circle_aa x, y, radius, color
  # -----------------------------------------------
  bitmap.draw_circle_aa x, y, i, Color.new(0xFF, 0, 0)
  Graphics.update
end

128.times do |i|
  bitmap.clear
  # -----------------------------------------------
  # bitmap.draw_rect_rounded x, y, width, height, radius, color
  # -----------------------------------------------
  bitmap.draw_rect_rounded x - i, y - i, i * 2, i * 2, i * 0.2,  Color.new(0xFF, 0, 0)
  Graphics.update
end

128.times do |i|
  bitmap.clear
  # -----------------------------------------------
  # bitmap.draw_rect_rounded rect, radius, color
  # -----------------------------------------------
  bitmap.draw_rect_rounded Rect.new(x - i, y - i, i * 2, i * 2), i * 0.1,  Color.new(0xFF, 0, 0)
  Graphics.update
end

exit
[/pre]

评分

参与人数 23星屑 +550 赞 +22 收起 理由
alexncf125 + 350 + 1 精品文章
WLian + 1
A.Grothendieck + 1 塞糖
谜样神君 + 1 tql
水母书亚 + 1 塞糖
taroxd + 100 + 1 塞糖
shouhuangzhua + 1 塞糖
鸽牌万人迷 + 1 精品文章
whitedewxiao + 1 精品文章
sdgn + 1

查看全部评分

>>→Lanza Games 2020←<<
Lanza Schneider
浪子心,孤星梦永远流浪……
~不会放弃,我的精力永远充沛~
>>>>>Lanza Adventure<<<<<
>>>>>Lanza的新年派对!<<<<<
>>>>>Lanza的口袋心脏病!<<<<<
梦石
0
星屑
4221
在线时间
619 小时
注册时间
2013-4-30
回帖
111
发表于 2020-2-28 14:00:41 | 显示全部楼层
是大佬!
前排,先顶一个!
    
回复

使用道具 举报

梦石
0
星屑
2319
在线时间
124 小时
注册时间
2017-2-26
回帖
32
发表于 2020-2-28 14:09:56 | 显示全部楼层
不愧是醋虾lanza,这么快就正式发布了,恭喜lanza~
然后今年下半年,我个人开发的基于DirectX11的RGSS1 runtime(windows)也计划发布,和魔族勇士一起两开花(?),大家多多关注(狗头保命)

评分

参与人数 1赞 +1 收起 理由
哇哇哇啊叭叭 + 1 敬两开化

查看全部评分

RM水友群号   917854767  欢迎加入
回复 1 0

使用道具 举报

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2020-2-28 14:17:20 | 显示全部楼层
Runtime大联欢(X
造轮子大联欢(X

RGD 在我的新 win10 上提示缺 dll,百度了 dll 扔进去后报错 0xc000007b,懒得折腾查原因了,试试这个怎么样

点评

装个dx9 runtime应该就行(  发表于 2020-3-17 10:14
回复

使用道具 举报

梦石
0
星屑
14720
在线时间
2175 小时
注册时间
2016-9-20
回帖
777
发表于 2020-2-28 19:12:16 | 显示全部楼层
看上去看好像很多扩展 , 好多功能
实际上, 这是大部分人给了范例也不会用的工程 , 原因是用RM的大部分人是技术比較低

点评

是啊,会用这个也就会用更高级的免费平台了。但是,我是因为素材价格香才留下的,不能轻易换平台。  发表于 2020-5-2 20:37
贴子只供参考我贴子内容有很多只是我自己标识的内容代指不是原来意思,偏向发贴当时的想法(后来回看贴发现有很多错误,会造成误导 ),如果想靠谱点应 找相关正确的文章   -- 2025/4/19
回复 0 1

使用道具 举报

老黄鸡

梦石
4
星屑
45748
在线时间
7953 小时
注册时间
2009-7-6
回帖
13338

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2020-2-28 19:59:50 | 显示全部楼层
甚至已经公开了,强,lanza强
RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2020-3-2 21:37:17 | 显示全部楼层
啊……没有 TOPLEVEL_BINDING
回复

使用道具 举报

梦石
1
星屑
12006
在线时间
4535 小时
注册时间
2005-10-22
回帖
7094

开拓者贵宾

发表于 2020-3-3 08:13:53 | 显示全部楼层
于是,我要实验这个和RGD哪一个可以更快把GPU加热到100度然后用来做饭(大雾)
回复

使用道具 举报

梦石
0
星屑
6835
在线时间
1251 小时
注册时间
2011-12-18
回帖
1127
发表于 2020-3-17 00:43:56 | 显示全部楼层
求MEGA或GOOGLE或其他不用註冊帳號的盤

点评

感謝... 主要還是想要那個 player程序  发表于 2020-3-17 21:31
已添加永硕E盘的链接,不过由于单个文件限制,目前只提供player程序的下载,没有示例工程  发表于 2020-3-17 08:35
回复

使用道具 举报

梦石
0
星屑
4623
在线时间
1207 小时
注册时间
2016-4-7
回帖
944

开拓者

发表于 2020-3-25 14:23:41 | 显示全部楼层
这是可以用ruby 标准库了?
我试试我的RGUI 是否可以正常在上边跑
附庸的附庸不是我的附庸,女儿的女儿还是我的女儿。CK2沉迷ing
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部