90后開發(fā)者Cocos經(jīng)驗(yàn)談:如何入行進(jìn)步
又是一年畢業(yè)季,馬上就要步入“程序猿”行列的“小鮮肉們”是否已經(jīng)做好準(zhǔn)備了呢?今天我們有幸邀請(qǐng)到了一位90后的開發(fā)者薛芃,請(qǐng)他來(lái)為即將畢業(yè)的鮮肉級(jí)開發(fā)者,來(lái)點(diǎn)屬于90后的經(jīng)驗(yàn)談。
提到薛芃,估計(jì)大家都沒聽說過,但是經(jīng)常泡Cocos論壇的親們,也許會(huì)對(duì)“寒江孤葉”這個(gè)名字有所耳聞,他可是名副其實(shí)的Cocos鐵桿粉絲。
近日Cocos團(tuán)隊(duì)有幸邀請(qǐng)到了Cocos論壇里的熱門90后開發(fā)者薛芃,請(qǐng)他來(lái)聊聊游戲開發(fā)前后的故事。
Cocos:第一次與Cocos接觸是什么時(shí)候呢?為何會(huì)選擇Cocos?
薛:接觸Cocos引擎是在Cocos發(fā)布Cocos2d-2.1 beta3-x-2.1.1版本的時(shí)候,那時(shí)候在學(xué)校里幾個(gè)朋友想一起開發(fā)個(gè)小游戲參加學(xué)校的CodeJam。我們?cè)谥谱饔螒虻臅r(shí)候,也在幾款引擎間糾結(jié)過,但經(jīng)過橫向?qū)Ρ菴ocos引擎脫穎而出,他開源、上手容易、并且免費(fèi)的優(yōu)勢(shì)讓我們果斷選擇了它。也正是這次選擇,讓我走進(jìn)了Cocos的殿堂。
當(dāng)我們開始學(xué)習(xí)Cocos這套引擎的時(shí)候,我們發(fā)現(xiàn)Cocos上手真的很容易,寥寥幾行代碼,就可以實(shí)現(xiàn)非常炫酷的功能效果。3.x開始發(fā)布的Cocos一站式解決方案,將游戲整體從項(xiàng)目的創(chuàng)建、UI設(shè)計(jì)、邏輯編寫,到最后的項(xiàng)目調(diào)試、打包發(fā)布一整套流程都變得輕松簡(jiǎn)單。
Cocos:您為何會(huì)成為Cocos論壇里的當(dāng)紅人物?
薛: 剛剛開始使用Cocos的時(shí)候,自己絕對(duì)是菜鳥一個(gè),各種無(wú)所適從,于是我就泡進(jìn)了Cocos論壇。論壇里的學(xué)習(xí)、互助的氛圍非常好,在學(xué)習(xí)和開發(fā)過程中遇到的一些疑惑,總能在這里通過大家的討論得到解決的辦法。可以說,我是在這些論壇朋友的幫助下成長(zhǎng)起來(lái)的,Cocos論壇,就是我最初的老師。
同時(shí),論壇中經(jīng)常會(huì)有一些大牛分享自己的開發(fā)經(jīng)驗(yàn)和代碼,在他們的文章中,總能學(xué)到很多知識(shí),增長(zhǎng)自己的見解,希望學(xué)弟們也養(yǎng)成來(lái)論壇學(xué)習(xí)技術(shù)的好習(xí)慣,學(xué)習(xí)知識(shí),幫助他人也是提升能力的一種捷徑。
Cocos:跟大家分享下你學(xué)習(xí)Cocos的過程和經(jīng)驗(yàn)吧!
薛: 有一些朋友總是問我該怎么學(xué)Cocos引擎,希望我的這些經(jīng)驗(yàn)談,可以幫助到大家。
首先我假設(shè)你已經(jīng)掌握C++語(yǔ)言了(沒掌握的速度去補(bǔ)課!)學(xué)習(xí)一個(gè)引擎,首先需要對(duì)其有一個(gè)整體的認(rèn)識(shí),如果一上來(lái)就學(xué)Sprite怎么用,Label是什么會(huì)有一種盲人摸象的感覺。這個(gè)整體的認(rèn)識(shí)包括,如何搭建Cocos的開發(fā)環(huán)境,Cocos的工具鏈,Cocos主要功能,Cocos2d-x的源碼的目錄結(jié)構(gòu)。接下來(lái)便是Cocos2d-x的核心類了,例如Node,Scene,Layer,Director,Sprite等,然后通過這些基礎(chǔ)類嘗試去寫一些比較簡(jiǎn)單的UI界面,下一步則是學(xué)習(xí)各種Action、Scheduler和事件處理機(jī)制,這時(shí)候你就已經(jīng)可以完成一些簡(jiǎn)單的小游戲了,例如貪食蛇,2048等。(成就感爆棚有木有?)下邊你可以通過閱讀Cocos2d-x build目錄中的Test去掌握其他各式各樣的類以及在項(xiàng)目開發(fā)中非常常用的UI控件。每個(gè)人都會(huì)有自己不同的學(xué)習(xí)方式,找到一個(gè)適合自己的方式就是最好的。
在學(xué)習(xí)過程中,當(dāng)你遇見不懂的問題的時(shí)候,你可以考慮去我上邊提到的CocoaChina論壇提問,亦或者去Cocos的中文站查看一下教程,或者通過開發(fā)者平臺(tái)提問一下引擎開發(fā)團(tuán)隊(duì)和CVP團(tuán)隊(duì),善用這些資源會(huì)讓你學(xué)習(xí)和使用Cocos變得更加容易。
Cocos:目前您有哪些開發(fā)實(shí)例可以分享呢?這個(gè)項(xiàng)目目前是什么狀態(tài),在這個(gè)過程中,遇到了哪些問題,如何解決的呢?
薛:我現(xiàn)在正在開發(fā)一款棋牌項(xiàng)目,不久之后就可以和大家見面了。他是將一些常見的棋牌玩兒法綜合到了一起,有常見的德州撲克,斗地主,也有大家耳熟能祥的干瞪眼,捉黑叉,甚至還有“拉大車”。感謝領(lǐng)導(dǎo)對(duì)我的信任,給我項(xiàng)目主程的職位,在項(xiàng)目開發(fā)過程中,我遇見了不少的問題,例如,lua里邊Scheduler不會(huì)自動(dòng)remove,序列幀的內(nèi)存和IO優(yōu)化,tableview的cc.TABLECELL_SIZE_FOR_INDEX的返回是高和寬的問題(正常是不都是寬和高么?)等。但是在Cocos社區(qū)和各位熱心版主的幫助下,都完美的解決了。在此感謝那些熱心的朋友們!
使用Cocos的開發(fā)過程
Cocos:你是如何這么快就獲得主程這個(gè)崗位的呢?
薛:進(jìn)入這家公司后,我一共跟了兩個(gè)項(xiàng)目。一個(gè)卡牌一個(gè)RPG,在項(xiàng)目的研發(fā)過程中,我很快就熟悉了整體的項(xiàng)目框架,不明白的就去問,對(duì)每一個(gè)不懂的地方都認(rèn)真的理解。由于我C++掌握的不錯(cuò),在開發(fā)過程中,對(duì)Cocos中一些并不熟悉的類和空間,也都?jí)蛉ラ喿xCocos的源代碼,加深對(duì)控件的理解。自己去理解和學(xué)習(xí)的能力非常重要,能夠通過看代碼來(lái)學(xué)會(huì)一個(gè)方法的使用對(duì)于這種開源引擎尤為重要。另外,我善于溝通的性格為我和其他程序以及美工和策劃都維護(hù)了相當(dāng)好的關(guān)系,這也為我后來(lái)項(xiàng)目工作的開展帶來(lái)了很大的益處。兩個(gè)月前,公司決定開發(fā)一款棋牌類游戲,由于棋牌類游戲相對(duì)簡(jiǎn)單,也易于把控,于是領(lǐng)導(dǎo)決定讓我來(lái)負(fù)責(zé)這個(gè)項(xiàng)目,目前來(lái)看,我沒有讓領(lǐng)導(dǎo)失望!
Cocos:給即將步入“程序猿”行列的學(xué)弟的建議:個(gè)人覺得,學(xué)習(xí)或掌握什么重要,心態(tài)變化及調(diào)整。
薛:萬(wàn)丈高樓,始于基石,堅(jiān)實(shí)的基本功尤為重要。在學(xué)習(xí)Cocos之前,首先應(yīng)當(dāng)掌握好C++,推薦一本非常知名的書C++ Primer,它作為深入學(xué)習(xí)C++是必備的!
我認(rèn)為想學(xué)習(xí)C++,可以考慮先去學(xué)習(xí)C語(yǔ)言,C++是基于C語(yǔ)言開發(fā)的一種通用編程語(yǔ)言,掌握C語(yǔ)言對(duì)學(xué)習(xí)C++提供了很大的方便。在學(xué)習(xí)C語(yǔ)言時(shí)候,著重要理解并掌握指針,指針是C/C++語(yǔ)言的靈魂,貫穿整個(gè)程序開發(fā)的每個(gè)角落。掌握了C語(yǔ)言后,C++并不難學(xué)了,很多朋友覺得C++很難學(xué),因?yàn)樗贑語(yǔ)言的基礎(chǔ)上提供了非常多的概念,尤其是面向?qū)ο蟮母拍?。花些時(shí)間,真正去理解面向?qū)ο螅瑢?duì)后序的研發(fā)和學(xué)習(xí)都有莫大的幫助。此時(shí),你對(duì)C++就已經(jīng)有了一定的掌握了。接下來(lái)就要去深入的學(xué)習(xí)C++的各種模板,STL以及其他更加復(fù)雜的概念。編程是一門實(shí)踐科學(xué),在學(xué)習(xí)過程中,不斷的練習(xí)是非常非常有必要的,將書中的例子都認(rèn)證的敲一遍,再稍微修改一些代碼運(yùn)行一下,看看與自己所想的結(jié)果是否相同,這樣會(huì)對(duì)代碼的掌控右很大的提升。
其次,需要掌握一些基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),如堆,棧,隊(duì)列,二叉樹,以及一些常見的搜索、排序算法也是很有必要的。
每一位優(yōu)秀的學(xué)生在學(xué)校都是天之驕子,然而越是優(yōu)秀的學(xué)生走入職場(chǎng)越容易受到打擊。因?yàn)檫M(jìn)入公司后,你會(huì)發(fā)現(xiàn),自己非但不是佼佼者了。返回而好像什么都不懂一樣。這個(gè)落差的挫敗感很容易打擊到你的信心,這時(shí)候一定不要?dú)怵H,這是每個(gè)人都會(huì)遇到的過程,你只要堅(jiān)定信心,繼續(xù)努力。很快你就能趕上去的。
Cocos:如何看待Cocos,覺得Cocos的優(yōu)勢(shì)是什么呢?
薛:我認(rèn)為Cocos主要優(yōu)勢(shì)在于開源、易學(xué)、免費(fèi)以及一個(gè)非常完善的中文社區(qū)。相比其他主流引擎,Cocos更加關(guān)注國(guó)內(nèi)市場(chǎng),中文的教程更加豐富,而且針對(duì)開發(fā)者的提問以及BUG的反饋也更加及時(shí)。Cocos支持使用Lua和JS兩種腳本語(yǔ)言進(jìn)行開發(fā),并且提供了一個(gè)非常好用IDE,方便游戲的開發(fā)和調(diào)試,這比傳統(tǒng)C++語(yǔ)言研發(fā)降低了門檻,提高了開發(fā)速度。
薛芃在“玩轉(zhuǎn)Cocos,樂享Windows——Windows移動(dòng)游戲開發(fā)”活動(dòng)中
Cocos:下一步有什么計(jì)劃,作為90后開發(fā)者中的佼佼者,有什么話要對(duì)學(xué)弟說?
薛:我的下一步計(jì)劃是深入的學(xué)習(xí)OpenGL的知識(shí),去更透徹理解Cocos。同時(shí)掌握Cocos-js。Cocos-js是目前最熱門的發(fā)展方向,JavaScript相比Lua更加成熟,更加容易掌握,前端和后端都能過使用Javascript進(jìn)行開發(fā),很容易完成交互,方便技術(shù)共享。而且Html5和CocosRuntime也是Cocos-js的一個(gè)決定性優(yōu)勢(shì)。所以下邊的項(xiàng)目我們決定采用Cocos-js進(jìn)行開發(fā)。
有一個(gè)心得跟大家分享一下:在你學(xué)習(xí)的過程中,記得寫博客,無(wú)論是在CSDN還是博客園都可以。當(dāng)你想不起來(lái)之前寫的一些功能和方法的實(shí)現(xiàn)的時(shí)候,如果你把他寫到博客里,就可以很容易的翻出來(lái)。同時(shí)博客還是你技術(shù)水平的最有效的證明。尤其是剛畢業(yè)大學(xué)生在應(yīng)聘的時(shí)候,如果有一個(gè)自己的博客,是一個(gè)很好的加分項(xiàng),同時(shí)也是像HR展現(xiàn)自己技術(shù)能力的一個(gè)好方式。
Cocos:最后還有什么相對(duì)大家說的話么?
薛芃:希望學(xué)弟們?cè)趯W(xué)習(xí)過程中,加倍努力,遇見困難不要?dú)怵H,多多嘗試,勇于提問,早日成為一名高大上的“游戲開發(fā)者”!
同時(shí),非常感謝Cocos引擎給我這個(gè)和大家認(rèn)識(shí)的機(jī)會(huì),也很感謝Cocos引擎團(tuán)隊(duì)對(duì)我的支持和幫助。希望更多的朋友能夠加入Cocos大家庭,同時(shí)希望Cocos越做越好,為開發(fā)者提供更大的便利。
Cocos:非常感謝薛芃接受我們這次采訪,希望你事業(yè)蒸騰日上。
薛芃:謝謝!■
關(guān)注我們



