机器学习能在游戏开发中做什么

韩伟 2017-11-14 232 标签: 机器学习游戏开发

机器学习适合做什么

机器学习当前在很多领域,都取得了相当巨大的进步。从应用领域来看,机器学习在“信息识别”、“数据预测”、“复杂控制”几个方面,展现出很大的能力。

  • 比如“信息识别”领域,依赖于大数据的训练,现在的图形识别已经非常完善了,手写数字的识别仅仅是类似Hello World一类的简单应用;

  • “数据预测”领域百度对于世界杯的预测达到令人吃惊的100%准确率,将来这种技术在各种据别历史数据的预测应用上,将有长足的发展,比如广告的推荐系统、财经数据的决策系统等等;

  • “复杂控制”方面,自动驾驶的技术经历了十几年的研究,剩下的似乎只有识别硬件的成本问题了。

然而,以上这些技术,相当一部分来源于“大数据”,或者叫“监督学习”的训练,也就是说,实际上这些机器的智能是来源于人类积累在数据中的“智慧”。机器仅仅是在“模拟”人类的某种思考判断,而这种模拟采用的更多是类似“查询搜索”的方法。——不过说回来,人类的经验几千年来,都是记录在书本上,需要用另外一个大脑来学习,然后才加以运用;而机器学习跳过了人脑这个阶段,从经验直接到应用,确实是一个伟大的进度。可以增加一点想象的是,以后所有“需要经验”的事情,已经是可以用电脑来代替了,比如医生看病。不过那些需要“创造”或者“发现”的事情,比如艺术创作,理解和发现客观规律,还是需要人脑。所幸是机器学习在“无监督学习”领域,能协助人类更好的去理解和发现世界的特征,这个方面也是非常有用的,但现在似乎应用领域并不非常活跃(也许是我的了解还不够广泛)。

[机器学习预测房价的例子]

AlphaGo在围棋领域战胜人类,给了我们很大的想想空间,我们会想:机器是否也能像人类一样理解游戏规则,从而玩游戏呢?我个人的理解,实际上现在还是不行的。如“监督学习”的模型下,机器只能通过大量的人类的“经验数据”,来模拟人类的游戏行为,但无法独立做出判断和思考;如果使用“深度学习”,确实会有一种“超越人类”的错觉,但是无法忽视的是,“深度学习”需要一种高度抽象,模拟游戏胜负规则的公式,来指导机器的自我对弈。在围棋、象棋这类已经发展了数千年的游戏领域,“子力计算”等游戏模式经验,已经能相当准确的描述这个游戏了。而对于其他的一些比较复杂的游戏,要高度抽象的用数学模型来概括一个游戏,还是需要人类大量的思考。这也是为什么深度学习在一些规则简单的游戏中,还能表现的比较好,而另外一些比较复杂的游戏上,就需要大量的人工干预才能稍微像样的原因。

[AlphaGo是用了人类的游戏经验的]

所以我认为,机器学习在现阶段,最成熟的应用,是利用“监督学习”的方法,对于大量人类的“经验”大数据进行模拟思考的方面。这个方向处理用于“理解”客观世界,也可以“模拟”人类对于复杂环境的行为,这两者是几乎一样的。

游戏角色AI在开发上的困境

机器学习很容易让人联想到在游戏中的角色AI。一直以来游戏中NPC或怪物的AI问题都是一个游戏比较难解决的问题。比如游戏的角色行为过于单一,让玩家乏味;或者游戏角色容易因为BUG陷入一些卡死的境地。为什么游戏角色AI会有这些问题?大体不外乎几个原因:其一是描述一个完整的AI非常的繁琐,环境越复杂,AI逻辑流程越容易出现漏洞;其二是为了游戏角色AI的目标非常多样化,很多游戏角色并不是越“聪明厉害”越好,而应该是作为一个“演出系统”,来让玩家体验游戏世界的工具。

[一套简单的游戏行为,就需要一个复杂的行为树]

现在比较流行的游戏角色AI开发方法,无外乎“状态机”和“行为树”两种,而这两种在数据结构上,是可以无损转换的,也就是说本质上是一样。这两个技术,都是为了帮游戏开发者,更准确、更完整的表述AI逻辑判断的数据结构。但是游戏本身的逻辑复杂度,还是要由程序员一段段的去理解,然后才能编写成程序。在另外一些游戏中,会用到一种叫“面向目标的路径规划”的技术,实际上是“状态机”的一种升级技术:利用A*等寻路算法,来自动生成“状态”之间的逻辑路径,而无需一开始就以人工输入的方式全部输入进去。这种技术因为是在运行时产生状态机图,所以表现出来的行为会更加丰富和准确,较少会陷入一些“没有事先预测到的状况”从而陷入逻辑卡住的情况。

但是不管状态机和行为树如何努力,从开发者角度来说,都必须通过人脑来抽象和理解游戏世界的规则,和各种可能的情况。加上游戏AI很多时候是需要一种“表演”效果,要用代码和逻辑去“模拟”出一场表演,是相当繁琐的工作量。(如果以深度学习技术来说,实际上也无法做出这种表演效果,因为这种表演的逻辑行为,往往不是“最优”的选择,甚至是相当“差劲”的)

所以,归根结底,游戏中的AI的困境,是由于工作量的原因造成的。由于我们没有很好的生成“游戏行为”的工具,导致我们的游戏行为往往不够好。

机器学习如何应用在游戏角色AI的开发上

在机器学习领域,学习人类的行为,并且应用于合适的场景,是“监督学习”下最常见、最成熟的技术之一,经典的应用就是“自动驾驶”。相对于自动驾驶需要昂贵的雷达设备,才能“感受”现实世界,在游戏中所有的数据都唾手可得,这种监督学习的应用更是没有任何障碍。

假设我们的游戏,已经把基本的游戏规则开发好,游戏场景也已经布置好,剩下的就是如何置入游戏角色。就好像一部电影,场景、道具都已经到位,摄像机和剧本都已经准备好,那么剩下的就是演员的表演了。按照以前的做法,我们需要用复杂的状态机系统,去操控那些游戏角色演出,而现在,我们可以让策划(或者其他开发人员)直接去操控游戏中的角色,去真实的以游戏的操作行为,去让游戏角色做出演出行为,而机器学习的程序,就好像录像机一样,可以通过记录我们操控的角色的行为,去学习如何模仿我们的操控。当我们表演的足够丰富后,机器学习就可以完全取代人工的操控,做出一些和预设相同的行为特征。

如果我们的游戏能像上面的方法去开发角色AI,我们将会在游戏AI行为工具上,得到一次巨大的进步。我们不再需要通过人脑去抽象和转化游戏的“表演”,而是可以直接去“扮演”,这样除了可以节省大量的“程序员”的开发工作外,对于调试AI行为,表达更丰富的角色行为特征(性格),也是有相当大的好处。

[游戏开发在很多方面已经越来越接近电影制作]

显然,如果完全用“游戏”的形式来取代AI开发,即便在机器学习的支持下,可能还会有很多不足之处,比如“人工表演”可能无法覆盖所有的游戏场景环境。但是只要能节省下工作量,我们还是可以利用旧的状态机技术,来定义比较“完整”的逻辑环境,弥补那些可能存在的漏洞。不过我相信,随着对游戏测试的深入,机器学习会能更快更好的应对这些逻辑漏洞,毕竟“玩”几把游戏,比用写代码然后调试,要快的多。

游戏角色AI的业务价值

现在的成名游戏中,确实有那么一大批是似乎对游戏角色AI“没有必要性需求”的,比如我们常见的MOBA类游戏。在棋牌类游戏中,我们也不太希望用一个厉害的AI让我持续的输钱。但如果设想一下,如果我们的策划能比较低成本的生产“AI”,那么我们的游戏就会脱离“玩具”的层面,变成一种可以“表演”的产品。我们常常说IP对游戏的重要性,而真正能体现出IP的,往往是故事体验,这就需要一套很好的“表演”系统。

从另外一个角度说,如果我们的游戏除了精彩的PVP内容,还有很多优秀的PVE内容(所谓的单机体验内容),那么玩家也许会慢慢倾向对我们所生产的PVE内容来付费。从电影市场这么多年的发展来看,优秀的“表演”还是会有很大的市场的。从知识产权保护的角度来看,游戏玩法很容易被抄袭(PVP主要是玩法),但PVE内容却很容易得到保护。除了利用海量用户去激活PVP的收入,在PVE方面的开发,也许是一个新的市场空间。(从《阴阳师》这类产品能明显感受到这股市场的潜力)

[巫师3不仅仅是一部互动电影,也是一个玩法优秀的游戏,更是一个超级IP]

总结

如果我们能利用机器学习技术,开发出更通用的游戏角色AI工具,那么可能让游戏拓展出新的PVE游戏市场,对于游戏IP的输出也有非常明显的作用。

本文来自 韩大 微信公众号