Releases: Legacy-LuaSTG-Engine/LuaSTG-Sub
LuaSTG Sub v0.21.2
Engine updates:
- v0.21.2
- graphics/rendering
Fix: fail to load gltf 2.0 model from resources pack (zip)
- graphics/rendering
引擎更新:
- v0.21.2
- 图形/渲染
- 修复:无法从资源包(zip)加载gltf模型
- 图形/渲染
VirusTotal scan result:
VirusTotal 扫描结果:
https://www.virustotal.com/gui/file/72dc5e7cd847c67771ab01e3577284c43f45ec7a0fc28672532a68db6328ba0a
LuaSTG Sub v0.21.1-beta
Engine updates:
- v0.21.1
- graphics/rendering
- Change: gltf 2.0 model with transparency will be simulated through screen door effects
- Fix: gltf 2.0 model with vertex color rendering is incorrect
- graphics/rendering
Other updates:
- Updated documentation under doc folder
引擎更新:
- v0.21.1
- 图形/渲染
- 修改:带有半透明纹理的 gltf 2.0 模型在渲染时使用纱窗(screen door)效果模拟半透明
- 修复:渲染具有顶点色的 gltf 2.0 模型时,顶点色错误
- 图形/渲染
其他更新:
- 更新了 doc 文件夹下的文档
VirusTotal scan result:
VirusTotal 扫描结果:
https://www.virustotal.com/gui/file/d9548e2ec9c0247d9c2456e9f880496aebdd3d6fe93776e3d5019b012769d708
LuaSTG Sub v0.21.0-beta
Engine updates:
- v0.21.0
- basic
- change: default to x86_64, support for x86 32bit will remove in the future
- graphics/rendering
- Fix: render result of some gltf 2.0 model is incorrect
- Fix: result of alpha+bal mode is incorrect
- basic
- v0.20.2-v0.20.16 (see doc/history.md)
Other updates:
- Updated documentation under doc folder
引擎更新:
- v0.21.0
- 引擎基础
- 修改:默认编译为 x86 64位版本,32位版本仍然可以编译,但将在未来停止支持
- 图形/渲染
- 修复:部分 gltf 2.0 模型渲染时顶点、纹理等坐标完全错误的问题
- 修复:alpha+bal 渲染模式失效的问题
- 引擎基础
- v0.20.2-v0.20.16(请阅读doc/history.md)
其他更新:
- 更新了 doc 文件夹下的文档
VirusTotal scan result:
VirusTotal 扫描结果:
LuaSTG Sub v0.20.1
Welcome to Canvas Mode update
WARNING: This update contains breaking changes
Engine updates:
- v0.20.1
- Fix: Multiple rendering APIs do not report errors when they cannot find resources, but only write logs
- v0.20.0
- Change: Now Canvas Mode is core feature
- Change: Now when calling the rendering related API, it will verify whether it is in the rendering state (in FrameFunc)
- Add: Experimental lstg.PostEffectShader object
- Add: Experimental lstg.PostEffect method overloading
- Add: Now other .hlsli header files can be included in .hlsl through #include
- v0.19.202
- Fix: load fancy2d font will crash then engine
- v0.19.201
- Fix: If an error occurs when executing the launch script, program will crash silently
- Change: When resizing the canvas, if in Exclusive Fullscreen mode, reconfigure Exclusive Fullscreen
- Change: if the internally used mode is Exclusive Fullscreen, when leaving fullscreen mode, reconfigure SwapChain
- v0.19.200
- Change: Initially merge the window message thread and update & render thread, which has an imperceptible impact on game performance, but makes the engine easier to maintain
- Fix: if the internally used mode is Exclusive Fullscreen, when leaving fullscreen mode, the window layout will not restore successfully
- Change: Improved scoring of refresh rates for enumerated display modes when using exclusive fullscreen mode, which can theoretically reduce the possibility of choosing an unsuitable refresh rate
- v0.19.108
- Update some third-party libraries
- Change: On Windows 10/11, Desktop Composition Engine is disabled for some older devices for performance reasons
- v0.19.107
- Update some third-party libraries
- Change: On Windows 10/11, Exclusive FullScreen using modern FLIP swapchain model (DXGI_SWAP_EFFECT_FLIP_DISCARD)
- v0.19.106
- Add: Window and Exclusive FullScreen mode
- Change: Strict check on compatibility of Desktop Composition Engine, especially Multi-Plane Overlay compatibility
- Change: On Windows 10/11, if the compatibility of the Desktop Compositing Engine does not meet the requirements, Window and Exclusive FullScreen mode are preferred, and if failed, fallback to Window and Borderless Window FullScreen
- v0.19.105
- Change: The file name of this version is revert to LuaSTGSub.exe
- Change: Undo disabling of Desktop Composition Engine
- v0.19.104
- Change: The file name of this version is LuaSTGSub.EFS.exe
- Change: Desktop Composition Engine is disabled in this version for testing.
- Add: Window (Legacy) and Exclusive FullScreen mode
- v0.19.103
- Fix: The state of window at engine startup
- Add: Now we can enter/leave fullscreen mode through lstg.ChangeVideoMode
- Add: lstg.ChangeVideoMode and Alt+Enter share fullscreen state
- Change: On Desktop Composition Engine mode, use more stable triple buffer
- Change: On Desktop Composition Engine mode, enable low latency presentation
- Change: On Window and Borderless Window FullScreen mode, use more stable triple buffer
- Change: On Window and Borderless Window FullScreen mode, enable low latency presentation
- Fix: Desktop Compositing Engine mode will scaling game canvas through point samplers on older devices
- v0.19.102
- Fix: Dead ImGui mouse input position and rendering viewport size
- Change: Slightly improve the performance of call to Desktop Composition Engine
- v0.19.101
- Fix: lstg.GetMousePosition return the wrong value after launch
- Add: Desktop Composition Engine mode
- v0.19.100
Initial support for canvas mode- Add: Canvas Mode, rendering resolution no longer bind to window size
- Add: The Canvas will automatically be letter boxing renderering to the window or monitor.
- Change: The mouse positions are mapped to the canvas coordinate
- Add: Window and Borderless Window FullScreen mode
- Add: Window (Legacy) and Borderless Window FullScreen (Legacy) mode
- Change: Support free window size adjustment in window mode
- Change: Support to enter/leave fullscreen mode through Alt+Enter
- Remove: Enter/leave fullscreen mode through Ctrl+Enter
- v0.19.8
- Change: If an unrecoverable error occurs when updating (FrameFunc), rendering (RenderFunc) will not call to prevent error propagation
- v0.19.7
- Change: When the Desktop Window Manager (DWM) optimization is enable, enable triple buffering to make frame rate more stable
- Change: When the Desktop Window Manager (DWM) optimization is enable, the present queue is automatically reset, and outdated image buffers are discarded
- Change: Add Wait data in the Frame Statistics interface to visualize the waiting time of the frame rate controller
- Fix: lfs.dir enumerates not the file/folder name but the relative path of the file/folder
- v0.19.6
- Change: Prevent the window from being squashed when it is too large (width or height is larger than the screen)
- Change: If the operating system does not meet the minimum requirements (Windows 7 SP1 With Platform Update), an error window will pop up
- Change: DirectWrite extension use rounded edges when generating stroke fonts to avoid stroke burrs on some fonts
- Change: When the following conditions are met, the Desktop Window Manager (DWM) optimization is automatically turned on to deal with the problem that the performance of the traditional windowing mode is reduced after a certain update of Windows 10:
-
- Windows 10 1709+
-
- present allow tearing (DXGI_FEATURE_PRESENT_ALLOW_TEARING) (check engine.log to confirm whether your device supports it)
-
- Add: 现在 engine.log 中会记录窗口焦点是被哪个窗口抢走的,用来抓流氓程序
- Change: When the rendering API is called outside of RenderFunc, the device loss will be triggered, and the device loss event will also be recorded in engine.log. Developers should consciously check engine.log for device loss errors during development
- v0.19.5
- Add: Experimental function, which allows switching graphics card at runtime. For details, please see the API document in the doc folder
- v0.19.4
- Fix: lstg.PostEffect didn't check whether the parameter is correct
- v0.19.3
- Change: If a resource with the same name already exists when LoadMusic, skip loading and "do not stop" to correctly simulate the old behavior
Other updates:
- Updated sample code
- Updated documentation under doc folder
迎接画布模式更新
警告:本次更新包含破坏性更改
引擎更新:
- v0.20.1
- 修复:多个绘制 API 在找不到资源时不报错而只是打印 log 的问题
- v0.20.0
- 修改:画布模式提升为核心功能
- 修改:现在调用绘制相关的 API 时会校验是否处于渲染状态(FrameFunc 范围内)
- 新增:实验性 lstg.PostEffectShader 对象
- 新增:实验性 lstg.PostEffect 方法重载
- 新增:现在 hlsl 中可以通过 #include 包含其他 hlsli 头文件
- v0.19.202
- 修复:加载 fancy2d 字体会导致引擎崩溃
- v0.19.201
- 修复:执行 launch 脚本时如果出现错误,会导致整个程序闪退
- 修改:调整画布尺寸时,如果处于独占全屏模式,则重新配置独占全屏
- 修改:如果内部使用的模式为独占全屏,离开全屏模式时,重新配置交换链
- v0.19.200
- 修改:初步合并窗口消息线程和更新渲染线程,这对游戏性能影响难以察觉,但是能让引擎更易于维护
- 修复:离开全屏模式时,如果内部使用的模式为独占全屏,窗口布局将无法正常还原
- 修改:改进使用独占全屏模式时,对枚举得到的显示模式的刷新率的评分,理论上可以降低选择到不适合的刷新率的可能性
- v0.19.108
- 修改:Windows 10/11 上,由于性能原因,对某些旧设备禁用桌面合成引擎
- v0.19.107
- 修改:Windows 10/11 上,独占全屏使用快速交换模式(DXGI_SWAP_EFFECT_FLIP_DISCARD)
- v0.19.106
- 新增:窗口和独占全屏模式
- 修改:对桌面合成引擎兼容性进行更严格的检查,特别是多平面叠加支持情况
- 修改:Windows 10/11 上,若桌面合成引擎的兼容性不满足要求,则优先使用窗口和独占全屏模式,再失败则使用窗口和无边框窗口全屏模式
- v0.19.105
- 修改:可执行文件名称改回 LuaSTGSub.exe
- 修改:取消禁用桌面合成引擎模式
- v0.19.104
- 修改:可执行文件名称临时改为 LuaSTGSub.EFS.exe
- 修改:临时禁用了桌面合成引擎以便于测试独占全屏
- 新增:窗口(旧版)和独占全屏模式
- v0.19.103
- 修复:引擎启动时窗口的状态
- 新增:现在可以通过 lstg.ChangeVideoMode 进入、离开全屏模式
- 新增:lstg.ChangeVideoMode 和 Alt+Enter 共享全屏模式状态
- 修改:桌面合成引擎模式下,使用三重缓冲(BufferCount=3)
- 修改:桌面合成引擎模式下,使用帧延迟可等待对象(DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT)
- 修改:窗口和无边框窗口全屏模式下,使用三重缓冲(BufferCount=3)
- 修改:窗口和无边框窗口全屏模式下,使用帧延迟可等待对象(DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT)
- 修复:桌面合成引擎模式在较老的设备上通过邻近采样器缩放画面的问题
- v0.19.102
- 修复:Dear ImGui 获取的鼠标坐标和渲染的视口尺寸
- 修改:稍微提升了桌面合成引擎模式下的性能
- v0.19.101
- 修复:启动后鼠标位置获取失败,调整一次窗口尺寸后恢复正常
- 新增:桌面合成引擎模式
- v0.19.100
- 新增:画布模式,让渲染分辨率与呈现模式不再有关
- 新增:画布会自动地内接等比放大显示到窗口或显示器上
- 修改:鼠标坐标映射到画布坐标系
- 新增:窗口和无边框窗口全屏模式
- 新增:窗口(旧版)和无边框窗口全屏(旧版)模式
- 修改:窗口模式下支持自由调整窗口尺寸、贴靠布局、最大化
- 新增:通过 Alt+Enter 快捷键切换全屏模式
- 移除:通过 Ctrl+Enter 快捷键切换独占全屏模式
- v0.19.8
- 修改:若更新(FrameFunc)时出现无法恢复的错误(弹窗报错),不再继续渲染(RenderFunc),以阻止错误传播
- v0.19.7
- 修改:开启桌面窗口管理器(DWM)优化时,启用三重缓冲让帧率更平稳
- 修改:开启桌面窗口管理器(DWM)优化时,自动重置呈现队列,丢弃过时的画面缓冲区
- 修改:Frame Statistics 界面添加 Wait 项,用于可视化帧率控制器的等待时间
- 修复:lfs.dir 枚举得到的不是文件/文件夹名而是文件/文件夹相对路径的问题
- v0.19.6
- 修改:阻止窗口过大(宽度或高度比屏幕大)时被压扁
- 修改:如果操作系统不满足最低需求(Windows 7 SP1 With Platform Update)则弹窗报错
- 修改:DirectWrite 拓展生成描边字体时使用圆角边缘,避免在某些字体上出现描边毛刺
- 修改:当满足以下条件时,自动开启桌面窗口管理器(DWM)优化,以应对 Windows 10 某次更新后导致传统窗口化方式性能下降的问题:
- 1、系统为 Windows 10 1709+
- 2、支持立即刷新(可查看 engine.log 确认自己的设备是否支持)
- 新增:现在 engine.log 中会记录窗口焦点是被哪个窗口抢走的,用来抓流氓程序
- 修改:在 RenderFunc 以外地方调用渲染命令时,将会引发设备丢失,在 engine.log 中也会记录设备丢失事件,开发者在开发时,应有意识地检查 engine.log 是否出现设备丢失的错误
- v0.19.5
- 新增:实验性功能,允许运行时切换显卡设备,详情请查看 doc 文件夹中的 API 文档
- v0.19.4
- 修复:lstg.PostEffect 没有检查参数是否错误的问题
- v0.19.3
- 修改:LoadMusic 时,如果同名资源已存在,则跳过加载,且“不停止播放”,以正确模拟以前的行为
其他更新:
- 更新了附带的样例代码
- 更新了 doc 文件夹下的文档
LuaSTG Sub v0.19.2
WARNING: This update contains breaking changes
Engine updates:
- v0.19.2
- Update third-party libraries, fix some issues
- Add: Textures generated by the
DirectWrite
platform extension library can be automatically recovered (content will not lost) when the engine recovers from a device lost - Change: The window title of the engine crash report window is changed to "engine name + engine version"
- Change: The engine crash report window uses the system theme instead of the Windows Classic theme
- v0.19.1
- Change: The call to
lstg.PlaySound
will be cached and executed uniformly afterFrameFunc
, reducing the pressure of sound effect playback - Add:
DirectWrite
platform extension library added new functionDirectWrite.SaveTextLayoutToFile
, which can save textures as PNG images - Change: When creating a texture resource through
DirectWrite.CreateTextureFromTextLayout
, if a resource with the same name already exists in the resource pool, an error will be reported instead of skipping - Fixed: enum values
TopToBottom
andBottomToTop
inDirectWrite.ReadingDirection
are corrected toLeftToRight
andRightToLeft
- Change: When the
DirectWrite
platform extension library draws stroked fonts, it no longer modifies the text layout, but expands the canvas size outwards according to the size of the text layout, and generates corresponding size textures - Add:
DirectWrite.TextLayout
object methodsSetStrikethrough
,SetUnderline
- Change: The call to
- v0.19.0
- Remove the engine version number "beta" suffix
- Add:
DirectWrite
platform extension library for typesetting, rasterizing text, and creating texture resources for rendering (see the documentation in the doc folder for details) - Add: Support QOI image format, an emerging fast lossless image codec compression format
- Add:
lstg.SetTextureSamplerState
, which used to be an experimental API, is now an stable API
- v0.18.12-beta
- Change: For the RenderTarget resource that is automatically resized, after the window size is changed, the internal texture resource will not be recreated, but the existing texture will be resized, so that the image sprite created by
lstg.LoadImage
can still correctly reference the RenderTarget resource
- Change: For the RenderTarget resource that is automatically resized, after the window size is changed, the internal texture resource will not be recreated, but the existing texture will be resized, so that the image sprite created by
- v0.18.11-beta
- Update third-party libraries, fix some issues
- Fixed:
lstg.PostEffect
can not correctly set multiple textures - Fixed: After using
[".render"] = true
to enable RenderObject feature, when accessing or changing color components via_r
,_g
,_b
,_a
, the engine crashes without error report - Add: d3dcompiler_47.dll file to allow the engine to run on earlier Windows 7 SP1 and earlier Windows 8 systems, which are missing this DLL file
- Remove: the experimental API
lstg.SetTextureSamplerState
no longer supports the old behavior (the global sampler state setting in LuaSTG Ex Plus) - Change:
lstg.LoadMusic
will check whether the music resource exists before loading, if iexists, skip loading and stop the music
Other updates:
- Updated sample code
- Updated documentation under doc folder
警告:本次更新包含破坏性更改
引擎更新:
- v0.19.2
- 更新第三方库,修复一些问题
- 新增:引擎从设备丢失恢复时,
DirectWrite
平台拓展库生成的纹理可以自动恢复(内容不会丢失) - 修改:引擎报错弹窗的窗口标题改为“引擎名称+引擎版本”
- 修改:引擎报错弹窗使用系统主题,不再使用 Windows Classic 主题
- v0.19.1
- 修改:对
lstg.PlaySound
的调用将被缓存下来,并在FrameFunc
之后统一执行,减少音效播放压力 - 新增:
DirectWrite
平台拓展库新增函数DirectWrite.SaveTextLayoutToFile
,可保存纹理为 PNG 图片 - 修改:通过
DirectWrite.CreateTextureFromTextLayout
创建纹理资源时,如果资源池内已存在同名资源,则报错而不是跳过 - 修复:
DirectWrite.ReadingDirection
中的枚举值TopToBottom
和BottomToTop
更正为LeftToRight
和RightToLeft
- 修改:
DirectWrite
平台拓展库绘制描边字体时,不再修改文本布局,而是根据文本布局的大小,向外拓展画布尺寸,并生成相应大小纹理 - 新增:
DirectWrite.TextLayout
对象方法SetStrikethrough
、SetUnderline
- 修改:对
- v0.19.0
- 引擎版本号去除“beta”后缀
- 新增:
DirectWrite
平台拓展库,用于排版、光栅化文本,并创建纹理资源用于渲染(详情请查看 doc 文件夹下的文档) - 新增:支持 QOI 图片格式,一种新兴的快速无损图片编解码压缩格式
- 新增:
lstg.SetTextureSamplerState
,其曾为实验性 API,现转为正式 API
- v0.18.12-beta
- 修改:自动调整大小的 RenderTarget 资源在窗口大小改变后,内部的纹理资源不再重新创建,而是调整已有纹理的大小,以便
lstg.LoadImage
创建的图片精灵依然能正确引用 RenderTarget 资源
- 修改:自动调整大小的 RenderTarget 资源在窗口大小改变后,内部的纹理资源不再重新创建,而是调整已有纹理的大小,以便
- v0.18.11-beta
- 更新第三方库,修复一些问题
- 修复:
lstg.PostEffect
无法正确设置多个纹理 - 修复:使用
[".render"] = true
开启渲染对象特性后,通过_r
、_g
、_b
、_a
访问或设置颜色分量时,引擎无报错崩溃 - 新增:d3dcompiler_47.dll 文件,让引擎能运行在早期 Windows 7 SP1 和早期 Windows 8 系统上,它们均缺少该 DLL 文件
- 移除:实验性 API
lstg.SetTextureSamplerState
不再支持旧写法(LuaSTG Ex Plus 的全局采样器状态设置) - 修改:
lstg.LoadMusic
在加载前先判断音乐资源是否存在,如果存在,则跳过加载,并停止播放
其他更新:
- 更新了附带的样例代码
- 更新了 doc 文件夹下的文档
LuaSTG Sub v0.18.10-beta
This is an emergency fix update
WARNING: This update contains breaking changes
- v0.18.9-beta
- Change: Lua standard library function
print
now writes to engine.log and prints to log window (if log window is enabled) - Add:
string.pack
,string.unpack
,string.packsize
functions from Lua 5.4 - Fixed: application crashes without error report when
lstg.LoadFX
fails - Change: calling
lstg.ChangeVideoMode
no longer moves the mouse pointer to the bottom right corner of the window - Fixed:
lstg.SetSplash
does not take effect immediately, need to move the mouse pointer slightly to trigger the update - Change: when a font has more than one glyph cache texture, it will divided text rendering into multiple stages for batch rendering to avoid frequent texture switching
- Fixed: text renderer fails to render anything when rendering fonts that don't provide "space" character
- Change: Lua standard library function
- v0.18.10-beta
- Fixed: music A/B loop could not be accurately connected
- Change: modifying the
group
property of the GameObject during collision detection will be strictly checked. If this modification will cause exception to the collision detection list, an error will be reported
这是一个紧急修复更新
警告:本次更新包含破坏性更改
- v0.18.9-beta
- 修改:Lua 标准库函数
print
现在会写入 engine.log 和打印到日志窗口(如果开启了日志窗口) - 新增:来自 Lua 5.4 的
string.pack
、string.unpack
、string.packsize
函数 - 修复:
lstg.LoadFX
失败时游戏闪退 - 修改:调用
lstg.ChangeVideoMode
时不再将鼠标指针移动到窗口右下角 - 修复:
lstg.SetSplash
无法立即生效,需要稍微移动鼠标指针触发更新 - 修改:当一个字体的字形缓存贴图超过一张时,分成多个阶段合批渲染,避免频繁切换纹理
- 修复:文本渲染器在渲染不提供“空格”字符的字体时,无法渲染出任何内容
- 修改:Lua 标准库函数
- v0.18.10-beta
- 修复:背景音乐循环区间无法准确衔接
- 修改:在碰撞检测时修改游戏对象的
group
属性会进行严格检查,如果这个修改会导致碰撞检测链表损坏,则报错
LuaSTG Sub v0.18.8-beta
This is an emergency fix update
WARNING: This update contains breaking changes
- v0.18.8-beta
- Fixed: keyboard and mouse input blocked when the program is under heavy load
- Add: when loading files from the Windows file system, additionally check whether the file path case matches, if not the load fails
这是一个紧急修复更新
警告:本次更新包含破坏性更改
- v0.18.8-beta
- 修复:当程序处于高负载下时,键盘和鼠标输入被阻塞
- 新增:从 Windows 文件系统加载文件时,额外检查文件路径大小写是否匹配,如果不匹配则加载失败
LuaSTG Sub v0.18.7-beta
- v0.17.4-beta
- Fixed: large number of duplicate vertex calculations and copy operations occur in curve laser rendering
- Add: function overloading
lstg.BentLaser:Update(x, y, rot, node_count, width)
- Add: new function
lstg.BentLaser:RenderCollider(color)
- Fixed: display mode not correctly matched when launching in exclusive fullscreen
- v0.18.0-beta
- Fixed:
lstg.ParticleSystem:Update(delta, x, y)
delta parameter not being applied correctly - Other foundational changes (see git commit history)
- Fixed:
- v0.18.1-beta
- Add:
random
lua extension library, contains multiple families/types of random number generators (see the documentation in the doc folder for details) - Change:
lstg.ParticleSystem
now using RNGxoshiro128+
- Add:
- 0.18.2-beta
- Add: support for DDS texture files, using BC3 (DXT5) format can reduce the size of the video memory required by the texture to 1/4
- 0.18.3-beta
- Fixed: the color space was incorrectly handled when loading some png images, resulting in a darker rendered image
- Add:
utf8
lua standard library (from lua 5.4)
- 0.18.4-beta
- Add: experimental class
lstg.Mesh
and experimental functionlstg.RenderMesh
(see the documentation in the doc folder for details)
- Add: experimental class
- 0.18.5-beta
- Add: experimental function
lstg.SetTextureSamplerState
(see the documentation in the doc folder for details)
- Add: experimental function
- 0.18.6-beta
- Fixed: character
\n
causes rendering of text content to fail - Fixed: previous version of the modification caused the null pointer to crash the game
- Fixed:
lstg.PostEffect
incorrectly applies the pixel shader causing the rendering to fail
- Fixed: character
- 0.18.7-beta
- Fixed: in some versions of Windows system (the current known version is Windows 7), the message loop is blocked unexpectedly, resulting in failure to obtain keyboard and mouse input
- v0.17.4-beta
- 修复:曲线激光渲染中出现大量重复顶点计算和复制操作,导致性能低下
- 新增:函数重载
lstg.BentLaser:Update(x, y, rot, node_count, width)
- 新增:函数
lstg.BentLaser:RenderCollider(color)
- 修复:以独占全屏启动时显示模式没有正确匹配
- v0.18.0-beta
- 修复:
lstg.ParticleSystem:Update(delta, x, y)
没有正确处理 delta 参数 - 其他底层更改(参见 git 提交历史)
- 修复:
- v0.18.1-beta
- 新增:
random
Lua 扩展库,包含多个类型/家族的随机数生成器(详情请查看 doc 文件夹下的文档) - 修改:
lstg.ParticleSystem
现在使用随机数生成器xoshiro128+
- 新增:
- 0.18.2-beta
- 新增:支持 DDS 贴图文件,使用 BC3(DXT5)格式可以将贴图所需显存的大小减少到1/4
- 0.18.3-beta
- 修复:加载某些 png 图片时没有正确处理颜色空间,导致渲染出来的画面偏暗
- 新增:
utf8
Lua 标准库(从 Lua 5.4 迁移过来)
- 0.18.4-beta
- 新增:实验性类
lstg.Mesh
和实验性函数lstg.RenderMesh
(详情请查看 doc 文件夹下的文档)
- 新增:实验性类
- 0.18.5-beta
- 新增:实验性函数
lstg.SetTextureSamplerState
(详情请查看 doc 文件夹下的文档)
- 新增:实验性函数
- 0.18.6-beta
- 修复:字符
\n
导致文本无法正常渲染出来 - 修复:上一个版本的修改导致空指针让程序崩溃
- 修复:
lstg.PostEffect
没有正确设置像素着色器导致内容无法正常渲染
- 修复:字符
- 0.18.7-beta
- 修复:在某些版本的 Windows 系统(目前已知版本为 Windows 7)中,消息循环被意外阻塞,导致无法获取键盘和鼠标输入
LuaSTG Sub v0.17.3-beta
WARNING: More strict verification codes have been added in this update. If you find that the lua script reports more errors, it means that the previously written lua code has undefined behavior. Please try to fix them, it's not a problem with the engine.
- Fixed:
lstg.SetBound
converts arguments to integers - Change: Strengthen the verification of the validity of the game object, and an error will be reported immediately when accessing the game object that has been Del/Kill
- Fixed: Enhanced detection of undefined behavior when rendering, trying to modify the
layer
property in the game object'srender
callback will immediately report an error - Fixed: GameObject's
_speed
and_angle
properties used float calculations resulting in a large loss of precision (LuaJIT using double as number type) - Add: Support for Windows 10 20H2+, Windows 11 dark system theme, currently only affects the window title bar
- Add: GameObjects can access bound particle effect instances through the property
rc
(needs to be explicitly enabled, please check the documentation in the doc folder for details) - Add:
lstg.ParticleSystemData
is used to create a instance of ParticleSystem object (see the documentation in the doc folder for details) - Add:
xinput.isConnected
is used to determine whether the specified controller is connected - Change: XInput no longer receive input when the window focus is not obtained, preventing misoperation
- Change: Enhanced the detection of undefined behavior during rendering, the
lstg.SetPerspective
method strictly requires0 < znear < zfar
, otherwise an error will be reported immediately - Fixed: The error report popup window is sometimes covered by the window
- Fixed: DPI awareness cannot be turned on when running on Windows 10 1607
- Change: The WAV library is replaced with dr_libs, which improves the compatibility of WAV files
- Add: support for FLAC audio files
Engine foundation changes:
- no longer use
fancy2d
In this update, a lot of code was rewritten, refactored, reorganized, and a lot of code was deprecated, removed. The reason for making so many changes is that LuaSTG Plus/Ex Plus/Sub has too much technical debt and left too much legacy code, and I wrote a lot very hacky code when migrating from Direct3D 9 to Direct3D 11. For the healthy growth of LuaSTG Sub, I spent a month reorganizing the code.
These changes may not be felt, but because the foundation C++ API has been redesigned, the performance will be slightly improved, and the code will be easier to maintain.
警告:本次更新中加入了更多严格的验证代码,如果发现 lua 脚本报错更多了,说明是以前编写的 lua 代码中有未定义行为。请尝试修复它们,这不是引擎的问题。
- 修复:
lstg.SetBound
将传递的参数转换为整数 - 修改:加强了对游戏对象有效性的验证,访问已被回收的游戏对象会立即报错
- 修改:加强了对渲染时未定义行为的检测,试图在游戏对象的
render
回调函数中修改layer
属性时会立即报错 - 修复:游戏对象的
_speed
和_angle
属性使用 float 计算导致精度大量损失(LuaJIT 中浮点数是 double) - 新增:对 Windows 10 20H2+、Windows 11 暗色系统主题的支持,目前仅影响窗口标题栏
- 新增:游戏对象可以通过属性
rc
访问绑定的粒子特效实例(需要显式开启该功能,详情请查看 doc 文件夹下的文档) - 新增:
lstg.ParticleSystemData
用于创建粒子特效对象(详情请查看 doc 文件夹下的文档) - 新增:
xinput.isConnected
用于判断指定手柄是否已连接 - 修改:XInput 不再在未获得窗口焦点时获取输入,防止误操作
- 修改:加强了对渲染时未定义行为的检测,
lstg.SetPerspective
方法严格要求0 < znear < zfar
,否则立即报错 - 修复:报错弹窗有时候会被窗口覆盖的问题
- 修复:运行于 Windows 10 1607 时 DPI 感知无法开启
- 修改:WAV 库更换为 dr_libs,提高对 WAV 文件的兼容性
- 新增:对 FLAC 音频文件的支持
引擎底层修改:
- 不再使用
fancy2d
在这次更新中,大量代码被重写、重构、重新组织,也有大量代码被废弃、移除。做出如此多的修改的原因是,LuaSTG Plus/Ex Plus/Sub 欠下了太多的技术债和留下了太多的历史遗留代码,以及我在从 Direct3D 9 迁移到 Direct3D 11 时编写了很多很 Hack 的代码。为了 LuaSTG Sub 的健康成长,我使用一个月时间重新整理了代码。
这些修改也许无法感受到,但是由于底层 C++ API 被重新设计,性能会有些许改善,而且代码维护起来更加轻松了。
LuaSTG Sub v0.16.0-beta
WARNING: Breaking Changes
Since the io
library and os
library are changed to use utf-8, the library functions mentioned below should be used with attention to encoding
Changes:
- Change: Lua standard library
io
library andos
library use utf-8 insteadio.open
,io.popen
os.execute
,os.remove
,os.rename
,os.tmpname
,os.getenv
- Add: new function
lstg.FileManager.DirectoryExist(path:string, also_check_archive:boolean)
used to determine whether a directory exists - Add: function overloading
lstg.FileManager.FileExist(filepath:string, also_check_archive:boolean)
replacelstg.FileManager.FileExistEx
- Deprecated: function
lstg.FileManager.FileExistEx
(still available, will be removed in the future) - Add: function overloading
lstg.FileManager.EnumFiles(searchpath:string, extend:string|nil, also_enum_archives:boolean)
replacelstg.FileManager.EnumFilesEx
- Deprecated: function
lstg.FileManager.EnumFiles
(still available, will be removed in the future) - Fix: The engine crashes randomly when enum files or check whether a file exists
LuaSTG aex+ updated: LuaSTG aex+, see "更新日志.txt"
破坏性更改警告:
由于 io
库和 os
库改为使用 utf-8,下方提到的库函数在使用的时候要留意编码
更新日志:
- 修改:Lua 标准库
io
库和os
库改为使用 utf-8io.open
,io.popen
os.execute
,os.remove
,os.rename
,os.tmpname
,os.getenv
- 新增:函数
lstg.FileManager.DirectoryExist(path:string, also_check_archive:boolean)
用于判断文件夹是否存在 - 新增:函数重载
lstg.FileManager.FileExist(filepath:string, also_check_archive:boolean)
用于替代lstg.FileManager.FileExistEx
- 废弃:函数
lstg.FileManager.FileExistEx
(仍然可用,在未来会删除) - 新增:函数重载
lstg.FileManager.EnumFiles(searchpath:string, extend:string|nil, also_enum_archives:boolean)
用于替代lstg.FileManager.EnumFilesEx
- 废弃:函数
lstg.FileManager.EnumFiles
(仍然可用,在未来会删除) - 修复:判断文件是否存在、枚举文件时引擎随机崩溃
LuaSTG aex+ 已更新:LuaSTG aex+,详见“更新日志.txt”