一、描述
TW项目是一个拥有较广阔野外空间的SLG游戏,玩家的军队方阵可以在野外进行长距离行军、短距离自由行军、占领要塞、驻扎、形成战斗阵型战斗等行为。其中,野外的山脉、河流等会产生静态阻挡,可能会用到navmesh寻路;而由玩家把守的要塞、由玩家在空地上的驻扎行为,会在野外地图上产生动态阻挡;自动形成战斗阵型等行为,可能会兼用鱼群寻路算法或者RVO避障寻路算法。
每个服务器活跃军队方阵可能有几万个,每天产生的长距离寻路请求可能达几十万或者百万个,而用常规的A*寻路、navmesh寻路算法计算量巨大,并且很多长寻路是由服务器端计算或者校验,影响服务器效能,所以我们必须找一个快速长距离寻路、校验的方法。由于玩家可以自由行军,产生的短距离寻路比长距离寻路数量更多,所以我们必须找一个能快速校验短距离路径的方法。由于在野外会产生动态阻挡,随时挡住长/短距离寻路的路径。
本文给出了对于问题的分析和解决这些问题的方法。
二、需求
1、前端长距离行军寻路
2、后端长距离行军寻路(由于有些军队方阵所属于的玩家不在线,需要在服务器启动时或者玩家离线前有任务委托时寻路)
3、对前端长距离行军寻路的校验
4、前端短距离行军寻路
5、后端短距离行军寻路
6、对后端长距离行军寻路的校验
7、行军中遇到动态障碍物(要塞、驻扎的敌人)后停止
8、对战时形成战斗阵型(如步兵在前,工兵在后等)
9、军队方阵有最大密度,单位区域内达到最大密度会形成阻挡
10、隔障碍物(如河水)远距离攻击
11、追击(追击者最优路径)
注:以上所有需求是2D寻路
三、最优实践步骤
对于需求1-6,下面的第1,2,3步骤可以全部解决。
1、用navmesh寻路算法的第一步,为野外地图创建寻路面片并且优化,达到面片总数量最少、单个面片面积最大(要保证面片是凸多边形)即可;
2、用蚁群寻路算法、或者IP地址寻路算法、亦或者带权重网状递归寻路算法,计算形成静态网状路图,保存

最低0.47元/天 解锁文章
1519

被折叠的 条评论
为什么被折叠?



