{eval=Array;=+count(Array);}
開發(fā)游戲的編程語言有很多,不同的平臺會使用不同的語言。這里我把平臺類型主要分為四大類,即PC端,游戲主機(jī),WEB端,移動終端。下面就分別來介紹一下這四類平臺上的一些游戲開發(fā)語言。
PC.PC端的游戲絕大多數(shù)都運(yùn)行在微軟的Windows系統(tǒng)下,游戲可以被視為一類交互性比較強(qiáng)的軟件。既然是軟件,那么理論上能夠開發(fā)軟件的編程語言也都能用來開發(fā)游戲,事實(shí)也確實(shí)如此。但在實(shí)際開發(fā)中,為了兼顧游戲的執(zhí)行效率,PC上的大型游戲往往使用C++或者C#這類高性能語言進(jìn)行開發(fā)。此外,還有一個原因是C++/C#可以無縫兼容大多數(shù)游戲引擎。
游戲主機(jī).目前主流的游戲主機(jī)有微軟的XBOX和索尼的PlayStation。XBOX可以視為一個另類的PC機(jī),它的游戲開發(fā)與現(xiàn)在Windows端的開發(fā)大同小異(同樣可以使用Visualstudio),所以XBOX的主要編程語言也就同樣是C++和C#。索尼的PlayStation使用的是一個類UNIX的操作系統(tǒng),也就無法使用微軟的C#語言了(要使用也可以,但很麻煩),所以就只能大量使用C++了。
WEB.WEB游戲是指運(yùn)行在瀏覽器中以網(wǎng)頁形式展現(xiàn)出來的一類游戲。本質(zhì)上也就是一個網(wǎng)頁,所以WEB游戲的編程語言也就主要是WEB開發(fā)語言,比如PHP,JS,HTML5等等。
移動終端。移動平臺主要有安卓和iOS,安卓系統(tǒng)APP的主要編程語言是Java和kotlin,IOS是OC和swift。這些是APP的開發(fā)語言,而游戲也可以視為一種高性能的app。安卓下游戲主要框架由Java實(shí)現(xiàn),部分需要進(jìn)行大量計(jì)算的模塊會使用C/C++的動態(tài)庫來實(shí)現(xiàn)。iOS下由于其語言本身就很高效,所以基本上IOS下的游戲都是使用oc和swift兩種編程語言來實(shí)現(xiàn)的。
沒有規(guī)定什么編程語言是用來寫游戲的,只是不同的編程語言的側(cè)重點(diǎn)不同,比如PHP在網(wǎng)站方面具有優(yōu)勢,Python用來寫一些腳本,c語言偏底層等等,編程語言的功能只是告訴計(jì)算機(jī)要怎么做
如果是寫一些小游戲,java、Python等都比較方便
如果要寫大型游戲的話,c++比較好,Java、Python等我不太清楚
主機(jī)與pc客戶端底層語言基本是c++,腳本語言是lua、js、c#等,iOS底層是object c,android是Java,flash是as,服務(wù)器端比較雜,python,erlang,nodejs,c++,go,甚至PHP都有可能
游戲本身會運(yùn)行在不同的平臺,而平臺也影響了使用的語言。平臺主要有2大類,PC(也就是常用的電腦)和手機(jī)。它們上面都可以使用網(wǎng)頁來運(yùn)行游戲,所以額外我們把網(wǎng)頁瀏覽器上面跑的叫WEB端。針對上面的3種平臺類型。我們來聊一聊這些平臺上常見的游戲是用什么開發(fā)的。
PC端。大部分的游戲是C/C++開發(fā)的。這主要是因?yàn)槲覀兪褂玫牟僮飨到y(tǒng)如window,mac的底層都是c。使用C/C++可以極大的發(fā)揮性能上面的優(yōu)勢。比如下面這個NBA2K18就是用C/C++為主開發(fā)的。
手機(jī)端。手機(jī)端的游戲我們稱為手游。手機(jī)上面的操作系統(tǒng)主要是ios與android,也就是蘋果和安卓系統(tǒng)。在之前,android上面的游戲以java開發(fā)居多。這是因?yàn)閍ndroid系統(tǒng)本身就是以java開發(fā)為主。ios上面的游戲以object c開發(fā)居多,這也是因?yàn)橄到y(tǒng)本身的緣故。最近ios又出來swift語言。但是隨著技術(shù)的發(fā)展,程序員們發(fā)現(xiàn)一款游戲要部署到各個平臺的成本太高了。所以現(xiàn)在主流的技術(shù)是使用跨平臺的游戲引擎開發(fā),然后發(fā)布到不同的平臺。所以,語言的選擇從對平臺的依賴變成了對游戲引擎的依賴。那我們就要看看主流的游戲引擎有哪些?主流的游戲引擎有:unity,cocos,unreal等。unity采用的是C#語言為主。cocos下面以C++、lua、js等開發(fā)語言。unreal主要是以C++為主。從上面這些中你會發(fā)現(xiàn)語言有很多,使用的也很多。在商業(yè)項(xiàng)目以及目前主流技術(shù)中,大部分高水準(zhǔn)的游戲是以C++結(jié)合lua來開發(fā)的。C++負(fù)責(zé)處理高性能的部分,lua處理邏輯部分來加快開發(fā)速度。即使是使用unity引擎,大部分產(chǎn)商也會選擇C#結(jié)合lua的方式來開發(fā)。C#負(fù)責(zé)核心部分,lua處理邏輯部分。
再聊一下WEB端。WEB端以前是以flash為主,常見的就是4399的很多小游戲,都是flash為主。WEB端主要是一個html與js的解釋器。目前WEB開發(fā)國內(nèi)主要是3大引擎:白鷺、laya以及cocos-js。它們的主要開發(fā)語言為typescript,這主要是因?yàn)閠ypescript可以提供非??斓拈_發(fā)速度(就像lua一樣),同時它還具備提前暴露問題的能力。
實(shí)際上上面的部分主要聊的是游戲客戶端。在游戲領(lǐng)域,實(shí)際上分為服務(wù)端和客戶端。客戶端指對外玩家可以見到的畫面表現(xiàn)等。服務(wù)端是運(yùn)行在產(chǎn)商自己的服務(wù)器上的,支持玩家之間互相可見,同步,聊天等各種邏輯。對于服務(wù)端的語言,目前有C++結(jié)合lua以及C#、java、php等。這幾種都很常用,主流的大的游戲依然是C++為主。中小型的游戲各種都會用到。php常用于對網(wǎng)絡(luò)需求很低的游戲的做簡單的數(shù)據(jù)處理。
上面的主要是一些理論,下面我們來實(shí)戰(zhàn)幾個問題,一會我們再來總結(jié)。
1. 王者榮耀是用什么開發(fā)的?王者榮耀使用的是unity引擎,而這種全民級別的游戲是非常注重性能的。所以它采用的是C++結(jié)合C#。核心用C++,邏輯用C#。為什么不是我們前面說的C#結(jié)合lua呢?因?yàn)閡cloud有這個技術(shù)實(shí)力,所以他們整體使用了更有性能優(yōu)勢的語言開發(fā)。
2. 微信里面的小游戲是用什么開發(fā)的?小游戲本質(zhì)上是個WEB的執(zhí)行環(huán)境。所以它上面的很多游戲都是typescript或者js開發(fā)的。之所以typescript還沒有普及,是因?yàn)樗纳鐓^(qū)不夠活躍。
3.怎么猜測一款游戲是什么語言開發(fā)的?先上網(wǎng)搜索它的開發(fā)引擎,如果搜索到了就看看它對性能是否要求高,來推導(dǎo)它的使用語言。如果搜索不到,那很可能是自研引擎。自研引擎大部分都是C++實(shí)現(xiàn)的。
最后總結(jié)下。目前大部分國內(nèi)的游戲以C++/C#結(jié)合lua實(shí)現(xiàn)為主,隨著小游戲的開始,催生出一些js/typescript開發(fā)的游戲。為什么是以C++結(jié)合lua會是實(shí)現(xiàn)為主呢,是因?yàn)楝F(xiàn)在網(wǎng)游最賺錢。一款游戲月流水過千萬甚至過億催生了這個產(chǎn)業(yè)。這個產(chǎn)業(yè)注重2點(diǎn):性能穩(wěn)定,所以是C++??梢愿鞣N修改,各種支出活動,所以是lua。C++性能非常高,ucloud內(nèi)部大部分代碼其實(shí)都是C++的。lua是門腳本語言,招人門檻很低,也容易學(xué)習(xí)。所以,很多語言實(shí)際上是因?yàn)榇蟓h(huán)境的影響而被選中的。另外一方面,服務(wù)器也可以采用C++結(jié)合lua開發(fā),這樣的話就形成了雙端(服務(wù)端和客戶端)都使用相同語言的高速開發(fā)模式。
我猜想題主是想選擇一種語言學(xué)習(xí)。首先題主要看下自己未來的方向。是想做大項(xiàng)目還是做小項(xiàng)目。如果是希望做大項(xiàng)目,目前無疑推薦的是C++和lua。如果是小游戲之類的,推薦的是typescript。未來的一個趨勢我大膽預(yù)測可能是C++結(jié)合typescript。我了解到的一些技術(shù)大牛已經(jīng)開始這樣實(shí)踐了。推薦的lua語言開發(fā)書籍如下:
推薦的C++書籍如下:
typescript暫時沒有合適的書籍供閱讀,主要以typescript的官方文檔為主。
小游戲類的開發(fā)書籍推薦如下:
大的游戲?qū)嶋H上需要大量的學(xué)習(xí)和知識積累。遠(yuǎn)遠(yuǎn)不是幾本書能完全吃透的。這邊還是推薦一本unity3的引擎的書來提高下入門的興趣:
特別提醒下:基于目前互聯(lián)網(wǎng)的發(fā)展速度,讀書已經(jīng)不是最快的獲取知識的途徑了。所以推薦的是優(yōu)先以互聯(lián)網(wǎng)的內(nèi)容來學(xué)習(xí),找個引擎玩一玩。像玩玩具一樣的學(xué)習(xí)編程是最快樂的。之后再努力進(jìn)入一線的研發(fā)團(tuán)隊(duì)歷練,這樣成長最快。紙質(zhì)的書籍落后于實(shí)際的技術(shù)3-5年以上。
作者背景:前迅雷員工/前游戲公司雙端主程
客戶端看游戲引擎,像現(xiàn)在最火的unity3D 就是C#+lua做手游開發(fā),虛幻的話就是C++,h5方向有兩個引擎分別是egret和laya box 用的是typescript。
服務(wù)端的話主要有3個流派,分別是cpython,clua 和erlang 。java 不入流,做什么都行,反過來就是做什么都不行。
總結(jié)就是服務(wù)端多語言混編交互的很多,各語言都有各自的發(fā)揮,客戶端跟引擎走。
游戲有各種各樣的,有手游,手游又有安卓和IOS的區(qū)分,又有頁游和端游之分。
我在這里大致的給大家列舉一下吧。
2D頁游:AS3 JS
3D頁游:AS3 C#(Unity)
IOS游戲:Obj-C js/lua(Cocos-2d-x) js/C#(Unity) AS3
安卓游戲:java js/lua(Cocos-2d-x) js/C#(Unity) AS3
在線小游戲:AS3 JS
大型單機(jī)游戲/客戶端MMORPG::C++ C#
其中AS3 JS C#(Unity)都是跨平臺的。AS3(flash)目前被唱衰,JS目前又比較翔,Unity還不錯。
而現(xiàn)在比較火的就是Unity3D和C# ,來做游戲,如果你想學(xué)習(xí)的話可以先去了解一下。比如最近很火的王者榮耀,就是用Unity寫的。
如果你是對技術(shù)感興趣,建議你學(xué)習(xí)c++,這會讓對游戲的底層實(shí)現(xiàn)有更多的了解和掌握.但這一定是一個非常非常漫長的過程.如果你是對設(shè)計(jì)更感興趣,那就學(xué)習(xí)Unity3d, 學(xué)習(xí)C#, 因?yàn)樗梢宰屇愀斓淖龀瞿阆胍?
建議你先不要糾結(jié)學(xué)什么語言,先想清楚想要做什么,是程序員,還是想做產(chǎn)品,還是想做策劃呢?
有什么問題歡迎討論,隨手關(guān)注,祝你幸福。
以上。
如果追求簡單而且沒基礎(chǔ),而且只是用來自己玩玩,那你可以試試Scratch,這種語言是少兒式的搭積木的種編程方式。難登大雅之堂。
如果有點(diǎn)基礎(chǔ),可以試試做網(wǎng)頁游戲,可以用JavaScript或AdobeFlash,這些一般是用來寫網(wǎng)頁小游戲。
如果你不滿足這些語言,或者你有比較好的基礎(chǔ),可以上手Visual Basic或Visual C++,前者容易后者難,但是性能還是后者較好,Visual Basic有自帶編譯器,可編譯成exe且不用配置環(huán)境
還有一些較難的Java,Python
如果要編程3D游戲,可以試試Unity3D。
上述所有語言除Scratch外全部都是大眾語言。
學(xué)習(xí)游戲開發(fā),需要掌握游戲編程和游戲引擎核心技術(shù),比如現(xiàn)在很多公司都在用的Unity,對C#編程和Unity核心技術(shù)都需要有規(guī)劃和系統(tǒng)地進(jìn)行學(xué)習(xí)。如果只是在網(wǎng)上找一些視頻和項(xiàng)目跟著學(xué),不能真正的去理解和消化變成自己的東西,最終的結(jié)果也只能是事倍功半。再說現(xiàn)在網(wǎng)上的視頻和項(xiàng)目包括很多的培訓(xùn)機(jī)構(gòu)教的都是一些換皮不換骨的內(nèi)容,好多還是基于Unity5.x的案例,也很難學(xué)到現(xiàn)在游戲公司真正需要的技術(shù)。建議到Paws3D學(xué)習(xí)中心來看看,每周六下午游戲開發(fā)私教營也可以預(yù)約到現(xiàn)場來試聽,線下課程除了能夠快速的幫助您提升游戲開發(fā)能力,還有機(jī)會參與獨(dú)立游戲項(xiàng)目的實(shí)戰(zhàn)開發(fā),歡迎到現(xiàn)場來參觀、體驗(yàn)與學(xué)習(xí)。
當(dāng)各式智能終端設(shè)備的普及為游戲公司帶來人口紅利的同時,以 Unity為代表的游戲引擎開發(fā)商也在極大地降低游戲研發(fā)的成本。另外,除了游戲引擎本身的性能提升外,Unity還同步提供了免費(fèi)教程、在線培訓(xùn)、產(chǎn)品文檔以及數(shù)千個插件資源生產(chǎn)工具。
開發(fā)游戲需要什么?需要掌握哪些知識?
01想成為游戲開發(fā)人員,就得先成為一個很好的程序開發(fā)人員,所以游戲開發(fā)要先從編程語言學(xué)習(xí)。
02除了編程語言之外,還有一些游戲方面的知識,比如說游戲開發(fā)流程及職業(yè)劃分、玩家需求分析、游戲主線故事設(shè)計(jì)等等也要學(xué)習(xí)。
03然后還有一些繪圖軟件,比如說Photoshop,也要掌握一些,包括其中的游戲美術(shù)風(fēng)格技法、色彩基礎(chǔ)、游戲色彩練習(xí)、肖像繪制等方面的知識。
04除了一些理論知識,編程工具也需要掌握至少一種,常用的有VC,Unity等,VC挺不錯的,可以試試這個。
05一些生活的常識,角色的動作,物體碰撞之后的變化等等,這些也是需要學(xué)習(xí)的。想做好一個游戲開發(fā)要學(xué)習(xí)的東西還是非常多的。
參加游戲開發(fā)培訓(xùn)的話
1.會獲得Python語言開發(fā)的工具鏈,并講解使用方法,通過各種工具腳本,提高開發(fā)效率,將企業(yè)中高手采用的工作方式帶入學(xué)生未來的工作當(dāng)中。
2.會獲得JavaEE服務(wù)端和Unity Socket通信視頻和自學(xué)資料,為日后從事大型網(wǎng)游開發(fā)奠定基礎(chǔ)。保證學(xué)員未來有足夠的發(fā)展空間。
3.學(xué)員入學(xué)就有高質(zhì)量,可信服的就業(yè)服務(wù)保證。
4.隨著企業(yè)的用人標(biāo)準(zhǔn)的提升,課程中添加了大量的圖像學(xué)案例,讓學(xué)生真正熟悉圖形學(xué),熟悉各類特效的實(shí)現(xiàn)流程,熟悉光照算法的設(shè)計(jì)思路。
5. 網(wǎng)絡(luò)底層的深層剖析,從通信協(xié)議、拆包粘包、連接池各細(xì)節(jié)角度,教授學(xué)員大型網(wǎng)絡(luò)游戲開發(fā)的核心內(nèi)容。幫助學(xué)生實(shí)踐自己思路拼接的網(wǎng)絡(luò)傳輸框架,并在游戲項(xiàng)目中得以實(shí)踐。
比較常用的有 Unity。C#,Lua ,UE4。藍(lán)圖,C++,H5游戲
另外獨(dú)立游戲圈流行的MonoDevelop、Love2D等等;
還有大廠采用自研引擎的,但是近幾年大量轉(zhuǎn)向UE4和Unity。
優(yōu)就業(yè)有游戲開發(fā)的系統(tǒng)課程,有興趣可以咨詢了解一下。
10
回答1
回答0
回答8
回答8
回答10
回答0
回答10
回答10
回答4
回答