Skip to content

Releases: LiGameAcademy/godot_core_system

[0.0.4]

03 Apr 03:25

Choose a tag to compare

[0.0.4]

发行说明对应上游 main 在近期合并(含 dev 合入 #56 及后续独立 PR)。面向 Godot 4.5+ 时请注意破坏性变更。

⚠️ 破坏性变更 (Breaking)

  • 日志类型重命名(#52Logger 更名为 CoreLogger,避免与引擎原生 Logger 类冲突。项目内所有 CoreSystem.logger 及类型标注需同步替换;详见仓库说明与迁移提示。

✨ 新增 (Added)

  • 状态机(#14StateMachineManager 新增 transition_state_machine(id, state_id, msg),支持在未持有 BaseStateMachine 引用时按注册 ID 切换;未启动时等价于 start_state_machine。示例见 examples/state_machine/example.gd#57)。
  • 事件总线(#48EventBus 新增 subscribe_unique_script:订阅前移除同一 Script 上其它实例对同一事件的连接,适用于「同脚本多实例只保留最后一次订阅」。示例见 examples/event_bus_demo/event_bus_demo.gd#60)。
  • 输入状态(#50InputState 支持 边沿防抖edge_debounce_ms / ActionState.updatedebounce_ms)。新增示例:examples/input_demo/edge_debounce_issue50/(无需机械键盘即可验收;#59)。
  • 存档(#51 / #53SaveManagersave_demo 增强(含文档与场景调整),便于演示与验证。
  • 合并自 dev#56:包含但不限于——线程池与线程工具封装、存档模块重构与策略化 IO、配置管理器与自动保存相关信号、标签系统修复与命名调整、多线程/随机池/文档与示例等(详见下方「变更」与「修复」)。

🔄 变更 (Changed)

  • 状态机StateMachineManager 注册项支持 run_update / run_physics / run_input 驱动开关(默认全开);set_registration_drive_flagsBaseStateMachineBaseState 的切换语义整理为 transition_local,与 transition_to 委托关系明确;弃用 switch / switch_to 为别名(见 docs/changelogs/unreleased.md 及合并说明)。
  • 场景系统(#55:异步切换场景改用 load_resource,减少首次加载时 ResourceManager 相关误报。
  • IO(#31 / #54:gzip 解压按 ISIZE 校验与高压比重试,提高健壮性。
  • 随机:加权随机池重构与性能优化(#42 / #43)、文档与示例。
  • README:随仓库更新。

🗑️ 移除 (Removed)

  • (无单独列出之大规模删除;若从极旧版本升级,请以 0.0.3 与本次合并说明为准。)

🛠️ 修复 (Fixed)

  • 配置系统(#40 / #58ConfigManager.get_value段/键不存在 且默认值为 null 时,不再将 null 直接传给 Godot ConfigFile.get_value,避免 Godot 4 报错;get_section / set_section 路径一致化。
  • 场景切换(#44 相关)change_scene_async(..., push_to_stack: true) 等时序下,使用 remove_child.call_deferred 等,避免父节点在添加/移除子节点过程中同步 remove_child 报错。
  • 标签系统owner 相关 bug 修复。
  • 音频:循环播放无效问题修复(#29)。
  • SceneManager:与 ResourceManager、场景栈相关的时序与错误处理(含 #32 等)。

相关 PR / Issue 索引(便于追溯)

主题 PR / Issue
devmain 大合并 #56
状态机 transition_state_machine #14, #57
Config nil 默认 #40, #58
Input 边沿防抖示例 #50, #59
EventBus subscribe_unique_script 示例 #48, #60
场景 load_resource #55
gzip 解压 #31, #54
存档示例 #51, #53
CoreLogger 更名 #52

本文档依据 origin/main 提交历史整理;若需与某一 tag 精确对齐,可在发布时补充「自 tag v0.0.3 起」等说明。

0.0.3

08 May 06:13

Choose a tag to compare

[0.0.3]

✨ 新增 (Added)

  • 线程实用工具集 (Threading Utilities):
    • 引入 SingleThreadModuleThread,简化后台任务和多线程管理。
    • 提供线程安全的任务提交和信号反馈。
  • 加权随机选择器 (RandomPicker): 新增工具类,方便实现基于权重的随机选择。

🔄 变更 (Changed)

  • 异步 IO 管理器 (AsyncIOManager): 重构为更灵活的工具类 (RefCounted),不再是单例模块,解耦其使用。
  • 配置系统 (ConfigManager):
    • 核心重构: 切换为使用 Godot 内置的 ConfigFile 进行同步读写 .cfg 文件,移除异步操作和 AsyncIOManager 依赖。
    • 默认值处理: 框架不再加载硬编码默认值,get_value 需提供默认参数,reset_config 清空内存并发送信号,由游戏项目负责应用默认值。
    • API 简化: 利用 ConfigFile 的原生类型支持简化了 API。
  • 存档系统 (SaveManager):
    • 核心重构: 采用策略模式 (Strategy Pattern),支持多种存档格式(Resource, JSON, Binary)。
    • 异步: 全面使用 async/await 进行文件操作。
    • 功能增强: 改进了配置管理、错误处理、接口统一性,并添加了加密支持。
  • 事件总线 (EventBus): 重构为使用 Godot 内置信号系统,更符合原生习惯。
  • 场景系统 (SceneSystem): 重构以更贴近 Godot 原生的场景管理方式。
  • 日志系统 (Logger): 添加颜色标识,使日志输出更清晰。
  • 开发流程: 创建 release 分支用于发布,主开发流程移至 dev 分支。

🗑️ 移除 (Removed)

  • release 分支不再包含 test 目录。
  • 移除了旧的、单一格式的存档系统实现。

🛠️ 修复 (Fixed)

  • 重构路径处理以适应不同安装方式 (#28)。
  • 修复 2D 场景切换后相机缩放未更新的问题 (#28)。
  • 修复部分资源 UID 问题 (#28)。

🔒 安全 (Security)

  • 为存档系统添加了文件加密支持(主要通过 Binary 策略)。
  • (规划中) 添加存档数据验证机制

0.0.2: Merge pull request #26 from LiGameAcademy/dev

05 Apr 03:40
092a14e

Choose a tag to compare

新增

  • 新增 FrameSplitter 工具类,用于将耗时操作分散到多帧执行,避免卡顿
    • 支持数组、范围、迭代器和自定义处理模式
    • 提供进度反馈和完成信号
    • 动态调整每帧处理量
    • 详细的使用文档和示例

变更

  • 重构 InputManager 输入系统
    • 添加输入缓冲系统,提升游戏手感
    • 集成 ConfigManager 进行输入配置管理
    • 添加输入重映射功能和事件通知
    • 优化虚拟轴和动作处理
    • 添加输入系统配置管理
    • 网络输入系统改进
  • 重构SceneSystem场景系统
    • 更接近Godot原生场景系统的使用体验

0.0.1

09 Mar 13:41

Choose a tag to compare

0.0.1 Pre-release
Pre-release
更新discord链接