大型的單機遊戲(比如《使命召喚》等)是用什麼計算機語言開發的?
業餘愛好者,個人的了解比較有限,希望對你有所幫助。
一般的大型遊戲開發絕不是用某種語言這麼單純的問題。
首先一般的遊戲開發架構(Windows平台)從底到頂一般是Direct X?——遊戲引擎——遊戲。
Direct X?相當於所有顯卡的一個統一介面,為遊戲提供一個利用硬體渲染的編程模型,但Direct X?介面為了追求高性能功能非常單純和鬆散,不利於遊戲的高效開發。此時就需要根據遊戲特點對其進行適當的取捨和封裝,實現一組更高抽象的遊戲開發介面和框架,可以理解成遊戲引擎中的圖形引擎。這部分的開發一般使用的語言是C/C++和少量的彙編語言。
至於遊戲引擎是一個非常複雜的功能聚合體,所有的遊戲開發工作都是在之上進行的。包括圖形引擎,音頻引擎,碰撞引擎,藝術資源管理,腳本引擎等等。到此為止幾乎還沒有涉及到你所說的遊戲開發。
首先在圖形渲染方面,例如光照陰影處理等等,現代顯卡一般是通過可編程著色器實現對圖形效果的控制,所採用的編程語言一般是一些著色器語言,例如Direct X?採用的HLSL,OpenGL使用的GLSL等等,語法類似C語言,遊戲執行時被編譯載入到顯卡上,在實現硬體渲染速度的同時又實現了軟體編程的靈活性。
大型遊戲開發的絕大部分工作其實都是在編寫遊戲腳本,腳本是大型遊戲得以如此高速開發和發布的主要原因。腳本化的開發讓遊戲開發擺脫了硬編碼的種種弊端,讓遊戲內容可以輕易的修改和調試。遊戲故事如何進行,各種事件如何觸發,何時該播放哪些聲音或動畫,如何使用藝術團隊創作的資源,這些都是在腳本中編寫的,可以說引擎決定了遊戲能做什麼,而腳本才真正決定了遊戲做了什麼。一些著名的引擎如虛幻系列都有自己獨特的腳本語言,其他一些引擎可能會採用一些第三方的腳本語言,比如比較流行的Lua。所以開發一個新遊戲最簡單的情形就是沿用之前的引擎,創作藝術資源,然後編寫腳本將其組織成一個遊戲,幾乎不需要什麼底層的編程語言。
開發環境方面,遊戲團隊內部可能會使用一些開發和設計工具對資源進行處理,可以理解成遊戲引擎的IDE,這部分因為是內部工具,而且可能需要經常修改所以一般採用比較高效的開發平台和語言,比如暴雪就是部分使用.NET和C#進行一些內部工具的開發。
至於引擎核心的開發,Windows平台比較流行的方法是使用最新版本的Visual Studio,顯卡廠商如NVIDIA也會為VS開發一些插件來簡化顯卡編程和調試。
所以一個大型遊戲的開發需要龐大的團隊使用各種各樣的語言和工具來完成。總結一下主要有C/C++,彙編語言,著色器語言,腳本語言,高效的開發語言C#或Java。高端Console遊戲引擎都是C++,沒有見過例外。外圍倒是有C#,Lua,Python等等其他語言的。
大部分公司來說首先要找到一個合適的遊戲引擎。國內具備自己研發牛逼引擎的公司不多,特別是3d遊戲引擎應該沒有吧。找到合適的引擎以後就簡單多了,大部分都是用腳本進行二次開發的。
單機的不太了解,手游來說,很多是cocos2d-x開發的,剛開始腳本支持不好,很多直接用c++開發。然後LUA支持越來越強,用lua成為首選。現在js支持已經超過lua,加上js功能更豐富,熟悉js的人多,上手快。
因此只要主程用c++做一些底層的邏輯和介面。其他各種場景和邏輯,包括UI都可以用js完成。腳本的還可以動態更新,小bug就直接腳本遠程更新一下,神不知鬼不覺。另外,遊戲會有很多編輯器,除了常見的場景、地圖、骨骼、粒子之類編輯器,可以買一些收費的。還會自己開發一些更有針對性的編輯器。用編輯器的人不用對技術非常熟悉,減少了很多策劃、美工與開發的溝通成本。所以需要手寫代碼的量會越來越少。
我想端游也應該差不多吧,越是技術越強悍的公司,編輯器開發能力越強,開發速度也就越快。可以把前些年泄露出來的半成品狀態的HL2代碼下載下來看看熟悉熟悉,基本框架是比較完整的
推薦閱讀:
※如何製作一個劇情為主的遊戲?
※做為一個遊戲開發女生是什麼體驗?
※做出一款在遊戲性上達到目前公認3A級別的RPG作品需要點出哪些前置科技(技術)?
※如何邀請一個程序員幫我做遊戲?
※0基礎想學遊戲編程有戲么?