Tron的良好启发式

时间:2013-04-29 07:51:18

标签: artificial-intelligence voronoi

我有一个与人工智能的tron游戏。我和我的团队几乎成功了,但我们正试图找到一个好的启发式方法。我们教过Voronoi,但它有点慢:

for yloop = 0 to height-1
for xloop = 0 to width-1

// Generate maximal value
closest_distance = width * height

for point = 0 to number_of_points-1
  // calls function to calc distance
  point_distance = distance(point, xloop, yloop)

  if point_distance < closest_distance
    closest_point = point
  end if
next

 // place result in array of point types
 points[xloop, yloop] = point

next
next

我们有5秒钟的时间来移动,这个算法听起来不太好!我不需要代码......我们只需要一个ideea! 谢谢!

稍后编辑:我们应该尝试Delaunay Triangulations吗?

2 个答案:

答案 0 :(得分:5)

答案 1 :(得分:1)

好吧,我正在考虑重新设计我的旧Wurmeler游戏(包括AI),所以我在搜索新想法时难以接受你的问题,所以这是我对旧AI的见解

  • Wurmeler类似于tron,但是更多的摇摆和蠕虫变得顺畅
  • 游戏空间是2D位图
  • 每个AI都非常简单......愚蠢,......
  • 但比我更好地导航
  • 除非他们被其他玩家关闭
  • 或粉碎到本地min / max
  • 但他们仍然很有趣

现在确定每个决策中的AI算法:

  1. 从蠕虫中创建一些光线

    • 一个在运动方向
    • 几个角度向左转(5度台阶很好)
    • 很少转向右边
  2. 评估光线长度

    • 从蠕虫到边界
    • 或其他蠕虫路径曲线
  3. 使用最大规则更改标题

  4. 这个旧的AI只维护导航但我想实现更多(这还没有完成):

    1. 将地图划分为方形区域

      • 每个部分将具有已填充空间的平均密度
      • 所以如果可能,AI会选择较少的填充区域
    2. 添加策略

      • 导航(已完成)
      • 逃离(如果离得太近而远离近处球员)
      • 攻击(如果在相对平行的路线上,太靠近并且在前面)
    3. 可能是从栅格转换为矢量

      • 应加快光线追踪和整理检测
      • 但随着长度的增长可能会变慢......必须尝试并看到
      • 可能使用字段算法