Implement scene-based chapter quest progression
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
2026-04-08 11:58:47 +08:00
parent 9d2fc9e4b8
commit bd9fdcbe31
170 changed files with 18259 additions and 1049 deletions

View File

@@ -0,0 +1,876 @@
# AI 原生任务驱动目标感增强 PRD
更新时间:`2026-04-07`
## 0. 目标
这份 PRD 面向当前仓库,解决的是一个已经被用户明确反馈出来的问题:
**当前游戏虽然已经具备任务、章节、旅程节拍、剧情线程等系统,但玩家在实际游玩里,仍然经常感受不到“我现在到底在朝什么目标推进”。**
这里要增强的,不是单纯“多做一些任务”,而是把现有系统重新组织成一条玩家可感知的目标驱动链路,让玩家在大多数时刻都能快速回答 3 个问题:
1. 我现在在做什么?
2. 为什么这件事值得我去做?
3. 我下一步应该去哪里、找谁、做哪件事?
一句话目标:
**把当前分散在任务、章节、旅程、线程里的推进信息,编译成玩家随时能感知到的“主目标 -> 当前委托 -> 下一步行动”体验。**
---
## 1. 当前问题定位
## 1.1 当前项目其实已经有不少“目标相关系统”
从现有仓库看,项目并不是没有目标系统,而是已经有了多套“部分成立”的目标表达:
- `src/data/questFlow.ts`
- 已经有 `QuestIntent -> QuestContract -> QuestStep -> QuestProgressSignal` 的任务闭环。
- `src/hooks/useStoryGeneration.ts`
- 已经在运行时维护 `chapterState``journeyBeat``storyEngineMemory.activeThreadIds``setpieceDirective` 等叙事推进信息。
- `src/components/AdventurePanel.tsx`
- 已经有任务入口、章节入口、任务完成提示。
- `src/components/adventure-panel/AdventurePanelOverlays.tsx`
- 已经能展示章节面板、任务面板、任务详情与奖励弹窗。
- `src/types/storyEngine.ts`
- 已经有 `ChapterState``JourneyBeat``ThreadContract``SetpieceDirective` 这些中长线推进结构。
这说明当前问题不是“系统完全缺失”,而是:
**这些系统还没有被编译成一套稳定、持续、前台可见的目标体验。**
## 1.2 为什么玩家仍然会觉得“没目标”
结合现有实现,当前目标感不足主要来自 6 个原因。
### 1.2.1 目标信息分散在多个系统里,但没有统一前台主语
目前玩家可能同时受到这些信息影响:
- 章节标题
- 当前旅程节拍
- 活跃任务
- 任务当前 step
- 活跃剧情线程
- 当前场景异动
但这些信息没有被统一编译成一句更强的玩家语义:
- “你这章在追什么”
- “你此刻最该先推进哪一件事”
- “如果你现在只做一步,最有价值的是哪一步”
结果就是后台系统知道很多,前台玩家却只感到“事情很多,但方向不够清楚”。
### 1.2.2 任务存在,但任务不等于持续目标感
当前任务系统已经能接受、推进、完成、交付,但它的可见性仍偏“日志型”:
- 任务主要在任务面板里看
- 任务完成时有提示,但完成前的存在感不够强
- 玩家在主冒险视图里,并不会持续被提醒“这就是你当前的核心目标”
这会导致:
- 任务更像“可选记录”
- 而不是“持续牵引当前行动的主线张力”
### 1.2.3 章节 / 旅程节拍更像背景摘要,不像可执行目标
现有 `chapterState``journeyBeat` 已经很接近“中长期目标骨架”,但当前更偏:
- 章节氛围说明
- 旅程阶段命名
- 剧情回顾面板内容
而不是:
- 此刻最该推进哪条线程
- 当前节拍对应的推荐行动
- 这一步不推进会错过什么
于是它们更像“叙事状态”,不够像“行动目标”。
### 1.2.4 选项列表没有稳定表达“哪些动作在推进当前目标”
当前 `StoryOption` 主要按 function 合法性和 priority 输出,玩家能看到:
- 可以做什么
但不总能一眼看出:
- 哪个选项是在推进当前主目标
- 哪个选项只是支线绕行
- 哪个选项是补给、社交、整理状态
当所有选项都以类似强度出现时,玩家会更容易进入“我每一步都像在随便试试”的体验。
### 1.2.5 目标完成后的“下一目标交接”不够强
当前一个任务完成后,系统能做的是:
- 显示完成提示
- 去任务日志领奖
但目标体验更关键的一步其实是:
**完成之后,系统要马上把下一段方向递到玩家手上。**
如果这一步缺失,玩家就会在“完成一个点”之后重新掉回目标真空。
### 1.2.6 探索和叙事已经有内容,但缺少“承诺感”
当前系统已经能提供:
- NPC 氛围
- 场景异常
- 宝藏调查
- 战斗奖励
- 关系推进
但玩家未必知道这些碎片最后会指向什么。
也就是说,项目已经有不少“局部有趣”,但还缺一层更明确的:
- 这一章我正在靠近什么
- 这一段我为什么继续走下去
- 现在这次调查、切磋、汇报,和后面的更大目标是什么关系
## 1.3 当前问题的根因总结
可以把根因压缩成一句话:
**项目已经有“任务系统”和“叙事阶段系统”,但还没有“玩家视角的统一目标导演层”。**
---
## 2. 设计原则
## 2.1 目标感增强不等于满屏任务文案
这个项目已经明确要求 UI 保持清爽、移动端优先,因此这次方案不能走:
- 左上角一大堆任务文字
- 常驻厚重任务列表
- 密密麻麻的规则说明
正确方向是:
- 前台只突出 1 个当前主目标
- 再给 1 个清晰的下一步
- 其余信息折叠到任务 / 章节 / 地图面板中
## 2.2 AI 负责叙事强化,本地规则负责目标裁决
目标系统继续遵循当前项目已经验证有效的边界:
AI 负责:
- 当前目标为什么重要
- 这一步在故事里的张力
- 目标推进时的氛围和话术
本地规则负责:
- 当前目标从哪里来
- 哪个目标优先级最高
- 哪个选项算推进目标
- 目标何时完成、阻塞、切换
## 2.3 玩家应始终看到“短中长”三层目标
真正稳定的目标感,不是只有任务,也不是只有主线,而是至少同时成立 3 层:
1. 长目标
- 这一章 / 这一幕到底在逼近什么
2. 中目标
- 当前正在处理哪条委托、哪条线程、哪段关系
3. 短目标
- 下一步具体要去哪里 / 找谁 / 做什么
## 2.4 至少保证一个明确前进方向,但保留探索自由
目标驱动不是把玩家锁死在唯一按钮上。
正确体验应该是:
- 大多数时刻都有一个清晰可前进的方向
- 但仍然允许补给、聊天、绕行、观察、整理 build
- 玩家知道自己是在“主动偏离”,而不是“系统根本没方向”
## 2.5 目标必须来自当前局面,而不是硬塞公告栏
这次不做传统 MMO 式的固定任务板,而要让目标继续从这些上下文里长出来:
- 当前章节主题
- 当前旅程节拍
- 活跃线程
- 当前场景压力
- 当前 NPC 关系
- 当前资源缺口
换句话说:
**目标感要更强,但目标来源仍然要像从当前叙事局面里自然长出来。**
---
## 3. 核心方案Goal Stack目标栈
建议在现有 `quest + chapter + journeyBeat + threadContract` 之上,新增一层统一的玩家目标结构:
**Goal Stack**
它不替代现有系统,而是把现有系统编译成玩家当前最容易理解的目标层级。
## 3.1 三层结构
### 3.1.1 North Star Goal章节承诺
这是玩家当前阶段最大的“为什么继续往前”的理由。
它来自:
- `chapterState`
- `actState`
- `setpieceDirective`
- 当前主线程组合
玩家可感知的表达应该像:
- 追查失踪背后的真正势力
- 逼近这一区域的核心威胁
- 弄清某位关键 NPC 为何始终在回避真相
它回答的问题是:
**这一章总体在往哪里去。**
### 3.1.2 Active Contract Goal当前主目标
这是当前最应该推进的一件事。
它通常来自:
- 当前活跃任务
- 当前线程合约
- 当前旅程节拍对应的调查 / 汇报 / 前往 / 对峙目标
它回答的问题是:
**此刻最值得优先推进的事情是什么。**
### 3.1.3 Immediate Step Goal下一步行动
这是玩家在当前回合、当前场景最容易执行的实际动作。
它通常来自:
- 当前任务 active step
- 当前推荐场景
- 当前推荐 NPC
- 当前可触发 signal
它回答的问题是:
**如果我现在就迈一步,最合理的是先做什么。**
## 3.2 支持目标
除了主目标外,再允许最多 `2` 个支持目标,作为轻量附属存在:
- 关系目标
- 补给目标
- 构筑目标
- 探索支线
它们应该存在,但不挤占主目标在前台的视觉优先级。
## 3.3 3 秒规则
Goal Stack 设计的核心验收标准是:
**玩家在任意正常游玩时刻,用 3 秒就能看懂当前主目标和下一步。**
---
## 4. 目标导演层Goal Director
建议新增 `Goal Director`,负责把现有多个系统编译成一份统一的前台目标。
## 4.1 输入来源
目标导演层的输入应至少包含:
- `chapterState`
- `journeyBeat`
- `storyEngineMemory.activeThreadIds`
- `setpieceDirective`
- `quests`
- `currentScene`
- `currentEncounter`
- `npcStates`
- 玩家资源状态
- 最近若干 `StorySignal` / `QuestProgressSignal`
## 4.2 输出目标
输出应是一个稳定的 `GoalStackState`
```ts
type GoalSourceKind =
| 'quest'
| 'chapter'
| 'journey_beat'
| 'thread_contract'
| 'setpiece'
| 'relationship'
| 'survival';
type GoalTrack = 'main' | 'side' | 'relationship' | 'survival' | 'exploration';
type GoalStatus =
| 'teased'
| 'active'
| 'blocked'
| 'ready_to_resolve'
| 'resolved'
| 'archived';
interface GoalStackEntry {
id: string;
sourceKind: GoalSourceKind;
sourceId: string;
layer: 'north_star' | 'active_contract' | 'immediate_step' | 'support';
track: GoalTrack;
title: string;
promiseText: string;
whyNow: string;
nextStepText: string;
sceneHint?: string | null;
npcHint?: string | null;
progressLabel?: string | null;
status: GoalStatus;
urgency: 'low' | 'medium' | 'high';
relatedThreadIds: string[];
}
interface GoalStackState {
northStarGoal: GoalStackEntry | null;
activeGoal: GoalStackEntry | null;
immediateStepGoal: GoalStackEntry | null;
supportGoals: GoalStackEntry[];
}
```
## 4.3 目标优先级裁决
建议 Goal Director 按下面顺序裁决前台主目标:
1. 若存在 `ready_to_turn_in` 的关键主目标任务,优先前台化“去交付”
2. 若存在活跃任务 step优先将该 step 作为 `immediate_step`
3. 若当前无明确任务,但 `journeyBeat` 有推荐场景或推进方向,则编译成临时主目标
4. 若当前有强 setpiece / showdown / boss_prelude则将其提升为主目标承诺
5. 若玩家资源严重不足,可生成支持型生存目标,但默认不覆盖主线目标
## 4.4 目标切换规则
目标切换不能随便抖动,建议满足以下规则:
1. 主目标默认保持稳定,直到完成、阻塞或被更高优先级事件接管
2. 支持目标可以进出,但不频繁替换主目标
3. 章节目标只在章内关键阶段变化时更新
4. 当前 step 完成后,必须立刻切到下一 step 或交付目标
5. 如果玩家连续若干轮没有明确目标,系统必须主动重新生成一份当前 lead
---
## 5. 核心体验闭环Promise -> Commit -> Advance -> Confirm -> Handoff
这次目标感增强的关键,不是“加一个 HUD”而是补齐完整闭环。
## 5.1 Promise先告诉玩家为什么值得追
每一阶段都要先有一句承诺,回答:
- 这件事背后有什么更大的意义
- 当前章节到底在逼近什么
这层主要来自:
- `chapterState`
- `journeyBeat`
- `setpieceDirective`
## 5.2 Commit把大目标落成当前可接的委托或 lead
大目标不能悬空,必须落到玩家当前能承接的一件事:
- 接受委托
- 去某处调查
- 找某 NPC 对话
- 回去交付
- 前往某场景验证异常
## 5.3 Advance推进时持续看到自己在接近目标
推进不能只在任务日志里发生。
推进感需要在主流程里被持续表达:
- 选项提示“推进当前目标”
- 场景文本回响“你正在靠近这条线”
- 进度提示明确“已完成哪一步”
## 5.4 Confirm完成后给明确确认
推进成功后,系统要立即确认:
- 你已经推进了
- 你推进的是哪条目标
- 这一步意味着什么
而不只是静默更新后台进度。
## 5.5 Handoff立刻交接下一目标
真正决定目标感是否持续的,是交接。
完成一件事后,系统要尽快把下一句说出来:
- 现在回去交付
- 线索已经到手,下一步去找谁
- 这一步已完成,更大的目标因此前进到了哪里
如果没有 handoff再好的任务系统也会出现“刚做完就空了”的断层。
---
## 6. UI 表达方案
UI 目标是:
**不增厚页面、不堆规则说明,但让目标在主冒险视图里持续可见。**
## 6.1 冒险页新增常驻 Goal Ribbon
建议在主冒险页增加一个轻量常驻的 `Goal Ribbon`,只展示当前最需要知道的目标信息。
推荐展示字段:
- 目标标题
- 目标 track 标签
- 一句 `nextStepText`
- 一行极短 `sceneHint / npcHint`
- 简短进度表达
表现要求:
- 默认只显示 1 个主目标
- 风格轻,不做厚重说明板
- 手机端优先单列、可折叠
- 不抢占剧情区和选项区的核心空间
## 6.2 主冒险视图要直接显示“下一步”
对玩家而言,最重要的一句不是任务标题,而是:
- 去哪里
- 找谁
- 做什么
因此 Goal Ribbon 里最该强化的是 `nextStepText`,而不是一堆背景说明。
例如:
- 去遗迹外缘确认异动,再回来和林朔对话
- 返回营地,把调查结果告诉同伴
- 前往北桥,追上刚刚提到的敌对角色
## 6.3 选项按钮增加目标关联标记
建议给 `StoryOption` 增加目标关联信息:
```ts
interface StoryOptionGoalAffordance {
goalId: string;
relation: 'advance' | 'support' | 'detour';
label: string;
}
```
然后在前台做极轻量表达:
- 推进当前目标
- 支持当前准备
- 暂时绕开目标
要求:
- 只对关键选项打标
- 不让所有按钮都挂一堆说明
- 至少保证存在主目标时,通常有一个 `advance` 选项
## 6.4 任务面板从“日志”转成“目标板”
当前任务面板基础可复用,但信息组织建议升级为:
1. 当前主目标
2. 正在推进
3. 可交付
4. 支持目标
5. 已归档
这样玩家打开任务页时,看到的不是一排同权列表,而是更明确的目标优先级结构。
## 6.5 章节面板只做“承诺 + 当前节拍 + 当前主目标”
章节面板不需要继续扩成说明书。
建议只保留:
- 当前章节标题
- 当前章节主题
- 当前旅程节拍
- 本章正在追的主问题
- 当前建议推进方向
## 6.6 任务完成提示要直接导向下一个动作
当前“任务完成,可前往日志领奖”已经比没有强,但还不够。
建议改成:
- 任务完成
- 现在去哪里交付 / 现在建议做什么
- 一键打开当前目标详情
这样完成提示本身也成为 handoff 的一部分。
---
## 7. 与叙事生成和选项生成的联动
目标感不是纯 UI 问题,还必须进入叙事与选项生成。
## 7.1 Prompt 上下文注入当前目标摘要
建议在 `buildStoryContextFromState(...)` 产出的上下文中,增加统一目标摘要:
```ts
interface GoalPromptContext {
northStarSummary?: string | null;
activeGoalTitle?: string | null;
activeGoalWhyNow?: string | null;
immediateStepText?: string | null;
supportGoalTitles?: string[];
}
```
AI 使用这层上下文的目的不是发明新目标,而是:
- 在剧情文本里强化当前推进感
- 在选项措辞里更明确表达“哪步是往前”
- 在阶段切换时自然回写 handoff 语气
## 7.2 本地规则保证前进选项存在
当存在主目标且当前场景允许推进时,本地规则应尽量保证:
- 至少一个选项能推进当前目标
- `换一换` 不应把所有前进方向都刷掉
换句话说:
**选项池可以多样,但不能把方向感洗掉。**
## 7.3 目标推进要进入剧情文本回响
当 step 被推进时,剧情文本应更常出现这些反馈:
- 你已经拿到了关键线索
- 这一步让某人对你的判断改变了
- 当前区域的异常已经被你确认
- 现在该回去把结果说清楚
这类文本能明显强化“我不是在原地刷新内容,而是在前进”。
---
## 8. 目标来源设计
为了避免只有“NPC 发任务”才有目标,建议目标来源拆成 6 类。
## 8.1 Quest Goal委托型目标
来自现有 `QuestContract / QuestStep`
适合表达:
- 讨伐
- 调查
- 切磋
- 回报
- 交付
## 8.2 Thread Goal叙事线程型目标
来自:
- `ThreadContract`
- `activeThreadIds`
适合表达:
- 当前章节的主要调查方向
- 某条持续存在但暂未显式任务化的追查线
## 8.3 Journey Goal旅程阶段型目标
来自:
- `JourneyBeat`
适合表达:
- 现在是调查阶段
- 现在该回营整备
- 现在正在逼近冲突前奏
## 8.4 Setpiece Goal高潮前奏型目标
来自:
- `SetpieceDirective`
适合表达:
- 决战前奏
- 对峙前整理
- 余波中的关键善后
## 8.5 Relationship Goal关系推进型目标
来自:
- NPC 好感阶段
- 同伴弧线
- 当前营地事件 / 私聊机会
适合表达:
- 找某人谈清楚
- 处理一次关系冲突
- 在营地承接一段角色剧情
## 8.6 Survival Goal生存补给型目标
来自:
- 资源紧张
- build 缺口
- 路线压力
适合表达:
- 先补给
- 先回营整理
- 先准备能支撑下一段推进的资源
但它默认只做支持目标,不轻易覆盖主线目标。
---
## 9. 数据结构与模块建议
## 9.1 建议新增类型
建议新增:
- `src/services/storyEngine/goalTypes.ts`
- 或直接扩展 `src/types/storyEngine.ts`
核心结构建议包括:
- `GoalStackEntry`
- `GoalStackState`
- `StoryOptionGoalAffordance`
- `GoalPulseEvent`
- `GoalHandoff`
其中 `GoalPulseEvent` 用于前台反馈:
```ts
interface GoalPulseEvent {
id: string;
goalId: string;
pulseType: 'progress' | 'ready_to_turn_in' | 'resolved' | 'handoff';
title: string;
detail: string;
}
```
## 9.2 建议新增模块
建议新增:
- `src/services/storyEngine/goalDirector.ts`
- `src/services/storyEngine/goalCompiler.ts`
- `src/services/storyEngine/goalSignals.ts`
职责如下:
- `goalDirector`
- 汇总章节 / 旅程 / 任务 / 线程 / 资源状态,裁决当前目标栈
- `goalCompiler`
- 把不同来源编译成统一 GoalStackEntry
- `goalSignals`
- 处理 progress、resolve、handoff 反馈事件
## 9.3 建议改动的现有区域
建议优先接入这些文件:
- `src/hooks/useStoryGeneration.ts`
- 在返回值中新增 `goalUi`
- `src/hooks/story/uiTypes.ts`
- 增加目标 UI 类型
- `src/components/AdventurePanel.tsx`
- 增加 Goal Ribbon 与选项目标标记
- `src/components/adventure-panel/AdventurePanelOverlays.tsx`
- 将任务 / 章节视图改成围绕主目标组织
- `src/types/story.ts`
- 扩展 `StoryOption` 目标标记字段
- `src/data/questFlow.ts`
- 暴露任务当前 step 与 handoff 所需摘要
---
## 10. MVP 落地顺序
## 阶段 A先做前台统一目标层不重写底层任务系统
先做:
- Goal Director
- Goal Stack 编译
- Adventure 主视图 Goal Ribbon
此阶段目标:
- 玩家打开主冒险页就能看到当前主目标和下一步
- 不要求任务生成逻辑大改
## 阶段 B补齐目标交接
重点做:
- 任务接受后的主目标接管
- step 完成后的下一步切换
- ready_to_turn_in 的前台提升
- 领奖后的下一目标 handoff
此阶段目标:
- 目标不再只在“开始接任务”时存在
- 完成后也能顺势接到下一步
## 阶段 C让选项和剧情文本都带目标感
重点做:
- `StoryOption.goalAffordance`
- 目标推进相关 prompt 上下文
- 目标推进反馈 pulse
此阶段目标:
- 玩家不仅在任务面板里看见目标
- 也能在每一回合的文本和选项里感到自己在朝目标前进
## 阶段 D补非任务型目标来源
重点做:
- `journeyBeat -> goal`
- `thread -> goal`
- `relationship -> support goal`
- `survival -> support goal`
此阶段目标:
- 即使没有显式任务,系统也仍然能给出清晰 lead
---
## 11. 验收标准
做到以下几点,才能说明“任务驱动目标感”真的提升了,而不是只多了一层 UI。
## 11.1 体验验收
1. 新开局 `3` 次有效交互内,玩家必须看到一个明确主目标。
2. 在存在主目标的正常游玩阶段,主冒险页必须持续可见“当前目标 + 下一步”。
3. 任一目标完成后,下一目标或交付动作必须在 `1` 次交互内被明确交接。
4. 玩家不打开任务面板,也能在多数时刻知道自己下一步该做什么。
## 11.2 交互验收
1. 有活跃目标时,选项池中应尽量存在至少 `1` 个推进当前目标的选项。
2. `换一换` 不应把唯一前进方向刷没。
3. 任务完成提示应直接导向当前后续动作,而不只是泛提示。
## 11.3 UI 验收
1. 手机竖屏下 Goal Ribbon 不应把主剧情区和底部操作区挤出首屏。
2. 前台目标信息应控制在轻量级,不堆规则文案。
3. 任务 / 章节 / 目标表达需保持当前项目的清爽游戏 UI 风格。
## 11.4 叙事验收
1. 当前章节承诺、当前主目标、下一步行动三层语义必须能同时成立。
2. 任务推进、调查推进、关系推进都应在剧情文本里有回响。
3. 玩家应明显感到“我正在逼近某件事”,而不只是“我又看了一段新文本”。
---
## 12. 为什么这套方案适合当前仓库
这套方案不是推翻重做,而是顺着仓库已经形成的系统继续往前走:
1. 当前仓库已经有任务 contract 和 step progression
- 所以短目标层并不是从零开始。
2. 当前仓库已经有章节、旅程节拍、线程与 setpiece
- 所以中长目标层已经有素材,只差统一导演。
3. 当前 Adventure UI 已有任务入口、章节入口和弹层体系
- 所以前台表达可以在现有壳层上增量升级。
4. 当前项目强调移动端优先与清爽 UI
- 所以本方案明确走“一个主目标 + 一个下一步”的轻量表达,而不是堆面板。
换句话说:
**当前项目最需要的,不是再造一套新任务系统,而是把已有的任务、章节、线程、旅程节拍编译成一条持续存在的玩家目标体验。**
---
## 13. 最后结论
用户反馈“缺乏任务驱动的目标感”,真正指向的问题不是“没有任务”,而是:
- 任务没有持续站在前台
- 章节和旅程没有转成行动承诺
- 完成后的下一步交接不够强
- 选项和剧情文本没有持续强化“你正在前进”
因此,这次 PRD 的核心不是“继续扩任务数量”,而是补上一个统一的 `Goal Director + Goal Stack`
1. 用章节承诺给玩家长期方向
2. 用当前主目标给玩家中程牵引
3. 用下一步行动给玩家即时清晰的操作方向
4. 用推进反馈与 handoff 把整条目标链接起来
这样之后,玩家感受到的就不再是“系统里有任务”,而会更接近:
**我知道自己为什么在这里、正在推进什么、下一步该去哪,这个世界也在不断回应我的前进。**

View File

@@ -0,0 +1,473 @@
# AI 原生任务系统主前台化调整方案
更新时间:`2026-04-07`
## 0. 背景
在当前迭代里,右上区域同时出现了:
- `目标`
- `章节`
- `任务`
从系统设计角度看,这 3 个概念分别对应:
- `目标`:当前应该优先推进的事情
- `章节`:当前叙事阶段与长期承诺
- `任务`:玩家可执行、可追踪、可交付的实际推进载体
但从玩家视角看,这 3 个入口被并列摆在同一层级时,会产生两个直接问题:
1. 概念重复
- `目标``任务` 都在告诉玩家“下一步做什么”。
2. 主次倒置
- 原本最该成为主前台的“任务系统”,反而被拆散到 `目标 / 章节 / 任务` 三个入口中,导致任务系统看起来像被边缘化。
一句话判断:
**当前不是“信息不够”,而是“前台概念过多,任务作为主推进载体没有站到 C 位”。**
---
## 1. 核心结论
建议把当前前台结构调整为:
**任务系统作为唯一主推进入口,目标与章节退到任务系统内部,成为任务的上层语义与背景语义。**
也就是说:
- `任务` 是玩家前台的主概念
- `目标` 是任务面板里的当前聚焦态
- `章节` 是任务面板里的背景上下文
而不是 3 个并列一级入口。
---
## 2. 当前问题拆解
## 2.1 三个并列入口会制造额外理解成本
玩家进入第一个场景时,本来最需要快速理解的是:
- 我当前接了什么事
- 下一步去哪
- 什么时候算推进
但现在 UI 让玩家先面对的是:
- 要不要看目标
- 要不要看章节
- 要不要看任务
这会把本来应该非常直接的“任务驱动”体验,变成一次概念选择题。
## 2.2 `目标` 和 `任务` 在玩家心智中高度重叠
当前 `目标` 弹窗展示的是:
- 当前主推进
- 下一步
`任务` 面板展示的是:
- 当前主目标任务
- 任务摘要
- 任务详情
这两者在玩家眼里并不是两套系统,而更像:
- 一个是“任务的简版”
- 一个是“任务的详版”
如果它们并列出现,只会让玩家觉得重复。
## 2.3 `章节` 不应与 `任务` 争夺同一前台优先级
章节的作用更接近:
- 给长期方向
- 给叙事承诺
- 给“这一章在讲什么”的理解坐标
它并不直接回答:
- 此刻去哪
- 找谁
- 做什么
因此章节不适合做和任务并列的常驻一级入口,更适合做任务面板里的背景信息,或二级展开信息。
## 2.4 移动端空间被重复入口浪费
项目本身是移动端优先。
当前右上连续摆 3 个入口,会带来:
- 视觉拥挤
- 首屏操作点过多
- 玩家频繁在 3 个高度相似的入口之间来回切
这类浪费在手机端尤其明显。
## 2.5 当前实现会削弱“任务系统正在驱动我”的感受
`目标` 被做成独立前台入口时,用户会更容易把“目标系统”理解成一个独立模块,而不是任务系统的前台头部。
结果就是:
- 任务系统负责记录
- 目标系统负责提醒
- 章节系统负责叙事
三个系统各做一部分,但没有一个系统真正完整承担“驱动玩家前进”的主责任。
---
## 3. 调整原则
## 3.1 前台只保留一个主推进概念:任务
玩家最容易理解、最容易执行、也最容易形成长期习惯的前台概念,应该只有一个:
**任务**
因为任务天然同时满足:
- 可接取
- 可追踪
- 可推进
- 可交付
- 可奖励
这正是“目标感”最需要的系统壳。
## 3.2 目标不是独立模块,而是任务的当前聚焦态
目标仍然有价值,但它在前台的正确位置应是:
- 任务面板顶部的“当前主任务”
- 任务更新时的提示弹窗
- 任务推进时的脉冲反馈
也就是说:
**目标是任务系统的呈现方式,不是另一个并列入口。**
## 3.3 章节不是行动入口,而是任务背景
章节保留,但它更适合表达:
- 本章主题
- 当前阶段
- 当前长期承诺
所以章节应该:
- 在任务面板里提供轻量背景卡
- 或在任务面板中提供“查看章节背景”二级展开
而不是右上一级按钮。
## 3.4 先让任务系统完整承担“承接、推进、反馈、交接”
如果想真正让任务驱动体验成立,就必须让任务系统自己完成完整闭环:
1. 接任务
2. 看任务
3. 推任务
4. 知道自己推进了
5. 知道什么时候可交付
6. 领奖后获得下一任务方向
只要这条链断在别的模块上,任务系统就会继续显得像“半个主系统”。
---
## 4. 新的信息架构
## 4.1 顶层前台结构
建议调整为:
- 保留:`任务`
- 保留:`设置`
- 视情况保留:`统计`
- 移除独立常驻入口:`目标`
- 移除独立常驻入口:`章节`
其中:
- `目标` 被并入任务面板头部与任务更新弹窗
- `章节` 被并入任务面板中的“章节背景卡”
## 4.2 任务面板的新结构
建议把当前任务面板重构为下面 4 层:
### 第一层:当前主任务
只展示玩家此刻最该看的内容:
- 任务标题
- 下一步
- 地点 / 人物提示
- 当前进度
这是原 `目标` 面板应该承载的内容,但要回收到 `任务` 面板头部。
### 第二层:活跃任务列表
展示:
- 当前主任务
- 其他活跃任务
- 可交付任务
排序规则应继续保留:
1. 当前主任务
2. 可交付任务
3. 其他活跃任务
4. 已归档 / 已完成
### 第三层:章节背景卡
只显示:
- 当前章节标题
- 当前段落
- 一句章节摘要
不要再显示:
- 近期回顾大段文本
- 营地风向
- 高光导演
- 其他偏后台式的叙事结构信息
这些信息可以保留在系统内部,但不应默认占据前台。
### 第四层:任务详情页
任务详情页继续保留,但内容也要收束为玩家信息:
- 任务简介
- 目标对象
- 当前步骤
- 奖励
- 交付动作
---
## 5. 弹窗策略调整
## 5.1 “目标弹窗”重命名为“任务更新弹窗”
当前独立的目标弹窗不应继续以“目标”名义存在。
建议改成:
- `任务更新`
- `已接取任务`
- `任务可交付`
- `下一步建议`
这样玩家会直接把它理解成任务系统的反馈,而不是另一套系统。
## 5.2 任务更新弹窗的触发时机
建议只在这些关键节点弹出:
1. 初次进入场景,生成当前主任务时
2. 接受新任务时
3. 当前任务关键步骤切换时
4. 当前任务变为可交付时
5. 领奖后 handoff 到下一目标时
不建议在普通小幅状态变化时频繁弹出。
## 5.3 任务更新弹窗展示内容
只保留:
- 当前任务标题
- 当前为什么值得推进
- 下一步做什么
- 如有必要,给出地点 / 人物提示
不要再展示:
- 支持目标
- 章节承诺大段说明
- 过多后台状态信息
---
## 6. 章节信息的前台降级方案
## 6.1 章节从一级入口降为任务系统内嵌信息
章节仍然重要,但前台地位应该调整为:
- 默认不单独抢入口
- 默认只在任务面板中出现
- 仅在必要时从任务面板中二级展开
## 6.2 章节面板的最小展示集
如果仍然保留章节面板,建议最小化到:
- 当前章节标题
- 当前阶段
- 当前段落
- 当前推进方向
不再默认展示:
- 近期回顾长文
- 营地事件
- setpiece 导演问题
- 其他后台语义分层
## 6.3 章节与任务的关系表达
章节信息应服务于任务理解,而不是独立存在。
推荐表达方式:
- 在任务面板中显示:
- `所属章节:封桥旧案`
- `当前段落:调查`
- `当前推进方向:继续追查桥上的异常来源`
让玩家知道:
**任务是我现在在做的,章节是这件事属于哪一章。**
---
## 7. 系统语义重排
建议把当前 3 层语义重新映射成:
### 前台玩家语义
1. 任务
- 玩家真正会去点击、追踪、推进的对象
2. 当前主任务
- 任务中的当前聚焦项
3. 章节背景
- 帮助理解任务所在的大方向
### 后台系统语义
1. `Quest`
- 主执行壳
2. `GoalStack`
- 任务前台聚焦编译层
3. `Chapter / JourneyBeat / Setpiece`
- 任务背景和长期语义来源
也就是说:
**Goal Stack 继续保留在系统内部,但在 UI 语义上不再和 Task 并列。**
---
## 8. 实现调整建议
## 8.1 第一阶段:入口收口
直接调整:
- 删除右上独立 `目标` 按钮
- 删除右上独立 `章节` 按钮
- 保留 `任务` 按钮
同时:
- 将当前目标弹窗改名为任务更新弹窗
- 从任务按钮进入任务面板
## 8.2 第二阶段:任务面板吸收目标信息
在任务面板中新增顶部区域:
- 当前主任务
- 下一步
- 简短提示
并用它替代当前独立 `目标` 入口的职责。
## 8.3 第三阶段:章节信息降级
调整章节信息展示为:
- 任务面板中的轻量背景卡
必要时:
- 在任务面板内再点“查看章节背景”进入二级详情
## 8.4 第四阶段:任务更新弹窗统一化
把当前各种与目标相关的弹窗统一命名和风格:
- 接取任务
- 任务推进
- 任务可交付
- 下一步建议
统一挂到任务系统语义下。
---
## 9. 对当前代码结构的建议映射
建议后续实现时主要改这些位置:
- `src/components/AdventurePanel.tsx`
- 去掉独立目标前台嵌入和独立章节入口
- `src/components/adventure-panel/AdventurePanelOverlays.tsx`
- 重做任务面板顶部和章节卡结构
- `src/services/storyEngine/goalDirector.ts`
- 保留 GoalStack但只作为任务聚焦编译层
- `src/hooks/useStoryGeneration.ts`
- 把 pulse / handoff 语义统一归到任务更新流
- `src/hooks/useStoryOptions.ts`
- 保持选项与当前主任务的关联标记
---
## 10. 验收标准
做到以下几点,才说明“任务系统为主”的调整真正成立:
1. 右上不再同时并列出现 `目标 / 章节 / 任务` 三个入口。
2. 玩家在前台只需要理解一个主推进概念:`任务`
3. 当前主任务、下一步、可交付状态,都能在任务系统内部闭环完成。
4. 章节信息仍然存在,但不再和任务抢夺一级前台入口。
5. 首个场景进入后,玩家首先感知到的是“接到了什么任务”,而不是“系统里还有一套目标模块”。
6. 移动端右上操作区明显更简洁,主剧情区不再被多套并列语义干扰。
---
## 11. 最后结论
当前右上同时摆 `目标 / 章节 / 任务`,本质上是在让三个语义层并列竞争前台注意力,这会直接削弱任务系统的主导感。
正确的调整方向不是“继续优化三个入口”,而是重新明确主次:
- **任务**:前台唯一主推进入口
- **目标**:任务系统内部的当前聚焦态
- **章节**:任务系统内部的背景语义
这样调整之后,玩家前台感受到的就不再是:
- “我该看目标、章节还是任务?”
而会更接近:
- “我当前的任务是什么,下一步去哪,章节只是告诉我这件任务属于哪一段故事。”