开发ing经验关于游戏中寻路

简介:

任何的游戏几乎都需要寻路吸,最常用的则是A星寻路,这个算法在网络上可以找到很多的版本,然而,今天则是一起探讨寻路算法的问题。
在我们当前的正在开发的项目中,使用的就是A*算法,在正常的寻路中表现非常好,速度很快,但是实际过程中,用户则有可能点击一个不可能到达的点,那么这个时候有趣的问题就发生了,整个逻辑则会“顿”一下,当然了,这取决于运算方法和主要逻辑是不是在一起,这得另说。只说“顿”的情况,它的发生是因为这个点不可能到达,则我们强大的A*寻路把所有的点全部找个遍,实际情况则是这样的:在4000x3000的地图上,寻路循环进行了30万次,才只是找到一个近似路径而已,我们将这个部分做了修改,将寻路缩小到指定范围,如果超过这个范围则不在进行寻路,图例表示如下:


只对设定的范围内进行搜索,这也是比限定搜索长度要容易的方式,我尝试使用限定搜索的总长度,但是不怎么好,对于A*的算法代码改动太大,而使用设定范围,只需要在超出范围时候控制好即可。
关于直接寻路,我们会得到一个很不自然的路径,那么为什么不先进行直线行走,走到特定位置然后再按按照寻路点走呢,我们的项目中是这样的解决的,先使用向量计算,然后判定按照步长上的每个点是否在不可达点上,当出现这种情况,则调用寻路,虽然不能达到100%的平滑寻路,但是对于普通的行走已经足够应付,会走一个相对很爽的路径。
可能上述写的很杂乱,表述的问题其实很简单,有的时候我们研究和优化很多的代码,都是存在于实验室——一个完美的环境,而在真实环境将面临着用户乱点一通,或者提出为什么不是很平滑的移动的问题,这些问题有可能让我们需要将路重走一遍,而本篇则是我们项目当中的一篇更新邮件子内容。


 
 
// 在限定范围内进行处理,所以我们在处理之前就看是否是超出了范围。
off_x += father.x;
off_y
+= father.y;
if ((off_x < 0 ) || (off_x >= this .mapW) || (off_x < _rangeMinX) || (off_x >= _rangeMaxX))
{
return false ;
}
if ((off_y < 0 ) || (off_y >= this .mapH) || (off_y < _rangeMinY) || (off_y >= _rangeMaxY))
{
return false ;
}
if ( this .map[off_x, off_y].block)
{
return false ;
}
// 下面的代码属于另外一个部分,类的成员,作为判定的限定参数
private static int maxFinderW = 50 ;
private static int maxFinderH = 40 ;
private int _rangeMinX = 0 ;
private int _rangeMinY = 0 ;
private int _rangeMaxX = 1 ;
private int _rangeMaxY = 1 ;
private int _sx
{
set { _rangeMinX = value - maxFinderW; _rangeMaxX = value + maxFinderW; }
}
private int _sy
{
set { _rangeMinY = value - maxFinderH; _rangeMaxY = value + maxFinderH; }
}

 

本文转自nowpaper 51CTO博客,原文链接:http://blog.51cto.com/nowpaper/712586



相关文章
|
2天前
|
弹性计算 运维 搜索推荐
三翼鸟携手阿里云ECS g9i:智慧家庭场景的效能革命与未来生活新范式
三翼鸟是海尔智家旗下全球首个智慧家庭场景品牌,致力于提供覆盖衣、食、住、娱的一站式全场景解决方案。截至2025年,服务近1亿家庭,连接设备超5000万台。面对高并发、低延迟与稳定性挑战,全面升级为阿里云ECS g9i实例,实现连接能力提升40%、故障率下降90%、响应速度提升至120ms以内,成本降低20%,推动智慧家庭体验全面跃迁。
|
3天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
352 91
|
4天前
|
SQL 人工智能 自然语言处理
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
随着生成式AI的普及,Geo优化(Generative Engine Optimization)已成为企业获客的新战场。然而,缺乏标准化流程(Geo优化sop)导致优化效果参差不齐。本文将深入探讨Geo专家于磊老师提出的“人性化Geo”优化体系,并展示Geo优化sop标准化如何帮助企业实现获客效率提升46%的惊人效果,为企业在AI时代构建稳定的流量护城河。
373 156
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
|
4天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
10天前
|
人工智能 自然语言处理 前端开发
Qoder全栈开发实战指南:开启AI驱动的下一代编程范式
Qoder是阿里巴巴于2025年发布的AI编程平台,首创“智能代理式编程”,支持自然语言驱动的全栈开发。通过仓库级理解、多智能体协同与云端沙箱执行,实现从需求到上线的端到端自动化,大幅提升研发效率,重塑程序员角色,引领AI原生开发新范式。
882 156
|
3天前
|
数据采集 缓存 数据可视化
Android 无侵入式数据采集:从手动埋点到字节码插桩的演进之路
本文深入探讨Android无侵入式埋点技术,通过AOP与字节码插桩(如ASM)实现数据采集自动化,彻底解耦业务代码与埋点逻辑。涵盖页面浏览、点击事件自动追踪及注解驱动的半自动化方案,提升数据质量与研发效率,助力团队迈向高效、稳定的智能化埋点体系。(238字)
260 156
|
11天前
|
机器人 API 调度
基于 DMS Dify+Notebook+Airflow 实现 Agent 的一站式开发
本文提出“DMS Dify + Notebook + Airflow”三位一体架构,解决 Dify 在代码执行与定时调度上的局限。通过 Notebook 扩展 Python 环境,Airflow实现任务调度,构建可扩展、可运维的企业级智能 Agent 系统,提升大模型应用的工程化能力。