项目实训小组博客(六):局内交互流程开发(一)
一、本阶段整体工作概况
本阶段小组工作分成四大板块:第一,完成阿里云 OSS 图片存储服务接入配置;第二敲定完整单人 + 多 NPC 补位对局流程,依据玩法规范设计整套剧本、对局相关数据表结构;第三顺着既定流程落地后端逻辑与前后端全链路联调;第四持续优化局内页面 UI、交互 bug、实时同步问题,同时处理项目宕机重启对局数据恢复、管理员观战、NPC 权限等配套需求,分步迭代开发、逐个验收功能,全程按照前期各类开发文档落地需求。
一、阿里云 OSS 存储接入开发
按照需求,我们把项目图片、后续视频资源统一放到阿里云 OSS 保存,没有直接写完整调用代码,优先在项目配置文件里预留好 OSS 密钥、访问地址等配置字段,后续需要上传下载资源时直接填写参数即可;新建独立工具目录用来存放 OSS 相关封装代码,预留图片上传、文件获取基础方法,后续头像、剧本配图、场景图等资源统一走 OSS 存储,解决本地存图杂乱、资源无法外网访问的问题。
二、局内交互开发
1、敲定整套对局游玩流程
小组对照文档确认完整 120 分钟左右剧本杀对局全流程,整套对局分为准备、分发剧本、自我介绍、两轮探索讨论、两轮主线、最终投票、结局复盘十一个固定阶段,由 DM 播报内容、GM 后台管控全局,真人玩家搭配系统自动生成的 NPC 补位凑齐开局人数;同时明确全房间统一依靠聊天指令交互,/ 调查、/ 私聊、/ 交易等指令作为玩家操作入口,NPC 会根据自身人设自动发言、私聊、发起交易、使用专属技能,不同阶段限制玩家可操作内容,每个阶段有固定时长,到点自动切换对局进度,关键线索设置兜底机制,不会出现卡推理的情况。
2、拆分数据表,区分静态剧本、动态对局数据
遵循静态剧本固定不变、单局对局数据独立存储原则拆分数据表,分成两大库:
- 静态剧本数据表:包含剧本基础信息、角色档案、场景信息、三类线索、三类物品、角色专属技能、角色随机事件、主线剧情锚点八张表,一份剧本录入后可以重复开多局使用;
- 动态对局数据表:每开一局单独生成对局数据,包含对局总信息、本局玩家(真人 + NPC)、本局线索持有状态、本局物品归属、公私聊天记录、投票记录,每局结束数据归档留存。
3、明确线索、物品区分规则
重点理清线索和物品边界:线索是纯文字信息,获取之后永久归玩家不能转让;物品是实体道具,可以交易、查看,点开物品才会解锁绑定的线索,同时区分公共线索、角色专属线索、隐藏线索,线索物品、功能物品、关键物品三类,严格按照规则做数据库字段设计,方便后续 AI 生成剧本和对局逻辑读取数据,同时按照规范生成示例测试剧本月港遗书并录入数据库,填充场景、角色、线索、物品全套测试数据,配套线上可访问的场景、角色配图 URL。
三、对局基础功能落地开发
- 管理员观战功能优化:调整房间准入逻辑,管理员点开房间只能旁观,不会占用房间玩家名额,无法参与准备、开局等对局操作,全程第三方视角查看对局内容。
- 房主 NPC 管控权限:房主在建房或者对局中可以自主添加、踢出房间内 NPC,所有新生成 NPC 默认自动标记已准备,不用手动点击准备按钮。
- 项目重启数据修复方案敲定:原先项目关闭再重启,正在进行中的房间同时残留准备页和对局页内容、NPC 数据丢失,小组敲定落地方案并整理成《项目稳定运行文档》,对局所有阶段数据、NPC 信息、玩家持有道具线索全部持久化存入数据库,服务重启后读取库内数据自动还原对局状态,避免页面数据错乱。
- NPC 底层逻辑落地:NPC 和真人玩家逻辑对齐,支持私聊、交易、调查场景、使用专属能力,由后端定时任务配合聊天消息触发自主行为,没有真人操控也能自主推进对局内容。
四、局内页面 UI 与交互优化工作
(一)页面布局改版优化
- 对局顶部信息用圆角方框收纳,固定展示房间名称、当前对局阶段、剩余时长、在线状态;
- 场景选择、局内辅助相关功能全部收拢在页面右下角折叠按钮,点开弹出对应功能面板,不再零散铺满页面;
- 圆桌、角色头像、剧本简介内容做绑定处理:处在自我介绍、准备阶段展示圆桌面板,切换探索 / 讨论场景页面自动隐藏圆桌,只保留场景背景图;
- 场景切换逻辑:点击右下角场景按钮,弹窗列出全部可选场景,选定后页面自动替换对应场景背景图,附带搜查按钮。
(二)线索、物品展示优化
- 线索、物品统一做成卡片样式展示,卡片缩略只写名称,点击卡片弹出详情弹窗,弹窗固定尺寸,内容过长复用项目已有滚动组件;物品详情弹窗同步展示绑定配图,图片高度贴合框体、宽度自适应等比例缩放;
- 聊天消息分类优化:区分普通文字、物品分享、线索获得、交易提醒四类消息,不同消息用不同样式卡片在聊天框展示,点击卡片快速查看详情;
- 拆分弹窗功能:角色信息、局势概、线索栏、物品栏分成多个独立弹窗,优化弹窗尺寸,弹窗内容过长启用内置滚动条,解决弹窗重叠、遮挡操作按钮、内容展示不全问题;新增规则:点击弹窗空白区域自动关闭弹窗。
(三)实时同步类 bug 整改
- 管理员后台手动推进对局阶段,原先普通玩家需要刷新页面才刷新阶段,接入 WebSocket 实现阶段变更全房间实时推送,页面自动刷新新对局内容;
- 搜查场景获得新线索、拾取物品后,物品栏、线索栏实时刷新,不用刷新页面;
- 切换私聊会话出现圆桌残影问题,修复页面组件挂载逻辑,切换聊天面板自动隐藏多余背景;
- 公共聊天发消息提示断开、私聊正常的问题:排查公共频道消息推送逻辑,修复公共消息推送链路,公私聊天全量实时收发。
(四)细节交互整改
- 玩家搜查场景必须走搜查操作才能够解锁对应线索,修复开局自动全量加载线索的问题,同步修正月港遗书测试剧本部分线索没有绑定所属场景的历史数据问题;
- 优化弹窗折叠逻辑,局势面板、角色信息面板支持内容折叠展开,避免内容过多溢出屏幕。
五、本期开发问题复盘
- 前期部分测试剧本数据不完善,线索缺少场景绑定,后续录入新剧本前统一校验字段完整性;
- 页面弹窗、组件多次出现尺寸、层级问题,后续新组件开发统一沿用项目已有滚动、弹窗封装组件,减少自定义样式带来的兼容问题;
- 部分实时推送逻辑拆分不细致,出现公共、私聊推送不一致,后续新增消息功能先区分频道再编写推送代码。
六、下一阶段工作计划
- 完善 OSS 上传前端弹窗,实现剧本、场景图片前端直接上传云端;
- 补充多局并行测试,验证项目重启对局数据自动恢复功能;
- 补齐剩余对局小功能:角色专属技能使用、角色随机事件自动触发;
- 全页面多轮人工走测,收拢遗留细小交互 bug。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)