生成游戏,游戏中所有的一切都是生成的。游戏会根据玩家的互动做出反应,生成相应的内容。
一般游戏中NPC的词都是固定的,玩家的问题也是从几个固定选项中选择。这太没意思了,现在我们的自然语言处理技术以及深度学习技术都已经可以实现语音对话了,我想这一技术也可以加入到游戏中,让玩家与NPC的谈话更自由。那时就不是选择某句话或一个劲的按空格,而是自己可以输入文字或直接语音。
当然对话只是游戏中一小部分,有时在一些RPG游戏中都可有可无,所以在可以激进一点。剧情类游戏 “底特律:become human”、”the walking dead”、“life is strange” 给我留下了很深的印象,玩家的选择会影响故事的走向,“undertale”、“仙剑”等这些优秀的RPG游戏也同样有着各式各样的选择,并最终影响游戏的结局。不过这些结局都是预先设计好的,”底特律”的结局有800多个,已经非常惊人了(这其实是游戏中几个剧情结局排列组合后的结果,不过考虑到多设计一个结局就要引入的工作量,这个结果也足以称得上是伟大的杰作)。我想设计一个游戏,其游戏性是线性的,其可能的结局有无数多个,但又不像“minecraft”、“GTA”等沙盒类游戏,你玩的、你昨天玩的、你看别人玩的都没啥太大区别(除非引入mod),”GTA”的剧情任务都是固定的。那么能不能让一个游戏会随着玩家的选择做出反应与变化,这样的反应与变化是玩家预测不到的,不是某一段固定的程序,而是自动生成的。
当然自动生成代码,这需要真正的人工智能,我们现在还办不到。但借鉴alphadog背后的强化学习技术或许能做到以固定代码生成不固定模式。例如游戏中某个NPC其实就是一个智能体Agent,它被更上一层的Agent赋予了目标,它会控制自己的行为,与玩家产生互动的同时,会不断学习并改变自己的行为来达到目标。当然它的可选行为是固定的,因为这涉及到真正的代码(不可能让agent从行走程序中自己学会说话),不过可以不用考虑可选行为具体对应的个体,所以可以预先设计出许多许多的可选行为,最后让Agent自己从中选择最优的。
设计这样的游戏可能要从底向上设计。
设计的难点在于非线性部分,是游戏的核心,类似于元胞自动机的规则,决定整个游戏的基本性质。如果是做RPG类的游戏,核心就是人物的选择,例如走路、交谈、攻击、吃饭、睡觉、购买、卖、采集等,这些行为只有调用预先设计代码,而外形贴图、bgm、地图等都可以通过某个程序生成出来,或许GAN生成对抗网络就能做到。如果是做冒险解谜的游戏,那机关、迷宫、难题等的初始规则就核心。
可能这样做还不够,那就需要设计一个可以生成所有的算法。进化算法。想想看,人类也不就是从某个原始细胞中不断进化而来的吗。如果能设计一个最最核心最最底层的核心编码,让这个编码能够不断进化,而筛选其好坏的办法就是上层的agent,举例说这个agent的目标是让玩家玩的游戏时间更长,而它会将能够的实现这一目标的编码进行筛选保留,最后编码不断进化并产生了各种行为,例如你在地图上走着走着遇到了个不知道啥玩意的东西围绕你转了一圈,好奇心让你与这坨东西产生了交互,检测到这个行为的agent将保留这个编码。
可以仿照DNA到人类的过程设计一个简易的系统来生成游戏中某个最特定最核心的部分,让游戏变得变化莫测。
考虑到以上的可实现性,我觉得如果做一个以人类为背景的游戏估计会很难,因为不管怎么样人的行为都是复杂的,完全自动进化生成不可能,自己编写有限的规则或行为,最后也算不上是新奇(这方面“矮人堡垒”似乎是不可超越的)。所以干脆就完全跳出人类框架,这就需要设计一个好的游戏构思、背景或故事。否则和我见过的有个游戏是给人体验计算机”玩”游戏时的感受,满屏幕的花花绿绿的像素块,你按键盘只是发现有像素块会做出一些奇怪的、似乎没什么规律的变化。如果生成出这样的游戏应该是没人会玩的。
我的想法是模拟一个外星人。想想看,与那种人类脑补出的外星人人不同。这个是实打实的外星人,根据某个大环境设计父环境,父环境在嵌套子环境,不断嵌套,环境与环境之间不断关联,互为因果,最后某个行而有效的编码能在某个环境中实现涌现,进化出具有某些行为的agent。同时将键盘输入与有效里的agent进行映射,或直接作为某种环境刺激输入到系统中,使电脑前的你能直接操控或参与到agent的行为中。如果外星人不太好,或根本进化不出来,那可以模拟蜜蜂或蚂蚁。先模拟出环境,再手动编码蚂蚁程序,只需模拟个基础例如大脑与四肢消化系统等,之后交给环境,使其进行筛选进化,最后得到符合你所设定环境的、有进化出完成功能与行为的蚂蚁。