【游戏精粹】AI-初幕·终焉

详情请翻阅《游戏编程精粹》系列丛书,原文虽然会稍难些,但是顾及方方面面且点明了各个技术的出处(包括技术所属公司、引用论文出处等)。如果对书中的名词不懂想了解的,建议去外网Google搜索。


   对于AI来说,优化是最重要的。优化会始终贯彻整个游戏的开发,在AI系统(一):优化策略 一文中提到了11个简单而实用的策略:

    1. 使用事件驱动行为而非轮询;
    2. 减少重复计算;
    3. 由管理员集中进行协调;
    4. 不那么频繁的运行AI;
    5. 将处理工作分散到多帧中完成;
    6. 利用细节级AI;
    7. 只解决问题的一部分;
    8. 离线完成困难的工作;
    9. 使用突发行为以避免编写脚本;
    10. 通过连续记录来分摊查询成本;
    11. 重新考虑问题。

   对于接下来所总结的技术,这些策略都会极大提高性能。你的游戏AI不能因为性能优化差而显得“迟钝”,而好的优化则不仅优雅也高效。至少,对于节省的性能,你能为AI选择更多的技术支持使其更智能而不至于因为性能问题而放弃可能存在的更好设计。


   接下来是讲解AI的技术基础:

      1.随机数

      2.模糊逻辑

      随机数一文介绍了可预测随机数与真正的随机数生成技术,其次也对随机数生成器进行了评价,帮助开发者根据实情选择合适的随机数生成器。

      可预测随机数

            在这一部分,除了对伪随机数生成进行了介绍,还为游戏的随机提供了一定的思路帮助:无限宇宙算法。

   在无限宇宙算法中,通过伪随机数与数据的关联,生成了一个个随机的世界数据。他们既是关联的(根据一颗时间种子进行生成,并通过数据的关系进行衍生),又是惟一的(根据伪随机数进行生成,在不同的时间种子下都是完全不一致的数据)。通过合理的利用随机数,我们可以极大的增强游戏的生命力。当然,我们需要为此付出一定的运算时间为代价,但我相信这完全是值得的。其次,别忘记了开头提到的11个策略,有了它们的帮助,可以极大的缩小为此(性能消耗)付出的代价。

      生成真正的随机数

   在这一部分,则是对真正随机数生成方法进行了介绍。相比伪随机数的可预测,真正随机数:随机的、分布不均匀、不可预测、不重复。

   要想做到真正随机,则需要借助随机输入源与混合函数进行合作生成。当然,为了获得真正随机数是要付出代价的:速度慢、输入源少、随机程度完全取决于输入样本的混乱程度。在大多数情况下,伪随机数已经足够使用了,而且不需要付出太多额外的性能代价。不过,为游戏中重要部分作出真正随机数的选择,完全是值得的,它能保障游戏的生命力。

      还有随机数生成器的介绍,这部分就不在此重复了,有兴趣可翻阅原文。

      紧接着是模糊逻辑,模糊逻辑一文介绍了模糊逻辑的基础,以及其在游戏开发中导致的组合激增的解决方法Combs。最后介绍了一个游戏开发的实际应用:管理场景复杂度的模糊控制方法。当然,这后续的技术介绍中,很多技术都或多或少的用到模糊逻辑的相关思想。

      模糊逻辑

   模糊逻辑允许我们量化地模拟大小逻辑,这也允许我们创造一个比传统逻辑(true或false)更聪明的AI。

   模糊集合:集合的极值代表“是”与“否”的界限,其他值代表程度。当输入的值越接近极值,则代表程度越深、越强烈,将输入值传入特征函数得到[0,1]的区间返回值。

   通过对模糊集合进行交、并、非、或等计算可以极大的丰富AI智能。通过这些运算而完成的功能称为模糊控制。模糊集合之间的运算会产生不同的交集,可以根据适合自己游戏的公式,将不同集合在不同交集(情形)的权重进行计算得到一个最终值。针对这个最终值进行AI的响应。

   当然,模糊逻辑说到底就是一堆的if-then语句。这会导致模糊系统的组合激增(简单的排列组合就能知道这是指数级的灾难),通过Combs方式能将这场指数灾难化为线性增长问题。使用Combs方法时,考虑的是各个集合同输出之间的关系,每次为一个变量创建规则。通过逆模糊化的方法(比如质心法),将模糊集合的运算转为最终值,AI将根据这个最终值进行决策。Combs方法与传统方法相比,单从得到的结果来看,只能达到相近的地步(但也足够丰富AI的智能),但它能极大的节省传统方式的性能消耗,并且拥有相对较强的可维护性。

   模糊逻辑在游戏开发的一种实际应用就是管理场景复杂度的模糊控制方法。建立一个模糊逻辑控制器(黑盒),当系统需要时检测场景的集合负载,根据集合负载输出对应的性能决策方案来某种形式的宏观可控性(如调节场景的LOD、能见度算法等)。实际上,可以创建一个框架,这种框架不仅仅控制LOD,同时也把其他优化技术与模糊逻辑控制器相联系。这是一种可以满足游戏中出现的最佳性能质量要求的强有力机制。


   基础介绍完毕,接下来就是比较有趣的技术总结了。让我们从宏观微观的角度进行逐层次的梳理。

   首先是随机数一文提到了“无限宇宙算法”,它为我们生成一个庞大的随机世界(在我们的生成规则下)。让我们为这个世界创造族群(模拟群体行为:Flocking算法),每个族群需要一个领袖(AI个性化决策系统)。在领袖的带领下,每个族群都不断探索这个未知世界并变得更好(“创建影响力地图”与“策略评估技术”)。终于,随着族群的发展,不同的族群彼此相遇,有些族群友好相处、合作共赢,而另一些好战的族群(“有齿物群的模拟:捕食者和猎物”)则与相遇的族群开战(使用战力值评估模型进行战争役分析)。随着时间的流逝,一些失败的族群灭亡了,而生存下来的族群则不断衍生出了智者,他们将知识分享给了人民。族群从黑暗的愚昧慢慢走向了文明。一开始他们只会基于本能发挥自己的能力,慢慢地,他们通过自己的智慧,将本能发展为了技能(应用基于模型的决策)。此外,他们彼此间的情感愈演愈烈,情感开始影响他们的理智(“有关态度的一切:为意见、声望和NPC个性构建单元”)。他们的情感为他们缠上了羁绊,除了竞争,为了更好的明天,他们也会友好合作(独立非玩家角色合作行为的实现)。

   光阴似箭,世界日渐成熟。创世者邀请了许多旅行者来体验这个世界。每一个旅行者的旅行经验都不一样,有些旅行者是第一次穿梭世界旅行,而有些旅行者则有着丰富的探险经验。为了每个旅行者有着比较好的体验,创世者需要对这个世界进行掌控与调节(叙述战斗:利用AI增强游戏张力)。随着时间的推移,有些旅行者希望能够在这个世界定居,并与创世者一起为这个世界创造更多未来。创世者需要将创造的权杖分享给这些旅行者(针对AI代理、对象的可拓展触发器系统)。当然,这个权杖并不好使,因为这个创世者也是第一次创造世界,虽然权杖比较丑,还不好使,但至少能用。


   为了避免篇幅过长,我将整个技术按顺序编成了一个故事,帮助读者有序的学习,能够构建一条有脉络的知识体系。由于个人能力有限,这个故事还不够丰富,期待未来能够学习更多的技术,让这个故事更加完善。

   具体技术学习,各位读者有兴趣可以点击对应文章的超链接进行学习。当然,在这,再次建议各位对技术有兴趣的读者可以翻阅原书《游戏编程精粹》进行学习。虽然原书比较晦涩,一开始对初学者比较不友好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值