回覆列表
  • 1 # 排骨凍

    一般的大型遊戲開發絕不是用某種語言這麼單純的問題。一個大型遊戲的開發需要龐大的團隊使用各種各樣的語言和工具來完成。總結一下主要有C/C++,組合語言,著色器語言,指令碼語言,高效的開發語言C#或Java。

    首先一般的遊戲開發架構(Windows)從底到頂一般是Direct X?——遊戲引擎——遊戲。

    Direct X?相當於所有顯示卡的一個統一介面,為遊戲提供一個利用硬體渲染的程式設計模型,但Direct X?介面為了追求高效能功能非常單純和鬆散,不利於遊戲的高效開發。此時就需要根據遊戲特點對其進行適當的取捨和封裝,實現一組更高抽象的遊戲開發介面和框架,可以理解成遊戲引擎中的圖形引擎。這部分的開發一般使用的語言是C/C++和少量的組合語言。

    至於遊戲引擎是一個非常複雜的功能聚合體,所有的遊戲開發工作都是在之上進行的。包括圖形引擎,音訊引擎,碰撞引擎,藝術資源管理,指令碼引擎等等。到此為止幾乎還沒有涉及到你所說的遊戲開發。

    首先在圖形渲染方面,例如光照陰影處理等等,現代顯示卡一般是透過可程式設計著色器實現對圖形效果的控制,所採用的程式語言一般是一些著色器語言,例如Direct X?採用的HLSL,OpenGL使用的GLSL等等,語法類似C語言,遊戲執行時被編譯載入到顯示卡上,在實現硬體渲染速度的同時又實現了程式設計的靈活性。

    大型遊戲開發的絕大部分工作其實都是在編寫遊戲指令碼,指令碼是大型遊戲得以如此高速開發和釋出的主要原因。指令碼化的開發讓遊戲開發擺脫了硬編碼的種種弊端,讓遊戲內容可以輕易的修改和除錯。遊戲故事如何進行,各種事件如何觸發,何時該播放哪些聲音或動畫,如何使用藝術團隊創作的資源,這些都是在指令碼中編寫的,可以說引擎決定了遊戲能做什麼,而指令碼才真正決定了遊戲做了什麼。一些著名的引擎如虛幻系列都有自己獨特的指令碼語言,其他一些引擎可能會採用一些第三方的指令碼語言,比如比較流行的Lua。所以開發一個新遊戲最簡單的情形就是沿用之前的引擎,創作藝術資源,然後編寫指令碼將其組織成一個遊戲,幾乎不需要什麼底層的程式語言。

    開發環境方面,遊戲團隊內部可能會使用一些開發和設計工具對資源進行處理,可以理解成遊戲引擎的IDE,這部分因為是內部工具,而且可能需要經常修改所以一般採用比較高效的開發和語言,比如暴雪就是部分使用.NET和C#進行一些內部工具的開發。

    至於引擎核心的開發,Windows比較流行的方法是使用最新版本的Visual Studio,顯示卡廠商如NVIDIA也會為VS開發一些外掛來簡化顯示卡程式設計和除錯。

  • 中秋節和大豐收的關聯?
  • 上港埃爾克森未出戰國安,據說要去梅縣鐵漢,你怎麼看?