gno*_*ice 19 language-agnostic artificial-intelligence
这是背景...在我的空闲时间我正在设计一个名为Staker的炮兵战游戏(灵感来自旧的BASIC游戏Tank Wars和Scorched Earth),我正在用MATLAB编程.您的第一个想法可能是"为什么选择MATLAB?还有很多其他语言/软件包更适合游戏设计." 你会是对的.然而,我是一个笨蛋,我有兴趣学习如何从头开始设计游戏的具体细节,所以我不一定要使用任何预制模块.此外,我已经使用MATLAB多年了,我喜欢用其他人没有真正尝试做的事情的挑战.
现在解决手头的问题:我想加入AI,这样玩家就可以对抗电脑了.我刚开始考虑如何设计算法来选择方位角,仰角和射弹速度来击中目标,然后每回合调整一次.我觉得也许我一直在思考这个问题并试图让AI在开始时过于复杂,所以我想我会暂停并向社区询问有关如何设计算法的想法.
一些具体问题:
您建议我查看AI设计的具体参考吗?
你会设计AI玩家以连续的方式改变难度(难度为0(简单)到1(硬),所有仍然使用相同的通用算法)或者你会为离散数量的AI玩家设计特定的算法(就像一个随机方向射击的易敌,或者是一个能够解释风的影响的敌人?
你会从什么样的数学算法(伪代码描述)开始?
一些额外的信息:我用来模拟抛射物运动的模型包含流体阻力和风的影响."流体"可以是空气或水.在空气中,基于一些简单的大气模型,空气密度(以及阻力的影响)随着地面高度的变化而变化.在水中,阻力非常大,以至于弹丸通常需要额外的推力.换句话说,射弹可能受到除重力之外的力的影响.
在真实的炮兵情况下,所有这些因素都可以通过公式或简单的暴力模拟来处理:发射电子炮弹,施加所有相关的力量并查看其着陆位置。调整并重试,直到电子炮弹击中目标。现在你已经有了可以发送给枪的号码。
考虑到情况的复杂性,我怀疑是否有比暴力破解更好的答案。虽然您可以预先计算预期阻力效果与速度的表格,但我认为这是不值得的。
当然,人工智能每次都会将第一颗炮弹扔到你头上的游戏不会很有趣。一旦你知道了正确的值,你就必须让人工智能成为一个糟糕的镜头。对射击应用随机因素,然后走向目标——每次射击时将其移动 30+随机(140)% 朝向真实目标。
编辑:
我确实同意 BCS 随着时间的推移不断改进它的想法。我这么说,但后来改变了主意,不知道如何写一堆它,最后忘了把它放回去。它应该越难,随机成分应该越小。
归档时间: |
|
查看次数: |
2700 次 |
最近记录: |