Skip to content

Latest commit

 

History

History
653 lines (443 loc) · 13.6 KB

File metadata and controls

653 lines (443 loc) · 13.6 KB

MOB.AI 帮派系统设计与路线图

2026-03-12 实施状态: 当前仓库已经按本设计完成第一版帮派系统落地,包含世界生成、地图节点、关系矩阵、world turn 外循环、帮派任务、角色页/故事页 faction UI,以及独立的宣纸风世界地图页。地图渲染采用 Canvas 与本地资源混合实现,不使用通用 SVG 地图。

1. 前提

本文件只在 docs/ROADMAP.md 中的 Phase 1 完成后进入实施。

帮派系统不是另起炉灶,而是在现有主流程之上增加:

  • 世界上下文
  • 外循环模拟
  • 新的长期目标

1.1 重要参考

帮派系统的重要参考是 Stanford 的 Generative Agents 工作:

这项工作的核心参考价值,不在于把本项目改造成 Smallville 复刻,而在于它给出了一个适合世界模拟的基本框架:

  • observation
  • memory
  • reflection
  • planning

对本项目来说,最合理的借鉴方式是:

  • 不直接复制“全镇 25 个自主居民”的重型模拟
  • 而是把这套方法缩放成“帮派级 agent + 少量关键 NPC + 世界事件摘要”

2. 设计目标

玩家在保留现有主流程的前提下,获得一个新的长期目标:

  • 让自己的帮派成为天下第一帮派

这个系统要同时提供:

  • 世界存在感
  • 帮派关系与势力变化
  • 动态战争与地图占领
  • 可做可推的帮派任务链
  • 帮派 AI 自治
  • 可视化地图

3. 核心原则

3.1 不推翻主流程

现有核心循环仍然保留:

创建角色 -> 进入剧情 -> 选择行动 -> 检定推进 -> 状态结算

帮派系统只做两件事:

  1. 给每次剧情推进增加世界 Context
  2. 在若干玩家回合之间,跑一次外循环的世界模拟

3.2 用“代码模拟 + AI 提案/风味化”混合设计

不要把整套帮派系统全部交给 LLM。

推荐职责划分:

  • 代码负责:
    • 世界状态
    • 帮派属性
    • 外循环推进
    • 战争结算
    • 地图占领
    • 任务生成骨架
    • 平衡和限制
  • AI 负责:
    • 帮派风格与文案
    • 帮派意图提案
    • 新闻、公函、谣言、任务包装
    • 剧情中如何体现当前局势

这里要吸收 Generative Agents 的方法论,但不能照搬它的成本结构。

本项目应采用:

  • 代码为主,LLM 为辅

而不是:

  • LLM 全托管社会模拟

因为本项目要的是稳定、可控、可玩的帮派世界,而不是开放式社会实验。

3.3 帮派数量少而精

建议初始帮派数:

  • 5 ~ 7 个主要帮派

这样有几个好处:

  • 玩家容易记住
  • 地图不会太乱
  • 战争关系可读
  • Prompt 上下文不会膨胀失控

4. 玩家体验改动

4.1 角色档案新增内容

在角色档案生成和展示中加入:

  • 所属帮派
  • 帮派身份
  • 帮派地位
  • 帮派当前目标
  • 帮派对主角的期待

4.2 新长期目标

主角的长期任务从“个人修行”扩展为:

  • 修为成长
  • 帮派崛起

4.3 新的剧情上下文

每次故事生成时,可加入:

  • 当前所处区域
  • 所属帮派概况
  • 邻近敌对/同盟帮派
  • 当前战争状态
  • 最近世界事件
  • 帮派派发任务

5. 世界模型

建议新增以下核心实体。

5.1 World

  • 世界种子 seed
  • 当前世界回合 worldTurn
  • 季节 / 时间段
  • 世界新闻摘要

5.2 MapNode

地图节点建议不是复杂格子地图,而是“区域节点图”:

  • 州府
  • 山门
  • 坊市
  • 秘境
  • 矿区
  • 渡口
  • 要塞

字段建议:

  • id
  • name
  • type
  • positionX
  • positionY
  • terrain
  • resourceTags
  • ownerFactionId
  • prosperity
  • danger

5.3 Faction

字段建议:

  • id
  • name
  • title
  • type
    • 宗门
    • 世家
    • 帮会
    • 商盟
    • 魔门
  • elementAffinity
  • doctrine
  • styleTags
  • leaderName
  • leaderArchetype
  • strengthMilitary
  • strengthEconomy
  • strengthEspionage
  • strengthHeritage
  • stability
  • reputation
  • aggression
  • expansionDesire
  • capitalNodeId
  • controlledNodeIds
  • goal

5.4 FactionRelation

维护帮派两两关系:

  • alliance
  • neutral
  • hostile
  • bloodFeud
  • vassal

再配合一个数值:

  • relationScore = -100 ~ 100

5.5 CharacterFactionState

玩家相关字段:

  • characterId
  • factionId
  • rank
  • contribution
  • trust
  • militaryCredit
  • politicalStanding
  • factionGoalProgress

5.6 WorldEvent

记录世界外循环的结果:

  • 结盟
  • 宣战
  • 占领
  • 守城
  • 叛乱
  • 资源发现
  • 帮派任务发布

6. 帮派生成算法

6.1 生成方式

建议使用固定 seed 的半程序化生成:

  1. 先生成地图节点骨架
  2. 再生成 5~7 个主要帮派
  3. 给每个帮派分配首府与若干初始据点
  4. 生成关系矩阵
  5. 生成初始目标

6.2 帮派原型池

帮派不要完全纯随机,建议先做原型模板,再二次扰动:

  • 剑修宗门
  • 丹修宗门
  • 体修帮会
  • 商贾盟会
  • 世家门阀
  • 邪道势力
  • 地方守备势力

每个原型控制:

  • 强项
  • 弱项
  • 领袖性格
  • 偏好扩张方式
  • 常见任务风格

6.3 初始平衡

为了保证“好玩”而不是“完全随机失控”,建议控制:

  • 1 个强势霸主
  • 2 个中型竞争者
  • 2~4 个区域势力
  • 玩家所在帮派不要一开局最强,也不要最弱

6.4 玩家所属帮派

建议默认方案:

  • 角色创建时随机/半指定分配一个初始帮派
  • 该帮派会写入角色档案 prompt
  • 主角天然带有“振兴本帮”的主线驱动

7. 外循环模拟

这一部分最适合吸收 Generative Agents 的设计思想。

7.1 触发频率

建议每 3 ~ 5 个玩家回合跑一次世界模拟,而不是每回合都跑。

这样可以:

  • 控制 AI 成本
  • 让局势变化有节奏
  • 不挤爆主线剧情
  • 也更接近“先积累观察,再做反思和计划”的节奏

7.2 外循环步骤

推荐流程:

  1. 汇总当前世界状态
  2. 为每个帮派生成本回合观察记录
  3. 从观察记录中提炼高层反思
  4. 每个帮派选择一个“本回合意图”
  5. 代码解析并冲突仲裁
  6. 结算战争/占领/联盟/任务
  7. 生成世界新闻与帮派任务
  8. 将摘要注入下一轮剧情 Context

对应到 Generative Agents 的映射:

  • observation -> 世界观察记录
  • memory -> 帮派记忆流
  • reflection -> 帮派高层判断
  • planning -> 帮派本回合战略意图

7.2.1 推荐的帮派 Agent 结构

建议每个帮派维护一个轻量 agent 状态:

  • recentObservations
  • importantMemories
  • strategicReflections
  • currentPlan
  • lastExecutedAction

其中:

  • recentObservations
    • 记录最近几回合发生的战争、外交、资源变化、玩家行为
  • importantMemories
    • 保存长期仍有价值的事件,例如灭门、结盟、叛乱、秘境失守
  • strategicReflections
    • 将记忆总结成短期战略判断,例如“西境空虚,可趁机取矿”
  • currentPlan
    • 本回合最终意图

这会比“每回合让 LLM 读取全量世界 JSON 后自由决策”稳定得多。

7.3 帮派意图

帮派每回合可从有限集合中选意图:

  • 扩张
  • 休养
  • 结盟
  • 宣战
  • 清剿
  • 经营
  • 争夺资源点
  • 培养弟子
  • 追杀仇敌

意图建议由两层决定:

  • 第一层:代码按当前状态筛出候选
  • 第二层:AI 或启发式在候选中给出偏好

这里也适合直接借鉴 Generative Agents 的经验:

  • 候选行为由系统限制边界
  • 最终计划由记忆与反思驱动

而不是让帮派自由生成任意不可控动作。

7.4 战争结算

战争建议以代码结算为主,不直接让 LLM 判输赢。

战斗值可综合:

  • 军事实力
  • 地利
  • 帮派稳定度
  • 资源补给
  • 关系加成
  • 玩家参与的影响

结算后只让 AI 负责:

  • 战报
  • 流言
  • 门派檄文

8. 地图与占领

8.1 地图形态

MVP 不建议做格子地图。

推荐做:

  • 宣纸风节点地图
  • 节点之间用山道/水路/传送阵相连
  • 每个节点可显示归属、危险、资源、事件

8.2 为什么用节点图

因为它更适合当前项目:

  • 更像仙侠世界势力图
  • Prompt 上下文更易表达
  • UI 更容易做得漂亮
  • 规则复杂度显著低于 tile map

8.3 推荐开源库

优先建议:

  • React Flow
    • 官方文档描述它是一个可定制的 React 节点式 UI 组件,MIT 开源,适合做可交互节点地图。
  • Motion for React
    • 适合做节点浮动、战争涟漪、占领切换、卷轴展开等动画。

备选:

  • Cytoscape.js
    • 如果后面帮派关系图、占领图、图分析复杂度明显上升,可以考虑用它做关系分析或复杂图布局。

建议:

  • MVP 地图渲染主库先用 React Flow
  • 视觉动效用 Motion
  • Cytoscape.js 暂不作为第一选择渲染器

9. 帮派任务链

任务不应只是“打怪/送信”。

建议帮派任务分 5 类:

  • 扩张类
    • 攻占矿区、争夺坊市、护送物资
  • 内政类
    • 调停派系、处理叛徒、稳定民心
  • 外交类
    • 结盟、谈判、离间、示威
  • 修行类
    • 取宝、护法、试炼、秘境争夺
  • 复仇类
    • 追杀仇家、夺回旧地、守卫祖庭

这些任务应来自:

  • 帮派当前目标
  • 世界状态
  • 玩家帮派身份
  • 最近世界事件

10. Prompt 改造点

Generative Agents 的一个重要启发是:

  • Prompt 不应该每次吞下完整世界状态
  • 应该吃“检索过的相关记忆 + 高层反思 + 当前目标”

所以本项目的帮派 Prompt 改造,也应采用这个思路。

10.1 角色创建 Prompt

增加变量:

  • FACTION_PROFILE
  • FACTION_ROLE
  • FACTION_GOAL

10.2 故事推进 Prompt

增加变量:

  • WORLD_STATE_SUMMARY
  • CURRENT_REGION
  • PLAYER_FACTION_STATUS
  • FACTION_RELATIONS
  • RECENT_WORLD_EVENTS
  • ACTIVE_FACTION_MISSIONS

10.3 帮派外循环 Prompt

新增结构化 Prompt:

  • 输入:世界状态、帮派状态、相邻势力、当前目标
  • 输出:有限 schema 的帮派意图

然后由代码解析和结算。

更推荐拆成两个 Prompt:

  1. faction_reflection_prompt
    • 输入:最近观察 + 重要记忆 + 当前格局
    • 输出:本帮当前高层判断
  2. faction_planning_prompt
    • 输入:高层判断 + 候选行动 + 当前目标
    • 输出:结构化战略意图

这样更接近 Generative Agents 中“反思 -> 计划”的架构,也更方便调试与限流。

11. UI 设计要求

11.1 页面气质

必须延续当前产品风格:

  • 宣纸 / 卷轴 / 古籍感
  • 金石墨色
  • 五行与门派色彩
  • 图像化按钮
  • 不是网游管理面板

11.2 最小新增 UI 面板

建议新增:

  • 帮派概览卡
  • 天下势力榜
  • 地图页 / 地图弹层
  • 世界事件时间线
  • 帮派任务面板

11.3 地图表现

建议视觉效果:

  • 山脉阴影
  • 水墨边界
  • 节点呼吸光点
  • 占领切换时有旗帜/墨迹扩散动画
  • 战争态节点有涟漪和烽火特效

12. 实施路线图

阶段 1:Faction Context 接入

状态:planned

任务:

  • 扩展角色档案数据结构
  • 给角色创建加入所属帮派
  • 给故事 Prompt 加入帮派上下文
  • 前端展示帮派信息

验收:

  • 玩家从开局就知道自己属于哪个帮派
  • 剧情会提到所属帮派与其目标

阶段 2:世界生成与地图 MVP

状态:planned

任务:

  • 生成 5~7 个帮派
  • 生成 9~15 个地图节点
  • 生成初始控制区与关系矩阵
  • 做第一版节点地图 UI

验收:

  • 玩家可以打开地图看到当前世界格局

阶段 3:外循环模拟

状态:planned

任务:

  • 实现 world turn
  • 实现帮派 observation / memory / reflection / planning 流
  • 实现帮派意图选择
  • 实现战争/结盟/扩张结算
  • 实现世界新闻摘要

验收:

  • 世界会在玩家推进过程中自己变化

阶段 4:帮派任务链

状态:planned

任务:

  • 实现任务生成骨架
  • 将任务接入剧情推进 Context
  • 增加玩家对帮派贡献与地位

验收:

  • 玩家能感知自己在“帮助本帮崛起”

阶段 5:Faction AI 自治深化

状态:planned

任务:

  • 让帮派根据目标与局势做更稳定的长期决策
  • 引入派系性格、外交偏好、复仇记忆
  • 优化世界事件表现

验收:

  • 帮派看起来像“有个性、有历史”的势力,而不是随机状态机

13. 难点评估

13.1 规则难点

中高难度点不在“生成帮派名字”,而在:

  • 外循环和主循环如何互相影响
  • Prompt 上下文如何不爆炸
  • 战争与占领如何做得稳定且可读
  • 如何把 Generative Agents 的思想缩放成“帮派级 agent”,而不是失控地做成全地图 NPC 社会模拟

13.2 UI 难点

中等难度,但要求高。

因为地图不难“做出来”,难的是:

  • 做得好看
  • 做得像这个产品
  • 还要在移动端可读

13.3 平衡难点

玩家必须始终感觉:

  • 世界在动
  • 但不是乱滚
  • 自己能影响格局
  • 又不是一回合就统一天下

14. 一句话策略

帮派系统的本质不是“加一个新玩法模式”,而是给现有 AI 修仙主循环加上一层可持续演化的世界 Context 和外循环模拟器。

如果用 Generative Agents 来类比,本项目应吸收的是“记忆、反思、计划”的架构方法,而不是完整复刻 Smallville 的实现形态。