雖然是個老問題了,還是留個爪,讓更多人少走彎路。
1、先說結論:
現代各種領域的開發技術已經成熟,不再能隨意選擇開發語言和技術棧, 絕大多數情況下只能使用比較流行的方案、工具、和語言 。
以上觀點不僅適用於遊戲開發領域,其實更適用於網頁前端、網站後端、爬蟲、大數據、AI等等其它方向。
舉個例子:用python開發遊戲其實是很有趣的,特別是語法上比較便利。但是隨著時代發展,采用python的遊戲引擎越來越少、越來越邊緣化,離主流技術越來越遠。
現在有些人選擇用python做遊戲更多的就只是以學習為目的了,缺少很多常用的工具、技術支持,需要自己造輪子,離做出真正的遊戲會比較遠。
類似的,現在編寫爬蟲絕大多數情況下都會使用python;學習AI的課程 99%會采用python+TensorFlow;網頁前端基本只能用javascript(以及js的衍生語言比如typescript)。
由於現在做技術非常有必要沿著前人的路繼續走,所以只能選擇相對成熟的技術和語言,沒有太多自由選擇的空間。
2、具體到遊戲開發上,如何選擇呢?
目前王道之選應該是Unity引擎,開發語言為C#。它也是在與Cocos2d、UE4等成熟引擎的競爭中脫穎而出的,在功能、效果、開發難度上取得了很好的平衡。優點不需多言,反正是大多數人的選擇。
其次是UE4(虛幻4,unreal engine 4),UE4對於高效能器材(電腦和PS4等)支持更好,用於開發手遊也不錯。上手UE4的主要問題是知識系統相對繁雜。
比如Unity的物理系統,碰撞體、剛體元件都比較簡單和統一,指令碼聯動也很好理解,初學者掌握起來很快。相比之下UE4的相關元件要多很多,且由於視窗比較多,初學者往往會迷失在一些奇怪的地方(當然熟悉了之後就沒問題了)。
UE4的開發語言是C++,但是遊戲邏輯可以不寫一行程式碼,直接用「藍圖」解決。使用「藍圖」開發遊戲的利弊就不展開說了,總之UE4為使用者提供了「較低的門檻」與「較高的門檻」這兩種選擇;而Unity是提供了統一一種「適中的門檻」。具體好壞見仁見智了。
遊戲開發還有另一個分支——p遊戲,也就是微信小遊戲、網頁遊戲等,也可以打成app包。在這個領域中,cocos2d-p又大有用武之地。但是目前這個領域主要還是服務於小遊戲、簡單類別的遊戲的,離「現代遊戲開發技術」有一點距離。
3、關於入門、熟悉和深入開發
現代引擎已經提供了很友好的開發方式和編程方式,Unity的C#,UE4的藍圖等等。建議初學者把絕大部份精力花在這些主流的開發技術上面。無論用哪種語言和技術,其思想以及解決問題的方法都是相通的,使用主流技術學習曲線更平滑、提高也更快。
另一方面,C/C++這些更底層、潛力更大的語言未來也要掌握。對於想走技術路線的人來說,這些底層技術是遲早要掌握的(初學者可以不急著先學這些)。不僅在UE4裏面C++可以直接用到;即便是用Unity,掌握C/C++以及了解底層原理也會大有裨益,比如現在流行的tolua等擴充套件庫就是把C/C++編寫的庫與C#做了結合。
總結來說:首先,一開始要跟上主流技術;其次,遊戲開發的技術方面非常註重積累,底層技術這幾十年來也一直在發展,C++的地位越發穩固而不可替代。