Project AS Developer Doc Help

3.7 派系与剧情系统(FactionNarrativeSystem)

该系统主要负责管理主线剧情流程控制、关键剧情事件触发、以及与派系有关的常规剧情任务(不包括运行时动态生成的任务),同时承担派系倾向变化管理与终章剧情推进逻辑。剧情数据由策划工具导出为标准化格式文件,构建期统一编译处理为二进制或 ScriptableObject,并打包进游戏。

3.7.1 派系模型与居民倾向

本项目支持三大派系:中立派(Neutral)、移民派(Immigrant)、重建派(Restoration)。每位居民拥有当前派系倾向标记(可变),可通过以下因素动态改变:

  • 完成派系任务 / 剧情事件影响

  • 派系广播设施加成(如宣传中心)

  • 当前生活条件(如能源短缺倾向迁徙,生态恢复倾向重建)

  • 玩家在剧情中的选项(如放弃地面 → 激化重建派不满)

派系支持度影响:

  • 特定任务链激活条件(如“飞船总动员”任务需移民派支持度≥60%)

  • 决定终章剧情可选项

  • 导致内部冲突或暴动事件

系统需维护:

Dictionary<FactionType, float> factionSupportRatio;

3.7.2 剧情数据结构与存储

剧情内容采用外部文件策划定义,包括:

  • 剧情触发条件(如完成任务 / 解锁科技 / 居民派系阈值)

  • 剧情步骤链(每个步骤含对话文本、角色头像、背景图、音效、动画标记等)

  • 玩家选择分支(多选项 + 对应效果)

  • 影响结果(派系变化 / 解锁设施 / 跳转任务 / 推入终章)

样例结构:

{ "eventId": "NARR_01_SHUTDOWN_PROTOCOL", "triggerCondition": "CompleteQuest:Q0013", "steps": [ { "speaker": "指挥官", "text": "我们真的要关掉生态区吗?", "options": [ { "text": "是的,准备迁移。", "result": "faction+Immigrant" }, { "text": "不,我们留下修复它。", "result": "faction+Restoration" } ] } ] }

编译工具需将此类数据结构导出为 ScriptableObject 或结构化二进制数据。

3.7.3 剧情触发与执行流程

NarrativeManager 提供以下功能:

  • 检测触发条件(监听 QuestCompletedEvent / TechUnlockedEvent 等)

  • 拉取对应剧情数据结构,播放剧情 UI 流程

  • 注入选项决策逻辑,影响后续状态

  • 分发派系变化、任务解锁、动画过渡、终章推进等指令

触发样例:

EventBus.Subscribe<QuestCompletedEvent>((e) => { if (e.questId == "Q0013") NarrativeManager.Trigger("NARR_01_SHUTDOWN_PROTOCOL"); });

执行接口建议:

void Trigger(string eventId); void AdvanceDialogue(); void ChooseOption(int index);

剧情状态应支持存档与断点恢复。

3.7.4 剧情系统与终章联动机制

当玩家完成科技树某终章节点后,NarrativeManager 将拉取对应结局剧情:

  • 启动结局任务链(由任务系统承接)

  • 播放剧情动画 + 分支对话

  • 设置 GameManager 的 EndState 标记

剧情系统需确保一次性事件不重复触发,并允许通过配置设定可重复 / 多周目变体内容。

3.7.5 扩展建议

  • 多周目变体系统 :支持根据历史选项解锁不同剧情路径与分支内容

  • 角色专属剧情模块 :支持关键居民绑定个人剧情线,可影响派系与玩家选择

  • 剧情 UI 编辑器工具 :设计策划端编辑器用于链式剧情结构、分支节点、语音标记等内容制作

14 七月 2025