如何高效地使用二进制节点进行最短路径计算缓存?
2019-12-27 7:52:15
收藏:0
阅读:96
评论:0
我正在开发一款游戏,在游戏中我需要找到场景中两个节点之间的最短路径。
实际的路径查找处理很好,我们使用 A* 算法实现。 计算速度大部分情况下都很快,但是由于这是优化过的“声音扩散”(类似于 R6Siege),我们实际上不希望有太多实时的计算。尤其是当这将经常被要求时。
所以目前查找源节点和侦听节点之间的最短路径看起来是这样的。
绿色节点=路径节点
蓝色节点=“关闭”路径节点
红色=可破坏的墙
在这个例子中,可以看到房间右侧有一堵红色的墙。 这些节点被关闭是因为墙完好无损,但如果发生爆炸并且这些节点中的一个在爆炸半径内,那么该节点将被打开。
因此,在这种情况下,如果该节点被打开,则最短路径可能看起来像这样。
同样,如果您修复了墙壁,则该节点可能再次关闭。
现在我们面临的问题在于,我需要一种方法来“缓存”两个节点之间的最短路径,以及每个节点配置的所有最短路径。只有在墙上的节点才能被关闭,但即使有许多可破坏的墙壁,为每个节点的打开/关闭组合建立缓存/查找表,那似乎就像是庞大的数据/内存量,这似乎非常愚蠢,甚至不可能采用类似于蛮力的方法。
你们有什么建议吗?某种方式压缩数据,使得存储每个配置的缓存表的潜在内存不会太高?一些高端的数据结构?
我不是游戏开发的新手,但我对这类问题还是比较新的。
谢谢!:)
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?


