无限分支:用 Coze 搭建动态剧情生成器 (Interactive Fiction)

2025-12-04 16:45:44
文章摘要
带大家用 字节 Coze (扣子) 或 Dify,搭建一个真正意义上的“无限流”剧情生成器。它有世界观,有记忆,甚至会随机给你发任务。

前言:不想当填空题的出题人

哈喽兄弟们,做剧情策划最痛苦的是什么?是你想搞一个《底特律:变人》那种多结局网状叙事,结果发现分支量是指数级爆炸的。写 10 个分支还行,写 1000 个分支?你的头发和键盘先得废一个。

传统的互动小说(Interactive Fiction)其实是“伪自由”,玩家只是在策划预设好的 A/B 选项里跳来跳去。但 Generative AI(生成式 AI) 的出现改变了规则。我们不再需要预写所有剧本,我们只需要训练一个“AI Dungeon Master (DM)”。

今天带大家用 字节 Coze (扣子)Dify,搭建一个真正意义上的“无限流”剧情生成器。它有世界观,有记忆,甚至会随机给你发任务。


01. 设定世界观:知识库 (Lore) 是地基

很多兄弟直接在 Prompt 里写:“你是一个赛博朋克世界的 DM...”。结果聊了没两句,AI 突然冒出来个“魔法飞龙”。这就是幻觉

为了锁死世界观,我们需要用到 RAG (检索增强生成) 技术,也就是 Coze 里的 Knowledge (知识库)

实操步骤:

  1. 编写 Lore Book:准备一个 PDF 或 Markdown 文档,详细设定你的世界。
    • 势力:荒坂公司、军用科技、流浪者。
    • 规则:没有魔法,只有义体;货币是欧元。
    • 黑话:叫警察是“条子”,黑客是“网络行者”。
  2. 上传 Coze 知识库
    • 在 Coze 左侧栏选择 Knowledge -> Create
    • 上传文档,设置分段策略(Chunking)为“自动”。
  3. Prompt 关联
    • 在 Bot 的人设里写上:“回答剧情前,必须优先检索【Cyberpunk_Lore】知识库,严禁捏造不存在的设定。” 图片描述
  • 图注:Coze 后台截图。左侧是上传的《夜之城设定集.pdf》,右侧是测试窗口。当你问“夜之城的最高建筑是什么?”时,AI 精准引用了文档中的“荒坂塔”并给出了高度数据。
  • 目的:展示如何给 AI 戴上“紧箍咒”,确保设定不崩。

02. 处理长文本记忆:别让 AI 变成金鱼

玩家玩了 5 个小时,杀了一个 NPC。结果 10 分钟后,那个 NPC 又活蹦乱跳地出现了。这是因为 LLM 的 Context Window (上下文窗口) 满了,把前面的事忘了。

我们要引入 Database (数据库/变量) 来存储关键状态。

架构设计:

我们在 Coze 中定义一个 Variable(变量表)或者 Database

变量名 类型 说明
player_san Integer 玩家理智值 (0-100)
inventory Array 玩家背包 [手枪, 钥匙卡]
killed_npcs Array 已死亡 NPC 列表 [杰克, 罗格]
current_quest String 当前任务目标

Prompt 逻辑:

“每次生成剧情前,检查 killed_npcs 列表。如果某个 NPC 在列表里,他绝对不能出现在剧情中。如果玩家遭遇恐怖事件,扣除 player_san。”

这样,无论对话多长,AI 都记得你杀过谁,疯没疯。

图片描述

  • 图注:一张表格化的配置界面。显示了定义好的变量名和默认值。高亮显示 player_san 当前值为 45(状态危急)。
  • 目的:展示 AI 如何拥有“永久记忆”。

03. 生成随机支线:Workflow 里的骰子

如果剧情只是“你问我答”,那就变成了聊天软件。游戏性来自于**“不确定性”**。 我们需要用 Coze 的 Workflow (工作流) 来模拟 D&D 里的“掷骰子”。

随机任务生成器逻辑:

  1. Start Node:接收玩家当前的地点(如:贫民窟)。

  2. Code Node (Python)

    import random
    # 投掷 1d20 骰子
    roll = random.randint(1, 20)
    # 20% 概率触发随机遭遇战
    is_encounter = roll > 16
    return {"roll": roll, "is_encounter": is_encounter}
    
  3. LLM Node (分支判断)

    • 如果 is_encounter 为 True:生成一段“你遇到了帮派火拼”的剧情。
    • 如果 is_encounter 为 False:生成环境描写。
  4. End Node:输出最终文本给玩家。

这样,玩家每次进入“贫民窟”,遇到的事情都是随机的,可能是捡到钱,也可能是挨一枪。

图片描述

  • 图注:像电路图一样的节点连接图。Start -> Python代码块(骰子) -> 条件分支(If-Else) -> LLM生成 -> End。
  • 目的:直观展示“随机性”是如何被代码逻辑控制的,体现高级感。

04. 为什么选 Coze 而不是纯写代码?

有兄弟会问:“小招,我自己写 Python 接 OpenAI API 不行吗?” 行,但累。

  • Coze (字节)
    • 优势:图形化界面,免费白嫖 GPT-4o / Doubao-Pro 模型(目前),集成了数据库和知识库,一键发布到飞书/微信/Discord。
    • 适用:快速原型验证,无需服务器。
  • Dify (开源)
    • 优势:可以私有化部署,数据握在自己手里,适合正式商业化项目。
    • 适用:对数据隐私敏感的团队。

我的建议:先用 Coze 跑通逻辑,觉得好玩再用 Dify 重构。


总结

用 AI 做互动叙事,策划的身份变了。你不再是建筑师 (Architect),一砖一瓦地搭建固定的迷宫;你变成了园丁 (Gardener),撒下种子(设定 Lore),浇水施肥(调整 Prompt),然后看着剧情自己长成参天大树。这种“涌现”带来的惊喜感,才是 AI 游戏的终极魅力。


Tags: #游戏开发 #互动叙事 #Coze #Dify #AI剧情 #RAG #独立游戏#

声明:该内容由作者自行发布,观点内容仅供参考,不代表平台立场;如有侵权,请联系平台删除。