Card Table 多人联机掼蛋系统 · 技术与功能全景复盘

目标:把“多人联机 + 严谨规则 + 3D 表现 + AI 协同”落成一套可扩展的商业级掼蛋框架。
核心挑战:Mirror 状态同步的一致性保证、复杂牌型的秒级识别、以及 AI 解说与语音通信的并发调度。

核心项目
Card Table
introduction
introduction
多人在线掼蛋联机系统(暂未开源)
Unity 2022 + Mirror + AI Commentary

一、项目定位 1.0

  • 项目类型:多人在线掼蛋(Card Table)+ 语音聊天 + AI 解说
  • 引擎版本Unity 2022.3.56f1c1
  • 主要平台StandaloneWindows64
  • 联机场景流MainMenu -> Lobby -> Table
  • 场景构成
    • Assets/Scenes/MainMenu.unity
    • Assets/Scenes/Lobby.unity
    • Assets/Scenes/Table.unity

二、技术栈总览 2.0

2.1 引擎与框架

  • 核心引擎:Unity 2022 LTS / C#(面向组件 + 事件驱动)
  • 网络层Mirror Networking (NetworkRoomManager / SyncVar / SyncList / Command / ClientRpc)
  • 传输协议KCP Transport / Dissonance Voice (MirrorIgnorance 集成)
  • 视觉与表现Cinemachine / TextMeshPro / Addressables / DOTween

2.2 语音与 AI

  • TTS 系统Serena.Tts (运行时服务)
  • 语音生成Azure Speech SDK (编辑器侧自动化脚本)
  • AI 逻辑LLM Stream (UnityWebRequest + SSE Chunk 解析

2.3 测试与工具

  • 自动化测试:NUnit EditMode(规则识别与压制关系覆盖)
  • 生产力脚本:大量 Editor 工具(一键搭 UI、网络、HUD、Addressables 修复)

三、核心功能模块详解 3.0

3.1 联机与房间系统

实现从 MainMenu 到 Lobby 的无缝衔接,支持主机/客户端自由加入。

  • 状态同步:利用 SyncVar 同步 Ready 状态与玩家属性。
  • 断线重连:核心难点。通过保留玩家对象、重绑连接并重发关键快照,确保断线后能恢复手牌与回合进度。
  • 聊天系统:含频率限制与敏感词过滤的实时同步。

3.2 掼蛋规则引擎 (Core Rules)

  • 牌型识别:完美识别单张、对子、三带二、顺子、连对、钢板。
  • 高级压制:炸弹、王炸、同花顺的阶级逻辑。
  • 逢人配特色功能 红桃级牌智能参与组合识别。
  • 托管机制:倒计时超时自动过牌/进入托管,保障单局流程。

3.3 3D 手牌与桌面演出

  • 对象池CardPool 优化频繁出牌/回收的性能损耗。
  • 扇形布局HandLayoutConfig 曲线驱动,模拟真实手牌握感。
  • 交互体验:悬停缩放、点击选牌、多选滑动操作。
  • 相机联动:第一人称/桌面聚焦视角动态切换,增强代入感。

3.4 AI 解说系统 (ATC)

解说链路事件总线 -> 上下文构建 -> LLM 流式输出 -> TTS 播报 -> 字幕 UI

  • 动态感知:剩余牌数、级牌信息、最近出牌历史。
  • 优先级调度:GameAction (高) > Social > Commentary

四、架构与工程化亮点 4.0

1
2
3
4
5
6
7
8
graph TD
A[Player Input] --> B[GameDirector]
B --> C{Ruleset Engine}
C -->|Valid| D[Mirror Server]
D -->|SyncVar/Rpc| E[All Clients]
B --> F[ATC Manager]
F -->|LLM Context| G[AI Commentary]
G --> H[TTS & Subtitle]
  • 解耦设计:网络层与规则层通过 IGameFlowController 接口隔离,提升单机/联机切换灵活性。
  • 数据驱动AppSettings 统一配置,CardAssetLibrary 管理数千张卡牌资源。
  • 生产力工具:开发了大量 Dev/Tools 菜单,一键搭建复杂的场景组件,将 UI 开发时间缩短 70%。

五、场景落地展示 5.0

5.1 MainMenu & Lobby

  • 包含 CardGameNetworkManagerAppSettingsDissonanceSetup
  • 完整的高级设置面板(语音、网络、音效)。

5.2 Table (核心对局场景)

  • GameDirector:全局控制核心。
  • HandVisualizer:实现 HandControllerFanLayout 的视觉对齐。
  • HUD 系统:ActionPanel、Scoreboard、TributeHUD(进贡交互)、SettlementPanel。

六、测试覆盖与质量 6.0

  • 规则测试Assets/Tests/Editor/GuandanRulesetTests.cs
  • 覆盖点
    • 基础/复杂牌型识别。
    • 炸弹与同花顺的互压逻辑。
    • 难点 :逢人配在不同组合下的最优解匹配。
    • 6 炸 vs 同花顺层级比较。

七、排错与优化表 7.0

现象 原因 处理方式
Missing Script 警告 场景脚本引用丢失 运行 AddressablesFixer 检查或手动重绑
联机场景加载卡顿 资源实例化过载 启用 CardPool 并分帧发牌
菜单项重复定义 DevSetupTool 冲突 合并 Dev/Tools 脚本入口

八、简历快照 (Professional Summary) 8.0

  • 基于 Unity + Mirror 构建 4 人联机掼蛋系统,完成房间、Lobby、准备、开局、回合及断线重连。
  • 自研完整掼蛋规则引擎,支持逢人配、同花顺等所有复杂牌型,并通过 NUnit 编写自动化单元测试。
  • 实现 3D 扇形手牌布局,利用 ScriptableObject 与对象池优化,保障多选/滑动交互体验。
  • 集成 AI 解说 (ATC),基于 LLM 流式输出与 TTS 路由,实现动态感知的智能播报。

九、自研脚本清单 9.0

点击查看全量架构清单

9.1 ATC & AI

  • AtcManager.cs / AtcContextBuilder.cs / AtcLlmClient.cs (LLM 集成)
  • AtcSubtitleUI.cs

9.2 Card & Hand

  • FanLayout.cs / HandController.cs / CardPool.cs
  • CardAssetLibrary.cs (资源库管理)

9.3 Networking

  • CardGameNetworkManager.cs / MyRoomPlayer.cs
  • DealCoordinator.cs / ChatMessage.cs

9.4 Rules & Logic

  • GuandanRuleset.cs (引擎核心)
  • CardComparer.cs / DeckShuffler.cs

9.5 Editor Tools

  • AddressablesFixer.cs / UiBuilder.cs
  • ActionVoicePackDownloader.cs