UFO中文网

 找回密码
 注册会员
查看: 107|回复: 0
收起左侧

【聊一聊】用GPT做了个文字冒险游戏之后

[复制链接]
online_member 发表于 2023-4-19 10:33:40 | 显示全部楼层 |阅读模式
  写在前面
1、我们做了啥:最近用ChatGPT、Claude、Cursor做了个可以直接在公众号玩的、简陋的文字冒险游戏,我们将它命名为《来自卷王星的你》
2、怎么玩:去后台回复关键词“卷王星”,触发对话
3、有啥意义吗:造轮子,但是是低成本半自动造轮子
<hr/>一、写在前面的后面

几年前,生命线(Lifeline)、人生重开模拟器这类文字游戏备受欢迎,玩家通过选择一个个选项触发各种荒诞离奇的事件,感受故事线背后的多样性带来的张力。我觉得很有趣,也想做一些属于自己的、简单的对话游戏,于是用公众号官方提供的平台配置了一个简易聊天bot,通过在后台手动配置对话就可以实现对话游戏的功能。
但是吧,这个过程就像珍妮机出现之前的手工纺纱,你需要在后台手动写入每一个对话,或者先写好所有对话的表格再导入。这是一种极具痛感的创作,内容生产者像是手工造轮子的乙方,精雕细刻但精疲力竭。
突然间,大型语言模型们带着它们的涌现能力在市场上“涌现”,AI在内容生产领域大杀四方。对于完成一个文字对话游戏文本这样的需求,你只要写好提示词,就可以流水线批量生产。这展示了一种无痛的创作[1],内容生产者好像忽然当上了甲方,创作变成了一种消费体验。对我而言,制作对话游戏过程本身变成了一种对话游戏体验,这很有意思。
很显然,GPT[2]会对就业形势、意识形态等问题带来千丝万缕的影响,即便现在没有,将来迟早会有。不过这不是本文的重点,我会暂且将这一系列影响悬置起来,然后站在当下的时间节点上,对构建的工作流、产生的感受进行切片保存,留待未来回溯。
二、工作流

前面说到,可以用GPT来流水线生产文字对话游戏文案,这里简单记录一下我们的工作流。

【聊一聊】用GPT做了个文字冒险游戏之后755 / 作者:123457389 / 帖子ID:116844
我们用到了ChatGPT、Claude,效果都不错。

  • ChatGPT-3.5文字表现不错,但经常忘记前文(可能是因为目前需求量太大)。ChatGPT-4有了质的提升,但目前综合成本较高。
  • Claude in Slack目前能够记住完整的对话,保证前后生成的游戏情节一致,但在中文表述上会出现一些奇怪的用辞。
2.1. 需求、规则、示例

这里需要注意的是,“文案规则”会在后面的生成过程中反复用到,不然大概率出现忘记规则、生成不符合格式文本的情况。
请以游戏文案设计师的视角,帮助我完成一部文字冒险对话游戏的情节设计和文案。

**游戏玩法**:游戏会给出初始背景、初始事件、初始选项,玩家选择选项后,触发相应事件。事件又会给出多个新选项,玩家选择新选项进而触发新事件,最终达成不同的结局。选项可以表现为玩家与npc对话,也可以表现为玩家在事件中决策。

**文案规则**:
1. 整体文案形式:以表格呈现,包括两列:第一列是“触发语”,触发语代表玩家选择的选项,包括初始选项、选项触发事件对应的后续选项;第二列是“显示语”,显示语代表“触发语”对应的显示内容,包括场景、触发的事件、事件提供的新选项。注意,“显示语”中的事件可以提供两个选项,而“触发语”必须是“显示语”中的某个选项。
2. 如何描述场景:50字左右,包含时间、地点、人物、意义。
3. 如何描述事件:标好对应的选项,因为除了初始事件外,其他事件必须与一个选项相对应。标好序号(如:“事件2”),保证每一个事件的序号是唯一的。60字左右。
4. 如何描述选项:标好序号串(如:“选项2-3”,这表示“事件2”中的第3个选项)。选项尽可能简洁,不超过10个字
5. 如何描述结局:标好对应的选项,因为结局必须与某些选项相对应。

**文案示例**:
|触发语|显示语|
|-|-|
|开始游戏|场景:一个繁华的商业街区,人群熙攘,你独自一人走在街道上,忽然看到一个神秘的小巷,小巷的拐角处有一扇破旧的门,门上的牌子写着“神秘的魔法展览”。<br>事件1:你好奇地走近门口,感受到门后面传来一股神秘的气息。你看到一个穿着黑袍的男子站在柜台前,他向你示意靠近一些。你察觉到他手里拿着一张卡片,上面写着“免费入场券”,你开始想了解一下这个神秘的魔法展览。 <br>选项1-1:询问对方 <br>选项1-2:不想了解|
|选项1-1:询问对方|事件2:男子微笑着,递给你一张小册子,上面写着“魔法展览导览”,然后开始向你讲解魔法的奥秘。你似乎被他的话语所吸引,开始对这个神秘的魔法世界充满好奇。<br>选项2-1:“我想深入了解魔法!”<br>选项2-2:表示质疑|
|选项1-2:不想了解|事件3:男子微笑着说:“没关系,这里的确不是适合所有人的地方。”他递给你一张小卡片,上面写着“如果你改变主意,欢迎再来”,然后向你告别。 <br>选项3-1:遗憾离开 <br>选项3-2:参加展览|
|选项3-2:参加展览|结局:“光明魔法”:你重新来到魔法展览,更深入地了解了魔法世界,学习到了许多神奇的魔法知识,对魔法的兴趣更加浓厚,你开始探索这个神秘的展览|

学习以上材料的格式,生成文案示例。
2.2. Generate!

我选择让GPT按“结局、初始情节、中间情节、最终结局”的顺序进行生成,这样方便把控整体方向。
给定**基本资料库**如下:
1. 背景设定:某个平行时空中有一颗类地行星——卷王星,卷王星人像地球人一样要接受大学本科教育、要选择参加考研,考研对于卷王星人来说是一件具有重要意义的事情。
2. 主线设定:卷王星公元6019年,你刚刚进入卷王星上的一所大学就读本科。3年后,你将面临考研大关。这3年中,你会干出哪些惊为天人的事情呢?作为一个卷王星人,你能否在考研大军中脱颖而出呢?
3. 游戏文案风格:黑色幽默

根据**游戏玩法**、**文案规则**、**基本资料库**,请仿照**文案示例**以表格形式给出:5个可能的结局。每个结局的字数不超过60字。下面的例子仅供参考:
|触发语|显示语|
|-|-|
|选项4-1:参加考研|“桃花运”:在考研期间,你结识了一个人生地不熟的留学生,你们意气相投,一拍即合。考试结束后,你被留学生邀请前往他的家乡游玩,意外发现留学生的家乡是一座充满传奇和神秘的城市。|

注意事项:
1. 结局文本的触发语不能是“开始游戏”,只能是某些选项。
2. 结局不能和事件同时出现,因为一个“选项”只能对应一个“事件及其新选项”或一个“结局”。
生成其他部分的提示词与上文类似。当需要生成一个新的游戏文案时,更改“基本资料库”中的相关设定即可。如果GPT不听话,那就在“注意事项”中加入前面写的“文案规则”和新要求。
2.3. 汇总、整理、查漏

由于我要用微信对话开放平台[3]打包整个对话,所以在汇总完GPT生成的、Markdown表格形式的所有文案之后,需要做一些形式上的调整才能上传。
举个例子:

  • 对于所有选项,我想实现“问法推荐”功能(点一下选项就可以在聊天页面直接发送这个选项),不然你还得手动打字输入

【聊一聊】用GPT做了个文字冒险游戏之后397 / 作者:123457389 / 帖子ID:116844

问法推荐功能


  • 这需要把原来的选项文本改成如下的html

【聊一聊】用GPT做了个文字冒险游戏之后539 / 作者:123457389 / 帖子ID:116844

微信对话开放平台 后台


  • 手动逐个改?太麻烦,让Cursor帮我写Python吧

【聊一聊】用GPT做了个文字冒险游戏之后792 / 作者:123457389 / 帖子ID:116844

在cursor中描述需求

【聊一聊】用GPT做了个文字冒险游戏之后528 / 作者:123457389 / 帖子ID:116844

cursor帮你写好了初步代码


  • 简单改改就能直接用了
import pandas as pd

# 读取Excel文件
df = pd.read_excel('卷王星tmp.xlsx',sheet_name='Sheet2')

# 定义替换函数
def replace_options(text):
    # 将文本按照<br>分割成列表
    text_list = text.split('<br>')
    # 遍历列表,对选项进行替换
    for i in range(len(text_list)):
        if text_list.startswith('选项'):
            option_text = text_list
            new_option_text = '<a href="weixin://bizmsgmenu?msgmenucontent=' + option_text + '&msgmenuid=' + option_text + '">' + option_text + '</a>'
            text_list = new_option_text
    # 将列表拼接成字符串
    new_text = '<br>'.join(text_list)
    return new_text

# 对“显示语”列应用替换函数
df['显示语'] = df['显示语'].apply(replace_options)

# 导出为Excel文件
df.to_excel('result4.xlsx', index=False)这些以往很繁琐的dirty work,现在只需要自然语言就可以很快处理完毕。
2.4. 完工

从使用GPT生成一段一段的文案,到整理成符合格式规范的表格,一个内容完整、质量凑合、情节离奇的文字对话游戏文案就完工了。在这个小项目中,搭工作流框架、写prompt算是固定成本,改基本信息库算是变动成本,此后我只需要改动基本信息库就可以不断生成各种文字对话游戏文案。

【聊一聊】用GPT做了个文字冒险游戏之后178 / 作者:123457389 / 帖子ID:116844

某次实验生成:卷王星顶尖学府——卷京大学

三、随便聊聊

3.1. 《来自卷王星的你》

我的初衷是选取我在当下感受到的一些很表象的社会现象,作为游戏背景让GPT自由发挥,生成一个庞大而怪诞的对话游戏。

  • 最有可能进入的结局:【“自由散漫”:你最终放弃考研,见识这个神奇星球的无穷魅力,过上了不羁放荡的生活】

【聊一聊】用GPT做了个文字冒险游戏之后925 / 作者:123457389 / 帖子ID:116844

自由散漫


  • 让GPT开一个“地狱笑话”:【你梦见自己来到地狱,发现这里居然也在举办考试,而恶魔正在笑着审阅试卷】

【聊一聊】用GPT做了个文字冒险游戏之后773 / 作者:123457389 / 帖子ID:116844

这里居然也在举办考试


  • ?【你发现“欢乐谷”竟然隐藏着一个培训机构,这里的每一个居民其实都是来培训的学生】

【聊一聊】用GPT做了个文字冒险游戏之后348 / 作者:123457389 / 帖子ID:116844

“欢乐谷”培训机构


  • 不按套路出牌:【“你就是辅导员!”:你放弃考研,寻找其他出路,结果当上了人工智能辅导员】

【聊一聊】用GPT做了个文字冒险游戏之后251 / 作者:123457389 / 帖子ID:116844

你就是辅导员


  • 《1984》的真理部?【你接受了“真理部”的治疗,重拾新生。你让更多人意识到,活得开心快乐并不代表要追求什么超常的能力,真正重要的,是与身边的人建立深厚的羁绊。】

【聊一聊】用GPT做了个文字冒险游戏之后999 / 作者:123457389 / 帖子ID:116844

一个自称“真理部”的组织


  • 普特南的“缸中之脑”?【这场危机让你恍然大悟,原来这世界上的一切都是机器人为了观察人类而设置的虚拟场景】

【聊一聊】用GPT做了个文字冒险游戏之后945 / 作者:123457389 / 帖子ID:116844

The Matrix!


  • 你醒啦?【“自我觉醒”:人们开始意识到,真正的自由来自于独立思考与审慎选择,而不是盲目跟从他人的引导和控制】

【聊一聊】用GPT做了个文字冒险游戏之后162 / 作者:123457389 / 帖子ID:116844

自我觉醒

3.2. 写在后面

从技术与应用的角度看,GPT赋予了我快速生产一堆文字对话游戏文案的能力,我的prompt工作流可以省下很多时间精力。当然了,不管是上述工作流还是产出的结果,依然都很缺乏想象力,就好像在用比生产计算器更高级的方式,生产一些半自动算盘。
文字MUD游戏是写死了的“硬编程”,为什么不直接让AI当npc呢?游戏AI Dungeon[4]就是这样的例子,在2019年OpenAI发布GPT-2之后的几个月,基于GPT-2的AI Dungeon横空出世,游戏玩法跟现在的“你与ChatGPT聊天”几乎一模一样,只是主题限制在特定世界观。AI Dungeon作者自己的评价是“很有娱乐性,风格也很独特”,“但几乎无法构建一个完整的故事”。很难想到,四年后GPT-3.5的涌现能力能够引发如此广泛的关注。
回到我的文字冒险游戏上,在我们的工作流当中,最重要的、最需要创意的“写剧本”任务交给了GPT,我只需要充当“CtrlCV工程师”,仿佛我才是那个机器人,机械地复制粘贴。这种感受很契合文章[1]中的发问:或许我们不用总是想GPT会怎样越来越像人,而是思考人在何种程度上是个语言机器。
<hr/>参考资料

[1] 情节严重社:当我们谈论知识时,我们在谈论什么?: https://www.bilibili.com/video/BV1Wh41137oS
[2] GPT: 本文提到的GPT有时指ChatGPT,有时指Claude,有时指预训练语言模型。能会意就行,懒得改了~
[3] 微信对话开放平台: https://chatbot.weixin.qq.com/
[4] 游戏动力:借助人工智能,文字冒险游戏迎来了新生: https://mp.weixin.qq.com/s/LWdewN_HE4biED1D6JqO0Q
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

UFO中文网

GMT+8, 2024-5-5 22:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表