遊戲研發面經整理

2022-06-29 22:27:11 字數 2491 閱讀 5391

從地圖上任意一點s到其他所有可達點的最短路徑,考慮上下左右四個所有方向行走的情況

在地圖內的每個區塊移動消耗不同時,dijkstra演算法可以非常方便的找出從地圖上某個起始區塊到其他所有可達區塊的最短路徑。

重複步驟2直至演算法結束。

希望角色更傾向於經過某些區塊時(比如經過這些區塊可以獲得增益效果、道具等等)或者傾向於躲避某些區塊時(比如經過這些區塊會丟失生命值,或者這些區塊上的敵人非常危險),可以通過調整這些區塊的移動消耗來影響移動路徑的產生從而影響角色的移動行為。

通過計算乙個值來判斷探索的方向。對於節點n,計算公式:f(n)=g(n)+h(n) , g(n) = dijkstra cost, h(n) = manhattan distance

優化:在情況允許的前提下,在生成地圖或者載入地圖時,記錄地圖上的特徵區域。

全域性洗牌法

首先生成乙個陣列,大小為54,初始化為1~54

按照索引1到54,逐步對每一張索引牌進行洗牌,首先 srand((int)time(0))(以當前的時間作為種子來生成隨機數,這樣更加的隨機),再生成乙個餘數 value = rand %54,那麼我們的索引牌就和這個餘數牌進行交換處理。

等索引到54結束後,一副牌就洗好了 

區域性洗牌法(random_shuffle)

首先我們生成乙個大小為54的陣列,陣列排列為1~54

索引牌從1開始,到54結束。這一次索引牌只和剩下還沒有洗的牌進行交換, value = index + rand() %(54 - index)

等到所有的索引牌都洗好之後,一副牌就弄好了

inside_out演算法

首先生成乙個陣列,大小為54,初始化為1~54

i在1~54,在[0, i]之間隨機乙個下標j,然後用位置j的元素替換掉位置i的數字

list存放怪物:經常涉及插入刪除, 鍊錶好維護和管理需要頻繁產生消除的物件

判斷該目標點與技能釋放者的距離是否小於扇形的半徑;

目標點與技能釋放者面對的方向向量(forward)夾角是否小於扇形角度的二分之一;

如何找到圓形攻擊內的敵人:判斷敵人和skillposition之間的距離是否小於半徑。

紅黑樹:新增有序。

前幾名可以用堆排序。

直接指定動畫每一幀的頂點位置,其動畫關鍵中儲存的是mesh所有頂點在關鍵幀對應時刻的位置。

蒙皮:指將mesh中的頂點繫結在骨骼之上,而且每個頂點可以被多個骨骼所控制,這樣在關節處的頂點由於同時受到父子骨骼的拉扯而改變位置就消除了裂縫。

原理:先設定根骨骼的位置和朝向,然後根據骨骼層次結構中父子骨骼之間的變換關係計算出各個骨骼的位置和朝向,然後根據骨骼對mesh中頂點的繫結計算出頂點在世界座標系中的座標,從而對頂點進行渲染。

渲染引擎: 按照不同的面把材質貼圖賦予模型,這相當於為骨骼蒙上**,最後再通過渲染引擎把模型、動畫、光影、特效等所有效果實時計算出來並展示在螢幕上

物理引擎: 模擬物理世界,開發出類似物理世界的效果。

碰撞檢測: 探測遊戲中各物體的物理邊緣。當兩個3d物體撞在一起的時候,這種技術可以防止它們相互穿過

指令碼引擎: 提供指令碼介面,讓開發者,通過指令碼設計遊戲,使遊戲的開發更加靈活

場景管理

音訊ui: 提供音訊特效,以及遊戲的ui部分,讓遊戲與使用者進行互動

通過鏡面反射

**的紋理,用凹凸或用法線來控制漫射光表現毛囊和文理結構

眼睛的玻璃的材質

毛髮,衣服紋理

構造乙個容量為100(或其他)的陣列,將其中10個元素填充為型別1(**),20個元素填充為型別2(飾品)...構造完畢之後,在1到100之間取隨機數rand,取到的array[rand]對應的值,即為隨機到的型別。這種方法優點是實現簡單,構造完成之後生成隨機型別的時間複雜度就是o(1),缺點是精度不夠高,占用空間大,尤其是在型別很多的時候。

離散演算法,通過概率分布構造幾個點,[10, 30, 60, 100]。在生成1~100的隨機數,看它落在哪個區間,比如50在[30,60]之間,就是型別3。在查詢時,可以採用線性查詢,或效率更高的二分查詢,時間複雜度o(logn)。

在圓形的外切正方形內隨機選取一點,然後判斷此點是否在圓內(通過計算此點到圓心的距離)。如果在圓內,則此點即為所求;如果不在,則重新選取直到找到為止。

從[0, 2*pi)中隨機選乙個角度,對應於圓中的一條半徑,然後在此半徑上選乙個點。但半徑上的點不能均勻選取,選取的概率應該和距圓心的長度成正比,這樣才能保證隨機點在圓內是均勻分布的。

貪心:自頂向下。把求解的問題分成若干個子問題,

對每一子問題求解,得到子問題的區域性最優解。 把子問題的解區域性最優解合成原來解問題的乙個解。

動態規劃:自底向上。通過把原問題分解為相對簡單的子問題的方式求解複雜問題的方法。

參考資料

實習面經 微策略c 研發面經

微策略是3月中旬進行內推的。投遞方式 內推 題目全是英文,包括邏輯題,程式設計題,還有審美題。都比較簡單,只要讀懂英文就不會很難。一面 首先問簡歷上的專案,問了一些c 的基礎知識,比如構造函式引數初始化表什麼時候應該使用等。然後問智力題,最後問了道程式設計題,口述思路。二面 面試官 總監 二面面試官...

位元組跳動運維研發面經

工作內容 所做專案的難點 寫乙個單例,在寫乙個靜態內部類的單例 jvm記憶體模型 程式計數器是幹嘛的 jvm引數都有哪些 從寫入url到返回頁面的過程 dns是在哪維護的?維護的什麼?怎麼找到具體的ip的 整個http的請求流程 springmvc從收到請求到返回響應的流程 常見的http狀態碼?5...

我的研發面經 C 關鍵字小結

1.const 用const修飾的變數是唯讀屬性,一旦初始化後不能更改。例 const int a 和 int const a 在這兩個中const的作用是一樣的,a是乙個常整型數。const int a int const a int const a const 籤乙個意味著a是乙個指向常整型數的...