Skip to content

Releases: BAKAOLC/STS2-RitsuLib

0.2.34

19 May 11:37
v0.2.34
174a816

Choose a tag to compare

  • Toast system added Persistence setting, allowing it to remain visible without automatically disappearing over time
  • Added MainMenuReadyEvent lifecycle event, allowing unified registration and reuse of the main menu initialization time point for specific behavior logic
  • Added Telemetry system, allowing data collection and reporting under user authorization, and allowing other mods to reuse the system to collect and report data to their own endpoints
    • RitsuLib will now register requests for the following data:
      • Basic usage data (including game version, running platform, RitsuLib version, anonymous player ID)
      • Mod installation list data (removed path information to maintain privacy)
      • Error log data (including error type, error stack, game version)
    • When a mod requests telemetry data, a toast will be displayed to prompt the user to authorize. Only after the user authorizes will the data be allowed to be uploaded through the dispatcher.
    • Built-in support for data includes the RunHistory record after the game ends, which can be requested by developers who want to analyze and balance the game data
      • RitsuLib itself does not request and report related data
    • The backend protocol is available at schemas\telemetry\v1\openapi.yaml, which follows the OpenAPI 3.1 specification and can be used directly by tools to automatically generate server code
      • You can also refer to the schemas\telemetry\v1\telemetry-batch.schema.json and schemas\telemetry\v1\telemetry-event.schema.json files to verify the data format
  • Marked string usage of CardKeyword and CardTag as obsolete, indicating that they are now available to be converted to enum types to call through vanilla methods
  • Added missing FMOD support
  • Modified the implementation of HookedSingletonModel, changed to use a single HookType parameter to construct the instance, avoiding the issue of some hooks being triggered multiple times
  • Added ModelCloneRegistry system, allowing to listen to model clone operations and execute custom logic
  • Modified the implementation of CardHandOutline, now using a unified new wrapper as the main logic, and migrating the original registration API to the new wrapper

  • Toast 系统增加了 Persistence 设置,允许使其保持可见而不会随时间自动消失
  • 修改增加了 MainMenuReadyEvent 生命周期事件,便于统一注册复用主菜单的初始化时间点进行一些特定行为逻辑
  • 增加了 Telemetry 系统,允许在用户授权的前提下进行数据收集和上报,并允许其他模组复用该系统进行数据收集和上报到自己的端点
    • RitsuLib 现在会注册请求以下数据:
      • 基础使用数据(包括游戏版本,运行的平台,RitsuLib 版本,匿名玩家 ID)
      • Mod 安装列表数据(去除了路径等信息以保持脱敏性)
      • 错误日志数据(包括错误类型,错误堆栈,游戏版本)
    • 当模组申请获取遥测数据时,会弹出 Toast 提示用户授权。仅当用户授权后才会允许通过调度器上传数据。
    • 内置支持的数据还包括对局结束后的 RunHistory 记录,对于希望统计分析对局数据的开发者可以请求相关数据用于分析和平衡调整
      • RitsuLib 自身并不请求和上报相关数据
    • 后端协议请参考 schemas\telemetry\v1\openapi.yaml 文件,此文件遵循 OpenAPI 3.1 规范,可以直接用于工具自动生成服务端代码
      • 你也可以参考 schemas\telemetry\v1\telemetry-batch.schema.jsonschemas\telemetry\v1\telemetry-event.schema.json 文件来校验数据格式
  • 给 string 类型的 CardKeywordCardTag 使用方式标注了过时,以提示已经可转换为枚举类型以通过原版方法调用
  • 补充了部分缺失的 FMOD 支持
  • 修改了 HookedSingletonModel 的实现,改为使用单一的 HookType 参数构造实例,避免部分 Hook 可能会多次触发的问题
    • 旧的构造函数已标记为过时,请使用新的构造函数代替
  • 增加了 ModelCloneRegistry 系统,允许监听模型复制操作并执行自定义逻辑
  • 修改了 CardHandOutline 的实现,现在使用统一的新包装作为主要逻辑,并将原有注册 API 迁移到新的包装中

Full Changelog: v0.2.33...v0.2.34

Development build (dev)

19 May 11:37
caa3d8e

Choose a tag to compare

Pre-release

This is an automated development build from branch dev.

  • Development Version: 9999.0.0-dev.26094590571+caa3d8ec (independent from stable release versions)

  • Current Stable Line in repo: 0.2.34

  • 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: caa3d8ec

  • Workflow Run: #26094590571

0.2.33

17 May 10:31
v0.2.33
0c9774e

Choose a tag to compare

  • Redesign and construct a better RunSavedData system
    • Data preservation mechanism with host authority, will automatically synchronize data to all clients at the start of the game
    • Allows adjusting data before the game starts, and actively synchronizing data when switching characters or preparing
    • Note: The data will be snapshotted at the start of the game, and subsequent operations should not rely on external data updates, but should use similar normal numerical update methods to update the recorded data
  • Add IModAncientActValidity interface, providing a method similar to BaseLib's IsValidForAct
  • Enhance the vanilla DevConsole with comprehensive, standardized, and prescriptive improvements
    • Now most completion candidate IDs will automatically include the localized name in the current game language
    • Now allows using the localized name to search completion candidates
  • Add AssetProfile support for ModifierModel, allowing definition of mutually exclusive groups and sorting
  • Remove the gate logic for the settings menu and add more logic to ensure the entry point always exists

  • 重新设计并构造了一个更好的 RunSavedData 系统
    • 数据保持主机权威机制,将会在对局开始/恢复时从主机分发数据同步到所有客户端
    • 允许在对局开始前调整数据,并在切换角色、准备状态时主动同步数据,也允许手动调度推送数据
    • 注意:对局开始时会对数据进行快照处理,之后的操作不应靠外部数据更新,而是用类似原版正常数值更新的方式更新记录数据
  • 补充了 IModAncientActValidity 接口,用于提供类似于 BaseLibIsValidForAct 方法
  • 完整的对原版的所有 DevConsole 进行了规范、统一、指定性的增强
    • 现在补全的提示 ID 大多会自动添加对应当前游戏语言的本地化名称
    • 现在允许使用对应当前游戏语言的本地化名称来搜索补全提示
  • 补充了 ModifierModelAssetProfile 支持,以及互斥组定义和排序能力
  • 移除了设置菜单的门禁逻辑,并补充了更多的确保节点存在的逻辑以保证设置菜单入口始终存在

Full Changelog: v0.2.32...v0.2.33

0.2.32

16 May 12:59
v0.2.32
ab4b3ec

Choose a tag to compare

  • Modified some logic to avoid potential missing reference issues
  • Now when registering is frozen, the type information of the types that exist references but are not found in ModelDb will be output to the log
  • Optimized some logic of the font cache to proactively re-cache new font resources when references are lost
  • Fixed compatibility issues with the latest BaseLib MaxHandSize modification
  • Optimized some details of the Steam integration pipeline to avoid specific behavior crashes on other platforms
  • Modified some reflection property access logic to UnsafeAccessor to improve performance
  • Added a log for FMOD integration to prompt for event paths that are not found in both the GUID mapping table and the loaded Studio events
  • Added IModColorfulPhilosophersCardPool interface, allowing users to mark custom character card pools as reward color options in Colorful Philosophers events

  • 调整了一些逻辑的时序,以避免一些潜在的缺失引用问题
  • 现在注册冻结时,会将存在引用但在 ModelDb 中没有查找到目标的类型信息输出到日志中
  • 优化了界面字体缓存的部分逻辑,以使其在引用丢失时可以主动重新缓存新的字体资源
  • 修复了与最新 BaseLib 的 MaxHandSize 修改的兼容性问题
  • 优化了 Steam 集成链路的部分细节问题,以避免在其他平台下的特定行为崩溃
  • 修改了部分反射属性访问逻辑为 UnsafeAccessor 以提升性能
  • 为 FMOD 集成增加了一个日志,以提示 GUID 映射表与原版已加载的 Banks 中均无法查找到的 event path
  • 提供了 IModColorfulPhilosophersCardPool 接口,允许用户标记自定义角色卡池以在 Colorful Philosophers 事件中作为奖励颜色选项

Full Changelog: v0.2.31...v0.2.32

0.2.31

14 May 12:23
v0.2.31
8fbbab7

Choose a tag to compare

  • Removed the dependency on Steamworks.NET, which allows for non-Steam platforms (especially Android porting) to be supported.
    • Related functionality has been modified to use soft dependencies, and for unsupported platforms, the functionality will be automatically disabled.
    • Cloud save functionality will try to use the cloud save functionality provided by the host game.
  • Adjusted the logic and scheduling of some patches to provide specific handling support for mobile porting.
  • Synchronized the implementation of many TargetType and related helper methods to allow users to more conveniently select some target types.
  • Reimplemented the manifest build logic to avoid potential infinite recursion issues during compilation in some environments.
  • Fixed custom CardPile not updating count when content changes.
  • Extended Reward functionality to allow custom Reward definitions.
    • Note: If you need specific synchronization logic, you need to implement it yourself, the native only supports notifying the selected Reward.
  • Fixed some logical issues in AncientEvent and related toolchains.
  • Added Chinese language descriptions to most internal comments.

  • 摘除了对 Steamworks.NET 的依赖,以提供对非 Steam 平台(特别是 Android 移植)的支持
    • 相关功能已改为通过软依赖方式实现,对于不支持的平台,会自动禁用相关功能
    • 云存档功能会尝试使用宿主游戏提供的云存档功能
  • 调整了部分 patch 的工作逻辑和调度,以提供对移动版移植的特定处理适配
  • 同步实现了大量 TargetType 和相关辅助方法以允许用户更便捷的选择部分目标类型
  • 重新实现了 manifest 的构建逻辑,以避免编译时部分环境可能产生无限递归的问题
  • 修正了自定义 CardPile 不会在内容变化时主动更新计数的问题
  • 扩展了 Reward 的功能支持,现在允许自定义 Reward
    • 注意:如果你需要特定的同步逻辑,目前需要自己实现,原生仅支持通知选择了 Reward
  • 修正了 AncientEvent 及其相关工具链的部分工作逻辑问题
  • 内部大部分注释现在补充了中文版本的描述

Full Changelog: v0.2.30...v0.2.31

0.2.30

11 May 19:42
v0.2.30
59b7130

Choose a tag to compare

  • Fixed #36, now the dropdown list control in the settings menu has a maximum height limit, and the scrolling list and virtual list optimizations have been added to make it able to handle a large number of options.
  • Fixed the synchronization issue in certain cases by correcting the SavedProperty processing logic.
  • Added the SmartFormat extension registration toolchain, now it is easier to register SmartFormat extensions.
  • Optimized the interface and methods of some content registries, now the different types of registries seem to be more unified on the call chain.
  • The conversion methods between CardKeyword, CardTag, and CardPile types and Enums types have been supplemented, and some inconsistent processing logic has been corrected.

  • 修复 #36,现在设置菜单的下拉列表控件有最大高度限制,并且增加了滚动列表和虚拟列表优化,以使其能够处理大量的选项
  • 修正了 SavedProperty 的处理逻辑以解决特定情况下的不同步问题
  • 增加了 SmartFormat 扩展注册工具链,现在可以更方便地注册 SmartFormat 扩展
  • 补充优化了部分内容注册器的接口和方法,现在不同类型的注册器的在调用链上显得会更为统一
  • 现有的 CardKeywordCardTagCardPile 现在与 Enums 类型的互转换方法现在都得到了补充,并且修正了部分并不统一的处理逻辑

What's Changed

Full Changelog: v0.2.29...v0.2.30

0.2.29

09 May 18:38
v0.2.29
ddef6ef

Choose a tag to compare

  • Modify the target version of 0.105.0 to 0.105.1 and delete the support for 0.105.0
  • Fixed the display effect error of the card outline rule when it is生效时部分情况下的显示效果错误问题
  • Optimized and adjusted a portion of the node factory logic

  • 修改 0.105.0 目标为 0.105.1,并删除 0.105.0 目标支持
  • 修复了卡牌 Outline 规则生效时部分情况下的显示效果错误问题
  • 优化调整了一部分节点工厂逻辑

Full Changelog: v0.2.28...v0.2.29

0.2.28

08 May 19:15
v0.2.28
56ca51d

Choose a tag to compare

  • Fixed an issue where logs could generate large amounts of unbounded noise under some weak-network conditions.
  • Fixed an issue where, during handshake negotiation, attempts to initiate the handshake could retry without limit in some cases.
  • Fixed an issue where, after a player disconnects, attempts to send messages to that player could retry without limit.
  • setting system of runtime interop now supports I18N protocol, allowing mod authors to localize the settings interface using I18N system.
  • setting system of runtime interop now supports default value protocol, allowing mod authors to set default value target in the settings interface.
  • refactored some persistence related code, unified the structure and allowed using a unified interface to handle persistence operations.
    • now SaveScope enum has two new enum values: RunSidecar and InMemory, representing session-level persistence and in-memory persistence respectively.
  • adjusted the log output level and timing of the patcher system, greatly reducing the log noise during normal operation.
    • most debug information is now downgraded to DEBUG level, if needed, please pass the --log-level parameter at runtime to adjust the log level.

  • 修正了部分弱网环境下会在日志无限制产生大量噪音的问题
  • 修正了握手协商过程中,部分情况下会无限制的尝试发起握手协商的问题
  • 修正了在玩家断连后,会重复尝试再次发送消息至该玩家的问题
  • 设置系统的弱依赖引用协议现在增加了 I18N 协议支持,以允许 mod 作者使用 I18N 系统来本地化设置界面
  • 设置系统的弱依赖引用协议现在支持了默认值协议支持,以允许 mod 作者在设置界面中设置默认值目标
  • 重构了部分持久化系统的相关代码,将结构改为更统一的形式,并允许使用统一接口来处理持久化操作
    • 现在 SaveScope 枚举增加了 RunSidecarInMemory 两个新的枚举值,分别表示对局级持久化和内存持久化
  • 调整了 Patcher 系统的日志输出 Level 和时机,现在在正常运行过程中的日志噪音被大幅降低
    • 大部分调试信息降低至了 DEBUG 级别,如果有需要,请在运行时传递 --log-level 参数来调整日志级别

Full Changelog: v0.2.27...v0.2.28

0.2.27

08 May 03:00
v0.2.27
881d32d

Choose a tag to compare

  • Improve the implementation details of AnyPlayer and Anyone targeting logic
  • Add support for extra icon amount labels on the bottom right corner, and handle conflicts with vanilla UI
  • Follow STS2 0.105.0: replace removed Hook.AfterCardRetained with Hook.AfterFlush, add BeforeFlush patch, expose new BeforeFlushEvent and CardsFlushedEvent; the legacy CardRetainedEvent is replayed per retained card and marked [Obsolete]
  • Follow STS2 0.105.0 Badge constructor change: RuntimeTemplateBadge and BadgePool.CreateAll postfix now thread the new won flag through the matching base ctor signature, eliminating MissingMethodException on the death screen for mods that register ModBadgeTemplate
  • Switch version-conditional compilation to cumulative interval macros (STS2_AT_LEAST_<ver>) under build/RitsuLib.CompatDefines.targets; legacy single-target STS2_V_<ver> macros are gone
  • Maintained version is now 0.105.0, and the 0.104.0 branch will be treated as a Compat branch and will be maintained at the same level as 0.103.2
    • Therefore, code still targeting 0.104.0 needs to use the new nuget package

  • 优化 AnyPlayer 和 Anyone 的部分逻辑的实现细节
  • 补充了右下角的额外数值角标槽位,并且增加了对不同原版角标的默认占位处理,在冲突时会报告错误
  • 跟随 STS2 0.105.0 的钩子改动:用 Hook.AfterFlush 取代被移除的 Hook.AfterCardRetained,并补打 BeforeFlush,新增 BeforeFlushEventCardsFlushedEvent;原 CardRetainedEvent 在 0.105+ 上按张从 AfterFlush.retainedCards 回放,并标记 [Obsolete] 引导订阅方迁移到 CardsFlushedEvent
  • 跟随 STS2 0.105.0 Badge 构造器签名变更:RuntimeTemplateBadgeBadgePool.CreateAll 后缀现按新 won 参数透传到匹配的基类构造函数,修复 mod 登记 ModBadgeTemplate 后在死亡结算页因 MissingMethodException 闪退的隐患
  • 把版本条件编译统一改为累积区间宏(STS2_AT_LEAST_<ver>),归口到 build/RitsuLib.CompatDefines.targets;旧的单点版本宏 STS2_V_<ver> 已全部移除
  • 主要面向版本已修改为 0.105.0,现行的 0.104.0 分支将转变为 Compat 分支并与 0.103.2 视为同等维护等级处理。
    • 因此仍然面向 0.104.0 的代码需要使用新的 nuget 包

Full Changelog: v0.2.26...v0.2.27

0.2.26

07 May 11:54
v0.2.26
cad702f

Choose a tag to compare

  • Fix some issues with max hand size calculation and modifier registration
  • Fix some issues with version migration and modifier registration
  • Extra icon amount labels now support custom color and outline color

  • 修复了在某些情况下,手牌数量修改会重复生效的问题
  • 修复了在设置版本迁移过程中会错误的触发重复注册的问题
  • 额外数值角标功能现在支持自定义颜色和描边颜色了

Full Changelog: v0.2.25...v0.2.26