THE Circle 是一个以“圆环 / 莫比乌斯结构”为核心隐喻的交互叙事原型:玩家通过语音与 NPC 进行对话,系统把语音实时转成文本 → 交给大模型生成回应 → 再用 TTS 合成为声音播放出来,同时驱动剧情节点、线索与环境反馈(灯光/视频/材质效果)。

它更像一个“可对话的展陈装置 / 互动叙事系统”,而不是传统线性剧情游戏。


工程解析与核心思路

1) 语音到语音:Realtime Speech → LLM → TTS 的闭环

核心链路是:

  1. 实时转录:麦克风语音被转成文本(项目里通过 RealtimeTranscriber 组件接入)
  2. LLM 对话:把转录文本与 NPC 设定、上下文拼成 prompt,调用对话 API 获取回复
    • 见:ChatYiQianWenClient.cs(BuildPrompt / Send / Buffer 机制)
  3. 语音合成:把 LLM 回复送入讯飞 TTS,拉取音频片段并播放
    • 见:XunfeiTTS.cs(Login / SendTTSRequest / FetchAndPlayAudio / AudioSource 播放、会话管理)

工程点:

  • 我把 Unity 的 UnityWebRequest 封装成支持 async/await 的写法,避免协程“回调地狱”,让网络请求链路更可维护。
    • 见:UnityWebRequestExtensions.cs
  • 为了保证对话“更像在说话”,我加了 缓冲区/分段发送 的逻辑(把用户实时转录的内容分段送给模型,减少等待感)。
    • 见:ChatYiQianWenClient.cs(AddToBuffer / SendBufferedTextPeriodically)

2) 可控的剧情结构:节点 / 分支 / 自动跳转

我实现了一个“轻量但够用”的分支对话系统:

  • 每个剧情节点 DialogueNode 支持多句台词(dialogueLines)
  • 支持分支选项 DialogueChoice(按钮文字 + 跳转节点 id)
  • 支持无选项时的自动跳转 nextDialogueId,以及 isEnd 结束节点

对应代码:DialogueSystem.cs
(UI 侧使用 Text + Button 预制体,脚本从 Resources 的剧情文件读取并驱动 UI。)


3) 线索 / 事件:用 Tag 组织叙事要素(可检索、可触发)

我把“故事事件”抽成数据结构:

  • StoryEvent: eventId / description / tags
  • StoryEventUtils.FindEventsByTag: 通过 tag 快速检索事件集合

这让剧情不是硬编码在某一段 UI 逻辑里,而是可以按“线索标签”做关联、统计、触发。

对应代码:StoryEvent.csStoryEventUtils.cs


4) 展陈/装置的环境反馈:串口驱动灯光/视频/材质

项目里我做了一个串口控制器,用来把“叙事状态”映射到现实世界反馈:

  • 串口读取外设数据
  • 根据指令切换 VideoPlayer 播放内容
  • 驱动材质(例如视频材质)以形成情绪/场景变化

对应代码:SerialHueController.cs
(依赖 SerialPortUtilityPro 插件,方便在 Unity 内处理串口事件。)


5) 视觉表达:莫比乌斯 Fullscreen ShaderGraph

为了配合 “Circle / Möbius” 的核心意象,我制作了一个全屏 ShaderGraph(MoebiusFullScreen.shadergraph)作为视觉层的统一风格与过渡效果基础:
它可以作为场景氛围、UI 过渡、章节切换的视觉“胶水”。


技术栈

  • Unity / C#
  • UnityWebRequest(网络请求)、TextMeshPro(UI)
  • Newtonsoft.Json(JSON 序列化)
  • 讯飞 MSC TTS(本地/SDK 调用,XunfeiTTS.cs
  • SerialPortUtilityPro(串口)
  • VideoPlayer / Shader Graph(视觉与媒体)

进一步迭代方向

  • 把 LLM 与 TTS 的 Key 全部移出仓库:统一配置入口 + 编辑器校验
  • 对话记忆与状态机:把“NPC 当前态度/线索进度”显式建模(可存档、可回放)
  • 内容制作工具:把 DialogueNode / StoryEvent 做成可视化编辑器(ScriptableObject + Inspector)
  • 性能与体验:TTS 音频缓存、并发/取消机制、断线重试、超时降级

链接