堀内贵文

生成世界上属于自己的宝可梦

概要

从游戏过程中输入的六个词语中,AI会生成新的宝可梦种类。几分钟后,这种新种会出现在草丛中,玩家可以遇到它、捕捉它并给它起昵称。不仅是外观和名字,还会现场组装包括属性、种族值、招式以及游戏中使用的数据在内的研究原型。

在原型中,把对话、文字输入、后台生成、野外遭遇、捕捉、命名等环节作为一个体验连接起来,而不需要暂停游戏。新物种不仅仅是图像,而是作为现有游戏系统可以处理的种族进行注册。

在这项工作中所放在中心的,并不是生成模型本身。而是由人类设计出游戏平衡和外观的一致性条件,让AI只在这个范围内进行探索的“生成框架”。此外,还亲自进行游戏,初步考察如果是自己的生成物,是否真的会产生依恋。

问题——如果是独一无二的,会产生依恋吗

游戏的乐趣在于选择角色、培养角色、给角色命名,从而将其变成“只有自己的存在”。然而,这个出发点在开发者提供的选项之中。当通过生成AI从出发点本身就能创建玩家特有的存在时,对角色的喜爱是否会变得更强呢?

要验证这个问题,仅生成一张图片是不够的。生成的存在需要进入游戏世界,遇见、捕捉,并且之后还能使用。因此,准备了两个玩家参与度不同的入口。与爷爷交谈时无需输入即可生成,而与奶奶交谈时玩家需要选择六个词。首次交谈的那一方决定了该次游戏的生成方式。

这个原型的目的是,并不是要对依恋下结论。其目的是建立将生成物整合到常规游戏体验中的基础,并找到今后可以进行比较的条件。

游戏流程

以下是玩家选择词语的“参与生成”流程。在桃花森林与奶奶交谈,然后在游戏中原本的“简单对话”中选择六个词。在继续游戏的过程中,生成会推进,准备就绪后会听到叫声。进入草丛时会出现新种类,可以用与普通野生宝可梦相同的操作进行捕捉。名字、属性、种族值、技能、正面和背面的战斗精灵图标、持有图标,每次执行都会生成。一系列动作也可以在 演示视频 中确认。

站在透花森林里的老夫妇。对话窗口显示“你在想什么样的生物呢?”
和奶奶说话就开始了。
标题为“想象的生物:”的简单对话输入画面。输入了 BEAUTIFUL、ATTACK、FIRE 这几个词。
用翡翠自带的“简单对话”,传达六个词语。
站在森林草丛旁的玩家。对话窗口中显示“草丛在摇动……有什么东西在里面!”
生成在PC端需要几分钟。叫声会通知准备完成。
战斗画面。头上燃烧着火焰的红色蜥蜴正面对着玩家。屏幕上显示“野生的 FLAMEREL 出现了!”
火焰属性的蜥蜴 FLAMEREL 从摇曳的草丛中出现。
在战斗中,怪兽球正被投向 FLAMEREL。
和其他种族一样,可以用精灵球捕捉。
询问 FLAMEREL 的昵称的命名画面。输入的是 GGG。
就像其他种族一样,可以取昵称。
手持屏幕。生成的种族拥有专用图标,与普通的三只宝可梦并排显示。
像其他种族一样,拥有专用的图标并排列在手中。
FLAMEREL 的宝可梦信息画面。显示了它是火属性,特性为猛火,性格是调皮,以及在托卡森林以等级7的状态遇到的情况。
和其他种族一样,状态画面也能正常运作。

设计课题——自由生成会破坏游戏

AI能够想出新的角色,但该角色能否在游戏中成立是另一个问题。如果能力过高,难度会被打破;如果类型和技能不匹配,就难以培养。如果外观过于复杂,转换成64×64像素的精灵时就无法辨认其形状。

另一方面,如果把一切都固定起来,就没有在每次执行时产生不同东西的意义。必要的不是消除AI的自由,而是区分作为游戏需要守住的部分和允许变化的部分。

因此,设计对象从单只宝可梦转移到了能够生成宝可梦的空间。人类定义目标、限制、禁止事项和验证方法,AI 在其内部具体化候选方案。这是作为可运行原型尝试的我的设计哲学型设计。

方法——设计的不是生成物,而是生成条件

不让LLM写自由文本,只让它填写姓名、类型、种族值、招式、体型、颜色等预定项目。输出内容不能直接采用,要通过验证器检查。如有违规,将违规的规则返回给模型,直到满足条件为止再重新生成。

  1. 人类来决定边界。将游戏平衡、屏幕上可读的形式、应避免的表达,制定为可检查的规则。
  2. AI将候选方案具体化。根据玩家的话语提示,建议允许的项目值。
  3. 机器验证规则。自动判定数值、技能组合、禁止表达等。
  4. 只反馈违规行为。不符合条件的候选人会连同理由一起退回,并重新生成。

保护游戏的限制。种族值总和设定在280〜360范围内,各能力也设定了上下限。技能从游戏源码中提取,并限定为该种族的类型或一般类型。此外,排除了必杀、一击自爆、固定伤害、过于强力的技能,还检测了攻击技能的数量以及是否有类型相符的技能。捕获率和成长速度等固定,以便保持生成的差异在可比较的范围内。

保护外观的限制。体型从即使是小精灵也容易保持轮廓的候选中选择,并且限定了颜色和特征的词汇。排除了人类特征、流血、武器、文字等。最后,一定要在图像生成指示中加入“只有一个”“全身”“不要生成多余的手脚”等防止破坏的条件。

在某个记录中,模型最初提出了总种族值为380的方案。框架会检测违规并促使重新生成,最终收敛到320的规格。重要的是,不是偶然得到好的结果,而是设计了不采用偏离框架的结果的流程。

将体验在游戏内部完成

玩家接触到的只是游戏内的对话、语言选择以及草丛中的遇遇。无需为了生成内容而打开其他界面。另一方面,计算量大的处理由PC上的Python进程负责,并通过文件与游戏进行交互。通过mGBA上的Lua脚本桥接两者,实现了保留现有游戏操作感同时分离外部AI处理的效果。

  1. 制定规格。本地语言模型将六种语言转换为经过验证的种族数据。
  2. 摆姿势。图像模型绘制参考插图,并从中生成正面、背面、手持图标,保持一致的姿态。
  3. 转换为游戏用数据。将图像减少到15种颜色,并转换压缩为GBA可处理的精灵和调色板。
  4. 反映到正在运行的游戏中。将数据写入已预约的区域,在不重新启动游戏的情况下出现新种类。

由于相同的数据也会写入磁盘,因此反映的种族即使重新加载游戏也会保留。生成只进行一次,无法撤销。如果在遭遇时逃跑或失败,种族会留在世界中,但如果击败它,就不会再出现。这种不可逆性,也是为了让玩家在体验中感受到“世界上只有一个”的意义而设计的。

在原型中确认的事项

这是一个由个人制作的可行性验证,而不是完成的游戏或用户实验。到达的点和未验证的范围如下划分。

自己尝试的结果——仅仅因为独一无二,并没有产生依恋

根据我自己试玩原型的情况,对生成的宝可梦没有产生强烈的感情。这只是开发者本人一个人的感想,不能作为普遍化的实验结果。不过,这为思考接下来应该改变什么进行比较提供了一些线索。

可能左右依恋的条件有两个。

形成鲜明对比的是,与游戏用的自动生成不同,我们通过与多个生成AI的对话和手工操作反复制作出的“花狐”。比较候选方案、修改、直至满意为止,这个角色让人有了感情。我认为,这是因为它既有足够的质量,又包含了反复尝试的参与过程。

哈那狐狸的正面。是淡绿色的狐狸,尾巴像是缠着花的藤蔓流下。 花狐狸的背部。可以看到开花尾巴的全部长度。
花狐——拥有开花尾巴的森林守护者。它奔跑过的地方草木萌芽,即使在荒芜的土地上也能召唤新的生命。它的姿态被视为森林向未来成长的象征。
Hanagi2ne 的宝可梦信息画面。显示了草属性、特性为茂盛、性格为大胆,以及在东果之森以7级遇见的情况。精灵图为拥有花开尾巴的淡绿色狐狸。 战斗画面。从背面看到 Hanagi2ne 正面对野生的波加曼。屏幕上显示“Hanagi2ne 的吸取!”
通过反复对话和手工制作设计的“花狐”,已作为游戏内的种族实现。

这个原型并没有回答“生成内容会产生依恋吗”这个问题。它将原本模糊的问题,分解为两个可以有意改变的因素:生成物的质量和参与的深度。在下一步的验证中,需要在制作过程中加入选择、比较和修改,并在将生成物的质量统一到一定水平后,由多名参与者进行比较。

实现

生成管道、约束与验证框架、面向GBA的数据转换、游戏方面的修改内容,都在GitHub 仓库公开。

pret/pokeemerald以反编译为基础,作为个人研究制作。未分发ROM、ROM补丁或游戏内素材。这里刊载的所有精灵都是AI生成的原创作品。宝可梦是任天堂、株式会社Creatures、株式会社Game Freak的商标,本项目与这些公司无关,也未获得其批准。