This commit is contained in:
2026-08-17 18:18:13 +08:00
parent 5765f411e9
commit d2cd3b9fa8
188 changed files with 32929 additions and 2 deletions
+72
View File
@@ -0,0 +1,72 @@
# 《被替代之人》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=<id>``--rp-auto` 参数。`--rp-auto` 仅用于 QA,在第 12 回合通过既定的连续超时规则收束镜像 AI 对局。