jack-wang
小王
C++博客
首頁
新隨筆
聯系
聚合
管理
隨筆-379 評論-37 文章-0 trackbacks-0
一種高效的尋路算法 - B*尋路算法
轉:
http://qinysong.iteye.com/blog/678941
在此把這個算法稱作B* 尋路算法(Branch Star 分支尋路算法,且與A*對應),本算法適用于游戲中怪物的自動尋路,其效率遠遠超過A*算法,經過測試,效率是普通A*算法的幾十上百倍。
通過引入該算法,一定程度上解決了游戲服務器端無法進行常規尋路的效率問題,除非服務器端有獨立的AI處理線程,否則在服務器端無法允許可能消耗大量時間的尋路搜索,即使是業界普遍公認的最佳的A*,所以普遍的折中做法是服務器端只做近距離的尋路,或通過導航站點縮短A*的范圍。
算法原理
本算法啟發于自然界中真實動物的尋路過程,并加以改善以解決各種阻擋問題。
前置定義:
1、探索節點:
為了敘述方便,我們定義在尋路過程中向前探索的節點(地圖格子)稱為探索節點,起始探索節點即為原點。(探索節點可以對應為A*中的開放節點)
2、自由的探索節點:
探索節點朝著目標前進,如果前方不是阻擋,探索節點可以繼續向前進入下一個地圖格子,這種探索節點我們稱為自由探索節點;
3、繞爬的探索節點:
探索節點朝著目標前進,如果前方是阻擋,探索節點將試圖繞過阻擋,繞行中的探索節點我們成為繞爬的探索節點;
算法過程
1、起始,探索節點為自由節點,從原點出發,向目標前進;
2、自由節點前進過程中判斷前面是否為障礙,
a、不是障礙,向目標前進一步,仍為自由節點;
b、是障礙,以前方障礙為界,分出左右兩個分支,分別試圖繞過障礙,這兩個分支節點即成為兩個繞爬的探索節點;
3、繞爬的探索節點繞過障礙后,又成為自由節點,回到2);
4、探索節點前進后,判斷當前地圖格子是否為目標格子,如果是則尋路成功,根據尋路過程構造完整路徑;
5、尋路過程中,如果探索節點沒有了,則尋路結束,表明沒有目標格子不可達;
演示如下:
B*與A*算法的性能比較
尋路次數比較(5秒鐘尋路次數)
B*與A*性能比較實例
1、 無障礙情況
此種情況,根據以上測試數據,B*算法效率是普通A*的44倍(左為A*,右為B*)
2、線形障礙
此種情況,根據以上測試數據,B*算法效率是普通A*的28倍(左為A*,右為B*)
3、環形障礙
此種情況,根據以上測試數據,B*算法效率是普通A*的132倍(左為A*,右為B*)
4、封閉障礙(目標不可達)
此種情況,根據以上測試數據,B*算法效率是普通A*的581倍(左為A*,右為B*)
衍生算法
通過以上封閉障礙,可以看出,這個方法在判斷地圖上的兩個點是否可達上,也是非常高效的,在不可達情況下,時間復雜度與封閉障礙的周長相當,而不是整個地圖的面積。
posted on 2011-04-07 00:07
小王
閱讀(4850)
評論(0)
編輯
收藏
引用
所屬分類:
游戲服務器端開發
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
C++中使用Lua腳本 和lua中調用c的方法
一種高效的尋路算法 - B*尋路算法
魔獸世界私服trinitycore2的架構——世界對象
游戲對象的實現
號稱是目標軟件的服務器架構(轉載的,不關我事哦,圖片就不發了,懶)
網絡游戲中的同步問題
一種經典的服務器架構(和我的體會太接近了,不得不轉)
從騰訊QQgame高性能服務器集群架構看“分而治之”與“自治”等分布式架構設計原則
無縫世界網游服務器架構的設計思路(轉)
網游服務器架構的設計
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
<
2015年4月
>
日
一
二
三
四
五
六
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(16)
給我留言
查看公開留言
查看私人留言
隨筆分類
(441)
Android(7)
Boost(8)
C#
c++ 程序設計基礎(11)
CMake(2)
Cocos2d-X(1)
CUDA(3)
DB(21)
DirectX(2)
Docker(5)
Dubbo(3)
Erlang(5)
Git(6)
GO(1)
IE(1)
iOS(1)
Java(19)
JPA(2)
LibTorch(1)
linux(99)
MQTT(2)
node.js(3)
OpenGL(2)
Python(15)
Qt(7)
Redis(5)
ROS(4)
SpringBoot(4)
TensorRT(3)
UI(5)
Unreal Engine(1)
VC(44)
VLC(2)
Web開發(12)
Win32(4)
編譯(34)
操作系統(3)
調試(2)
多核編程(3)
分布式系統(4)
匯編(1)
腳本(1)
開源項目(3)
其他(16)
嵌入式(1)
軟件工程(5)
瑞芯微(1)
設計模式(7)
算法與數據結構(1)
網絡通訊(17)
音視頻(7)
游戲服務器端開發(17)
游戲引擎(7)
隨筆檔案
(379)
2024年11月 (2)
2024年10月 (1)
2024年6月 (2)
2024年5月 (4)
2024年4月 (4)
2024年3月 (9)
2024年2月 (1)
2024年1月 (6)
2023年12月 (2)
2023年10月 (8)
2023年9月 (1)
2023年7月 (2)
2023年5月 (1)
2023年4月 (3)
2023年3月 (2)
2022年12月 (2)
2022年11月 (3)
2022年10月 (3)
2022年9月 (5)
2022年8月 (2)
2022年7月 (10)
2022年6月 (5)
2022年5月 (7)
2022年4月 (4)
2022年3月 (1)
2022年2月 (11)
2022年1月 (6)
2021年12月 (7)
2021年10月 (3)
2021年6月 (2)
2021年4月 (1)
2021年3月 (3)
2021年2月 (1)
2021年1月 (3)
2020年12月 (2)
2020年11月 (1)
2020年10月 (2)
2020年9月 (2)
2020年7月 (4)
2020年6月 (2)
2020年4月 (3)
2020年3月 (2)
2020年2月 (2)
2020年1月 (3)
2019年11月 (2)
2019年10月 (5)
2019年9月 (1)
2019年8月 (3)
2019年7月 (1)
2019年6月 (6)
2019年5月 (4)
2019年4月 (2)
2019年3月 (2)
2019年2月 (1)
2019年1月 (4)
2018年1月 (2)
2017年12月 (8)
2017年11月 (3)
2017年9月 (4)
2017年8月 (1)
2017年3月 (1)
2017年2月 (2)
2017年1月 (5)
2016年12月 (1)
2016年5月 (1)
2016年4月 (1)
2016年1月 (1)
2015年8月 (3)
2015年6月 (1)
2015年5月 (1)
2015年4月 (1)
2014年7月 (2)
2014年6月 (2)
2014年5月 (1)
2014年3月 (1)
2014年2月 (2)
2013年11月 (3)
2013年9月 (4)
2013年8月 (1)
2013年6月 (1)
2013年5月 (1)
2013年4月 (3)
2013年3月 (5)
2013年2月 (1)
2013年1月 (2)
2012年11月 (1)
2012年10月 (3)
2012年9月 (1)
2012年7月 (3)
2012年6月 (3)
2012年5月 (1)
2012年3月 (5)
2012年2月 (2)
2012年1月 (1)
2011年12月 (3)
2011年9月 (1)
2011年8月 (2)
2011年6月 (1)
2011年4月 (1)
2011年3月 (2)
2011年2月 (2)
2010年12月 (1)
2010年11月 (7)
2010年10月 (7)
2010年9月 (2)
2010年8月 (2)
2010年7月 (3)
2010年6月 (2)
2010年4月 (4)
2010年3月 (6)
2010年2月 (12)
2010年1月 (22)
2009年11月 (6)
2009年8月 (5)
2009年6月 (2)
2009年2月 (4)
2009年1月 (15)
2008年10月 (1)
Linux
chinaunix
游戲開發
金慶
云風
綜合
Intel
λ-calculus
周偉明
最新隨筆
1.?dnf安裝失敗
2.?RK3588設備中運行可執行程序報錯:error while loading shared libraries: librknnrt.so: cannot open shared object file:
3.?wget下載報錯:The certificate of ‘www.python.org’ is not trusted.
4.?執行torch.load(模型名稱, map_location='cpu')報錯:from torchvision.transforms.functional_tensor import rgb_to_grayscale
5.?pip安裝basicsr報錯:To fix this you could try to:
6.?cmake文件中D_GLIBCXX_USE_CXX11_ABI=0,導致無法到入第三方庫libjsoncpp.so
7.?鏈接libjsoncpp.a時報錯:which may bind externally can not be used when making a shared object; recompile with -fPIC
8.?vs code中git push代碼報錯:Missing or invalid credentials.
9.?git clone報錯:SSL certificate problem: self signed certificate in certificate chain
10.?openEuler系統中修改系統時間
搜索
最新隨筆
1.?dnf安裝失敗
2.?RK3588設備中運行可執行程序報錯:error while loading shared libraries: librknnrt.so: cannot open shared object file:
3.?wget下載報錯:The certificate of ‘www.python.org’ is not trusted.
4.?執行torch.load(模型名稱, map_location='cpu')報錯:from torchvision.transforms.functional_tensor import rgb_to_grayscale
5.?pip安裝basicsr報錯:To fix this you could try to:
6.?cmake文件中D_GLIBCXX_USE_CXX11_ABI=0,導致無法到入第三方庫libjsoncpp.so
7.?鏈接libjsoncpp.a時報錯:which may bind externally can not be used when making a shared object; recompile with -fPIC
8.?vs code中git push代碼報錯:Missing or invalid credentials.
9.?git clone報錯:SSL certificate problem: self signed certificate in certificate chain
10.?openEuler系統中修改系統時間
最新評論
1.?re: DirectUI Lib XML編寫說明
這個不錯,很有用。
--dictbox
2.?re: MFC:為CListCtrl添加背景圖片[未登錄]
沒用
--123
3.?re: DirectUI Lib XML編寫說明[未登錄]
很好,對于我這樣的初學者很用幫助,謝謝樓主
--king
4.?re: WindowXP下PHP5開發環境配置
謝謝樓主分享,已經按樓主的方法配置成功
--bbreay
5.?re: error C2220: 警告被視為錯誤 - 沒有生成“object”文件
你好,我用的是vs2012,沒有你說的“選擇該cpp”,如:
--coco
閱讀排行榜
1.?protobuf使用方法(9416)
2.?執行pip install報錯: WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv(8960)
3.?1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(24) : fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d](8625)
4.?編譯cmake報錯:Cannot find a C++ compiler that supports both C++11 and the specified C++ flags.(8205)
5.?把python3的版本從3.6升級到3.10(7235)
評論排行榜
1.?網游服務器通信架構的設計(3)
2.?公司散伙啦。杯具!反思!(3)
3.?Ubuntu9.10 VI下方向鍵變成ABCD的解決辦法(3)
4.?kosmix,又一個開源的類似GFS的分布式文件系統(2)
5.?DirectUI Lib XML編寫說明(2)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 小王
久久久久久久女国产乱让韩
|
久久久久国产精品熟女影院
|
久久无码一区二区三区少妇
|
婷婷久久五月天
|
久久天堂AV综合合色蜜桃网
|
久久九九全国免费
|
久久亚洲AV无码西西人体
|
久久精品成人欧美大片
|
国产精品免费看久久久香蕉
|
久久婷婷五月综合国产尤物app
|
精品久久久久久久无码
|
日韩一区二区三区视频久久
|
精品国产乱码久久久久久郑州公司
|
久久99热这里只有精品国产
|
亚洲国产精品久久久天堂
|
精品久久人人做人人爽综合
|
久久99精品久久久久久动态图
|
亚洲女久久久噜噜噜熟女
|
久久不射电影网
|
久久午夜无码鲁丝片
|
午夜精品久久久久9999高清
|
国产69精品久久久久9999
|
久久久久亚洲av无码专区喷水
|
精品久久久久久无码不卡
|
国产午夜精品理论片久久
|
久久国产精品视频
|
久久无码人妻一区二区三区午夜
|
亚洲精品视频久久久
|
久久亚洲中文字幕精品一区四
|
亚洲中文字幕无码久久2017
|
久久夜色撩人精品国产
|
亚洲国产精品久久久久婷婷软件
|
伊人久久无码中文字幕
|
亚洲午夜久久久
|
久久亚洲国产精品五月天婷
|
久久久久亚洲AV成人网人人网站
|
欧美与黑人午夜性猛交久久久
|
亚洲午夜久久久精品影院
|
国产精品伦理久久久久久
|
91精品久久久久久无码
|
亚洲成人精品久久
|