| 赞 | 120 |
| VIP | |
| 好人卡 | |
| 积分 | 97 |
| 经验 | |
| 最后登录 | 2026-7-20 |
| 在线时间 | 3224 小时 |
- 梦石
- 0
- 星屑
- 9687
- 在线时间
- 3224 小时
- 注册时间
- 2011-3-24
- 回帖
- 616

|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有账号?注册会员
×
本帖最后由 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]
|
评分
-
查看全部评分
|