@@ -260,7 +260,7 @@ MVP 必须与当前项目可扮演角色动作槽位对齐。
|
||||
- `run / attack` 是固定基础必生成动作
|
||||
- `idle / die` 改为固定可选动作,不再作为发布硬门槛
|
||||
- `idle` 未生成时默认直接使用主图静止显示
|
||||
- `die` 未生成时默认播放一段基于主图的倒地过渡动画,并最终停在翻转倒地姿态
|
||||
- `die` 未生成时默认播放一段基于主图的向后倒地过渡动画,并最终停在翻转倒地姿态
|
||||
- 角色已配置的每个技能,都必须在技能编辑面板里补出对应动作预览
|
||||
- 图生视频默认走火山方舟 `Seedance` 首尾帧方案
|
||||
- 接口请求体中的两张参考图分别固定为 `first_frame / last_frame`
|
||||
@@ -275,7 +275,7 @@ MVP 必须与当前项目可扮演角色动作槽位对齐。
|
||||
| 基础动作 | `attack` | 必填 | 角色普通攻击主动作 |
|
||||
| 技能动作 | `skills[*].actionPreviewConfig` | 必填 | 当前角色每个已配置技能都要有独立动作资源 |
|
||||
| 可选动作 | `idle` | 可选 | 缺失时默认走主图静止待机 |
|
||||
| 可选动作 | `die` | 可选 | 缺失时默认走主图倒地过渡动画,最终停在翻转倒地姿态 |
|
||||
| 可选动作 | `die` | 可选 | 缺失时默认走主图向后倒地过渡动画,最终停在翻转倒地姿态 |
|
||||
|
||||
这里“必生成”指的是:
|
||||
|
||||
|
||||
@@ -251,7 +251,7 @@ kind === 'character';
|
||||
|
||||
1. `run / attack` 为固定必生成动作
|
||||
2. 角色已配置技能时,对应技能动作也属于必生成动作
|
||||
3. `idle / die` 只作为可选增强,缺失时分别走主图静止 / 主图倒地过渡动画兜底,死亡动画最终停在翻转倒地姿态
|
||||
3. `idle / die` 只作为可选增强,缺失时分别走主图静止 / 主图向后倒地过渡动画兜底,死亡动画带轻微过冲回落,最终停在翻转倒地姿态
|
||||
|
||||
### 阶段 D:动作发布
|
||||
|
||||
|
||||
@@ -583,7 +583,7 @@ type CustomWorldScenePriorityTier = 'key' | 'supporting';
|
||||
默认兜底:
|
||||
|
||||
1. `idle` 缺失时使用主图静止
|
||||
2. `die` 缺失时使用主图倒地过渡动画,最终停在翻转倒地姿态
|
||||
2. `die` 缺失时使用主图向后倒地过渡动画,最终停在翻转倒地姿态
|
||||
|
||||
### 场景图抽卡策略
|
||||
|
||||
@@ -663,7 +663,7 @@ type CustomWorldScenePriorityTier = 'key' | 'supporting';
|
||||
|
||||
1. `idle / die` 不再是发布硬门槛
|
||||
2. `idle` 缺失时运行时默认使用主图静止
|
||||
3. `die` 缺失时运行时默认播放主图倒地过渡动画,最终停在翻转倒地姿态
|
||||
3. `die` 缺失时运行时默认播放主图向后倒地过渡动画,并通过轻微过冲回落让动作更自然,最终停在翻转倒地姿态
|
||||
|
||||
说明:
|
||||
|
||||
|
||||
@@ -24,6 +24,17 @@
|
||||
|
||||
**每个场景由创作者在工具中配置为 `2~5` 幕;每一幕都绑定独立背景图和相遇 NPC 顺序;每一幕的第一个 NPC 视为主角色;运行时按幕切换背景和可遇对象,并根据主角色当前好感度裁决聊天轮数与第 5 轮收束方式。**
|
||||
|
||||
补充口径修正:
|
||||
|
||||
1. `scene_chapter` 在本期继续保留为数据层 / 编译层 / 运行时层概念。
|
||||
2. `scene_chapter` 不作为创作者可见的独立 Tab、独立卡片或独立导航入口。
|
||||
3. 创作者配置多幕的唯一入口,是现有“场景”列表里的场景编辑弹层。
|
||||
4. 每一幕的 NPC 配置区必须直接叠在当前幕背景预览上,以“对面角色站位”的方式呈现;三个站位既是预览,也是编辑入口。
|
||||
5. 幕编辑站位中每个角色只显示角色形象与名称,不展示额外信息块、规则说明或说明性标签。
|
||||
6. 幕内小预览的构图固定为左侧玩家、右侧当前幕角色;右侧三个站位采用一前两后。
|
||||
7. 新建幕默认仅预置 1 个主角色槽位内容,其余槽位留空,等待创作者补充。
|
||||
8. 角色名称显示在角色形象上方,角色渲染不附带方形 UI 底板。
|
||||
|
||||
这份文档必须能直接指导后续创作工具和游戏流程改造,避免需求落地漂移。
|
||||
|
||||
---
|
||||
@@ -72,14 +83,14 @@
|
||||
|
||||
当前仓库已经具备下面这些基础:
|
||||
|
||||
1. `packages/shared/src/contracts/customWorldAgent.ts`
|
||||
- 已存在 `scene_chapter` 草稿卡 kind。
|
||||
1. `src/types/customWorld.ts`
|
||||
- 已有 `SceneChapterBlueprint / SceneActBlueprint / sceneChapterBlueprints` 数据结构。
|
||||
|
||||
2. `server-node/src/services/customWorldAgentDraftCompiler.ts`
|
||||
- 已经能编译世界、第一幕、线程、势力、角色、地点等草稿卡。
|
||||
- 已经能把草稿阶段生成的场景章节数据编译成正式多幕蓝图。
|
||||
|
||||
3. `src/components/custom-world-agent/CustomWorldAgentDraftDrawer.tsx`
|
||||
- 已有草稿抽屉,但还没有把 `scene_chapter` 正式纳入抽屉分组。
|
||||
3. `src/components/CustomWorldEntityEditorModal.tsx`
|
||||
- 已有现成的 `LandmarkEditor`,这是本期多幕配置的正确承载位置。
|
||||
|
||||
4. 现有场景背景图生成与发布链已存在。
|
||||
|
||||
@@ -324,62 +335,61 @@ type NpcChatTurnResult = {
|
||||
|
||||
本次必须继续复用现有:
|
||||
|
||||
1. `src/components/custom-world-agent/CustomWorldAgentDraftDrawer.tsx`
|
||||
2. `src/components/custom-world-agent/CustomWorldDraftCardDetailModal.tsx`
|
||||
3. `src/components/custom-world-agent/CustomWorldDraftEditPanel.tsx`
|
||||
1. `src/components/CustomWorldResultView.tsx`
|
||||
2. `src/components/CustomWorldEntityCatalog.tsx`
|
||||
3. `src/components/CustomWorldEntityEditorModal.tsx` 内的 `LandmarkEditor`
|
||||
|
||||
不新建独立页面。
|
||||
不新建独立页面,也不新增独立 `scene_chapter` Tab。
|
||||
|
||||
新增规则:
|
||||
|
||||
1. 草稿抽屉必须正式支持 `scene_chapter` 分组。
|
||||
2. `scene_chapter` 分组应位于 `chapter` 后、`thread` 前。
|
||||
3. 点开 `scene_chapter` 草稿卡后,进入现有详情弹层和编辑面板体系。
|
||||
4. 创作页面卡片摘要后续可增加 `sceneChapterCount`,但第一版不是阻塞项。
|
||||
1. 创作者从现有“场景”列表点击任一场景卡,进入对应场景编辑弹层。
|
||||
2. 多幕配置必须作为场景编辑弹层内的一个区块出现,归属于该场景。
|
||||
3. `scene_chapter` 仅作为保存层和运行时蓝图存在,不单独暴露在创作者导航里。
|
||||
4. 场景卡片可增加“幕数量”轻量摘要,但第一版不是阻塞项。
|
||||
|
||||
## 7.2 场景章节卡展示要求
|
||||
## 7.2 场景编辑弹层展示要求
|
||||
|
||||
每张 `scene_chapter` 草稿卡至少展示:
|
||||
场景编辑弹层至少展示:
|
||||
|
||||
1. 场景名称
|
||||
2. 章节标题
|
||||
3. 幕数量
|
||||
4. 已就绪背景图数量
|
||||
5. 关联 NPC 数量
|
||||
6. 关联线程数量
|
||||
7. 当前风险数
|
||||
1. 场景名称与描述
|
||||
2. 场景主图
|
||||
3. 场景内 NPC
|
||||
4. 多幕配置区块
|
||||
5. 场景连接关系
|
||||
|
||||
详情页必须至少展示:
|
||||
多幕区块至少展示:
|
||||
|
||||
1. 场景摘要
|
||||
2. 幕结构总览
|
||||
3. 每幕的背景缩略图
|
||||
4. 每幕的主角色
|
||||
5. 每幕的辅助 NPC
|
||||
6. 每幕目标
|
||||
7. 每幕过渡钩子
|
||||
1. 幕列表
|
||||
2. 每幕与场景主图同规格的背景预览
|
||||
3. 每幕对面角色的 `3` 个固定槽位
|
||||
4. 每幕主角色标记
|
||||
5. 每幕背景配置入口
|
||||
6. 每幕预览入口
|
||||
|
||||
## 7.3 幕编辑交互
|
||||
|
||||
每个场景章节卡的编辑区必须支持下面这些操作:
|
||||
每个场景编辑弹层里的多幕区块必须支持下面这些操作:
|
||||
|
||||
1. 新增幕
|
||||
2. 删除幕
|
||||
3. 调整幕顺序
|
||||
4. 编辑幕标题
|
||||
5. 编辑幕摘要
|
||||
6. 绑定幕背景图
|
||||
7. 配置幕相遇 NPC 顺序
|
||||
8. 编辑幕目标
|
||||
9. 编辑幕过渡钩子
|
||||
4. 绑定幕背景图
|
||||
5. 在幕背景预览上点击角色槽位,为该槽位配置角色
|
||||
6. 移除某个已配置槽位的角色
|
||||
7. 开始当前幕预览
|
||||
|
||||
交互要求:
|
||||
|
||||
1. 幕列表在桌面端纵向堆叠,在移动端同样保持纵向,不做复杂双列。
|
||||
2. 每幕是独立卡片,不把所有字段一次性铺满。
|
||||
3. 点击“配置背景图”时必须打开独立面板或独立弹层,不允许在当前卡片下方内联展开。
|
||||
4. 点击“配置相遇 NPC”时必须打开独立面板或独立弹层,不允许在当前卡片下方内联展开。
|
||||
5. 默认不展示大段规则说明文字。
|
||||
3. 三个角色槽位必须直接叠在幕背景图上,作为当前幕预览的一部分。
|
||||
4. 每个槽位只显示角色形象与名称,不展开为信息块。
|
||||
5. 空槽位以虚线站位展示,点击后进入角色选择弹层。
|
||||
6. 点击“配置背景图”时必须打开独立面板或独立弹层,不允许在当前卡片下方内联展开。
|
||||
7. 点击角色槽位时必须打开独立面板或独立弹层,不允许在当前卡片下方内联展开。
|
||||
8. 单幕手工编辑区不再暴露“幕标题 / 幕摘要 / 幕目标 / 过渡铺垫”字段,这些内容继续留在 Agent 草稿生成与编译层维护。
|
||||
9. 默认不展示大段规则说明文字。
|
||||
|
||||
## 7.4 幕背景图配置
|
||||
|
||||
@@ -392,6 +402,7 @@ type NpcChatTurnResult = {
|
||||
3. 幕背景图和场景总背景图不是同一个概念,允许不同幕使用不同图。
|
||||
4. 发布前如果存在未绑定背景图的幕,必须阻止发布。
|
||||
5. 幕切换时运行时优先使用幕背景图,而不是地点默认图。
|
||||
6. 幕背景预览窗口长宽比与场景主图预览保持一致。
|
||||
|
||||
## 7.5 幕相遇 NPC 配置
|
||||
|
||||
@@ -399,18 +410,32 @@ NPC 配置面板必须支持:
|
||||
|
||||
1. 从当前世界的 `playableNpcs + storyNpcs` 中选择角色
|
||||
2. 只展示与当前场景相关的优先推荐角色
|
||||
3. 支持排序
|
||||
4. 第一位角色明确标记为“主角色”
|
||||
3. 以 `3` 个固定槽位进行配置,而不是长列表表单
|
||||
4. 第一槽位明确标记为“主角色”
|
||||
5. 允许同一角色出现在多个不同幕
|
||||
6. 同一幕内不允许同一角色重复占用多个槽位
|
||||
|
||||
硬约束:
|
||||
|
||||
1. 每幕至少 `1` 名 NPC。
|
||||
2. 第一位 NPC 不能为空。
|
||||
2. 第一槽位不能为空,后续槽位才能继续配置。
|
||||
3. 不允许把不存在于当前世界角色池中的 id 写入幕配置。
|
||||
4. 若主角色未与当前场景或线程建立任何关联,给出发布警告。
|
||||
5. 存储时继续落到 `encounterNpcIds` 有序数组,槽位从左到右按顺序压缩写入。
|
||||
|
||||
## 7.6 创作校验
|
||||
## 7.6 幕预览
|
||||
|
||||
创作者在场景编辑弹层里点击“幕预览”后,必须直接进入当前幕的运行时预览。
|
||||
|
||||
要求如下:
|
||||
|
||||
1. 预览必须复用正常游戏运行时,而不是单独写一个静态演示页。
|
||||
2. 预览启动时要把当前幕设为活跃幕,并带上当前幕背景与当前幕主角色。
|
||||
3. 若当前幕主角色好感度小于 `0`,预览中必须直接进入最多 `5` 轮的有限聊天态。
|
||||
4. 若当前幕主角色好感度大于 `0`,预览中必须沿用无限轮聊天规则。
|
||||
5. 预览面板使用独立全屏层,不挤压原场景编辑弹层布局。
|
||||
|
||||
## 7.7 创作校验
|
||||
|
||||
`CustomWorldQualityFinding` 至少新增下面这些检查项:
|
||||
|
||||
@@ -589,10 +614,11 @@ interface SceneActRuntimeState {
|
||||
|
||||
必须做到:
|
||||
|
||||
1. `scene_chapter` 卡片可见
|
||||
1. 在“场景”列表点击场景卡后,可以看到多幕配置区块
|
||||
2. 幕列表可编辑
|
||||
3. 背景图选择和 NPC 选择都走独立面板
|
||||
4. 移动端仍能完成幕排序、背景选择、NPC 排序
|
||||
3. 每幕以大图预览 + 角色槽位的方式编辑
|
||||
4. 背景图选择、角色槽位选择、幕预览都走独立面板
|
||||
5. 移动端仍能完成幕排序、背景选择、槽位换角与幕预览
|
||||
|
||||
## 10.2 游戏主面板
|
||||
|
||||
@@ -617,11 +643,12 @@ Adventure 主面板在本次迭代中至少增加下面这些表现:
|
||||
|
||||
前端只负责:
|
||||
|
||||
1. 渲染 `scene_chapter` 草稿卡与幕编辑 UI
|
||||
1. 在现有场景编辑弹层中渲染多幕编辑 UI
|
||||
2. 发起背景图配置和 NPC 配置请求
|
||||
3. 渲染当前幕背景和幕标题
|
||||
4. 渲染负好感聊天剩余轮数
|
||||
5. 根据后端返回切换幕、退出聊天、展示后续 options
|
||||
5. 启动当前幕预览并承载正常游戏运行时
|
||||
6. 根据后端返回切换幕、退出聊天、展示后续 options
|
||||
|
||||
前端不负责:
|
||||
|
||||
@@ -657,7 +684,7 @@ Adventure 主面板在本次迭代中至少增加下面这些表现:
|
||||
- 新增发布态 `sceneChapterBlueprints`
|
||||
|
||||
3. `server-node/src/services/customWorldAgentDraftCompiler.ts`
|
||||
- 编译 `scene_chapter` 草稿卡
|
||||
- 编译 `scene_chapter` 草稿数据
|
||||
|
||||
4. `server-node/src/services/customWorldAgentDraftEditService.ts`
|
||||
- 支持场景幕的增删改排序
|
||||
@@ -665,31 +692,28 @@ Adventure 主面板在本次迭代中至少增加下面这些表现:
|
||||
5. `server-node/src/services/customWorldAgentQualityService.ts`
|
||||
- 增加幕背景和幕 NPC 校验
|
||||
|
||||
6. `src/components/custom-world-agent/CustomWorldAgentDraftDrawer.tsx`
|
||||
- 展示 `scene_chapter` 分组
|
||||
6. `src/components/CustomWorldEntityCatalog.tsx`
|
||||
- 继续承载场景列表入口
|
||||
|
||||
7. `src/components/custom-world-agent/CustomWorldDraftCardDetailModal.tsx`
|
||||
- 展示幕详情
|
||||
7. `src/components/CustomWorldEntityEditorModal.tsx`
|
||||
- 在 `LandmarkEditor` 中新增幕编辑 UI
|
||||
|
||||
8. `src/components/custom-world-agent/CustomWorldDraftEditPanel.tsx`
|
||||
- 新增幕编辑 UI
|
||||
|
||||
9. `src/data/questFlow.ts`
|
||||
8. `src/data/questFlow.ts`
|
||||
- 让 scene chapter quest 感知当前幕
|
||||
|
||||
10. `src/services/storyEngine/chapterDirector.ts`
|
||||
9. `src/services/storyEngine/chapterDirector.ts`
|
||||
- 用当前幕映射章节阶段和摘要
|
||||
|
||||
11. `src/hooks/story/npcEncounterActions.ts`
|
||||
10. `src/hooks/story/npcEncounterActions.ts`
|
||||
- 新增主角色有限聊天与第 5 轮收束逻辑
|
||||
|
||||
12. `packages/shared/src/contracts/story.ts`
|
||||
11. `packages/shared/src/contracts/story.ts`
|
||||
- 扩展 `NpcChatTurnResult`
|
||||
|
||||
13. `src/services/aiService.ts`
|
||||
12. `src/services/aiService.ts`
|
||||
- 透传有限聊天新字段
|
||||
|
||||
14. `server-node/src/modules/ai/chatOrchestrator.ts`
|
||||
13. `server-node/src/modules/ai/chatOrchestrator.ts`
|
||||
- 生成第 `5` 轮铺垫式收束结果
|
||||
|
||||
---
|
||||
@@ -698,7 +722,7 @@ Adventure 主面板在本次迭代中至少增加下面这些表现:
|
||||
|
||||
当下面这些结果都成立时,视为本次 PRD 已被正确落地:
|
||||
|
||||
1. 创作者可以在现有创作工作区中创建并编辑 `scene_chapter`。
|
||||
1. 创作者可以在现有场景编辑弹层中配置每个场景的多幕。
|
||||
2. 每个场景章节都可以配置 `2~5` 幕。
|
||||
3. 每一幕都可以绑定独立背景图。
|
||||
4. 每一幕都可以配置有序 NPC 列表,第一位自动成为主角色。
|
||||
|
||||
@@ -963,6 +963,11 @@ behaviorVectors: Array<{
|
||||
3. 一句解释文本
|
||||
4. 怪物的“敌意关系状态”
|
||||
|
||||
补一条 UI 落地约束:
|
||||
|
||||
- 包括选角流、角色面板、详情弹窗在内,所有属性展示入口都必须直接读取当前世界的 `WorldAttributeSchema.slots`。
|
||||
- 禁止回退显示 `力量 / 敏捷 / 智力 / 精神` 这类旧四维占位文案,除非该入口明确处于旧数据迁移调试模式。
|
||||
|
||||
## 11.3 对玩家的信息揭示分层
|
||||
|
||||
不是所有 NPC 初见时都展示完整属性。
|
||||
|
||||
@@ -68,22 +68,21 @@
|
||||
3. 登录设备
|
||||
4. 更换手机号
|
||||
5. 账号操作记录
|
||||
6. 退出登录
|
||||
7. 退出全部设备
|
||||
|
||||
交互层级要求补充为:
|
||||
|
||||
1. 设置首页只展示“主题外观”“账号信息”两个分区入口与危险操作,不在首页内联展开具体详情
|
||||
1. 设置首页只展示“主题外观”“账号信息”两个分区入口,不在首页内联展开具体详情
|
||||
2. 点击任一分区入口后,必须进入独立二级面板
|
||||
3. 安全状态、登录设备、操作记录不再作为首页独立入口,统一归入“账号信息”二级面板
|
||||
4. 更换手机号属于独立操作面板,不允许在账号信息面板内直接展开表单
|
||||
5. 设置首页头部只保留一套主标题,不允许在内容区再重复放置“设置首页”“选择要管理的内容”这类二次标题块
|
||||
6. 子面板导航动作必须单一明确;同一层面板内有“返回”时,不再同时展示“关闭”
|
||||
7. 设置首页与各级子面板都必须定义单一滚动容器,列表内容必须可稳定滚动,禁止外层与内层同时争夺滚动
|
||||
8. 二级或三级面板打开后,下层内容必须进入不可交互状态,并把焦点主动转移到当前面板内;禁止对仍保留焦点的祖先节点使用 `aria-hidden`
|
||||
|
||||
底部保留两个危险操作按钮:
|
||||
|
||||
1. 退出登录
|
||||
2. 退出全部设备
|
||||
5. 退出登录与退出全部设备统一归入“账号信息”二级面板,不再在设置首页单独占位
|
||||
6. 设置首页头部只保留一套主标题,不允许在内容区再重复放置“设置首页”“选择要管理的内容”这类二次标题块
|
||||
7. 子面板导航动作必须单一明确;同一层面板内有“返回”时,不再同时展示“关闭”
|
||||
8. 子面板返回按钮固定摆在面板右上角
|
||||
9. 设置首页与各级子面板都必须定义单一滚动容器,列表内容必须可稳定滚动,禁止外层与内层同时争夺滚动
|
||||
10. 二级或三级面板打开后,下层内容必须进入不可交互状态,并把焦点主动转移到当前面板内;禁止对仍保留焦点的祖先节点使用 `aria-hidden`
|
||||
|
||||
---
|
||||
|
||||
@@ -210,7 +209,7 @@
|
||||
1. 设置继续采用当前账号弹窗基础形态即可
|
||||
2. 移动端优先底部弹层,桌面端可居中弹窗
|
||||
3. 设置首页只保留“主题外观”“账号信息”两个入口,不再单独展示安全状态、登录设备、操作记录入口
|
||||
4. “账号信息”二级面板直接承载账号概况、安全状态、登录设备、操作记录四块内容,移动端优先纵向滚动,桌面端保持同一面板内稳定扫读
|
||||
4. “账号信息”二级面板直接承载账号概况、安全状态、登录设备、操作记录与退出动作,移动端优先纵向滚动,桌面端保持同一面板内稳定扫读
|
||||
5. 更换手机号必须通过独立操作面板完成,不再使用当前面板内联展开表单
|
||||
6. 危险操作按钮与普通按钮必须明显区分
|
||||
7. 设置首页标题处禁止展示手机号、脱敏手机号或手机号形态的 displayName
|
||||
|
||||
Reference in New Issue
Block a user