欢迎来到天天文库
浏览记录
ID:41841200
大小:329.11 KB
页数:7页
时间:2019-09-03
《[管理]回合制战略游戏的AI算法设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、回合制战略游戏的I算法设计译自EdWelch《DesigningIIgorithmsForTurn-BsedStrtegyGmes》在动作游戏里山电脑控制的对手总是有着先天的优势:完美的命屮率,快如闪电的反应,所以为这类游戏设计I的挑战在于使其更“人性化”,可以被玩家打败。在回合制战略游戏中,局而却正好和反。速度和命中率已经不再举足轻重了,人类玩家的敏锐和直觉可以轻易地战胜任何I对手。事实上,要设计出可以打败一名有经验的玩家的I儿乎是不可能的,但毕竞那也不是我们想要的。挑战在于让I的攻防策略看上去是聪明的,经过考虑的,保持游戏屮挑战的同时,讣玩
2、家取得瑕后的胜利。一旦玩家熟悉了I的战术Z后,游戏很快就会变得无聊起来,因此一定程度上的不可预见性还是很必要的。面临的挑战:一款典型的战略游戏分析引用实际的例子是理解I设计问题最容易的方法。在这里我们來看一款太空战题材的游戏。我们的例子是一款俗称“4X”的游戏。[译注:4X游戏,战略游戏的一种,其主要的四个游戏目的分别是:explore(探索),eXpnd(扩张),eXploit(掠夺),eXterminte(毁灭)]在这款游戏里,你必须扩张并征服整个星系。每个玩家都拥冇战舰以及殖民舰,始于己方行星,能够殖民化适合屈住的行星。为其设计I的最初尝
3、试可能只是一个简单的算法,分派针对各资源(如行星,或舰队)的任务,从最匝要的任务开始执行。守卫正在匸产的行星具冇最窩的优先级,因为它们最冇价值。第二重耍的是守卫没有生产任务的殖民地,接看是进攻敌人的主行星,Z厉是殖民能屈住的行星,再是进攻敌人的舰队,然后修理受损的E船,最后是探索尚未开垦的领域。总之,我们从最高优先级的任务做起,检查在离我们的行星附近是否有敌人舰队存在。正如你在图片屮所看到的,敌方护卫舰X,Y威胁到I的慕地和殖民地。于是,我们找到最近的驱逐舰,分配进攻任务。你可能已经附意到我们的算法在这里的漏洞。如果碰巧,护卫舰Y先行动,距离锻
4、近的是驱逐舰,它会被分派去作攻击。而此时护卫舰X乂行动了,剩下能进攻的只有驱逐舰B了,但它离得太远,已经來不及阻止敌方护卫舰X轰炸我们的家园了。很明显,对付护卫观Y的应该是驱逐舰B,护卫舰X则该留给驱逐舰。此外,这个简单的算法还会引起其它的问题。來看一下一个更加复杂的场景:在这个场呆里,我们的驱逐舰因为先前的战斗严重损坏。将其再次遣往战场只是徒劳。将英送回主星球修理才是明智Z举。于是就只剩下了驱逐舰B和驱逐舰C來保卫殖尺地。但驱逐舰C离(敌人)的护卫舰Y太远了,更好的做法是让它轰炸敌人的殖民地,因为距离上非常接近(更别提剩下的燃料消耗同样巫耍)
5、。与此同时I全副武装的殖民舰队也会因此从主耍的殖民任务中被调回。解决方案:资源分配算法分配记分为了解决以上这些貝•体的问题,首先我们要设汁一个记分系统。每一项任务都会被分配到一个总体的优先级,如下:保卫我们的殖民地:1进攻地方的殖民地:2殖民(其他)星球:3进攻地方舰队:4修理受损舰队:5开拓未开星的疆域:6每一项任务还有一个优先级的加权值,比如防守任务的加权值基•丁•殖民地的价值。(有着生产任务的殖民地有着极高的加权值。)相似地,修理任务会根据受损程度计算加权值,而殖民任务的加权值则来口于行星的适合居住程度。终于我们要來考虑被舰队的距离了,如
6、下:当前目标:生成的任务靠近殖民地的敌舰:保卫殖民地任务敌舰:进攻敌舰任务敌殖民地:进攻敌殖民地任务可居住的行星:殖民化行星任务受损舰队:修理舰队任务未开星的领域:开拓任务分配得分=(6-整体优先级+加权值)/所分配舰队的距离因此,在先前的场景中,尽管防守任务拥有较高的优先级,但驱逐观C离敌方星球实在太近了,所以进攻敌方殖民地的任务得分会更高。此外,因为驱逐舰严巫受损,所以驱逐舰的修理任务的优先级加权值也会卜分高。再加上它离修理站的距离很近,修理任务的得分就会高过防守任务。算法概要整体算法分为4个部分:收集任务(GtheringTsks)I有-
7、•张探测距离Z内敌方舰队和行星,以及己方资源的列表。生成其需要完成的任务如卜I可能的分配(Possiblessignmcnts)问题的另一方面在F如果我们分配任务的次序出错的话,那么就无法做到对资源的最优利用。这可以通过分步分配任务來解决。我们使用两个特殊的类:Possiblessignment(候选任务)和Tsk(仃:务)。Possiblessignment通过一个任务和一个可能的“任务执行者”联系在一起,并记录“分配得分”。Tsk记录优先级,优先级加权值和任务。SpaceobjectlistObjectsVisible:Spaceobjec
8、tlistAssets:Spaceobjectownerlocationdamage7assign(PossibleAssignment)isTas
此文档下载收益归作者所有