写在前面
最近在研究游戏AI,感觉要写一个不傻的AI并没有那么容易,于是开始研究AI到底该怎么写,有没有什么技巧和框架。
发现Web图书:Game AI Pro
刚开始读这一套书,我似乎意识到了把技巧理论化的重要性,我写AI时用瞎搞的逻辑,居然是什么“施密特触发器”“双阈值法滞后”,我决定把这一套书读完。
知识点
1.施密特触发器和滞后
据说双阈值法滞后是保持AI控制系统干脆利落的关键
例:物体A跟随物体B,物体A与物体B的距离超过5米,A就会靠近B,当A与B的距离缩小到2.5米以下的时候,停止跟随。再次超过5米,又会进入跟随状态。
const float SEPARATION_DISTANCE = 2.5f;
const float APPROACH_DISTANCE = 5.0f;
if (approach_player == false) {
if (distance > APPROACH_DISTANCE)
{
approach_player = true;
//动作函数
}
}
else
{
if (distance < SEPARATION_DISTANCE)
{
approach_player = false;
}
}
注:这段是c语言伪代码,本篇博客中其余脚本均为MATLAB
2.高斯随机值
你一定了解过正态分布,在概率论,统计学等诸多学科都有用到
如果不知道: https://zh.wikipedia.org/wiki/正态分布
我们经常用到伪随机数rand(),它可以产生白噪声,是绝对随机的。但这样的随机往往满足不了我们的需求
比如我们以 vec2(0.5,0.5)为中心,产生100个随机坐标
clear;
x=rand(1,100);
y=rand(1,100);