Skip to content

Releases: Legacy-LuaSTG-Engine/LuaSTG-Sub

LuaSTG Sub v0.21.2

18 Aug 09:52
Compare
Choose a tag to compare

Engine updates:

  • v0.21.2
    • graphics/rendering
      Fix: fail to load gltf 2.0 model from resources pack (zip)

引擎更新:

  • v0.21.2
    • 图形/渲染
      • 修复:无法从资源包(zip)加载gltf模型

VirusTotal scan result:
VirusTotal 扫描结果:
https://www.virustotal.com/gui/file/72dc5e7cd847c67771ab01e3577284c43f45ec7a0fc28672532a68db6328ba0a

LuaSTG Sub v0.21.1-beta

31 Jul 15:02
Compare
Choose a tag to compare
Pre-release

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

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

30 Jul 04:15
Compare
Choose a tag to compare
Pre-release

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
  • 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 扫描结果:

www virustotal com_gui_file_1b89ba01929fb3dc4213c5f794cf48c5837e2a567b883959b4c1646fffce6ffe_detection

LuaSTG Sub v0.20.1

25 Jan 13:06
Compare
Choose a tag to compare

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:
        1. Windows 10 1709+
        1. 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

07 Sep 15:18
Compare
Choose a tag to compare

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 after FrameFunc, reducing the pressure of sound effect playback
    • Add: DirectWrite platform extension library added new function DirectWrite.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 and BottomToTop in DirectWrite.ReadingDirection are corrected to LeftToRight and RightToLeft
    • 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 methods SetStrikethrough, SetUnderline
  • 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
  • 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 中的枚举值 TopToBottomBottomToTop 更正为 LeftToRightRightToLeft
    • 修改:DirectWrite 平台拓展库绘制描边字体时,不再修改文本布局,而是根据文本布局的大小,向外拓展画布尺寸,并生成相应大小纹理
    • 新增:DirectWrite.TextLayout 对象方法 SetStrikethroughSetUnderline
  • v0.19.0
    • 引擎版本号去除“beta”后缀
    • 新增:DirectWrite 平台拓展库,用于排版、光栅化文本,并创建纹理资源用于渲染(详情请查看 doc 文件夹下的文档)
    • 新增:支持 QOI 图片格式,一种新兴的快速无损图片编解码压缩格式
    • 新增:lstg.SetTextureSamplerState,其曾为实验性 API,现转为正式 API
  • v0.18.12-beta
    • 修改:自动调整大小的 RenderTarget 资源在窗口大小改变后,内部的纹理资源不再重新创建,而是调整已有纹理的大小,以便 lstg.LoadImage 创建的图片精灵依然能正确引用 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

30 Jul 12:44
Compare
Choose a tag to compare

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
  • 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.packstring.unpackstring.packsize 函数
    • 修复:lstg.LoadFX 失败时游戏闪退
    • 修改:调用 lstg.ChangeVideoMode 时不再将鼠标指针移动到窗口右下角
    • 修复:lstg.SetSplash 无法立即生效,需要稍微移动鼠标指针触发更新
    • 修改:当一个字体的字形缓存贴图超过一张时,分成多个阶段合批渲染,避免频繁切换纹理
    • 修复:文本渲染器在渲染不提供“空格”字符的字体时,无法渲染出任何内容
  • v0.18.10-beta
    • 修复:背景音乐循环区间无法准确衔接
    • 修改:在碰撞检测时修改游戏对象的 group 属性会进行严格检查,如果这个修改会导致碰撞检测链表损坏,则报错

LuaSTG Sub v0.18.8-beta

23 Jul 07:42
Compare
Choose a tag to compare

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

17 Jul 10:36
Compare
Choose a tag to compare
  • 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)
  • 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 RNG xoshiro128+
  • 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 function lstg.RenderMesh (see the documentation in the doc folder for details)
  • 0.18.5-beta
    • Add: experimental function lstg.SetTextureSamplerState (see the documentation in the doc folder for details)
  • 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
  • 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

13 Jun 07:53
Compare
Choose a tag to compare

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's render 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 requires 0 < 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

08 May 09:29
Compare
Choose a tag to compare

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 and os library use utf-8 instead
    • io.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) replace lstg.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) replace lstg.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-8
    • io.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”