-
LuaSTG Sub v0.21.21(文本输入和输入法支持分支)
- 游戏对象
- 修复:游戏对象管理器判断碰撞组索引范围使用了错误的条件
- 窗口
- 新增:文本输入拓展
lstg.Window.TextInputExtension
用于接收窗口文本输入事件 - 新增:输入法支持拓展
lstg.Window.InputMethodExtension
用于动态开启或关闭输入法支持 - 修改:窗口居中时避开任务栏
- 新增:文本输入拓展
- 游戏对象
-
LuaSTG Sub v0.21.17/v0.21.18/v0.21.19/v0.21.20(增强的引擎配置文件分支)
- 窗口
- 修复:修复每次居中窗口时都会出现 24 字节的内存泄漏的问题
- 调试
- 修改:内存使用量调试窗口补充当前进程缺页中断数量、工作集大小等指标
- 修改:改进内存使用量调试窗口显示内容的方式,划分为多个可折叠的栏目
- 引擎基础
- 修改:配置文件
config.json
支持更丰富的配置,用于替代launch
脚本,请阅读doc/specification/引擎配置文件.md
查看详细内容
- 修改:配置文件
- 窗口
-
LuaSTG Sub v0.21.16
- 网络
- 新增:实验性 HTTP 客户端库
http
和类http.Request
- 新增:实验性 HTTP 客户端库
- Lua 拓展库
- 修改:
luasocket
网络库改为可选功能,默认情况下禁用
- 修改:
- 网络
-
LuaSTG Sub v0.21.15
- 窗口
- 修复:
lstg.Window:getClientAreaSize
无法读取当前窗口尺寸的问题
- 修复:
- 窗口
-
LuaSTG Sub v0.21.14
- 音频
- 修复:音效在调用
lstg.PlaySound
之后,lstg.GetSoundState
读取音效状态只能得到"playing"
- 修复:音效在调用
- 窗口
- 修复:引擎启动时窗口会极其短暂地出现在显示器左上角
- 音频
-
LuaSTG Sub v0.21.13 (第二代游戏循环更新顺序分支)
- 游戏对象:
- 修复:超级暂停计时器的更新时机,从
lstg.ObjFrame
移动到lstg.AfterFrame
中(仅影响“第二代游戏循环更新顺序”)
- 修复:超级暂停计时器的更新时机,从
- 音频:
- 修改:
lstg.PlaySound
的音量参数改为可选,不填写音量时,默认为 1.0
- 修改:
- 游戏对象:
-
LuaSTG Sub v0.21.12 (第二代游戏循环更新顺序分支)
- 游戏对象:
- 新增:为
lstg.BoundCheck
添加新重载函数,可以接收一个版本号 2,用于切换到“第二代游戏循环更新顺序”,作为“第二代游戏循环更新顺序”的一部分,该重载版本默认采用先完成检测,后执行lstg.Del
的逻辑 - 废弃:在“第二代游戏循环更新顺序”中,
lstg.UpdateXY
已经失去作用,目前保留用于兼容旧版本THlib
,未来该方法将被彻底移除
- 新增:为
- 游戏对象:
-
LuaSTG Sub v0.21.11 (第二代游戏循环更新顺序分支)
- 游戏对象:
- 新增:为
lstg.ObjFrame
添加新重载函数,可以接收一个版本号 2,用于切换到“第二代游戏循环更新顺序”,作为“第二代游戏循环更新顺序”的一部分,该重载版本默认采用先执行frame
回调函数,后更新运动的逻辑,并将navi
开启后自动更新rot
的逻辑从旧版本的lstg.UpdateXY
移动到了粒子系统更新前 - 新增:为
lstg.AfterFrame
添加新的重载函数,可以接收一个版本号 2,用于切换到“第二代游戏循环更新顺序”,作为“第二代游戏循环更新顺序”的一部分,该重载版本将dx
、dy
的更新从旧版本的lstg.UpdateXY
移动到了计时器更新前
- 新增:为
- 游戏对象:
-
LuaSTG Sub v0.21.10 (第二代游戏循环更新顺序分支)
- 游戏对象:
- 新增:为
lstg.CollisionCheck
添加新的重载函数,可以接收一个二维数组参数,用于一次性完成所有碰撞组对检测,作为“第二代游戏循环更新顺序”的一部分,该重载版本默认采用先完成检测,后执行colli
回调函数的逻辑 - 修复:曲线激光的
BoundCheck
方法出现意外的精度损失的问题
- 新增:为
- 文件系统:
- 更正:读取文件时,如果文件路径存在大小写不一致的部分,错误消息显示“存在大小写一致的部分”,已更正为“存在大小写不一致的部分”
- 游戏对象:
-
LuaSTG Sub v0.21.9
- 窗口
- 修复:窗口创建时,显示位置偏下的问题
- 窗口
-
LuaSTG Sub v0.21.8 (窗口与显示分支)
- 窗口
- 新增:平台拓展方法
lstg.Window.Windows11Extension:setTitleBarAutoHidePreference
,用于在 Windows 11 上开启自动隐藏标题栏功能 - 修改:自动隐藏标题栏功能默认关闭(由沉浸式窗口标题栏分支引入),如有需要请主动开启
- 新增:平台拓展方法
- 窗口
-
LuaSTG Sub v0.21.7 (窗口与显示分支)
- 图形/渲染
- 新增:交换链对象
lstg.SwapChain
,用于控制渲染分辨率、缩放方式、垂直同步等
- 新增:交换链对象
- 图形/渲染
-
LuaSTG Sub v0.21.6 (窗口与显示分支)
- 窗口
- 修复:启用自动隐藏窗口标题栏功能时,拖动窗口后标题栏可能无法自动隐藏
- 新增:显示对象
lstg.Display
,用于枚举显示、获取显示信息 - 新增:窗口对象
lstg.Window
,用于控制窗口行为 - 移除:实验性API
lstg.ListMonitor
,相关功能已转移到lstg.Display
- 移除:实验性API
lstg.SetWindowCornerPreference
,相关功能已转移到lstg.Window
- 窗口
-
LuaSTG Sub v0.21.5 (沉浸式窗口标题栏分支)
- 窗口
- 移除:自动隐藏窗口标题栏功能不再支持 Windows 10
- 修复:启用自动隐藏窗口标题栏功能时,若窗口尺寸过小,会导致程序崩溃
- 窗口
-
LuaSTG Sub v0.21.4 (沉浸式窗口标题栏分支)
- 窗口
- 修复:自动隐藏窗口标题栏功能在桌面合成引擎模式下出现渲染错误
- Lua 虚拟机
- 修改:同步 Lua 5.4.7 的
utf8
库逻辑 - 修复:
utf8.char
方法无法转换得到正确的字符串
- 修改:同步 Lua 5.4.7 的
- 窗口
-
LuaSTG Sub v0.21.3 (沉浸式窗口标题栏分支)
- 窗口
- 新增:在 Windows 10 1809+、Windows 11 中自动隐藏窗口标题栏
- 窗口
-
LuaSTG Sub v0.21.2
- 图形/渲染
- 修复:gltf 2.0 模型加载时未通过引擎文件系统加载,导致从自定义搜索路径、压缩包加载失败
- 图形/渲染
-
LuaSTG Sub v0.21.1
- 图形/渲染
- 修改:带有半透明纹理的 gltf 2.0 模型在渲染时使用纱窗(screen door)效果模拟半透明
- 修复:渲染具有顶点色的 gltf 2.0 模型时,顶点色错误
- 图形/渲染
-
LuaSTG Sub v0.21.0
- 引擎基础
- 修改:默认编译为 x86 64位版本,32位版本仍然可以编译,但将在未来停止支持
- 图形/渲染
- 修复:部分 gltf 2.0 模型渲染时顶点、纹理等坐标完全错误的问题
- 修复:alpha+bal 渲染模式失效的问题
- 引擎基础
-
LuaSTG Sub v0.20.16
- 音频
- 修复:修复音频文件成功加载但仍然报告加载失败的问题
- 音频
-
LuaSTG Sub v0.20.15
- 引擎基础
- 更新:更新
cjson
库,修复已知高危漏洞
- 更新:更新
- 窗口
- 修复:修复在多个显示器的设备上,窗口会出现在意料之外的位置的问题
- 引擎基础
-
LuaSTG Sub v0.20.14
- 引擎基础
- 修复:修复
lstg.DoFile
在协同程序上执行时可能出现会意料之外的问题,例如出错时报错信息格式不正确、执行成功时返回值不正确等 - 修改:现在
lstg.DoFile
的行为与dofile
一致,且不再有“严禁在协同程序中调用”的限制
- 修复:修复
- Lua 虚拟机
- 修复:修复标准库
io
库和os
库部分函数可能存在的内存泄漏
- 修复:修复标准库
- 引擎基础
-
LuaSTG Sub v0.20.13
- 引擎基础
- 新增:
config.json
新增配置项persistent_log_file_max_count
用于限制持久日志文件最大数量,避免日志文件越来越多
- 新增:
- 窗口
- 修改:不再默认追踪抢占引擎窗口焦点的窗口,该功能涉及个人隐私,应该交给用户手动开启
- 新增:
config.json
新增配置项debug_track_window_focus
用于开启追踪抢占引擎窗口焦点的窗口的调试功能,可以抓出导致独占全屏失效、按键输入没反应的流氓应用
- 游戏对象
- 移除:移除多个游戏对象上粒子系统相关 API 的无用警告信息,避免日志文件被写入大量无用内容,涉及的 API:
lstg.ParticleStop
lstg.ParticleFire
lstg.ParticleGetn
lstg.ParticleGetEmission
lstg.ParticleSetEmission
- 移除:移除多个游戏对象上粒子系统相关 API 的无用警告信息,避免日志文件被写入大量无用内容,涉及的 API:
- 引擎基础
-
LuaSTG Sub v0.20.12
- 引擎基础
- 修复:修复引擎关闭时可能会访问到空指针导致引擎崩溃,且没有报错弹窗或日志记录
- 修复:修复通过
error()
、error(nil)
或类似方式抛出内容为nil
的错误时导致引擎崩溃,且没有报错弹窗或日志记录
- 引擎基础
-
LuaSTG Sub v0.20.11
- 引擎基础
- 新增:新增配置项用于禁止程序多开,用于防止出现文件读写冲突导致存档等文件无法写入或者因为同时写入而损坏,具体使用方法请阅读
doc/specification/引擎配置文件.md
- 新增:新增配置项用于禁止程序多开,用于防止出现文件读写冲突导致存档等文件无法写入或者因为同时写入而损坏,具体使用方法请阅读
- 游戏对象
- 新增:曲线激光对象新增
CollisionCheckWithWidth
方法,用于增强CollisionCheckWidth
的功能 - 废弃:曲线激光对象
CollisionCheckWidth
方法进入废弃状态,未来的版本更新中将会移除
- 新增:曲线激光对象新增
- 文档
- 修正:修正 API 文档中曲线激光对象
CollisionCheckWidth
方法的参数顺序
- 修正:修正 API 文档中曲线激光对象
- 引擎基础
-
LuaSTG Sub v0.20.10
- 资源管理
- 新增:初步添加实验性 API 集,资源管理器 API,资源集、资源对象化,具体请看 doc/experiment 文件夹
- 图形/渲染
- 修改:恢复
lstg.PostEffect
LuaSTG Plus 版的函数签名,LuaSTG Sub 版的(脑残)函数签名已废弃
- 修改:恢复
- Lua 拓展库
- 新增:为
random
库中的随机数发生器添加clone
、serialize
、deserialize
方法,用于复制、持久化 - 移除:移除
random
库中的sfc
和jsf
家族随机数发生器
- 新增:为
- 资源管理
-
LuaSTG Sub v0.20.9
- 引擎基础
- 更新:
dear-imgui
更新到 1.89.6
- 更新:
- 图形/渲染
- 修复:修复了
lstg.LoadTTF
加载矢量字体时,如果加载失败不会返回false
的问题 - 修改:改进了对现代交换链模型、桌面合成引擎功能是否可用的判断方式,现在会通过
D3DKMT
系列 API 获取更多设备功能信息并进行判断,以进一步提升设备兼容性
- 修复:修复了
- 引擎基础
-
LuaSTG Sub v0.20.8
- 引擎基础
- 新增:如果系统支持(Windows 10 1803+),将启用新的稳定帧率控制器,替代原有的限速帧率控制器(仅限制帧率,不进行补偿),新的帧率控制器的目标是补偿每帧的时间误差,尽可能让画面显示更稳定,减少画面抖动
- 图形/渲染
- 修复:有时候切换到别的窗口再回来,会出现掉帧、延迟升高等问题,现在理论上修复了(微软你就说这个是不是没修完的 bug 吧,老版本 Windows 10 就有的 bug,虽然说是在某个补丁中修复了,但是看起来 bug 还是能通过特殊方式触发)(微软:我修复了大部分帧延迟的问题,但是我保留了一部分,我觉得保留一部分特性才知道你用的是 Windows 10+)
- 引擎基础
-
LuaSTG Sub v0.20.7
- 资源管理
- 修改:使用性能、质量更高的
xxhash
库来计算资源名称 hash 值
- 修改:使用性能、质量更高的
- 游戏对象
- 移除:移除 LuaSTG Ex Plus 为游戏对象添加的
pause
和rmove
属性,这两个属性使用量及其稀少,但却容易误用并导致难以察觉的问题
- 移除:移除 LuaSTG Ex Plus 为游戏对象添加的
- Lua 拓展库
- 修复:修复
lfs
文件系统库中有一个未捕获的异常的问题
- 修复:修复
- 资源管理
-
LuaSTG Sub v0.20.6
- 引擎基础
- 更新:更新
luajit
库,现在luajit
支持捕获__gc
元方法的错误
- 更新:更新
- 图形/渲染
- 修改:现在程序启动时如果检测不到可用的显卡硬件,将会弹窗报错并显示明确的原因
- 修改:现在允许使用软件显示适配器(在没有显卡硬件的情况下)运行 LuaSTG Sub,需要指定
--allow-soft-adapter
命令行参数,需要注意的是软件显示适配器性能不足以流畅运行程序,仅用于开发、测试、临时或应急情况下使用 - 修改:当窗口和画布的宽度或高度相等,且窗口尺寸大于或等于画布尺寸时,使用速度更快的直接复制而不是常规渲染来显示画面
- Lua 拓展库
- 新增:新增
luasocket
网络库,需要注意的是仅包含socket.core
模块,lua 脚本部分请从luasocket
官方仓库获取
- 新增:新增
- 引擎基础
-
LuaSTG Sub v0.20.5
- 平台
- 修改:现在要求 Windows 7 操作系统必须安装
KB2533623
补丁(或者后继替代该补丁的其他补丁)
- 修改:现在要求 Windows 7 操作系统必须安装
- 图形/渲染
- 修改:内置的基本渲染器所使用的着色器预编译为字节码,不再在运行时动态编译
- 修改:着色器编译库
d3dcompiler_47.dll
已改为按需加载,如果开发者没有用到模型渲染功能或者后处理特效功能,那么将不会加载
- 音频
- 修复:切换音频设备后,背景音乐不会继续播放
- Lua 虚拟机
- 修复:由于(未知的)历史原因,之前仅提供
?.lua
搜索路径,未默认提供?/init.lua
搜索路径,现在已补上缺失的?/init.lua
搜索路径
- 修复:由于(未知的)历史原因,之前仅提供
- 游戏对象
- 修复:修复了
dx
、dy
的值在游戏对象创建后第 1 帧可能计算不正确的未定义行为,触发的原因是第 0 帧生成时记录lastx
、lasty
在lstg.New
函数调用返回前,如果随后修改了游戏对象的x
、y
坐标,将导致记录的lastx
、lasty
并非期望的值 - 修复:修复了
lstg.BoxCheck
不包含边界的问题,并去除了意味不明的单参数重载
- 修复:修复了
- 平台
-
LuaSTG Sub v0.20.4
- 音频
- 修改:现在音频系统支持从错误中恢复,或者在无音频设备的计算机上以空白模式继续运行
- 音频
-
LuaSTG Sub v0.20.3
- 引擎基础
- 修改:现在可以通过配置文件来指定
log
日志文件的储存位置,详情请参考doc/specification/引擎配置文件.md
文档
- 修改:现在可以通过配置文件来指定
- 数学
- 修改:随机数发生器
lstg.Rand:Int
和lstg.Rand:Float
方法不再要求第二个参数大于或等于第一个参数
- 修改:随机数发生器
- 引擎基础
-
LuaSTG Sub v0.20.2
- 窗口
- 修复:修复了按住
Alt
键的同时切换到别的窗口后会导致引擎一直以为Alt
键处于按下状态
- 修复:修复了按住
- 图形/渲染
- 修复:修复了
lstg.Render
、lstg.RenderRect
、lstg.Render4V
、lstg.RenderAnimation
在找不到资源时不抛出错误的问题
- 修复:修复了
- 窗口
-
LuaSTG Sub v0.20.1
- 引擎基础
- 移除:不再使用
fancylib
库
- 移除:不再使用
- 引擎基础