【程序員的遊戲開發之路】 遊戲架構

啊啊啊啊今天去面了鵝廠,結果在實習公司Unity用得太多了,好多基礎都忘得差不多了,看起來要撿起來好好再學習一下O(∩_∩)O莫要放棄,就從遊戲架構開始學起哈。
參考的書是《 遊戲編程權威指南

遊戲整體架構

總體來說,遊戲中的所有子系統屬於以下的3個主要類別之一:
1.應用層
應用層關注的是遊戲運行的機器,如果將遊戲移植到別的平臺,則需要重新寫很多應用層的代碼,但不需要修改其他的部分。這個模塊中包含處理硬件設備的代碼、操作體統服務(網絡通信或線程)和操作(如遊戲的初始化和關閉)

2.遊戲邏輯
遊戲邏輯層就是遊戲,他與遊戲運行的機器和顯示方式完全無關。在理想情況下,修改遊戲邏輯相關代碼,它依然可以在所有之前支持的平臺或操作系統中運行。在這個模塊中,你會發現管理遊戲狀態的子系統,將狀態變化傳送給其他系統的子系統和從其他系統中接受輸入命令的子系統。還包括執行遊戲世界規則的系統。其中一個示例是物理系統,它用於管理遊戲對象互動和交互的過程。

3.遊戲視圖
該系統負責顯示遊戲的狀態,並將輸入轉換爲可以發送給遊戲邏輯的遊戲命令。它可以擁有不同的實現,連接到遊戲中的視圖數可能與電腦處理的視圖數相同。有多種遊戲試圖①針對玩家的,它會繪製屏幕上的遊戲狀態,將音頻發送到聲音輸出設備 ②針對人工智能代理的 ③針對網絡中的遠程玩家。
(其實我看到遊戲視圖這裏沒懂,看後面的吧)

舉例:
假設我們需要做一個賽車遊戲:
對於遊戲邏輯來說:①輸入就是轉向、加速度、制動、緊急制動等 ②輸出則是狀態變化和事件,包括車的位置和方向等等。 事件和狀態將被髮送到遊戲視圖。

遊戲視圖則要做很多工作來傳遞給玩家很多信息,比如說圖像、聲音、粒子效果等。同時它還要讀取遊戲控制器的狀態,並將其轉換爲邏輯命令,然後發送給遊戲邏輯。

應用層見下面

應用層

1.讀取輸入

多種用戶輸入設備,例如鍵盤、鼠標、遊戲手柄等,讀取這些設備基本完全依賴於對操作系統和設備驅動的調用。總是將這些設備的狀態轉化爲遊戲命令,其中一些會發給遊戲邏輯,而另一些會給遊戲視圖。在讀取用戶輸入時,最好不要直接修改遊戲數據,這樣系統的可維護性是很差的,會成爲系統的負擔。

2.文件系統和資源緩存

文件系統是從存儲系統中讀取數據,並將數據寫入存儲系統中。該之系統常常負責管理遊戲源文件、加載和保存遊戲狀態。
資源緩存是以某種方式管理素材,讓遊戲誤以爲它們一直存在於內存中,如果一切順利的話,遊戲永遠無需等待,因爲資源緩存能足夠聰明能預測出將使用哪些素材並提前加載他們。但是它時常會算錯,導致緩存未命中,可能會導致遊戲的卡頓等。

3.內存管理

內存管理是遊戲中很重要的系統。遊戲中的很多數據結構都是相對較小的內容,並且他們屬於不同的區域,例如RAM或顯存。所以要儘量使內存管理器面面俱到,讓你知道遊戲需要和使用的內存的所有細節。

4.初始化、主循環和關閉

主循環基本是用來控制系統的主體行爲,主要由三個部分組成:①獲取並對玩家輸入排序 ②標記遊戲邏輯 ③在所有遊戲視圖中顯示邏輯狀態(渲染圖像、播放聲音、或者通過互聯網傳送遊戲狀態的變化)。

遊戲邏輯

遊戲邏輯是遊戲的核心。它定義了遊戲世界、其內容和其交互方式。包絡遊戲狀態和數據結構物理層事件進程管理器命令解釋器這機種組件:

1.遊戲狀態&數據結構

每個容器對象都具有容器,並且需要合理的數據結構來存儲它

2.物理學和碰撞

3.事件

當遊戲邏輯讓遊戲狀態發生變化時,遊戲系統就會作出響應

4.進程管理器

保存進程列表

5.命令解釋器

遊戲邏輯需要對外部命令做出響應。

其實我也不知道這是不是現在流行的架構了,看了很多資料,各有不同,僅供參考吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章