【程式設計師的遊戲開發之路】 遊戲架構
啊啊啊啊今天去面了鵝廠,結果在實習公司Unity用得太多了,好多基礎都忘得差不多了,看起來要撿起來好好再學習一下O(∩_∩)O莫要放棄,就從遊戲架構開始學起哈。
參考的書是《 遊戲程式設計權威指南 》
遊戲整體架構
總體來說,遊戲中的所有子系統屬於以下的3個主要類別之一:
1.應用層
應用層關注的是遊戲執行的機器,如果將遊戲移植到別的平臺,則需要重新寫很多應用層的程式碼,但不需要修改其他的部分。這個模組中包含處理硬體裝置的程式碼、操作體統服務(網路通訊或執行緒)和操作(如遊戲的初始化和關閉)
2.遊戲邏輯
遊戲邏輯層就是遊戲,他與遊戲執行的機器和顯示方式完全無關。在理想情況下,修改遊戲邏輯相關程式碼,它依然可以在所有之前支援的平臺或作業系統中執行。在這個模組中,你會發現管理遊戲狀態的子系統,將狀態變化傳送給其他系統的子系統和從其他系統中接受輸入命令的子系統。還包括執行遊戲世界規則的系統。其中一個示例是物理系統,它用於管理遊戲物件互動和互動的過程。
3.遊戲檢視
該系統負責顯示遊戲的狀態,並將輸入轉換為可以傳送給遊戲邏輯的遊戲命令。它可以擁有不同的實現,連線到遊戲中的檢視數可能與電腦處理的檢視數相同。有多種遊戲試圖①針對玩家的,它會繪製螢幕上的遊戲狀態,將音訊傳送到聲音輸出裝置 ②針對人工智慧代理的 ③針對網路中的遠端玩家。
(其實我看到遊戲檢視這裡沒懂,看後面的吧)
舉例:
假設我們需要做一個賽車遊戲:
對於遊戲邏輯來說:①輸入就是轉向、加速度、制動、緊急制動等 ②輸出則是狀態變化和事件,包括車的位置和方向等等。 事件和狀態將被髮送到遊戲檢視。
遊戲檢視則要做很多工作來傳遞給玩家很多資訊,比如說影像、聲音、粒子效果等。同時它還要讀取遊戲控制器的狀態,並將其轉換為邏輯命令,然後傳送給遊戲邏輯。
應用層見下面
應用層
1.讀取輸入
多種使用者輸入裝置,例如鍵盤、滑鼠、遊戲手柄等,讀取這些裝置基本完全依賴於對作業系統和裝置驅動的呼叫。總是將這些裝置的狀態轉化為遊戲命令,其中一些會發給遊戲邏輯,而另一些會給遊戲檢視。在讀取使用者輸入時,最好不要直接修改遊戲資料,這樣系統的可維護性是很差的,會成為系統的負擔。
2.檔案系統和資源快取
檔案系統是從儲存系統中讀取資料,並將資料寫入儲存系統中。該之系統常常負責管理遊戲原始檔、載入和儲存遊戲狀態。
資源快取是以某種方式管理素材,讓遊戲誤以為它們一直存在於記憶體中,如果一切順利的話,遊戲永遠無需等待,因為資源快取能足夠聰明能預測出將使用哪些素材並提前載入他們。但是它時常會算錯,導致快取未命中,可能會導致遊戲的卡頓等。
3.記憶體管理
記憶體管理是遊戲中很重要的系統。遊戲中的很多資料結構都是相對較小的內容,並且他們屬於不同的區域,例如RAM或視訊記憶體。所以要儘量使記憶體管理器面面俱到,讓你知道遊戲需要和使用的記憶體的所有細節。
4.初始化、主迴圈和關閉
主迴圈基本是用來控制系統的主體行為,主要由三個部分組成:①獲取並對玩家輸入排序 ②標記遊戲邏輯 ③在所有遊戲檢視中顯示邏輯狀態(渲染影像、播放聲音、或者通過網際網路傳送遊戲狀態的變化)。
遊戲邏輯
遊戲邏輯是遊戲的核心。它定義了遊戲世界、其內容和其互動方式。包絡遊戲狀態和資料結構、物理層、事件、程式管理器、命令直譯器這機種元件:
1.遊戲狀態&資料結構
每個容器物件都具有容器,並且需要合理的資料結構來儲存它
2.物理學和碰撞
3.事件
當遊戲邏輯讓遊戲狀態發生變化時,遊戲系統就會作出響應
4.程式管理器
儲存程式列表
5.命令直譯器
遊戲邏輯需要對外部命令做出響應。
其實我也不知道這是不是現在流行的架構了,看了很多資料,各有不同,僅供參考吧
相關文章
- 遊戲架構 遊戲架構設計(8)遊戲架構
- 一位遊戲設計師的移民之路遊戲設計師
- 遊戲架構設計——高效能並行程式設計遊戲架構並行行程程式設計
- 遊戲開發與設計遊戲開發
- 一名遊戲設計師的思考——遊戲性遊戲設計師
- 遊戲字幕設計的進化之路遊戲
- 喵的Unity遊戲開發之路 - 推球:遊戲中的物理Unity遊戲開發
- 全景探祕遊戲設計藝術(1):遊戲設計師遊戲設計師
- 【譯】闖入遊戲開發 #3:程式設計遊戲開發程式設計
- 遊戲開發者的思考:什麼是遊戲設計的核心?遊戲開發遊戲設計
- Python遊戲開發工程師的起步,幾款遊戲開發案例Python遊戲開發工程師
- 遊戲開發—協議設計遊戲開發協議
- 遊戲大地圖開發指南:遊戲外部空間設計遊戲地圖
- 鴨鴨星球遊戲系統程式設計開發丨NFT鏈遊遊戲開發技術語言程式設計遊戲開發
- Web 程式設計師開始學習遊戲開發的第一步Web程式設計師遊戲開發
- 遊戲設計師的千層套路遊戲設計師
- 遊戲設計師的5層境界遊戲設計師
- 阿里雲架構師解讀三大主流遊戲架構阿里架構遊戲
- 遊戲陪玩系統開發,架構設計的開閉原則是如何實現的?遊戲架構
- 一腔熱血做遊戲——遊戲程式設計師必須瞭解的事遊戲程式設計師
- 遊戲背後的人——作為遊戲設計師的一天遊戲設計師
- 遊戲文件與遊戲設計遊戲設計
- 架構師之路—理解設計模式架構設計模式
- GameFi+NFT鏈遊開發技術/NFT鏈遊遊戲系統程式設計開發程式碼示例GAM遊戲程式設計
- TGDC | 一個遊戲程式設計師的堅持 —— 論向量化程式設計遊戲程式設計師
- 阿里雲架構師解讀四大主流遊戲架構阿里架構遊戲
- 開發商設計的 Bot 程式會毀了多人遊戲嗎?遊戲
- 基於滴滴雲的棋牌遊戲服務端架構設計遊戲服務端架構
- 10年資深架構師分享 | 普通程式設計師向架構師進階之路架構程式設計師
- 建築師解構遊戲關卡——遊戲研發中的場景需求遊戲
- 旅居中國的日本遊戲開發者訪談:外國人在中國的遊戲開發之路遊戲開發
- 程式設計師,如何從開發轉型做架構師?程式設計師架構
- GameFi/NFT鏈遊合成遊戲系統技術程式設計開發程式碼示例GAM遊戲程式設計
- 遊戲開發者101種死法的混亂之源:缺失遊戲設計的“天秤”遊戲開發遊戲設計
- java遊戲開發雜談 - java程式設計怎麼學Java遊戲開發程式設計
- 為虛構的遊戲世界設計文字遊戲
- 遊戲從不孤立存在,談談影響遊戲設計的結構遊戲設計
- 遊戲程式設計入門指南遊戲程式設計