# 《被替代之人》ShrinkSDK Demo 这是一个位于现有 ShrinkSDK 工程内的完整功能 Demo,不包含嵌套 Unity 工程。入口场景为 `Assets/Demos/ReplacedPerson/ReplacedPerson.unity`,目标平台是 Windows 横屏,Canvas 以 1920x1080 为参考分辨率并通过 Safe Area 约束交互区。 ## 已包含内容 - “贪婪”第一章、教学形态与完整形态两场 AI 战斗。 - 12 张普通牌、4 张结束牌的牌组编辑、收集、奖励和三件可装备装饰。 - “反击蓄势”初始牌组:6 张反击、2 张闪避、4 张攻击,强调读牌、保留 COST 与后手惩罚。 - 卡牌完整效果面板、拖拽视觉副本、页面与卡牌动效、三槽逐次拼点动画和战斗音效反馈。 - 确定性 PCG32 对局内核、合法指令校验、只使用公开信息的 AI、回放和状态哈希。 - 首次出牌、结束牌继承、后手对位、低点重掷四步真实交互教程。 - TCP/KCP LAN 建房与直连、UDP 房间发现、牌组与准备、权威指令、幂等令牌、玩家裁剪快照和 30 秒席位保留。 - EventBus、DataSaver、Command、Tutorial、ShrinkApp/Cordis、ShrinkModFramework 接入。 - .NET 8 独立服务器与跨端纯规则程序集。 - 可打包的“审计训练”示例 Mod。 ## 在 Unity 中运行 1. 打开 `Assets/Demos/ReplacedPerson/ReplacedPerson.unity`。 2. 进入 Play Mode。 3. 从标题页进入章节、牌组或局域网大厅。 如需重新生成场景、Prefab、教程资产和字体资产,执行菜单: ```text ShrinkSDK > Demos > Replaced Person > Rebuild Full Demo ``` Windows Development Player 可通过以下菜单一键输出到 `Artifacts/ReplacedPersonBuild/`: ```text ShrinkSDK > Demos > Replaced Person > Build Windows Player ``` 生成器只写入本 Demo 的资源目录,并把入口场景加入 Build Settings。不要手工编辑 `.unity`、`.prefab` 或 `.asset` 文件。 ## 命令 控制台命令均位于 `game14` 根命令下,并应用 ShrinkCommand 的来源与权限限制: ```text game14 status game14 start-ai greed.tutorial game14 start-ai greed.full game14 give-card attack.kill game14 reload-mods game14 dump-match ``` ## 文档 - [完整规则](Docs/RULES.md) - [与论坛原案的差异](Docs/RULE_DIFFERENCES.md) - [联网协议](Docs/NETWORKING.md) - [Mod 开发与打包](Docs/MODDING.md) - [美术与字体来源](Docs/ASSET_SOURCES.md) - [独立服务器](../../../GeneratedServers/ReplacedPerson.ServerHost/README.md) ## 测试入口 - EditMode:`ReplacedPerson.EditMode.Tests` - PlayMode:`ReplacedPerson.PlayMode.Tests` - 独服确定性自检: ```powershell dotnet run --project GeneratedServers/ReplacedPerson.ServerHost/ReplacedPerson.ServerHost.csproj -c Release -- --self-test ``` 存档使用槽位 14,模块键为 `demo.replaced-person`。联网对局不修改章节进度或单机奖励。 自动化双 Player 验收支持 `--rp-host=TCP`、`--rp-join=TCP,127.0.0.1`、`--rp-player=` 和 `--rp-auto` 参数。`--rp-auto` 仅用于 QA,在第 12 回合通过既定的连续超时规则收束镜像 AI 对局。