# 介绍
LuaSTG是一个基于C/C++开发、采用Lua作为脚本语言的弹幕射击游戏引擎。其最初版本由隔壁的桌子于2011到2012年间开发,但后续源代码不慎遗失,不再有后继版本。
我们基于LuaSTG最后一个版本重新实现了所有API,并以LuaSTGPlus的名称对外发布。但是由于作者忙于工作,LuaSTGPlus项目大约在2017年左右停止维护。
在这将近五、六年时间里,我们注意到社区有不少自发的分支版本,以及衍生于其上的各种优秀作品。为了不辜负社区的支持和努力,如今,我们决定重新激活这个项目。我们期望逐步移除所有老的、不合理的设计,重新实现全套代码逻辑并适配现代化的图形API和设计模式,同时使得LuaSTG可以运行在更多设备上,方便开发者使用。
经过大约半年的开发工作,如今LuaSTGPlus以v2版本归来,之后我们将持续迭代以完成我们期望的目标。
TIP
由于LuaSTGPlus老分支不再维护,本文档若无特殊注明,均代指LuaSTGPlus-v2版本。
# 新版本中带来了什么?
- 代码
- 100% 使用 C++17 特性重写
- 使用 CMake 组织工程,更加可维护并方便跨平台构建
- 可跨多种平台和体系结构
- 脚本引擎
- 升级到OpenResty社区维护的LuaJIT
- 支持了沙箱模式和热更新功能,现在修改Lua脚本不再需要重启引擎
- 文件系统
- 引入了虚拟文件系统机制,统一各平台的行为
- 资产系统
- 支持了资产异步加载,并使用多线程加速资产加载过程
- 支持了相对路径,可以方便地按照文件夹组织资产
- 支持了资产的热更新,现在修改资产源文件可以即时在引擎中得到反馈
- 渲染系统
- 支持了OpenGL、OpenGL ES、Vulkan、D3D11、D3D12等多种图形API
- 增加了高DPI支持,可以适配高DPI环境的高质量显示
- 添加了PPU的概念,为高精度素材提供支持
- 支持了阿拉伯语等小语种的渲染和排版
- 引入了全新的基于Lua和HLSL的Shader文件格式,为引入自定义Shader和渲染状态提供可能
- 音频系统
- 重新实现的音频引擎,默认支持四路AUX通道和音频DSP插件
- 支持了更多的音频格式,包括但不局限于:WAV、OGG、MP3、FLAC
- 对象管理
- 底层实现了基于ECS的对象管理机制,方便未来扩展更多可能
# 不兼容的行为
这一节内容说明了v2版本中相对于上一版本中不兼容的行为,部分行为可以通过编译选项的开关进行调整,若需改变默认行为,请参照编译章节的说明进行。
- 不兼容API清单
- SetImageScale:该方法作为全局渲染缩放系数在渲染图片等场景下使用,根据社群反馈该方法将增加使用成本,故从v2起废弃,当调用时不再有任何行为。如果需要保留原有行为,您需要在Lua脚本层对相关渲染方法进行特殊处理。
- SetTexturedFontState2:已于上一版本废弃的方法,该方法将在未来被删除。
- RegTTF:已于上一版本废弃的方法,该方法将在未来被删除。
- UpdateSound:已于上一版本废弃的方法,该方法将在未来被删除。
- ObjTable:该方法用于访问对象池中托管的原始Lua对象映射表,根据社群反馈该操作比较高危,且用途狭窄,故从v2起废弃,当调用时不再有任何行为。
- UpdateObjectList:已于上一版本废弃的方法,该方法将在未来被删除。
- Registry:已于上一版本废弃的方法,该方法将在未来被删除。
- Execute:该方法用于执行shell命令,出于跨平台实现和安全性考虑,从v2起废弃,当调用时不再有任何行为,且总是返回false。
- BeginScene:从v2起废弃,当调用时不再有任何行为。
- EndScene:从v2起废弃,当调用时不再有任何行为。
- ExtractRes:已于上一版本废弃的方法,该方法将在未来被删除。
- ShowSplashWindow:该方法用于展示加载时的Logo窗口,考虑到我们已经引入了异步加载机制,且部分平台不能支持多窗口显示,故从v2起废弃,当调用时不再有任何行为。
- 不兼容的行为
- 传递给v2版本的命令行参数必须追加
--
标识,否则不会透传给Lua脚本。你可以通过调整编译选项更改这一行为。 - 日志文件默认写入用户存储路径,不再打印到当前目录。你可以通过在命令行参数中增加特殊的标记来更改这一行为。
- 从v2开始我们引入了新的Shader编写方式,不再兼容过去版本。
- 传递给v2版本的命令行参数必须追加
# 已支持平台
下述表格记录了已经确认可以运行的平台/系统,未在表格中出现的系统不一定不能运行,需要用户自行测试。
此外,我们没有构建到32位系统的计划,试图构建到32位系统可能会遇到各类编译问题,我们不会予以解决。
Windows | Linux | MacOS | HTML5 | |
---|---|---|---|---|
x86 | 无计划 | 无计划 | 无计划 | - |
x86_64 | Win10 | 未测试 | 未测试 | - |
arm32 | 无计划 | 无计划 | 无计划 | - |
arm64 | Win11 | Ubuntu 20/22 | macOS 12.3 | - |
wasm | - | - | - | Chrome/Safari/Safari(iPad OS) |
- Windows 最低支持 Windows 7。
- 若需要在 iPad OS 上使用,需要在 Safari 中开启实验性 WebGL2 支持。
- 若需要在 macOS 上启用 Vulkan,需要安装 Vulkan SDK 并设置环境变量
VULKAN_SDK
指向 Vulkan SDK 安装路径。
历史 →