穿越古代我三妻四妾,一个类似 SillyTavern 酒馆的 AI 角色扮演游戏 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
mandaren199789

穿越古代我三妻四妾,一个类似 SillyTavern 酒馆的 AI 角色扮演游戏

  •  
  •   mandaren199789 17 天前 917 次点击

    欢迎使用 ofloat ! 好消息是:作为游戏设计师,你不需要编写任何代码。 整个游戏的设计工作,完全通过编写自然语言的 Markdown (.md )文本文档来实现。这些文档就像是最顶级的剧本和规则书,AI 会严格遵循它们,搭建出你脑海中的世界并与玩家动态交互。


    1. 第一步:赋予世界灵魂 SOUL.md

    这是整个游戏的心脏,决定了游戏的“味道”和视听感受。你需要在这里定义 AI 作为裁判/旁白/NPC 群体的演绎风格:

    • 身份与视角:AI 扮演的是谁?是一个客观、无情的旁白,还是一个嗦的随行伙伴,亦或是某个高高在上的克苏鲁古神?
    • 文风与腔调:要求 AI 回复的行文风格。比如要求它是纯正的“赛博朋克废内”黑话,或是“文白夹杂、辞藻华丽的古仙侠风”,甚至可以要求环境描写占对话的一半。
    • NPC 的整体情绪/态度:告诉 AI 这个世界对玩家的恶意或善意。比如:“NPC 不要立刻相信玩家,要充满猜忌” 或 “这是一个轻松的种田世界,一切生物对玩家都抱有善意”。

    2. 第二步:制定游戏规则 AGENTS.md

    在这里,你要脱下作家的帽子,戴上“数值与系统策划”的帽子。告诉 AI ,当事件发生时,该如何判定和流转:

    • 数值与资源机制:明确你的货币是什么(灵石、信用点、理智值),玩家开局有多少,并且严格告诉 AI 如何加减这些数值。
    • 冲突结算规则:当玩家想要做困难的事情(比如强行破门、说服警卫)时,AI 该怎么判断?你可以设计比如:“所有的困难判定需要经过 AI 掷一个虚拟的 D20 骰子来决定成功与否”。
    • **事件触发器 (Trigger)**:设计一些强制的剧情转折点,比如告诉 AI:“当玩家停留在野外超过两轮对话,必须触发一次遭遇战”、“如果玩家抵达王城,必须立刻让禁卫军将领出现并质问他”。
    • 物理定律与战斗逻辑:游戏世界的常识。比如“在这个世界里魔法是不存在的”、“玩家不能无中生有,如果提出不合理的要求(比如突然掏出一把机关枪),必须严厉指出他的失败并给予生命值扣除”。

    3. 第三步:创建主角初始卡 USER.md

    在这里定义玩家降临这个世界时的初始状态。这是玩家的第一代入点。

    • 身份与背景:玩家是谁?他为什么在这里?(例如:你是一个刚通过深潜苏醒的雇佣兵,记忆全失,只知道兜里有一张带血的门卡)。
    • 初始面板/物品栏:告诉 AI 玩家当前的健康状态、拥有的装备、技能以及初始坐标。
    • 当前的首要目标:给玩家一个强烈的短期动机。例如“当前任务:逃离即将自毁的飞船,你只有五次对话机会寻找逃生舱”。

    4. 第四步:构建世界设定集库 data/memory/

    随着世界变大,你不可能把几千年的历史都塞进 SOUL.md 里。你可以:

    • **编写扩展资料 (Lore)**:在 data/ 目录下放置各种世界设定文档(比如魔法体系说明、各阵营关系树、物品合成图谱)。
    • 隐性喂养:不要让 AI 一开局就把这些知识全盘托出。告诉 AI:“你需要根据设定集的内容判定玩家的行动,但在玩家主动探索或询问之前不要透露世界观设定”。

    5. 第五步:建立核心机制 数值系统 (Stat System)

    如果你希望游戏有实打实的成长感和危机感,不仅要在 USER.md 里写明初始属性,还需要在设定中强制 AI “记账”:

    • 属性面板管理:要求 AI 在每次回复的末尾,附带当前的玩家状态(例如:[生命值:100/100 | 理智:80/100 | 金币:50 ])。
    • 成长与消耗公式:在 AGENTS.md 中写明明确的数值扣减规则。如:“受到普通攻击固定扣除 10-15 点生命值,使用法术固定消耗 20 点法力值。当生命值归零时,无条件宣告游戏结束(死亡)。”
    • **状态检定 (Check)**:数值不是摆设。明确地告诉 AI:“玩家在执行 [力量] 相关动作(如搬开巨石)时,必须检查其 [力量] 属性是否大于 15 ,否则必定失败并可能进入受伤或疲劳状态。”

    7. 第六步:引入骰子跑图与随机遭遇 (Dice-based Exploration)

    纯文字对话很容易变成空洞的扯皮,引入“跑图空间感”和“掷骰子随机性”能极大增强游戏乐趣。

    • 空间坐标与拓扑设计:在设定文档中给出大致的地形网格或拓扑结构(例如:中心是营地,东边一步是迷雾黑森林,南边是废弃矿洞),并规定好移动消耗,让 AI 严格维持并输出玩家的“当前位置坐标”。
    • **探索步数与随机表 (Encounter Table)**:借助 AI 内置的随机骰子机制,建立跑图规则。告诉 AI:“玩家每声明一次移动(例如向东探索),就算作消耗一个 [探索轮] 。每经过一个探索轮,AI 必须自动在后台掷一个 D6 (六面骰):
      • 1-2:遭遇怪物(根据当前地形决定类型)。
      • 3-4:发现资源或触发随机事件(如商人、天气突变)。
      • 5-6:平安无事,成功推进到下一区域坐标。”
    • 动态地牢/迷宫生成:让 AI 充当动态迷宫的导演。“当玩家进入迷宫时,每次跨过一扇门都需要抛 D20 决定房间类型:20 是极品藏宝室,1 是致命陷阱室…”

    设计师进阶贴士

    1. 留下足够的“呼吸感” 不要像写线性剧本那样写死每一步结果,要把可能性交给玩家的“蝴蝶效应”。AI 最擅长即兴发挥,你只需制定边界规则和主要矛盾即可。
    2. 善用角色扮演提示词技术 (Prompt Engineering)SOUL.mdAGENTS.md 中,使用祈使句和强烈限制。尽量用“绝不能……”、“必须……”、“当……发生时,立即……”这样的句型,防止 AI 失控跑题或扮演“老好人”。
    3. 黑盒试玩 (Playtesting) 反复载入你设定的文件夹,亲自扮演玩家去冲撞你制定的规则,看看判定是否合理,剧情走向是否有沉浸感。如果 AI 显得出戏,就回去修改你的 .md 文件吧。

    准备好了吗?现在就用任意文本编辑器打开 workspace 文件夹,开始创造你的史诗吧!

    图片描述 图片描述

    前往体验

    3 条回复    2026-04-09 16:25:30 +08:00
    dajj
        1
    dajj  
       17 天前
    这是怎么达到约束 AI 的效果的呢, 后端模型有什么讲究吗,还是什么模型都可以
    uyz
        2
    uyz  
       16 天前
    好玩,赶紧注册了一个,撩拨下
    DemonLover
        3
    DemonLover  
       16 天前
    github 地址 404 了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2463 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 01:17 PVG 09:17 LAX 18:17 JFK 21:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86