MpLib 预览图

杀戮尖塔 2 (Slay the Spire 2)

MpLib

Tools & APIsUtility

最后更新 2026/10/06文件 64.2 KBID 3792205243

模组简介

支持游戏版本: 0.111.0 Workshop 根目录 DLL 是自包含 mod 的 loader,实现 DLL 在 lib/<api>/。 STS2 联机兼容层:补官方同步边界,给内容 mod 短约定。不是完整联机框架。 装上后自动修补几处官方联机同步边界:玩家同步队列保留最新快照并即时应用、远端奖励后清掉过期同步、Neow 非共享选项改用权威快照而非重演。用于减少 checksum 分叉与镜像被过期快照回滚。 这一层目前社区只有 MpLib 在做,不替代各 mod 自己的消息、UI 与字段同步。另提供 CombatActions / NetBootstrap 短约定。 命名空间:Mp.Core、Mp.Combat、Mp.Neow。 不要再 Harmony 同一批官方方法,例如 EventSynchronizer.ChooseOptionForEvent、CombatStateSynchronizer.OnSyncPlayerMessageReceived,否则互相覆盖。 CombatActions 有载荷的玩家输入走这条。官方会扫 mod 的 INetAction;MpLib 只注册一个 NetModCombatAction,用稳定 key 区分业务。入队与打牌相同。 actor 必须是本端玩家。Host 用发送方 NetId 当 owner,不读 action 字段。其它身份写进 payload。两端登记同一 key。 using Mp.Combat; CombatActions.Register("YourMod.DoThing", async ctx => { ulong targetId = ctx.Payload.ReadULong(); Player? target = ctx.Actor.RunState?.GetPlayer(targetId); if (target is null) return; await ApplyAsync(target, ctx.Choice); }); CombatActions.RequestEnqueue( actor: LocalContext.GetMe(runState)!, key: "YourMod.DoThing", writePayload: w => w.WriteULong(target.NetId)); Register 默认 recordable: true,进入官方回放/checksum 链路。仅当 handler 由不可回放的外部 hook 驱动时才传 recordable: false,例如官方 GenericHookGameAction。两端必须登记相同值。 HookBarrier 空 GenericHookGameAction 网上只传 ID。双端已处于同一战斗 hook 时: await HookBarrier.RunInSharedHookAsync(owner, GameActionType.CombatPlayPhaseOnly, async ctx => { await DoWorkAsync(ctx); }); UI 输入有载荷就用 CombatActions。没有载荷才用 RegisterInput 和 EnqueueFromInput。owner 端生成 hook,对端在 ExecuteAction 补 work。调用方自己去重。 其它 INetMessage 在初始化时用 NetBootstrap.Add 登记。每个 NetService 只注册一次。 using Mp.Core; NetBootstrap.Add(new YourNetModule()); sealed class YourNetModule : INetModule { public void RegisterHandlers(RunManager runManager) { runManager.NetService?.RegisterMessageHandler ((msg, senderId) => { /* ... */ }); } } 同一模块类型 Add 两次会被忽略。 RunAuthority 用来改共享跑局字段,勿用 LocalContext.IsMe。IsRemoteMirror 表示本端不是该玩家权威。 PlayerSnapshotHooks.AfterRemotePlayerApplied:把 vanilla 没有的 mod 状态,在远端应用 Neow 或 combat 快照后写回。 NeowChoicePolicy:默认非权威端跳过 Neow 类 eventOption.Chosen() 重演,改收权威快照。给 ShouldSkipHandlerReplay 赋值会整份替换默认,需要快照的阶段就返回 true。SetEventState 和各 mod 自己的选择流程、UI 不在这里。 范围 最初为欲途联机而生,啃的是官方边界,不是角色数据。角色状态留在 LustTravel2,欲途仅依赖这层约定。 这是临时补丁。官方补上非共享事件结果同步、combat 最新快照保留、消息注册 API 后,MpLib 会先收成薄封装,再考虑移除;不替代各 mod 自己的选择流程、UI 与字段。

详情图片

条目信息

所属游戏
杀戮尖塔 2 (Slay the Spire 2)
创意工坊 ID
3792205243
文件名
3792205243.bin
文件大小
64.2 KB
最后更新
2026/10/06
内容版本
v1791290461-9beb0b4af945af59
作者与来源
由原作者发布于 Steam 创意工坊。本站不改变署名,作者信息与原始内容请以 Steam 原始页面 为准。