# 场景多幕创作与流程改造实施进度 2026-04-20 更新时间:`2026-04-20` ## 1. 本轮落地范围 本轮先完成场景多幕的第一批基础链路,让“场景章节 -> 多幕 -> 主角色 -> 幕背景/相遇 NPC”真正进入现有创作工具与运行时。 本轮目标不是一次性做完 PRD 全量能力,而是先把下面两条主干打通: 1. 草稿层可以承载 `scene chapter / scene act` 2. 后端可以把 `scene_chapter` 编译成正式蓝图 3. 创作者可以在现有场景编辑弹层里看到并编辑多幕配置 4. 编辑后的幕信息可以正确写回 `sceneChapterBlueprints` 5. 运行时共享层先具备读取幕背景、主角色、相遇 NPC 池的基础能力 6. 当前幕主角色的负好感 `5` 轮聊天限制先形成首个可运行闭环 ## 2. 本轮已落地 ## 2.1 草稿与运行时结构 已补齐多幕相关结构: 1. `CustomWorldFoundationDraftProfile.sceneChapters` 2. `CustomWorldFoundationDraftSceneChapter` 3. `CustomWorldFoundationDraftSceneAct` 4. `CustomWorldProfile.sceneChapterBlueprints` 5. `StoryEngineMemoryState.currentSceneActState` 同时补齐了地点/营地草稿里的 `imageSrc`,避免幕背景回落时丢失现有场景图资产引用。 ## 2.2 scene_chapter 草稿编译 `server-node/src/services/customWorldAgentDraftCompiler.ts` 已完成第一批接入: 1. `scene_chapter` 正式进入草稿编译结果 2. 支持从显式 `sceneChapters` 或地点/章节数据回退生成场景章节卡 3. 每张卡会编译出场景摘要、幕结构总览、每幕背景图、主角色、辅助 NPC、幕目标、过渡钩子 4. 每幕生成动态可编辑 section id 5. 已增加基础警告: - 幕数不足 - 缺背景图 - 缺相遇 NPC - 主角色不在第一位 - 缺线程挂钩 - NPC 或线程引用失配 ## 2.3 scene_chapter 草稿编辑 `server-node/src/services/customWorldAgentDraftEditService.ts` 已支持: 1. 编辑场景章节标题、摘要 2. 编辑每幕标题、摘要、背景图链接、相遇 NPC、幕目标、过渡钩子 3. `encounterNpcIds` 支持用角色 id 或角色名回写 4. 回写后自动用第一位 NPC 覆盖 `primaryNpcId` `server-node/src/services/customWorldAgentChangeSummaryService.ts` 也已支持解析 `scene_chapter` 标题。 ## 2.4 场景编辑器接入 前端已完成第一批接入: 1. `scene_chapter` 不再作为独立 Tab / 独立卡片暴露给创作者 2. 多幕配置已内嵌到 `CustomWorldEntityEditorModal.tsx` 的 `LandmarkEditor` 3. 单幕编辑已从文本表单切成“背景大图预览 + 3 个角色槽位”的轻量交互 4. “幕标题 / 幕摘要 / 幕目标 / 过渡钩子”已从场景手工编辑区移除,继续留在草稿生成与编译层 5. 角色槽位已改成直接叠在幕背景图上的站位式预览,每个角色只显示形象与名称 6. 每幕背景图与角色槽位都走独立弹窗,不做卡片内联展开 7. 角色槽位会把第一槽位写回 `primaryNpcId`,其余槽位顺序压缩写回 `encounterNpcIds` 8. 每幕已补上“幕预览”入口,点击后会以独立全屏层启动当前幕运行时预览 9. 保存场景时会把幕配置同步写回 `CustomWorldProfile.sceneChapterBlueprints` 10. 世界档案里的场景详情页已移除“场景图片”和“场景内 NPC”字段,相关兼容字段改为从多幕配置自动同步回 `imageSrc / sceneNpcIds` 补充一条等待页体验收口: 10. 世界草稿生成等待页的第二模块标题已从“当前锚点信息”收口为“当前世界信息”,不再显示辅助说明小字,也不再在该模块头部提供“回到工作区”按钮,避免等待态出现重复返回入口 ## 2.5 运行时基础层 本轮同步补齐了幕运行的基础读取能力: 1. 当前幕背景图优先覆盖场景默认背景 2. 当前幕相遇 NPC 池可参与场景相遇过滤 3. 当前幕主角色与负好感有限聊天的判定 helper 已建立 4. 场景预览层已能识别“负好感主角色不直接自动开战”的基础分支 5. 编辑器内幕预览会把当前幕直接装配进真实游戏壳,而不是走静态假页面 6. 幕编辑中的 3 个角色槽位已进一步收敛成贴在背景图上的站位式角色预览,交互与幕预览保持同一位置语义,只显示角色形象与名称 7. 幕预览运行时已补 custom world NPC 的视觉兜底链路,优先使用 `visual / imageSrc` 渲染,避免角色形象或动画空白 8. 当前幕小预览已调整为左侧玩家、右侧敌对/相遇角色的构图,NPC 站位采用一前两后 前排主角色与玩家角色保持同一 y 轴;后排两个角色改为同一列、x 轴对齐并上下分布,且后排整体 y 轴中点与前排主角色一致 9. 新增幕默认只带 1 个主角色,后续槽位由创作者按需补充 10. 小预览里的名字已移动到角色头顶,角色渲染不再带方形底板,避免遮挡场景背景 11. 幕预览复用真实游戏壳时隐藏左上角角色等级徽标,退出入口固定在上方画面区域底部居中,并使用“结束预览”作为操作文案 12. 创作侧场景列表封面、多幕配置卡片、配置背景弹层统一读取同一张场景显示图;在任一幕保存背景时同步回全部幕背景字段和场景兼容图,避免同一场景在不同层级出现不同预览图 13. 场景角色预览图背景改用平台主题变量,亮色主题下不再保留深色预览底 ## 2.6 负好感主角色有限聊天闭环 本轮已把 PRD 里的第一版运行时闭环接到现有游戏流程: 1. `StoryEngineMemoryState.currentSceneActState` 会在进入场景章节时初始化到首幕 2. 当前幕主角色若好感度小于 `0`,相遇后不再直接进入敌对宣言,而是进入有限聊天态 3. 有限聊天态会把 `turnLimit / remainingTurns / limitReason` 透传到前后端聊天链路 4. 第 `5` 轮会由后端 prompt 强约束生成“铺垫式收束”回复,不再继续生成下一轮聊天建议 5. 第 `5` 轮返回后,前端会自动清掉 `npcChatState`,隐藏输入框,并给出 `继续` 的后续推进入口 6. Adventure 面板会显示当前幕标题与有限聊天剩余轮数 7. 当前幕主角色在本地战斗胜利后,会重新回到 NPC 聊天态,而不是直接掉回普通剧情续写 8. 战后重新开启的聊天会把“战斗结果摘要 + 最近战斗日志”一起写入 `npc_chat` 上下文,保证 NPC 能承接刚刚那场交锋继续说话 9. 若该主角色当前好感仍小于 `0`,战后重新开启的聊天仍按 `5` 轮有限聊天处理,轮数从战后这次重开重新计算 ## 3. 当前仍未完成 下面这些仍属于 PRD 未完项,需要下一轮继续: 1. 发布期 `qualityFindings` / blocker 的正式接入 2. `SceneActRuntimeState` 的完整推进、跨幕推进规则与持久化 3. 幕切换后的系统提示、切幕触发条件与背景/相遇对象的完整联动 4. 高好感主角色“无限轮聊天”与更多委托触发细则的专项验证 5. Agent 聊八锚点 -> 生成草稿 -> 场景内多幕配置的整条创作闭环仍需继续打磨 ## 4. 下一轮建议顺序 建议下一轮按下面顺序继续: 1. 先补 `SceneActRuntimeState` 的跨幕推进规则与持久化 2. 再补发布期 blocker / quality findings 3. 最后补高好感委托验证与 Agent 创作闭环 这样可以先把“能跑”继续扩成“能切幕”,再把“发布质量门槛”和“完整创作闭环”补完整。