遊戲開發中常用的演算法

2021-08-18 02:20:00 字數 1304 閱讀 4812

內容會持續更新,有錯誤的地方歡迎指正,謝謝!

快速排序(分治思想的應用):不是任何情況都適用,資料量小的話,還不如冒泡快,但快排的確很優秀。

堆排序:可用於做遊戲排行榜前多少多少名,根據求最大的k個數還是最小的k個數來建最大堆和最小堆,再將最大/小堆的根節點和最後乙個子葉節點交換,最後調整堆,重複剛才那兩個步驟,直到得到k個數。當然,這種題也可以用紅黑樹實現的set來做。

二分查詢:用於查詢出分數為多少多少的玩家

2.與樹有關的演算法

四叉樹、八叉樹可用來檢測大量物體之間的碰撞總次數。

3.與圖有關的演算法

1.小型遊戲可以用的簡單的尋路演算法:

隨機尋路演算法:當npc不管是遇到障礙物還是遇到了邊界(利用碰撞檢測),都會隨機選取乙個前進的方向,繼續行走

跟蹤演算法:當遊戲中的主角進入到npc 的「警戒區域」後,遊戲的ai 可輕易獲得目標的位置,然後控制npc 物件移向被跟蹤的物件

閃避演算法:和跟蹤演算法完全相反,也就是當遊戲中的主角進入到npc 的「警戒區域」後,主角可以去追著npc跑

2.大型遊戲一般使用a*尋路演算法:使用最廣泛的一種尋路演算法,簡單說一下a*尋路演算法:

公式:f(n)=g(n)+h(n),g(n)表示從起點到任意點n的實際直線距離,h(n)表示任意頂點n到目標點的估算距離(常用曼哈頓距離公式用於估算h(n):|x1 - x2| + |y1 - y2|)

把待處理的方格a存入乙個」開啟列表」,開啟列表就是乙個等待檢查方格的列表;」關閉列表」中存放的都是不需要再次檢查的方格。

每次從open列表中選擇 f(n) 最小的節點將其加入cloese列表中,同時擴充套件相鄰節點並將它們加入open列表,可把open列表看成乙個優先佇列,key值為 f(n),優先順序最高的先出。

最後直到把終點加入open列表中,計算出指標指向就完事了。所以最後的路徑就是,從終點開始沿著父指標不斷往起點走,最後回到起始點,這樣最短路徑就找到了:

a*尋路的詳細介紹請見:

3.dfs、bfs也常用於求最優方法這類問題

遊戲開發中常用的設計模式

使用設計模式來提高程式庫的重複利用性是大型程式專案開發必須的。但是在 四人幫 的設計模式概述中提到了23種標準設計模式,不但難以記住,而且有些設計模式更多的適用於應用程式開發,對遊戲專案引擎設計並沒有很多的利用價值。根據經驗,精挑細選後,篤志在這裡記錄一些自認為有利用價值的設計模式,以便之後自己設計...

遊戲開發中常用的資料結構

內容會持續更新,有錯誤的地方歡迎指正,謝謝 1.陣列 需處理的元素個數確定並且需使用下標時可以考慮,不過建議用泛型list 優點 陣列在記憶體中是連續儲存的,索引和修改的速度都非常快 缺點 插入和刪除很慢,長度開闢過長易造成記憶體浪費,長度開闢過短易造成記憶體越界 2.list list是泛型的,即...

梳理開發中常用的加密演算法

在資料傳輸的過程中,首先把密碼類資料經過md5加密演算法加密,然後再在外面使用可逆的加密方式加密一次,這樣在資料傳輸的過程中,即便資料被截獲了,但是想要完全破解,還是很難的。hash演算法特別的地方在於它是一種單向演算法,使用者可以通過hash演算法對目標資訊生成一段特定長度的唯一的hash值,卻不...