橙光游戲是用什么語言編寫?
一般的大型游戲開發(fā)絕不是用某種語言這么單純的問題。一個大型游戲的開發(fā)需要龐大的團(tuán)隊使用各種各樣的語言和工具來完成。總結(jié)一下主要有C/C++,匯編語言,著色器語言,腳本語言,高效的開發(fā)語言C#或Java。
首先一般的游戲開發(fā)架構(gòu)(Windows)從底到頂一般是Direct X?——游戲引擎——游戲。
Direct X?相當(dāng)于所有顯卡的一個統(tǒng)一接口,為游戲提供一個利用硬件渲染的編程模型,但Direct X?接口為了追求高性能功能非常單純和松散,不利于游戲的高效開發(fā)。此時就需要根據(jù)游戲特點(diǎn)對其進(jìn)行適當(dāng)?shù)娜∩岷头庋b,實(shí)現(xiàn)一組更高抽象的游戲開發(fā)接口和框架,可以理解成游戲引擎中的圖形引擎。這部分的開發(fā)一般使用的語言是C/C++和少量的匯編語言。
至于游戲引擎是一個非常復(fù)雜的功能聚合體,所有的游戲開發(fā)工作都是在之上進(jìn)行的。包括圖形引擎,音頻引擎,碰撞引擎,藝術(shù)資源管理,腳本引擎等等。到此為止幾乎還沒有涉及到你所說的游戲開發(fā)。
首先在圖形渲染方面,例如光照陰影處理等等,現(xiàn)代顯卡一般是通過可編程著色器實(shí)現(xiàn)對圖形效果的控制,所采用的編程語言一般是一些著色器語言,例如Direct X?采用的HLSL,OpenGL使用的GLSL等等,語法類似C語言,游戲執(zhí)行時被編譯加載到顯卡上,在實(shí)現(xiàn)硬件渲染速度的同時又實(shí)現(xiàn)了編程的靈活性。
大型游戲開發(fā)的絕大部分工作其實(shí)都是在編寫游戲腳本,腳本是大型游戲得以如此高速開發(fā)和發(fā)布的主要原因。腳本化的開發(fā)讓游戲開發(fā)擺脫了硬編碼的種種弊端,讓游戲內(nèi)容可以輕易的修改和調(diào)試。游戲故事如何進(jìn)行,各種事件如何觸發(fā),何時該播放哪些聲音或動畫,如何使用藝術(shù)團(tuán)隊創(chuàng)作的資源,這些都是在腳本中編寫的,可以說引擎決定了游戲能做什么,而腳本才真正決定了游戲做了什么。一些著名的引擎如虛幻系列都有自己獨(dú)特的腳本語言,其他一些引擎可能會采用一些第三方的腳本語言,比如比較流行的Lua。所以開發(fā)一個新游戲最簡單的情形就是沿用之前的引擎,創(chuàng)作藝術(shù)資源,然后編寫腳本將其組織成一個游戲,幾乎不需要什么底層的編程語言。
開發(fā)環(huán)境方面,游戲團(tuán)隊內(nèi)部可能會使用一些開發(fā)和設(shè)計工具對資源進(jìn)行處理,可以理解成游戲引擎的IDE,這部分因?yàn)槭莾?nèi)部工具,而且可能需要經(jīng)常修改所以一般采用比較高效的開發(fā)和語言,比如暴雪就是部分使用.NET和C#進(jìn)行一些內(nèi)部工具的開發(fā)。
至于引擎核心的開發(fā),Windows比較流行的方法是使用最新版本的Visual Studio,顯卡廠商如NVIDIA也會為VS開發(fā)一些插件來簡化顯卡編程和調(diào)試。