Releases: BAKAOLC/STS2-RitsuLib
Releases · BAKAOLC/STS2-RitsuLib
0.4.8
- Adjusted synchronization behavior related to right-click to improve its reliability
- The
CanHandleRightClickLocalinterface remains unchanged and is explicitly noted as suitable only for quick filtering; it should not be used as the actual execution judgment basis in-game - Added
CanExecuteRightClickto the interface to provide accurate execution judgment; for judgments that depend on game state, this method should be used - For right-click bindings registered via
ModRightClickRegistry, the originalcanHandleparameter is now converted to an execution-side guard, corresponding toCanExecuteRightClick - For
ModRightClickRegistry, additional overloads have been added to support new registration functions for quick filtering and execution side determination
- The
- Adjusted the error message returned when the game fails to join in multiplayer; now provides a more accurate and detailed information panel to inform users of the reason for the failure
- Currently, the available error type information includes:
- Host explicitly refused to join: room is full, the run has already started, the joiner is not in the save's run, etc
- Game version mismatch
- Gameplay-affecting Mod list mismatch: missing on host, missing locally, or different versions for the same Mod ID
- Gameplay-affecting Mod order mismatch: both sides have the same Mod set but different load orders, displaying a host/local order comparison
- ModelDb hash mismatch: used to indicate inconsistent model registration results or registration order
- Network/Platform lobby errors before handshake: invalid join, timeout, connection failure, etc.
- If the host does not have RitsuLib installed, diagnostics will still be provided based on the vanilla join handshake game version, ModelDb hash, and ordered mod list, but full display of all the error type information mentioned above is not necessarily supported
- Currently, the available error type information includes:
- Now, when entering the Ancient scene via a call from the DevConsole, initialization is performed for the extra options generated when specifying the generation of relics, in order to fix a flaw in the vanilla game's generation logic in this situation
- Affected relic options include:
Dusty TomeArchaic ToothTouch of Orobas
- Mod relic options that use the same public
SetupForPlayer(Player)pattern are also processed
- Affected relic options include:
- 对右键相关的同步行为进行了一定调整,以提升其可靠性
- 接口处的
CanHandleRightClickLocal保持不变,并且明确提示为仅适合快速过滤,并不能作为游戏内实际的执行判定依据 - 接口处新增
CanExecuteRightClick以提供在执行前的准确判定,对于依赖于游戏状态的判定,应该使用该方法 - 对于使用
ModRightClickRegistry注册的右键绑定,原本的canHandle参数现在转为执行端 guard,对应CanExecuteRightClick - 对于
ModRightClickRegistry,现在补充了额外的重载以支持快速过滤和执行端判定的新注册函数
- 接口处的
- 对游戏在多人游戏加入时失败返回的错误信息进行了调整,现在会提供一个更加准确和详细的信息面板以提示用户加入失败的原因
- 目前能提供的错误类型信息包括:
- 主机明确拒绝加入:房间已满、跑局已经开始、加入者不在该存档跑局中等
- 游戏版本不匹配
- 影响玩法 Mod 列表不匹配:主机缺失、本地缺失、同一 Mod ID 版本不同
- 影响玩法 Mod 顺序不匹配:双方 Mod 集合一致但加载顺序不同,并显示主机/本地顺序对照
- ModelDb 哈希不匹配:用于提示模型注册结果或注册顺序不一致
- 握手前失败的网络/平台大厅错误:无效加入、超时、连接失败等
- 若主机没有安装 RitsuLib,仍会基于原版加入握手中的游戏版本、ModelDb 哈希与有序 Mod 列表提供诊断,但不一定支持完整的显示上面提到的所有错误类型信息
- 目前能提供的错误类型信息包括:
- 现在会对从 DevConsole 调用进入 Ancient 场景时,对指定生成遗物时额外生成的选项进行初始化,以解决原版游戏在这种情况下的生成逻辑缺陷
- 受影响的遗物选项包括:
Dusty TomeArchaic ToothTouch of Orobas
- 使用相同 public
SetupForPlayer(Player)模式的 Mod 遗物选项也会被处理
- 受影响的遗物选项包括:
What's Changed
- 更新文档 添加更新检测和调试日志查看器板块 by @LingkongSky in #49
Full Changelog: v0.4.7...v0.4.8
Development build (dev)
This is an automated development build from branch dev.
-
Development Version:
9999.0.0-dev.26969604831+546d1258(independent from stable release versions) -
Current Stable Line in repo:
0.4.8 -
Purpose: quick testing and integration validation.
-
Stability: may change frequently and can include breaking changes.
-
Install target: developers/testers only.
-
Repository: BAKAOLC/STS2-RitsuLib
-
Commit:
546d1258 -
Workflow Run: #26969604831
0.4.7
- Improve the logging service to include session id for easier identification of logs from new sessions
- The frontend page now has an option to automatically clear the logs when automatically connecting to a new session, which is enabled by default
- The fallback viewer page has been removed, and a 503 status code and a message to build and package Viewer/index.html will be returned if the Viewer/index.html cannot be found
- Now supports parsing logs with ANSI control sequences to ensure correct display in the editor environment
- It will parse the related text into a
RitsuTextSegmentlist to ensure safety, and use them to render the log text
- It will parse the related text into a
- Completely refactored the implementation of the Viewer page to achieve better display styles and interactive experiences, and correctly supports responsive layout to ensure display effects on various screen sizes
- The logging server now allows configuration to be opened to the local network to allow access to the logs on other devices
- Fix some potentially erroneous network synchronization packet processing logic
- Fix the initialization logic of the badge text to avoid outputting error information
- 优化了日志服务,现在它会携带 session id 以便于区分日志为新的会话
- 前端页面补充了一个默认为开的自动清空选项,以允许在自动连接到新会话时自动清空日志
- 删除了兜底的 Viewer 页面,并会在无法找到 Viewer/index.html 时直接返回 503 状态码并提示用户构建和打包 Viewer/index.html
- 现在支持解析带有 ANSI 控制序列的日志,以保证编辑器环境下的日志显示正确
- 会通过将相关文本 Parse 为
RitsuTextSegment列表以保证安全性,并使用它们来渲染日志文本
- 会通过将相关文本 Parse 为
- 完全重构了 Viewer 页面的实现,以实现更好的显示样式和交互体验,并且正确支持了响应式布局以保证各种屏幕尺寸下的显示效果
- 现在日志服务器允许配置为局域网开放,以允许在其他设备上访问日志
- 修正了部分可能会出现错误的网络同步包处理逻辑
- 修正了角标文本的初始化逻辑,以避免输出报错信息
Full Changelog: v0.4.6...v0.4.7
0.4.6
- Refactor the implementation of the godot control awaiter to ensure safer waiting
- Fix the focus behavior of the in-game settings menu
- Adjust the dynamic patch targets of ActContent to ensure they correctly patch the required methods and content
- Add safeguards to the dynamic patcher's target resolver to ensure it correctly resolves target methods
- Fix the issue where pure modifier keys may not trigger the shortcut key logic correctly
- 修改了关于 godot 控件的 awaiter 的实现,以保证更安全的等待
- 修正了对局内设置菜单的焦点行为
- 调整了 ActContent 的动态 Patch 目标,以保证其能够正确的修补需要的方法和内容
- 为动态 Patcher 的目标解析器补充了防护措施,以使其能够正确的解析目标方法
- 修正了使用纯 Modifier 按键时可能无法正确触发快捷键逻辑的问题
Full Changelog: v0.4.5...v0.4.6
0.4.5
- Optimized some Loader's work logic, ensuring that when using multi-variant RitsuLib, it can correctly load and use the content from each variant.
- 优化了 Loader 的部分工作逻辑,以确保在使用多变体 RitsuLib 时,能够正确地加载和使用各个变体中的内容
Full Changelog: v0.4.4...v0.4.5
0.4.4
- Relaxed the conditions for unlocking characters; now if the required target character already has a match in the record, the corresponding unlock epoch will be retroactively granted
- Now attempts to mirror record backup progress data to prevent data loss caused by MOD reinstallation
- For records protected by mirroring, relevant WARN logs will be automatically filtered to avoid duplicate log noise
- Added a simple log server and a log display page to facilitate viewing logs and debugging
- Can be configured via the settings menu, or use the console input
openlogviewerto open
- Can be configured via the settings menu, or use the console input
- Fixed an issue where incorrect initialization timing of the
CombatOnlycard pool caused cards added directly to the pool to fail to register for network synchronization - Optimized some
HoverTiprelated logic to reduce potential derivative issues caused by the game's native implementation - Adjusted the structure and position of parts of the settings menu
- 放宽了对于角色解锁的判定条件,现在如果需求的目标角色在记录中已经存在对局,那么就会直接补发对应的解锁纪元
- 现在会尝试镜像记录备份进度数据,以避免因 MOD 重新安装导致记录的数据丢失
- 对于被镜像保护的记录,会自动过滤相关的 WARN 日志,以避免重复的日志噪音输出
- 添加了一个简易日志服务器以及日志显示页面,以方便查看日志和调试
- 可通过设置菜单配置,或者使用控制台输入
openlogviewer打开
- 可通过设置菜单配置,或者使用控制台输入
- 修复了
CombatOnly的牌堆的初始化时机错误导致直接加入牌堆无法正确注册网络同步卡牌的问题 - 优化了部分
HoverTip相关的逻辑,以减少因游戏原生实现的问题导致的一些可能的衍生问题 - 调整了部分设置菜单的结构和位置
Full Changelog: v0.4.3...v0.4.4
0.4.3
- Add some missing registration APIs
- Remove a useless built-in utility type
- Add a unified
GetDynamicEnumValueRegistryimplementation, to allow managing dynamic enum values in a unified way, avoiding duplicate implementations- Based on
DynamicEnumValueMinter, and unify the scattered Minter implementations into this interface - To keep the value result consistent, the old Minter rules are implemented as a special case, and other enum types will use the enum value name as the category name
- Add a set of get value APIs that ignore collision detection, to allow getting values even when collision occurs, only for debugging or special scenarios
- Based on
- Add audit logs for dynamic enum value generation and registration, and detect collision cases
- Since RitsuLib's design intention, when collision occurs, no automatic avoidance will be generated, and collision resolution needs to be explicitly adjusted to solve the collision problem
- Although the collision probability is extremely low due to the use of
XxHash32as the hash function, you still need to be aware that it is possible to occur
- Optimize the gamepad operation and focus display logic in the settings UI
- Now correctly parse
BaseLib's customTargetTypeinto the unifiedGetTargetslist - Now
ModCreatureVisualPlaybackand other state machines allow deriving the duration and remaining time of the animation, to allow more accurate control of death animations, etc.- This also means that non-Spine characters no longer need to override
DeathAnimLengthOverrideto set the death animation duration
- This also means that non-Spine characters no longer need to override
- Adjust the implementation details of
RitsuLib-managed GameActionto allow it to be correctly replayed, solving the problem of generating a lot of log noise
- 补充了部分缺失的注册 API
- 删除了一个无用的内置工具类型
- 补充了一个统一的
GetDynamicEnumValueRegistry实现,以允许用统一的方式管理动态枚举值,避免分别重复实现- 基于
DynamicEnumValueMinter实现,并将原本分散的各个 Minter 统一到这个接口中 - 为了保持值结果一致,老的 Minter 规则作为特例实现专门处理,其他的枚举类型将会使用枚举值名称作为分类名
- 补充了一组无视碰撞检查的获取值 API,以允许在发生碰撞时也能获取到值,仅用于调试或特殊场景
- 基于
- 补充了动态枚举值生成并注册后,检测到发生碰撞时的审计日志
- 由于 RitsuLib 的设计意图,发生碰撞时不会产生自动避让,发生碰撞时需要明确的自主调整以解决碰撞问题
- 尽管由于使用
XxHash32作为哈希函数,碰撞概率极低,但你仍然需要明确知道这一点是有可能发生的
- 优化了设置界面的手柄操作和焦点显示逻辑
- 现在能正确将
BaseLib的自定义TargetType也纳入统一的解析方式获取 Targets 列表 - 现在
ModCreatureVisualPlayback和其他的状态机均允许推导获取动画的时长和剩余时间,以允许更准确的控制死亡动画等时长- 这也代表非 Spine 角色不再必须覆写
DeathAnimLengthOverride以设置死亡动画时长
- 这也代表非 Spine 角色不再必须覆写
- 调整了
RitsuLib-managed GameAction的实现细节以允许其正确回放,解决其会生成大量日志噪音的问题
Full Changelog: v0.4.2...v0.4.3
0.4.2
- Simplified some creation logic of the settings menu, to reduce the overhead of interface instantiation
- Continued to adjust the logic of some logs, to reduce the unnecessary stack information output
- Fixed some possible NRE issues caused by the unsafe implementation of the original code itself
- Fixed some issues caused by the inconsistent template code usage resulting in patch failure due to inconsistent function matching results
- 简化了设置菜单的部分创建逻辑,以降低界面实例化时的开销
- 继续调整部分日志的逻辑,减少不必要的堆栈信息输出
- 修正了由于原版代码本身的不安全实现导致的部分可能的 NRE 问题
- 修正了由于部分使用了不一致的模板代码导致实际函数匹配结果不一致而产生补丁失败的问题
Full Changelog: v0.4.1...v0.4.2
0.4.1
- Continued to adjust the output format of some logs
- Fixed a patch target error in 0.103.2/0.103.3
- 继续调整了部分日志的输出格式
- 修正了 0.103.2/0.103.3 一个错误的补丁目标
Full Changelog: v0.4.0...v0.4.1
0.4.0
- Fixed some logging level errors in
ModPatcher - Compatible Change: Refactored the implementation of
RitsuLibSidecarSyncMessagesto implement a more完善的 game-internal sync message mechanism - Compatible Change: Modified the sync logic for right-click trigger behaviors, some behaviors may have changed, but now it is more符合游戏原生的操作行为
- Fixed some implementation of
Encounter'sIsValidForActto make it able to correctly cover most of the paths- Now
Boss Encounterwill be re-evaluated whether it can appear when entering the Act, instead of following the original开局创建逻辑
- Now
- Experimental Feature: Added
Model Capabilitysystem, to support adding logic to models in a similar component form- Since it is an experimental feature, the API is not guaranteed to be stable in future versions, but it is now available
- To reduce the learning burden and memory cost for other libraries, some values will be processed in a similar way, but it is not guaranteed to remain consistent in future versions
- 修正了
ModPatcher的部分日志等级错误 - 兼容性变更: 重构了
RitsuLibSidecarSyncMessages的实现,以实现更完善的游戏内同步消息机制 - 兼容性变更: 修改了右键触发行为的同步逻辑,部分行为可能会发生变更,但现在更符合游戏原生的操作行为
- 修正了
Encounter的IsValidForAct的部分实现,以使其能够正确覆盖大多数的路径- 现在
Boss Encounter会在进入 Act 时重新判定其是否可以出现,而不是遵循原版的开局创建逻辑
- 现在
- 实验性功能: 增加了
Model Capability系统,以支持使用类似组件的形式为模型动态添加逻辑- 由于为实验性功能,目前不保证其 API 在之后的版本的稳定性,但目前已经属于可用范畴
- 为降低与其他库的学习负担和记忆成本,部分值行为会使用类似的方式进行处理,但不保证未来版本会保持一致
Full Changelog: v0.3.10...v0.4.0