開放世界遊戲中的大地圖背後有哪些實現技術?

時間 2021-05-11 15:02:18

1樓:Milo Yip

細節層次(level of detail, LOD):模型需要支援細節層次,以減少幾何渲染量,以及紋理資料的記憶體量及記憶體頻寬。LOD有分離散及連續方式。

詳情可參與《Level of Detail for 3d Graphpics (豆瓣)》。

串流(streaming)及快取(caching):把資料塊在執行時非同步載入,並按某些條件御載(如least recently used/LRU)。

可見性檢測(visibility determination):除基本的視錐剔除(view frustum culling),還需要離線或線上進行遮擋剔除(occlusion culling)。

除了渲染方面,也要考慮遊戲模擬方面的部分。例如物理碰撞資料的載入,以及是否進行遊戲邏輯的LOD等。

----

更新:浮點數精度問題

由於浮點數的精度有限,單精度浮點數只有不足7個十進位制數字,如果距離用公尺作為單位,離原點1公里的座標,其精度只有大約1公釐。這對於渲染及模擬都有影響。

解決的方法之一,是把世界劃分成不同的區域,在區域內的計算使用其區域性座標系統。當物件從乙個區域移動至另一區域,要進行座標轉換。但最麻煩的情況是兩個區域的遊戲物件互相互動,在互動時要把其中乙個遊戲物件的座標轉換至另一物件的座標系。

2樓:凱丁

開放地圖大世界的乙個關鍵就是Streaming技術

超大地圖不光要解決渲染地形這個問題,其他連帶的還有各種資料,比如尋路資料,模型資料等,這裡統稱為map data。

Streaming 說白了就是把map data分塊儲存,比如128m*128m為乙個Chunk,每次streaming根據人當前的位置load周圍3*3塊資料。

一般而言和遊戲邏輯相關的資料這樣就OK了,但是很多情況下,和視覺相關的資料還不能這麼簡單的處理,比如遠處的風景和遠處的地形(總不可能只讓玩家看到128m*1.5的範圍的東西吧,除非你是乙個topdown視角的遊戲),所以還要考慮lod;地形lod個人覺得CDLOD技術還是很不錯的,過渡非常平滑,唯一的問題是必須支援VTF(除了某些手持裝置這個好像標配,所以這個不是問題)。有時候為了處理地圖邊緣這種地方還會用到Terrain Skirt。

關於精度問題,就得把所有位置資訊都以角色位置為中心做一次轉換了。

NPC在視野外的問題,個人沒做過console(網遊這些都是在伺服器計算的),基本上只更新邏輯了,根據重要程度來設定邏輯的更新頻率。

還有乙個比較常用的思路就是Hierarchical,也就是分層去處理超大地形上的邏輯,比如尋路之類

開放世界遊戲地圖越大,玩家感官會越自由嗎?

現在開放世界地圖真的夠大了,但是密度與互動還差的太遠,動輒幾百平方公里地圖真的夠了,任務要有趣,各種東西得能夠互動才重要有趣。一塊10多平方公里的城市,比如gta5市區那密度小的可伶,遠不如現實中乙個小縣城的密度,更別說特大城市市區了,乙個大型城市10平方公里核心位置起碼幾千,幾萬棟房子。遊戲裡10...

如何解決大地圖戰略遊戲後期乏味的問題?

浮谷 加入時間和終極boss把遊戲分為數個階段,第一階段的目標達成 或者時間到了 就進入下一階段,而終局boss是貫穿全域性的,從開始就形成並在最終開始對決,戰勝後遊戲就會快速結束。對,我說的就是戰國蘭斯 兩個辦法,一是像P社的群星一樣,加入撒幣的天災系統,給你弄乙個後期打不過的玩意 二是像Cont...

Erlang 如何操作遊戲中的二維地圖?

1diot 一條一條來。首先解決資料結構。手機打字直接偽碼了。定義玩家位置 playerLocation 定義地圖 mapLocation map N N 獲取乙個地圖位置 mapLocation getMapLocation playerLocation pl 完全根據xy獲取地圖位置資訊,線性結...