王哲:愛偷懶+愛遊戲=開源Cocos2d-x的生命基因(圖靈訪談)

盼盼姐發表於2013-06-04

圖靈訪談之四十七:對話Cocos2d-x作者王哲

Cocos2d-x作為一款遊戲引擎,出現不到3年,已經支撐了60%的中國手機遊戲和25%的全球手機遊戲開發。Cocos2d-x作為一個開源專案,吸引了來自世界各地的程式碼貢獻者,以及越來越豐厚的商業投資。王哲,是Cocos2d-x的作者,也是該專案開源社群的發起人。在中國的IT生態環境下,這位自稱“善於偷懶”的碼農穿過了遊戲開發和開源社群的雙重迷霧,是什麼支援他走到今天?希望這期的圖靈訪談能給你一個答案。

王哲:愛偷懶+愛遊戲=開源Cocos2d-x的生命基因(圖靈訪談)

在遊戲的召喚下

有些人就是喜歡被玩家罵,覺得被玩家罵很開心。而我們覺得被開發者罵很開心,這就看你的愛好是什麼了。

你是怎麼開始程式設計做碼農的?

我大學的時候開始玩遊戲,玩得很深,屬於很沉迷的那種。和多數大學生的經歷差不多,都是通宵玩暗黑、玩劍俠情緣,後來畢業之後玩魔獸世界。和專業完全沒有聯絡上。相比於寫遊戲,我其實玩遊戲更多。

04年畢業之後我進入夏新軟體研究所,做的是智慧手機上的多媒體編解碼。雖然沒做出什麼好產品,但是當時夏新比較有錢,和我搭檔的是一位廈大的博士後,而且當時的部門經理是一位技術高手,他們教給我一些很好的技術思維方式,所以我技術能力成長也比較快。再到後來,夏新由於體制問題掛掉了。所以我曾經眼看著一家上市公司是怎麼樣掛掉的。其實如果夏新不倒掉,我很有可能會一直呆在那兒。離開廈新之後我去了一家遊戲公司,大概呆了三個月,後來做cocos2d-x走的時候從那邊挖了很多人,把當時坐我周圍的人都挖光了。還好現在那家公司的遊戲仍然很賺錢,只是我每次回去找老朋友聊天都得挑他們CTO不在的時候偷偷去(笑)。

你是怎麼開始開發Cocos2d-x的?

後來我和一個夏新同事,也就是現在帶cocos2d-html5專案的林順,一起去廈大讀商學院,邊讀邊思考管理、技術上的問題。在2010年,我們去了國內一家做作業系統的公司,我負責的那個部門是多媒體遊戲。為什麼去做遊戲?因為整個公司裡就我自己最喜歡玩遊戲,而別人又不喜歡,所以我就開始入手了。當時我就想有沒有一種簡單的方式讓別人把遊戲移植過來,於是我想做一個引擎,能夠方便地把iOS遊戲移植到我們作業系統上面,順便再出一個安卓版本。當時聯絡了Unity,沒回信;聯絡了SIO2,日本人說“your market is pretty small, and the future is pretty uncertain”,其實我現在蠻感謝這句話的,否則我們就不會最後聯絡上Cocos2d-iPhone作者Ricardo Quesada了。 Ricardo很熱心地指導我們開展這個專案,給了各種技術指導,我們也從他身上學了很多。至今Ricardo仍然是我的偶像。

Cocos2d-x出了幾個版本稍微穩定之後,我跑到CocoaChina遊戲版面上宣傳,當時CocoaChina還沒有捕魚呢,只有一個論壇,給我封了個遊戲區版主。半年後,一邊是遊戲引擎做得順風順水的,另一邊做作業系統的公司反倒不太行了。CocoaChina就說不如你過來我們們一起搞吧。當時想投我們的有好幾家,我看陳昊芝長得比較胖比較面善,加上CocoaChina這個公益論壇做得挺靠譜的,我就答應了。他們的思路很開放,能堅持不把一個開源的專案做成閉源商業,這是我很看重的一點,於是我也願意和他們一起做。

你憑什麼認為你的團隊可以把Cocos2d-x做起來?

因為我之前在開源社群做過播放器,自己做個branch出來在夏新內部用。其實在夏新我學到了不少東西,做遊戲引擎和做播放器有很多類似之處,最大的一點就是它們都對效能要求很高,需要各種優化手段來壓榨CPU、GPU的能力。

在程式語言方面,當時各種技術路線很多,安卓是Java的,蘋果是Obj-C的,Windows是C#路線的,而做網際網路那一撥就都是PHP的。我們團隊都擅長C++,因為做播放器這種東西就是“效能飢渴”的,對效能要求很高,結果就是我整個部門的人都擅長C++。那我反向來考慮,哪些東西是非C++不可的呢?應該就是那些有效能瓶頸的。所以播放器和遊戲引擎這種東西就是非C++不可。整個行業這麼多年了,(用C++這個傳統)都沒有變過。做播放器也有它的問題,就是做到最後,產業化的時候就會需要內容,而廣電總局肯定不會讓你隨便自己搞的。拿不到內容,播放器就死了。所以遊戲就是唯一的選擇,而我又不擅長寫遊戲,所以只能做遊戲引擎了。寫遊戲、寫播放器都繞不開C++,雖然後來繫結了很多其他語言比如JS,但是換來換去核心始終還是C++的。

我當時找的是興趣、擅長,和商業的結合點,而當時剛好讓我找到了。當時我可以去做App,去做播放器,設計UI框架,但是最後我覺得這個(遊戲引擎)最好玩,也最合適,於是就做下來了。

你說你不擅長寫遊戲是為什麼?

我曾經寫過遊戲,但是現在沒有在自己寫遊戲,遊戲是觸控的其他團隊在做。但是遊戲團隊整天都會來吐槽,要我支援各種功能,他們是坐在我邊上的使用者(笑)。

我很清楚我不擅長寫遊戲,因為我對程式碼要求太高。一個東西我會反覆改,改到我覺得漂亮才滿意。但是遊戲不是這個路子,(要是這樣的話)人家同類遊戲都不知道出到多少個了。所以我比較適合打磨基礎框架,程式碼改變不多的情況,進度可以比較慢,比如去年我可以花一整年的時間做指令碼繫結,做到現在才OK。要是這種進度做遊戲,公司早就垮掉了。

國外的程式設計師更會優化工作,國內的程式設計師都是完成老闆佈置的任務,這種方式其實在遊戲上很管用,進度會趕得很快。像我這種人就是一種災難,我會不斷地想怎麼優化工作,等我優化完了,人家一拍腦袋說這個功能我不要了,所以我這種人其實很不適合寫遊戲。我打磨了半天,人家說不要就不要了,這樣成本就太高了。

其實喜歡做框架的人並不多,多數人還是覺得遊戲有意思。我招人的時候會特別在意這一點。做遊戲有意思的地方在於你可以創造一個虛擬的世界,而且收入會比較直接。而做開源這種事就沒什麼錢,但是喜歡做的人就會很開心。我喜歡看見大家都在用我做的程式碼,專案變得越來越國際化。而做遊戲很少能做到國際化,整天還會被玩家罵。但是有些人就是喜歡被玩家罵,覺得被玩家罵很開心。而我們覺得被開發者罵很開心,這就看你的愛好是什麼了(笑)。

一個由國人發起的國際化開源社群

中國程式設計師做到30幾歲就要做管理了,國外35歲以上的老碼農隨便教你兩招,你就會發現,原來程式碼還可以這樣寫啊。

你的Cocos2d-x開源社群是怎麼做成國際上活躍,還有商業支援的?

因為我在夏新的時候就接觸了很多開源的東西,我大概知道開源社群要做成國際化需要幹些什麼。所以我自己做的時候也敢於做一些關鍵決定。

我的操作方式可能有些不同。國內的很多開源專案都是一兩個程式設計師自己做,而不會藉助團隊的力量。很多技術高手覺得自己牛得不行,看不上別人寫的程式碼。他會讓別人用(自己的程式碼),但是別人給他提交的程式碼他都不會在意。而且國內很多開源專案都是中文的,而我的專案一開始就只有英文的。到現在為止,所有的程式碼、註釋、文件全都是英文的。中文版自然會有國內社群去拿來翻譯。之所以要做英文的原因是,國外的碼農和國內的碼農很不一樣,中國人很辛苦,還要加班,國外的程式設計師回到家之後也沒什麼事做,很無聊的,所以就在家裡面寫程式碼。他們晚上寫開源專案,就和玩兒一樣。比如,我們的社群框架是多語言的,這個網站本身就是一個開源系統redmine,是一個法國人為首的社群做的。用一個開源方案搭建的開源社群,這點很有意思。

後來資源就很多了,有很多國際大公司加進來。我設計架構的時候也會注意這一點,讓這些公司加進來的程式碼不會互相打架。國內的其他開源專案,除了阿里系的,很少有人願意投錢在開源專案上。有沒有資本支援對於開源專案的後期發展至關重要,你看dicuz, phpwind, PhoneGap還有android都是背後有資本力量在推動的。但是開源專案可能有各種各樣的死法,比如沒有交流、架構不好、沒有資本注入、沒有國際化視野。

在國內做開源社群的話,基金會這條路行不通,所以就沒有第二種選擇了,只能走商業化的道路。因為像國外那樣成立開源基金會,吸納社會捐贈,必需是要民政部批才可以,但開源社群都沒有政府背景,所以原則上是行不通的。

你現在的主要工作是什麼?整個框架有多少來自於社群的貢獻?

我們現在每週都會和Zynga那邊cocos2d團隊用skype開週會,就像部門內部的週會一樣,每次開一個小時左右,定下一週的開發計劃。其實我最開始的英語很爛,Zynga一開始找我們談,講了半天我不知道他們在講什麼, haha, yeah, yeah了半天,拿了觸控投資一年多後去美國參加GDC大會,和Zynga當面溝通時我才知道,哦,原來當時是想收我們(笑)。後來我和同事們都覺得國際化這條路不錯,結果做捕魚(達人)賺的很多錢都付給英語培訓機構了,週末都用來上英語課。因為我們到最後發現我們能寫的程式碼其實只佔整個專案很小的部分,和整個開源社群能提供的智慧相比微乎其微。中國程式設計師做到30幾歲就要做管理了,國外35歲以上的老碼農隨便教你兩招,你就會發現,原來程式碼還可以這樣寫啊。

我們每天都會收到十幾個提交,來自世界各地的開源社群。然後我們就會稽核程式碼,看看這些功能有沒有bug。但是大方向還是要把握一下,定期和老外開開會。我們也會拜訪主要的幾家大使用者。設計階段也需要和大家多多討論。

我的程式碼貢獻率已經在下降了,現在前幾名很多都來自於Zynga、谷歌、Intel的,國家有來自德國的、義大利、俄羅斯、西班牙、阿根廷、印度、美國……數不勝數。以前我還是最多的,別人和我都沒得比,現在都已經掉到cocos2d-x程式碼倉庫的第三名了。我現在每天都要review程式碼,功能雖然不會看得很細,但是主框架的設計一定要做。我白天需要溝通量很大,晚上會用來寫程式碼。

你們現在的主要需求來源是哪裡?

需求來源主要是觸控自研和代理的遊戲,觸控的手機遊戲也算走在行業前列。另外還有一些就來自於大的遊戲,比如那些月收入過千萬的遊戲。我經常聽他們吐槽、聊聊天的過程中其實就能瞭解很多資訊。最近發展到策劃也開始提需求了,他們也想要這樣那樣的功能,我記下來,如果大家都說要這樣,那就做,我也很樂意讓大家都能省事。而且月收入過千萬的遊戲需求是很有代表性的,他們想要的功能小團隊當前可能用不到,但是等小團隊發展一段時間之後,3個月、6個月之後就會遇到這些問題,所以這些需求是有前瞻性的。很多人現在仍然喜歡用C++做,但是我們提前一年就開始準備JS,於是在HTML5爆發的時候大家就知道原來我們已經提前一年就開始做JS版的了。畢竟觸控和Zynga都是站在行業前列的公司。

你對Cocos2d-x有長遠的規劃嗎?

做框架、做SDK,反正Cocos2d-x這個產品至少能活個5、6年應該沒什麼問題,只要我們跟著行業發展、不犯太大的錯誤,這個社群就能一直走下去。以後要是出了眼鏡(Google Glass)我就把遊戲搞到眼鏡上去玩嘛。只要這個東西有樂趣,能賺到錢就好。賺錢其實很簡單,只要你幫別人賺到錢,自己當然就不會餓死了。我們幫這麼多公司賺到錢,哪天萬一陳昊芝沒錢了,我去外面化緣一圈應該還是能活下去的(笑)。當然觸控肯定是最好的選擇,因為他首先有很好的遊戲業務,其次他願意砸錢來做開源,國內除了觸控和阿里巴巴之外,很少有人願意出這麼多錢來做開源專案。現在我們這個專案做到老外來給我們寫書,日語、韓語、英語的都有,國內我還沒有聽說其他開源專案能做到這個程度。

天使與魔鬼,創意與資本

所以我覺得他還是天使為主,要不我cocos2d-x幹嘛跟他混啊?

我們出版的書《App創富傳奇》的作者Chris Stevens認為現在是獨立開發者的黃金時代。他認為“大公司的優勢無非就是他們更有資源和金錢。但是,成功的應用可不是用資源和金錢做出來的……”,你同意這種觀點嗎?

我不贊同他的觀點,遊戲(熱潮)其實已經是第三次了:端遊、頁遊,現在是手遊,端遊比較早的比如是《吃豆人》,幾萬行程式碼搞定。而(遊戲)大了之後就要團隊作戰。端遊和頁遊都變得越來越複雜,魔獸世界可能是幾個人能搞出來的麼?硬體越來越發達,簡單的遊戲只能用到10%的計算量。比如剛開始iPhone1的速度多慢,但是玩瘋狂的小鳥還OK。但是現在你用的是1.6G的雙核CPU,別人就可以把它的計算能力發揮到極致,做得更好,完成更復雜的遊戲,而玩家就會青睞這樣的遊戲。

我們用的軟體也是越來越複雜的。專案規模越大就越需要依賴團隊的力量。所以任何行業都是從獨立開發者,到小團隊,再到大團隊,大公司,這是個必然的過程。小團隊會不斷地被淘汰或者合併。頁遊也同樣,一開始小團隊做了很多社交類小遊戲,你看現在還剩幾家?2010年,手遊公司倒閉了很多,現在能看到的都是大公司在搞了。

從2008年到2010年,在App Store上看到的比較好的遊戲都是小團隊開發的,但是再往後就沒有什麼小團隊了。《找你妹》算是小團隊開發的,他們運氣很好,但是他們背後有熱酷。我和吳剛聊天的時候他也說,現在的手遊圈子,英雄都是有出處的了。如果你看到個人開發者冒出來的話,他身後很有可能站著一個巨人。

其實有時候大家這種(獨立開發者至上的)印象是被蘋果忽悠了。蘋果刻意宣傳包裝的都是小公司,它從來都不會說GameLoft, EA在我這上賺了多少。比如他們現在包裝的是一款夫妻檔遊戲《Temple Run》,這樣蘋果才能保持App Store裡的多樣性。老外這種公民思想是很不錯,但是這跟事實還是有差距的。有一陣子,流行長尾理論,長尾歸長尾,國內現在月收入過千萬的遊戲,比如保衛蘿蔔,看著很簡單,它後面站的是美圖秀秀,而美圖秀秀後面站的是蔡文勝;捕魚達人看著很簡單,後面站著觸控和紅杉資本。所以每個行業的初期都是有機會的,隨著行業發展和不斷的合併,有人成長起來了,有人就被淘汰或者吞掉了。這個東西在開源上也講得通,為什麼有的開源專案做起來了,而有的沒有。你都沒有嘗試去找更多的人來和你一起做,怎麼能做起來呢?

當然,下一撥還有機會,比如Google Glass,它也需要App,上面也需要遊戲,於是又可以從頭來過了。創作者直面使用者雖然是蘋果一直倡導的形式,這個東西不賺錢還好,但是如果這個東西可以賺錢的話,資本就一定會跟進,其實到頭來還是資本最大。資本一旦注入,什麼煤老闆、賣衛生紙的、賣拖鞋的都會來投資遊戲。最近聽說中海油也要做遊戲,加油送點卡,還是充點卡送加油卡,不知道他們會怎麼弄,但是加油站好像不能用手機(笑)。

有人說陳昊芝和觸控是天使與惡魔的混合體,你覺得呢?

你們(圖靈)近期出版的書《Cocos2d-x高階開發教程》獲得了《捕魚達人》的授權,傳授大家如何做一個捕魚的原型出來。換成我的話可捨不得,可是陳昊芝竟然同意了,因為他是個(思想)很open的人。

在CocoaChina開發者大會上,我看他在臺上講的時候,心想:小樣,吹吧。結果後來一看,他講的資料就是後臺的真實資料。我(演講中)的程式碼肯定不會造假,而他的資料也是真實資料。他真的是在告訴大家怎麼樣賺錢,哪個地方賺多少他都老老實實告訴大家。他這點是我很佩服的,很多人都是不願意教的,我怎麼賺錢幹嘛教給你啊?我認識的一些遊戲公司,有一些就很後悔當時沒有聽我勸,要是當時來抱大腿,現在就不用做外包了嘛(笑)。所以我覺得他還是天使為主,要不我cocos2d-x幹嘛跟他混啊?

陳昊芝的樂趣來源就是做商業,做大公司,賺很多錢,他不差錢,但是他就是單純的喜歡賺錢。但是換成我,像他賺這麼多錢樂趣好像也不是很大(笑)。我的樂趣就是做技術,寫程式碼。我在招人的時候也會看重這一點,比如有的人喜歡寫部落格、寫書。Cocos2d社群有人產品做得一塌糊塗被老闆趕出去,但是他仍然喜歡孜孜不倦地寫教程寫demo,這就是他的樂趣;而我就喜歡找這種人過來和我們一起,給開發者寫教程、寫文件。尋找內心樂趣的來源是很重要的。

設計一個模組、設計一個功能這裡面的樂趣就像小孩子搭積木一樣,這可能是最原始的創造性樂趣了吧。所以我覺得把自己的樂趣找到它的商業價值,然後再去做,就好了。這樣首先你可以做自己喜歡的事情,如果運氣好了還不缺錢了。

這麼說你們都是興趣驅動的了,那你和陳昊芝的最大的不同是什麼呢?

我和陳昊芝不一樣的地方就是他很勤奮,有錢有機會就會去賺;而我這個人太懶了,能賺錢但很累的事情就不做了。比如無數出版社找我寫書,我就覺得寫書太累了,不寫。國際化路線其實也是這樣出來的。搞中文社群,太累了,不搞。因為搞社群很麻煩,不僅要把文件翻譯過來,還會有很多入門使用者提問題。所以這些事都讓別人去做吧,問題也可以去別的論壇問。按道理來說這些事是我是會犧牲流量的,但是犧牲就犧牲吧。流量過去別人家網站之後,他們想放廣告賺錢,誰願意賺誰賺吧。能讓別人賺到錢,也挺好的。比如國際化大公司說我贊助你們一下,你們把這個移到我平臺上面,我就說你自己出工程師,我告訴你怎麼移。這樣我就省事了。我都會選擇比較偷懶的方式。其實Cocos2d-x的每一根毛孔都散發著偷懶的哲學,跨平臺,幫大家一起偷懶;能精簡掉的API一個不留;Plugin-x,引擎整合各種第三方SDK很累,於是我就把它們都整合到一起給大家用,就有人說我要搶入口,其實我要是想搶入口就不是這個路子了。我要是想搶入口就要求所有人的資料都經過我伺服器,然後我再分發。但是我就是想省事,搞那麼累幹嘛呢?


更多精彩,加入圖靈訪談微信!

相關文章