DEV LOG ENTRY #2 大模型时代了还是要写AI

精华修改于10/2713 浏览综合
TapTap
程序员小猫这是要罢工了!
今天主要介绍一下Steering Behaviors的应用,让数量众多的敌人移动更加自然。最早开始关注Steering Behaviors是通过一款用LOVE 2D引擎开发的游戏《SNKRX》(传送信标https://github.com/a327ex/SNKRX
这游戏用不可思议的简单图形,凑羁绊,简单的操作方式,敌人的移动和配合,还挺能让人感受到压力的。然后了解了一下,主要是用了Steering Behaviors来实现了这个功能。
那这次趁机会撸一个吧。
找参考!必读书目Mat Buckland的《Programming Game AI by Example》中详细介绍了用C++实现各种转向行为的原理和方法。(传送信标https://github.com/wangchen/Programming-Game-AI-by-Example-src
简单说来,Steering Behaviors仅仅简单地通过对转向力的计算,控制游戏中实体移动的算法,微调参数可以实现非常自然的与环境交互的行为逻辑。
  1. 计算期望速度:根据具体行为(如Seek、Flee、Arrive),首先确定一个理想中的速度向量,其方向指向目标,大小通常为角色的最大速度。
  2. 计算转向力:用期望速度减去角色的当前速度,得到一个转向力。这个力指引角色如何从当前运动状态调整到期望状态。
  3. 应用转向力:将计算出的转向力(可能与其他力合成)应用到角色上,根据物理公式(力影响加速度,加速度改变速度,速度更新位置)来更新角色的位置和朝向。
通过考虑目标的速度,还可以派生出Pursuit、Evade行为,针对局部空间进行的Wander行为,为了与环境交互进行的避障行为、Wall Avoidance行为、Path Following。另外还有Separation、Alignment、Cohesion这样的集群行为。
看下最早我们的测试行为和简单应用了3D的Seek行为之后的对比吧。
第一周的视频中,追逐玩家的敌人最终甚至可以完全合体。
仅仅是用Seek行为,也能让敌人的追逐更有压迫感。
诶嘿!
2
2