我的任务是用AI做一个电子游戏。我和我的团队差点就成功了,但我们正试图找到一个好的启发。我们教过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秒的时间采取行动,这个算法听起来不太好!我不需要代码……我们只是需要一个想法!谢谢!
后编辑:我们应该尝试Delaunay三角测量吗?
看一下谷歌AI挑战赛的事后分析。
我正在考虑重新设计我的旧Wurmeler游戏(包括AI),所以我在寻找新想法时遇到了你的问题,所以这里是我对旧AI的见解
- Wurmeler与tron相似,但速度慢得多,蠕虫转动平稳
- 游戏空间为2D位图 每个AI都很简单…愚蠢的,……
- 但导航比我好
- 除非它们被其他玩家关闭
- 或压入本地min/max
- 但仍然很有趣
现在AI算法在每个决策中移动:
-
从Worm创建少量射线
- 移动方向
- 少数左转角度(5度步距即可)
- 很少向右转
-
计算射线长度
- 从蠕虫到边界
- 或其他蠕虫路径曲线
-
使用max规则更改标题
这个旧的AI只维护导航,但我想实现更多(这还没有完成):
-
将地图划分为正方形
- 每个区段将具有已填充空间的平均密度
- 所以如果可能的话,AI将选择较少填充的区域
-
添加策略
- 导航(已完成)
- 逃离(如果太近或太落后,远离附近的玩家)
- 攻击(如果在相对平行的航线上,太靠近前方)
-
可以从栅格转换为矢量
- 应该加快光线追踪和碰撞检测
- 但随着长度的增长可能会变慢…必须尝试一下,看看
- 可能使用的字段算法