游戲開發(fā)需要具備哪些知識?
游戲開發(fā)不是一朝一夕的事情,真的需要相當(dāng)多的知識點才能做出好的作品。
硬件知識
開發(fā)游戲過程中,真正制約運行速率的是CPU不是GPU,因為大部分游戲都以單線程開發(fā)為主,所以一般調(diào)試運行的時候基本也是考驗單線程能力。購買CPU核心可以買多核的,但是單核頻率一定要高,否則運行很慢(我現(xiàn)在極度嫌棄R5 2600了,每次調(diào)試都得3秒鐘~),MAC除外。
軟件知識
語言和引擎
這個大家都知道TS+COCOS,C#+unity,CPP+UE,但是這只是基本中的基本。
關(guān)于引擎的選擇
這個問題其實不用太糾結(jié),清晰自己的定位,身為開發(fā)者就是程序為主,無論用哪個都不能被引擎和語言所限制,要明白引擎只是個工具,哪個工具好用就用哪個。
Unity對于我來說開發(fā)2D好很多,并且有相當(dāng)多的項目和視頻可以參考。但是Unity缺點也很明顯,就是自己得為自己做一大堆工具:比如我自己做的控制時間工具,控制出生工具,都是挺累人的,一有新的需求舊的工具要么修改,要么重寫。想過用別人的插件但是別人的又不一定合適自己(壓根就看不懂別人的代碼)。
UE大部分用來開發(fā)3D游戲的(貌似用UE做2D游戲的沒見過吧~王者是2.5D),渲染是UE的強項,見過很多人單單用UE的藍圖就做出各種吊炸天的CG或者游戲。其實我也考慮過用UE做游戲,問題在于做個項目出去投簡歷找工作不難,但是做個獨立游戲就得自己兼顧3D建模和美術(shù),不太現(xiàn)實。
3D是個很龐大的游戲項目,個人開發(fā)更需要非常大的功夫,廠商也都是有著一條生產(chǎn)線的,每個人基本上都是一顆螺絲釘,各司其職。所以不是真的很有技術(shù)和錢,我不太建議個人搞3D項目,拿去面試的沒問題,但是獨立開發(fā)個人搞3D真的太難了。(只針對入行開發(fā)的人)
cocos目前來說國內(nèi)不少崗位還在招聘,但是很少有人建議用Cocos了,因為天花板很明顯。
數(shù)據(jù)結(jié)構(gòu)與算法、設(shè)計模式、開發(fā)模式
數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)結(jié)構(gòu)無非是數(shù)組,鏈表,棧,隊列,字典(也可以說散列表,作用差不多的),樹,那么每一個結(jié)構(gòu)會在哪里使用呢?
數(shù)組:在游戲開發(fā)中用的較多,特點就是訪問快,擴容簡單,缺點插入難,刪除難。經(jīng)常用的就是批量生成變量,比如背包
鏈表:鏈表的特點就是更新插入刪除節(jié)點容易,但是訪問必須得一個一個節(jié)點來尋找(因為只有知道一個節(jié)點,才能知道它的下個節(jié)點)而數(shù)組可以通過下標(biāo)直達相應(yīng)的元素,所以鏈表可以看作是數(shù)組的對立面的。游戲中鏈表用的也很多,但是很少以鏈表本身呈現(xiàn)(后面講)。
棧和隊列:如果說數(shù)組和鏈表是個真實寫出來的物理結(jié)構(gòu),那么棧和隊列就是想象出來的邏輯結(jié)構(gòu),棧和隊列一樣,既可以通過數(shù)組實現(xiàn),也可以通過鏈表實現(xiàn)。
棧的特點就是先入后出,后進入的數(shù)據(jù)先出,概念網(wǎng)上很多,說太多很多人不理解,那就結(jié)合游戲講解。