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