中国战地技术资源网 技术专区 BF2General Discussion(综合讨论区) 飞行员AI研究    (回复:81/浏览:4611)
字号: ﹣中﹣
头衔 版主
积分 14670
帖子 964
注册 2009-06-03

飞行员AI研究

1 楼 发表于 2010-01-05 16:54 打印 只看楼主
bf2中的飞行员AI看起来很简单,近距离空中格斗使用机炮,中远距离使用空对空导弹,对地面目标则使用炸弹或空对地导弹。但是仔细想想会使用三种武器的bot已经很聪明了。
同样的AI在直升机驾驶员身上貌似很难实现。
不知道大家对此有没有研究。

其实我也是想延续这个帖的话题 http://www.bfmil.cn/post-114006-1.fhtml
抱歉,回帖的时候还请到本贴来[大笑]
(预想回帖者:1、老孔 2、鬼面 3、小哈 4、双叶 5、shan20000315 ......)
4
狂顶
0
猛踩
头衔 版主
积分 37604
帖子 1402 (2)
注册 2009-07-10
2 楼 发表于 2010-01-06 12:43
晕倒 昨天回帖了怎么没见了?
如果是直升机pialt位上的武器 BOT只会使用编号为1的武器
照理说应该可以的 但目前还没实现过 可能与aibehaviors有关吧
头衔 版主
积分 14670
帖子 964
注册 2009-06-03
3 楼 发表于 2010-01-07 11:52
我的贴也是,看来昨天出现了灵异现象。

aibehaviors里面关于plane和helicopter的两段我看过了,没发现什么不同。也许是我看得不仔细吧。
老孔啊,这个应该算是一个关键性的技术问题。如果能够找到原因的话,对于创作高智商bot是大有好处的。

记得有人曾经说过,没有bot不会用的武器,只是你没看见而已。看来也不尽然啊。

在AIX里面,有一个AH64gunship,主驾驶的武器为左键机炮,右键火箭弹和地狱火导弹。在aix中我在副驾驶的位置上曾经清楚地看到过主驾驶席上的bot灵巧地切换这几种武器(其实速度比较慢,动作也比较呆滞,貌似在思考着什么[偷笑] )。但是当我把ah64gunship挪到HJ里面以后,(同时把aibehaviors里面关于gunship的那段抄录了进去),再让这架飞机使用其本身的AI,则bot驾驶员的表现就让人大跌眼镜了。
头衔 版主
积分 37604
帖子 1402 (2)
注册 2009-07-10
4 楼 发表于 2010-01-07 14:24
以前研究这个问题的时候 我在AIX里观察了很长时间 也没见你说的那种情况 尽管我还是希望有的
这个先放一边吧 让BOT用那么多种武器意义也不是很大 WZ活不了多久都得挂的 先搞团队
头衔 少校
积分 7101
帖子 194
注册 2009-12-30
5 楼 发表于 2010-01-07 15:39
因为在上班,手里没有代码,就先用你的这个http://www.bfmil.cn/post-114006-1.fhtml 回贴里的

DoragonKong的“定义PIAltFire 和weaponselect 确定PIAlt位上的武器BOT只会使用编号为一的那个"(应为编号为1的那个)我没测试过,但是看到你的下面的代码,感觉区别就在红字行代码上.........

这是卡曼奇的AI。

rem *** Weaponory ***

rem * Rockets*
weaponTemplate.create rah66a_Rockets
weaponTemplate.indirect 0
weaponTemplate.minRange 10.0
weaponTemplate.maxRange 500.0
rem weaponTemplate.weaponFire PIFire     此行之前weaponselect1没写,说明是默认为weaponselect1
weaponTemplate.setStrength Infantry    15.0
weaponTemplate.setStrength LightArmour 10.0
weaponTemplate.setStrength HeavyArmour 3.0
weaponTemplate.setStrength NavalArmour 0.0
weaponTemplate.setStrength Helicopter  0.0
weaponTemplate.setStrength Airplane    0.0
weaponTemplate.fireRate 1800
weaponTemplate.allowedDeviation 4.0

weaponTemplate.create rah66a_Gun
weaponTemplate.indirect 0
weaponTemplate.minRange 5.0
weaponTemplate.maxRange 350.0
weaponTemplate.setStrength Infantry   20.0
weaponTemplate.setStrength LightArmour 15.0
weaponTemplate.setStrength HeavyArmour 0.0
weaponTemplate.setStrength NavalArmour 0.0
weaponTemplate.setStrength Helicopter  12.0
weaponTemplate.setStrength Airplane    0.0
weaponTemplate.allowedDeviation 3.0

rem * Laser guided *
weaponTemplate.create rah66a_agm114_hellfire_tv
weaponTemplate.indirect 0
weaponTemplate.minRange 30.0
weaponTemplate.maxRange 500.0
weaponTemplate.weaponActivate PIWeaponSelect2
weaponTemplate.weaponFire PIAltFire
weaponTemplate.setStrength Infantry    0.0
weaponTemplate.setStrength LightArmour 15.0
weaponTemplate.setStrength HeavyArmour 15.0
weaponTemplate.setStrength NavalArmour 10.0
weaponTemplate.setStrength Helicopter  0.0
weaponTemplate.setStrength Airplane    0.0
weaponTemplate.allowedDeviation 20.0
weaponTemplate.fireRate 60

weaponTemplate.create rah66a_Sidewinder
weaponTemplate.indirect 0
weaponTemplate.minRange 10.0
weaponTemplate.maxRange 500.0
rem weaponTemplate.optimalRangePercentage 85
rem weaponTemplate.weaponActivate PIWeaponSelect3
rem weaponTemplate.weaponFire PIAltFire
weaponTemplate.setStrength Infantry    0.0
weaponTemplate.setStrength LightArmour 0.0
weaponTemplate.setStrength HeavyArmour 0.0
weaponTemplate.setStrength NavalArmour 0.0
weaponTemplate.setStrength Helicopter  30.0
weaponTemplate.setStrength Airplane    20.0
weaponTemplate.allowedDeviation 20.0
rem weaponTemplate.setFiresThroughTransparent 0

被rem 掉的文字恰恰说明其在武器切换中的作用!!!

同样是PIAltFire,被rem掉的rah66a_Sidewinder 如果实际被游戏使用,应该是平行使用概率85高于rah66a_agm114_hellfire_tv .....

所以建议你试一下把“weaponTemplate.optimalRangePercentage xx 最佳策略并行概率”加到你需要BOT自动判断使用哪种武器的部分,85概率可以根据你的侧重不同进行调整!放在PIWeaponSelect选择之前。

例如下:

rem * Laser guided *
weaponTemplate.create rah66a_agm114_hellfire_tv
weaponTemplate.indirect 0
weaponTemplate.minRange 30.0
weaponTemplate.maxRange 500.0
weaponTemplate.optimalRangePercentage 90
weaponTemplate.weaponActivate PIWeaponSelect2   这行你先删除试试,只加上一行,看否有效;
weaponTemplate.weaponFire PIAltFire
weaponTemplate.setStrength Infantry    0.0
weaponTemplate.setStrength LightArmour 15.0
weaponTemplate.setStrength HeavyArmour 15.0
weaponTemplate.setStrength NavalArmour 10.0
weaponTemplate.setStrength Helicopter  0.0
weaponTemplate.setStrength Airplane    0.0
weaponTemplate.allowedDeviation 20.0
weaponTemplate.fireRate 60



[本帖由帖主于 2010-01-07 16:16 编辑]
头衔 版主
积分 14670
帖子 964
注册 2009-06-03
6 楼 发表于 2010-01-07 16:34
老孔,你這不是不求甚解嗎?[哈欠]  不像你的風格啊。[偷笑]

樓上,你終于來了。我估計你會對這個問題感興趣的。
你說得都對,理解得也很正確,我也是這麽理解的。
我這樣改過,但是改好以後卡曼奇的主駕駛就不會用rah66a_agm114_hellfire_tv了,面對地面上的坦克,他居然在調整成攻擊角度后發射了rah66a_Sidewinder。[晕]
头衔 版主
积分 37604
帖子 1402 (2)
注册 2009-07-10
7 楼 发表于 2010-01-07 18:08
piweaponselect 和 pimenuselect都没发现起作用
shan你确定试过了起作用吗?
不求甚解?卡住了嘛 先做其他的
[本帖由帖主于 2010-01-07 18:15 编辑]
头衔 版主
积分 37604
帖子 1402 (2)
注册 2009-07-10
8 楼 发表于 2010-01-07 18:24
已经再次测试过了 如下所示 BOT仍然用AGM打直升机 不是AAM

weaponTemplate.create ah1z_ATM
weaponTemplate.indirect 0
weaponTemplate.minRange 18.0
weaponTemplate.maxRange 375.0
weaponTemplate.weaponActivate PIWeaponSelect1
weaponTemplate.setStrength Infantry    1.0
weaponTemplate.setStrength LightArmour 1.0
weaponTemplate.setStrength HeavyArmour 9.0
weaponTemplate.setStrength NavalArmour 1.0
weaponTemplate.setStrength Helicopter  1.0
weaponTemplate.setStrength Helicopter  2.0
weaponTemplate.setStrength Airplane    0.1
weaponTemplate.allowedDeviation 15.0

weaponTemplate.create AH1Z_AAM
weaponTemplate.indirect 0
weaponTemplate.minRange 0.0
weaponTemplate.maxRange 375.0
weaponTemplate.weaponActivate PIWeaponSelect2
weaponTemplate.setStrength Infantry    0.0
weaponTemplate.setStrength LightArmour 0.0
weaponTemplate.setStrength HeavyArmour 0.0
weaponTemplate.setStrength NavalArmour 0.0
weaponTemplate.setStrength Helicopter  0.0
weaponTemplate.setStrength Helicopter  7.0
weaponTemplate.setStrength Airplane    5.0
weaponTemplate.allowedDeviation 15.0
头衔 版主
积分 37604
帖子 1402 (2)
注册 2009-07-10
9 楼 发表于 2010-01-07 18:31
上文中的weaponTemplate.weaponActivate PIWeaponSelect3 应该写成weaponTemplate.weaponActivate PIWeaponSelect2
pialt和pialt位可以同时设为1 因为是不同位上的武器
头衔 版主
积分 14670
帖子 964
注册 2009-06-03
10 楼 发表于 2010-01-07 20:54
我这边又试验了一次,对地没问题。上次可能我看错了。但是对空还是不行。老孔麻烦你试一下这个。
http://www.vdisk.cn/down/index/3988689A9090/rah66a.rar.html
提取码:3988689A9090
密码我pm你。
头衔 版主
积分 37604
帖子 1402 (2)
注册 2009-07-10
11 楼 发表于 2010-01-07 22:05
干嘛还加密呢。

你的那个压缩档嘛 对地和对空导弹都是pialt位上的武器 对地导弹编号为一 所以BOT会使用 对空导弹编号为2 所以BOT不会使用 就是这个原因了
头衔 版主
积分 37604
帖子 1402 (2)
注册 2009-07-10
12 楼 发表于 2010-01-07 22:07
另外 尝试把对地和对空导弹改成pifire位 这个我没试过 有兴趣试试吧
头衔 版主
积分 14670
帖子 964
注册 2009-06-03
13 楼 发表于 2010-01-07 22:36
加密是为了避免一些不必要的麻烦。[偷笑] 凡是想研究的人我都会单独发PM的。
尝试把对地和对空导弹改成pifire位
这个我也试一下,谢了。
头衔 VIP
积分 77539
帖子 533
注册 2009-12-25
14 楼 发表于 2010-01-08 13:41
关于这个问题,我也有一个疑问。
AIX里面的SU47, 他的武器machinegun+AAM+AGM*2+bomb.
请问有谁见过他使用bomb的吗?
第二种AGM好像也没有使用过。
头衔 版主
积分 37604
帖子 1402 (2)
注册 2009-07-10
15 楼 发表于 2010-01-08 17:03
BOT的固定翼可以顺利切换使用各武器 但就直升机不行
头衔 禁止访问
积分 1842
帖子 939
注册 2009-12-18
16 楼 发表于 2010-01-08 18:24
*** 帖主被禁止,系统自动屏蔽帖子内容***
头衔 版主
积分 14670
帖子 964
注册 2009-06-03
17 楼 发表于 2010-01-08 20:28
引用
原帖由roxette2006于 2010-01-08 13:41 发表
关于这个问题,我也有一个疑问。
AIX里面的SU47, 他的武器machinegun+AAM+AGM*2+bomb.
请问有谁见过他使用...

这个我也注意到了。我只看到它使用过这个。
飞行员AI研究
飞行员AI研究
头衔 版主
积分 14670
帖子 964
注册 2009-06-03
18 楼 发表于 2010-01-08 20:55
Hello Devilman, small roxette's told me, that you taught him a lot about this problem, and even post your answer here for us. So first of all, I'll say thanks to you.
But unfortunately, although I've reset the ai and itemindexes of the weapons just as you told me, bot still can not use the AAMs. And they sometimes even use the AGMs to attack the enemy's helicopters.
飞行员AI研究
weaponTemplate.create rah66a_Sidewinder
weaponTemplate.indirect 0
weaponTemplate.minRange 50.0
weaponTemplate.maxRange 1500.0
rem weaponTemplate.optimalRangePercentage 85
weaponTemplate.weaponActivate PIWeaponSelect2
weaponTemplate.weaponFire PIAltFire
weaponTemplate.setStrength Infantry    0.0
weaponTemplate.setStrength LightArmour 0.0
weaponTemplate.setStrength HeavyArmour 0.0
weaponTemplate.setStrength NavalArmour 0.0
weaponTemplate.setStrength Helicopter  45.0
weaponTemplate.setStrength Airplane    45.0
rem weaponTemplate.setFiresThroughTransparent 0
weaponTemplate.fireRate 1800
weaponTemplate.allowedDeviation 20.0
weaponTemplate.deviationCorrectionTime 1.0
weaponTemplate.deviation 2.0
头衔 版主
积分 37604
帖子 1402 (2)
注册 2009-07-10
19 楼 发表于 2010-01-08 21:23
so the problem is how to make BOT use more than 3 weapons in helicopter
头衔 版主
积分 14670
帖子 964
注册 2009-06-03
20 楼 发表于 2010-01-08 21:39
yes.
and i doubt if the pilot of su-47 can drop his bombs.
I wonder if someone could take some photos for evidence.