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