图1
表1
根据条件,我们可以用如下普通算法来判定怪物的反应: if(d<100) state=嘲笑,单挑; else if(d<200) state=单挑; else if(d<300) state=嗜血魔法; else if(d<400) state=呼唤同伴; else state=逃跑; 上面的算法适用大多数情况,但其时间性能不高,我们可以通过判定树来提高其时间性能。首先,分析主角生命值通常的特点,即预测出每种条件占总条件的百分比,将这些比值作为权值来构造最优二叉树(哈夫曼树),作为判定树来设定算法。假设这些百分比为:
表2
构造好的哈夫曼树为:
图2
对应算法如下: if(d>=200)&&(d<300) state=嗜血魔法; else if(d>=300)&&(d<500) state=呼唤同伴; else if(d>=100)&&(d<200) state=单挑; else if(d<100) state=嘲笑,单挑; else state=逃跑; 通过计算,两种算法的效率大约是2:3,很明显,改进的算法在时间性能上提高不少。 一般,在即时战略游戏中,对此类判定算法会有较高的时间性能要求,大家可以对二叉树进行更深入的研究。现在,我们进入本文的最后一节:图的介绍,终于快要完事了。5、图 在游戏中,大多数应用图的地方是路径搜索,即关于A*算法的讨论。由于介绍A*算法及路径搜索的文章很多,这里介绍图的另一种应用:在情节脚本中,描述各个情节之间的关系。 在一个游戏中,可能包含很多分支情节,在这些分支情节之间,会存在着一定的先决条件约束,即有些分支情节必须在其他分支情节完成后方可开始发展,而有些分支情节没有这样的约束。 通过分析,我们可以用有向图中AOV网(Activity On Vertex Network)来描述这些分支情节之间的先后关系。好了,现在假如我们手头有这样的情节:
图3
图4
关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放 / 友情链接 Copyright ©2001-2006 Lihuasoft.net webmaster(at)lihuasoft.net 网站编程QQ群 京ICP备05001064号 页面生成时间:0.002