时隔半年,又做了一款MCP作为驱动的文字冒险RPG游戏
deepseek吧
全部回复
仅看楼主
level 1
死之蛋头 楼主
你应该已经不记得我5月在贴吧里发的“AI驱动文字冒险游戏”了,不过我还是用MCP做出了它的续作
2025年11月09日 12点11分 1
level 1
死之蛋头 楼主
我是用了MCP作为服务端,保存游戏的各个状态与给到AI的工具函数。
希望AI能够智能地:
1、更新当前世界观
2、穿越到其他世界
3、添加NPC
4、和其他NPC爆发战斗
5、更改玩家以及NPC的状态
6、增加技能、获得/失去物品
7、刷新任务列表
8、给其他NPC广播玩家的行为
9、给出结局
10、刷新敌人
11、生成文生图的提示词
同时,NPC单独有个系统,可以智能地:
1、更改自身“人设”
2、背叛玩家与玩家为敌
3、和玩家成为队友
2025年11月09日 12点11分 2
level 1
死之蛋头 楼主
但是,现在还有许多不足之处:
1、NPC的对话与主对话之间无法严丝合缝地契合。由于我想要在游戏中添加“自我值”的设定,让主对话变为玩家角色的感知滤镜,所以不能简单地将主对话的内容给到NPC,而是由主对话决定添加哪些提示词给到NPC。
2、AI总喜欢“哄”玩家:比如玩家想要观察周围是否有伤员,那么AI就一定会给出一个“伤员”
3、AI对剧情长度不可控,且有时会生成一些较为“无趣”的片段
4、每次给到AI的信息量过多(世界观信息以及工具函数信息)且权重相等,导致某些信息被选择性忽视
我期望有更多的感兴趣的、有技术的人能够给出宝贵建议。
贴吧无法上传链接,我把git链接放在B站的视频简介(BV1MTk9BiEko)里了。
2025年11月09日 12点11分 3
level 8
老哥牛逼哦[真棒]
2025年11月09日 23点11分 4
level 1
死之蛋头 楼主
这些天我在下班后看了一些关于上下文工程的内容,发现了导致这些问题的原因与解决方法。
首先是“NPC无法了解全部发生的事情”。我最初是期望让模型调用MCP中的函数,将世界中发生的事情全部广播给NPC,以此让NPC和主世界进行信息同步。但是这样做会造成模型有过多的提示词,造成上下文污染。这个问题实际上就是我所记录的第四条问题:每次给到AI的信息量过多,导致某些信息被选择性忽视。
所以我之后的做法是:不再将“广播给NPC”作为一个可供参考的函数来处理;而是等到主函数输出完以后,这个输出作为输入的一部分,单独用AI为各个NPC进行广播。这样就避免了上下文污染。
而针对于剧情不可控、AI哄玩家的问题,实际上也算是上下文的内容过多导致的污染。之前我将所有的函数都放在一个MCP中让函数调用,就是会稀释AI的关注点。
因此,我首先决定更改“世界观”类的定义,将每个世界观中分割为不同的“游戏阶段”。在每个阶段中玩家用任何方法推进剧情,一旦满足AI要求,就推进到下一个阶段。有点类似于《掠食》那样的沉浸模拟类游戏。
同时,将游戏状态分类,将世界观相关的信息与MCP函数单独给到AI让它决定是否推进游戏。之后再将是否推进以及世界观变化作为一个输出输入到下一个AI,来最终输出给用户。
不过细心的你或许已经发现了,像这样做明显会增加调用的AI次数,无论是游戏的响应时间还是AI的金钱消耗,都会随之增加。为了遏制这一问题,同时也为了让AI更好地利用上下文,我还会将给到AI的上下文窗口进行截断。
同时也期望大家能够集思广益,看看有没有更好的方法。
2025年11月15日 13点11分 5
1