TW项目寻路算法最优实践


一、描述
        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地址寻路算法、亦或者带权重网状递归寻路算法,计算形成静态网状路图,保存

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐鹏V

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值