天天看點

淘米手套遊戲CTO潘輝《如何提高手遊開發的效率》

淘米手套遊戲CTO潘輝《如何提高手遊開發的效率》

    大家好,我叫潘輝,混迹遊戲行業十多年了,從單機遊戲一直到手遊。我挺慶幸在這個行業的,對于我自己就不做過多介紹了。我想大家可能還不大了解我們公司手套遊戲,我做一下簡單介紹。

    我先介紹一下手套遊戲的曆史,2001年的9月份淘米的移動遊戲事業部正式成立,同時2月份推出了第一款遊戲,2013年緊接着就收到各界的好評,2014年的淘米拆分整合移動遊戲事業部,正式成立了手套遊戲這家公司。

淘米手套遊戲CTO潘輝《如何提高手遊開發的效率》

    那個時候我們的兩款遊戲《摩爾莊園》和《摩爾卡丁車》都取得一些不錯的成績。當然這些隻是曆史了,都成為了過去。雖然我們沒有做到千萬級别,按照現在主流的遊戲公司的衡量來講,我們做的不算大,但是這些産品給了我們很多鼓舞。同時也讓我們比較堅定做這個路線,對我們開發來說做了一些技術的積累。

淘米手套遊戲CTO潘輝《如何提高手遊開發的效率》

    手套遊戲的誕生其實是面對主流的遊戲市場為智能手機使用者提供高品質的娛樂産品,創造完美的遊戲體驗,我想這應該不隻是手套遊戲的使命,它是所有遊戲開發的共同的使命。畢竟使用者體驗和産品體驗都圍繞着這些詞。這是手套的曆史。我們現在做什麼事情呢?這是2013年到2014年市場的預估,現在14年過半了,看來也差不太多。我們是做主流遊戲開發的,我們公司内部更加細分了一下,主要是針對衆多的RTG遊戲開發的,同時針對我們的預測布局各條線。

淘米手套遊戲CTO潘輝《如何提高手遊開發的效率》

    這是我們現在已經推出和馬上要推出市場的幾款産品,第一款産品《疾風勇者傳》現在在安卓,iOS都可以下載下傳到。按照我們的使命來講,就是制造一款标杆級的遊戲,我們團隊正在努力。第二個遊戲是《暴風》,第三款遊戲是我們的淘米集團擁有的一款産品《忍者神龜》。第三個遊戲是卡牌3.0的。這些遊戲都可以馬上和大家見面。這隻是我們一部分産品,大家知道在開發者在這麼搶手的年代,為什麼有這麼多人在開發呢?我們有公司的獎金制度,我們有内部晉升,更主要的是我們公司也在吸納人才。這個獎金數在業内也是比較高的。

淘米手套遊戲CTO潘輝《如何提高手遊開發的效率》

    我們之前開發了那麼多款産品其實并不是順風順水的,比如說摩爾莊園,我們當時主要是針對iOS市場。等到iOS市場有了不錯的成績時,公司又要求我們是不是可以去的看一下安卓市場的情況,我們又針對安卓市場進行布局。這個時候我們程式就比較火了,我們又重新做解碼。我們不斷的重複代碼,還要花時間維護兩套代碼。這個模式我們以後不在用同一個模式開發了,同時《摩爾卡丁車》立項比《摩爾莊園》更早,這個遊戲大概做了一年半的時間,雖然也取得了一些成績,而且從技術角度講達到了很好的效果,上升到了一個很不錯的水準,但是用了長達兩年到三年的時間。

    也發表一些對Unity3D的看法。它有很多優點,它可以快速的建立圖形,充分展現美術效果,工具鍊完整,可一鍵部署各個平台。但是我不會用它做的,為什麼呢?第一是相容性,第二是資源包很難做到50兆以下。大家也知道資源包大小對推廣來說是很一個很重要的影響因素。還有Unity3D需要大量的投入,如果一個團隊人手不是很充分的很情況下就不要去投。如果你不是很熟悉Unity3D的話,你可能在後面要不斷的優化做減法。在之後,我們當時的想法也十分簡單,因為Cocos 2d是輕量級,可以很容易做一些修改和改動。相容性和運作效果都比較符合我們的要求,我們對比下來來看,Cocos 2d比Unity3D的運作好一些,同時資源包也更加可控。第三個方面說到基礎工具,雖然Cocos 2d和Unity3D整個工具鍊來比還是不能比的,但是它也有一些相關的工具給我們做。因為它是開源的方式,可以寫一些自己的項目編輯器。第四點是比較看中的是Cocos 2d的不斷優化,我們要的就是這樣的優質服務。比如前面看到的新推出的3.2版本加了一系列功能,對于我們腳本調試來說有很大的幫助。

    這三年過程中我們對比下來,整體來說Cocos 2d還是比較符合我們的要求,從運作效率、項目品質以及整個資源包來說都能達到我們的要求。為什麼我一直講資源包?因為我們公司對資源包的要求是很高的,這個對程式來說是很頭疼的事情。我們不同的項目中用到了Cocos 2d不同的版本,我們發現Cocos 2d也在不停的優化不停的更新。

    先講一下我們用到2.0版本,2.0版本有非常多的坑,當時我們對2.0版本做了相當大的改動。比如說我們參加了一些載入速度的優化,加了内層管理,多線程載入等等。我們當時有一段時間蠻沾沾自喜的,我們對引擎的把握能力還不錯,但是随着Cocos引擎的不斷更新,我們發現做過的事情好像Cocos也都把它補上來的,同時它還增加了很多新功能,我們又沒有去做。這個時候就很糾結了,我們要花很大的時候做更新。我們後面做了一些反思,也跟很多開發商做了交流。我們很大程度是開發商在網站上給予回饋,并且會注明我們的解決方案,還是很積極的幫助大家解決一些問題和修正一些bug,讓引擎更加完善的。

    我接收到這次沙龍的要求以後,我想了很多主題,我回顧了一下我們以往遇到的種種問題,又花很多時間需要解決的問題。比如說内層管理和優化等等,想了很多。後來反過來一看這些又不是問題了,因為Cocos已經很好地解決了這些問題,比如說Cocos 2d 2.3版本也解決了重要問題,剩下的一些小問題按照目前這麼大的使用者使用量,我們可以很輕松的在百度和谷歌上面找到解決方案。

淘米手套遊戲CTO潘輝《如何提高手遊開發的效率》

    我在這裡想分享的是效率兩個字,提到效率,大家腦海裡出現運作效率和渲染效率這些,這個對程式員來說,簡直是揮之不去的詞語。我今天講的是産品開發的效率,為什麼講這個呢?今天來了這麼多人,可能有幾百個項目了。我們生活在這個年代,我們如何讓我們的産品能更早的推出,這樣收入或許就是另一番光景了。如何提高效率呢?遊戲是一個高壓行業,我們要盡可能多的放松自己,盡可能多參與一些娛樂活動,做到勞逸結合。這樣也對工作狀态是一種調整,我們可能會有更好的産出。我們公司會定期組織一些娛樂活動和遊玩,甚至我們在公司辦公室也擺放遊戲機,供大家在休息時間可以娛樂一下。

    當然了,我們光吃喝玩樂還是不夠的,那如何提高産品的開發效率呢?我們除了需要一套規範的管理制度緊密結合程式策劃、美術、測試之間的工作銜接,我們還需要更多的自動化半自動化的工具來輔助我們完成日常非常瑣碎的一些事情。這些工具來自哪裡呢?來自網際網路,可能來自大家工作中總結和收集到的。涉及的這樣東西要拜托各位程式大牛們,對美術來說,花一點點時間發一些東西對可能要節省大筆的開銷。

    我在面試過程中碰到一些程式員很自豪的講,我們UI不是我自己寫的,完全沒有借助編輯器。我碰到一些人在QQ群裡面問,我用Cocos Studio,會不會變傻掉呢?怎麼會有這樣的想法呢?它隻能讓我們有很多的啟發,更好地工作,這款比較便捷的工具是我們的标杆和參照。

    結合我們的項目講一下,我們對UI編輯器的選擇也是經過很長時間的磨合,最早的時候我們也是嘗試過手寫UI的情況,接下來我們用GT+TXWUI的工具,最後用下來還是很繁瑣。最後我們為什麼放棄這些工具呢?第一點,我們公司希望所有的美術參與到工作中來。第二點,突然之間沒有維護了,當時就敲響了警鐘,我們就果斷的轉到了Cocos Studio,當時内部也是做了小小的組合。第三點,Cocos Studio用下來效率是比較高的。後面我們也用了LUA,但是也有一些負面的問題,我也希望能幫助我們解決這些問題。

淘米手套遊戲CTO潘輝《如何提高手遊開發的效率》

    除了在編輯器的選擇之外,在日常工作中有一個非常繁瑣的事情一直伴随項目的開發,那就是資源整合,我們都知道美術同學使用的是所謂的小圖散圖。我們沒有使用Studio的導出,我們是通過腳本來轉化。第一步将所謂的小圖按照檔案夾政策,我們用轉化工具轉化完這些圖檔之後,打包成大圖檔,隻有我們的josn會進行分析,看使用了哪些檔案夾資源,然後就把它們加入進來。第二步把這些圖檔路徑進行修改,替換成相應的圖檔名。第三步是資源壓縮和優化,剛才講過,我們對資源包的要求是非常高的。資源壓縮和優化我們也是依賴壓縮來壓縮的。優化做了幾個小的方面,我分享一下,我們會對圖檔像素點進行分析,如果它的阿爾法值小于3,我們可能會擦掉它RPG的值,這樣可能對于我們壓縮有一點幫助,但是微乎其微了。最後一點是目錄整理。這些東西我們隻需要輕按兩下一個腳本就可以了。

淘米手套遊戲CTO潘輝《如何提高手遊開發的效率》

    這些事情好象很簡單是不是?分分種都能做到,但是給美術帶來非常大便利,你可以輕按兩下一下出來的效果,這對策劃和測試調試UI節省了大把時間和開銷,不需要美術來優化。我們的工作是很繁忙的,我們要抽出一些時間來看一下哪些事情是可以優化掉的。我們經常用的工具就是這些,比如說文本轉化工具,我們如何讓策劃很友善的轉化成表格這些格式。剛才我們講的工具一定是為策劃服務的。目前有一個小朋友寫一個轉化工具,小朋友寫完以後策劃們不太用,我拿了工具一看,它需要策劃輸入5個參數,還需要輸入輸出的路徑。我當時問他,你是有多恨策劃呢。

淘米手套遊戲CTO潘輝《如何提高手遊開發的效率》

    我們的骨骼動畫也是策劃來做的,比如我們的BMFONT的資源的産生工具,這個自動化的建構工具大家都在用吧。這個是非常非常值得去用的工具。有了這個工具後,如果測試對于一個危機進行修改,很輕松的自己編一個版本出來就好了,完全就跳過程式這個步驟了。

    我們可能會用許許多多工具,我們如何找到這些工具,如何很友善的使用這些工具呢?這是我們公司内部一個平台,我們在日常工作中把一些項目相關的内容,比如說一些腳本格式,代碼規範,各種甚至你把點餐的電話放在上面,我們的工作是平台式的,這樣有各種好處了,第一不用翻各種檔案夾了。第二如果有新同僚入職的話,可以很友善的找到了這些,也可以很快的融入工作中來。

    我今天講的東西沒有太多的幹貨,但是我講的是一種思維,我們如何高效地工作呢?我覺得大家應該有一個懶人的态度,懶人是科技發展的第一推動力。我覺得今天這個機會也很好,大家可以坐在一起進行交流,可以談一些新的技能,可以認識一些新的朋友。這對于我們程式員來說,是相當好的一件事情。為什麼呢?因為我們其實相對是比較閉塞的,我們應該打開更多視窗,我們公司也會定期的進行一些技術交流會。我們甚至當時請了Cocos引擎的人來進行技術答疑,這個對于我們公司來說是相當不錯的。

    說到效率,有一個很重要,就是需要優秀的團員。在這裡做一個小小的廣告,如果你希望和一幫非常不錯的成員一起合作,如果你希望做精品遊戲的話,十分歡迎大家加入到我們。

【提問】:我們開發微信上面的遊戲,有什麼好的解決方案?

【潘輝】:首先是微信它跑在安卓浏覽器上面,因為它優化的并不是非常好,是以它在上面非常關鍵的一點就是讓你遊戲填充率控制的非常靈活,就是很多控制圖層要做圖層合并。第二個就是很多流程計算,微信上面顯示沒有壓力,你希望在微信上面做一個比較複雜的遊戲,這方面的注意事項比較多。您的疑問是性能上面的優化是吧?性能主要是填充率和JAVA腳本計算,這兩個都跟做其它遊戲不太一樣。因為腳本跑起來比較慢,第二個就是填充率。現在如果要做這種小型的遊戲沒有壓力,但是如果做更重的,不好意思搞不定。

【提問2】:用Cocos 2d有一個很大的問題,我們現在想就是要打一個包看一下,這個問題很困擾。

【潘輝】:這是兩個問題,第一個就是API所對的行為的一緻性。第二個就是我寫這個流程跑的代價有多大。第一個問題你用的是哪個版本?

【提問2】:3.0。

【潘輝】:我們在2.X的時候,中間的API做的還不是非常優秀,但是很多公司幫我們把這些問題修複了。能不能跟你說所有的API是百分之百的,這個沒辦法承諾。但是開發者遇到的問題不一樣,就是3.0的版本比原來好用太多了,我們會做多平台測試。因為我們現在把JS上面的項目歸納到3.0版本,因為所有的項目是要測試,品質比原來好太多了。第二,就是進行效果調試,你可以非常簡單的,不用打包。是以這個會從工具上講更高效。

【提問3】:Cocos 2d上一個版本它好像是有一些問題,因為那個版本之前是1.0.3,又變成了0.0。

【潘輝】:這是小夥子不守規矩,應該是1.0之後,就是一般小版本升的時候不能升大版本,因為它們不可能花兩三個月時間把發一個新版本把功能退回去的,這是不符合自然規律的。

【提問3】:還有一個小bug。

【潘輝】:最好是在英文站上面去看,你送出的所有問題我們都會解決,都在那個地方,那個是最高效的。如果你不願意寫中文怎麼辦,你可以發到CocoaChina所有有架構的闆塊,寫完以後直接把鍊結寫上去。

【提問4】:它的架構就是把代碼封裝起來上成JAVA,我們可不可以把Cocos 2d也做這樣一層塗裝呢?

【潘輝】:選擇一條被安卓打死的路線。這條路線的危險就是JAVA跑在iOS上面,是做蘋果所不喜歡的事情。

【提問4】:因為今天到120的時候,已經有好幾款遊戲在跑。

【潘輝】:這個方法可行,但是危險,剛開始試過一種方案它是成功的,但是不這樣做,你編譯過去以後,我個人不喜歡這個事情;第二個是蘋果也不喜歡這個事情,因為我做一樣東西是蘋果專屬。當時用C++做這個事情,在安卓上面寫的,因為這是比較安全的。後來這條路線有其它公司做的,但是它們做的非常辛苦,蘋果也不喜歡它們,谷歌也不喜歡它們,得不到兩邊的支援。

【提問4】:我能知道類似的資源,這樣的方案很多。

【潘輝】:我個人的情感上面我一定會選擇通用技術,别用某一家控制的這種東西。

【提問4】:通用技術的難度就是剛才說的C++,在大的工程上,我以前做過核心網絡通信,這種大的工程它用C++内程線路,如果我們上層是LUA或者是JS的終端的話,它隻是腳本語言。如果我們能用JAVA來做的話,這就是一個更廣大的群體。

【潘輝】:開發對于我的信仰來講,我一定會選擇C、C++然後在上面綁腳本,其實我不太喜歡JAVA和微軟使用的這兩種語言。

【提問4】:我不是争論語言的好壞。

【潘輝】:很明确的說我對JAVA不是太感興趣,這條路線可以做。實際上我們也研究過其它的東西,比如說Swift寫完可以到安卓上面跑,但是這個沒有意義,你今天釋出了這個東西蘋果不喜歡,它這條路堵死了。蘋果不喜歡,安卓也不喜歡。中國今天最賺錢的遊戲就《刀塔傳奇》。

【提問5】:Cocos Studio如果界面非常複雜的話,我導入這個界面的檔案的時候就比較慢,有什麼建議嗎?我們現在把所有的重要的檔案在在上面,但是這樣記憶體的壓力比較大?

【潘輝】:你UI可以分成或者分子產品,做一個很大的檔案夾。

【提問5】:我必須一開始把所有檔案都這麼做嗎?

【潘輝】:我覺得不需要,以《刀塔傳奇》為例,它隻有一個小場景,你不要在遊戲進去的時候加載UI視窗,這樣肯定量很多。有很多小屋子,裡面有各種更新裝備,進去的時候要背景異步同步,這個沒有必要。接下來一些副本,其它的放一點裝備。

【提問5】:現在Cocos Studio的可以異步的讀取這種内容嗎?

【提問5】:目前異步讀取沒有這種UI,你可以借一個方式來讀取。

【提問6】:你們推薦C++和Lua有沒有一個比例是多少?

【潘輝】:我覺得好的方式是這樣的,如果計算很重,那這個東西就直接線程C++,有什麼網絡傳輸,加解密這種線程直接用C++,像其它的部分用Lua去寫,UI這個仁者見仁的。把接口出來到Lua,直接的程式員功能的部分都是用Lua去寫的。今天中午我遇到數字鐵通的程式員過來,雄霸天下它也是用Cocos 2d和Lua寫的,他自己是技術負責人,但是到每個遊戲項目裡面是用Lua。

【潘輝】:如果說哪些業務的内容對于你會涉及到更新,那這部分盡量都是放在腳本層,因為我們有一些開發者,原來做的那個項目當時百分之多少在腳本,第一有沒有用,第二它高不高。

【提問7】:對于腳本語言的加密有沒有什麼好方法?因為現在Lua編譯了很容易脫節?

【潘輝】:這個在新的腳本裡面加了一個XTEE的加密方式,首先是Lua它可以編譯成自解碼,大家編成自解碼有一個問題,它原來的部分不會被改掉,接下來用XTEE的方法加密掉。

【提問6】:這種加密強度有多大?

【潘輝】:目前比較流行的,看你加密多大,看你是多強大的高手。

【提問6】:加密部分是用C++實作?

【潘輝】:對,那個部分是用C++。

【提問7】:我最近用Cocos Studio,有沒有别的辦法?

【潘輝】:我對于Cocos Studio不算非常熟,我知道它可以做自定義控件,但是我自己沒有去做。

【提問8】:我看到Cocos Studio感覺可以做App的感覺,不過是不是功耗會更大?

【潘輝】:說對了,用Cocos Studio做APP可不可以?不可以。除非你是插電運作。

【提問9】:我現在做iOS應用開發,我現在想開發遊戲,不知道從哪塊入手?

【潘輝】:這就涉及到一個怎麼樣走這條路了?可能有幾個部分的建議,首先你對哪種語言熟悉一點,現在我們也有比較完整的DEMO,這樣就更高效一點。

【潘輝】:哪個架構對于iOS開發者更容易上手?

【潘輝】:C和OC轉C++,因為你現在沒辦法直接用來開發,你隻有三個選擇,要不是C++,要不是LUA和JS。

【提問9】:就是說以後Swift有必要學一下的。

【潘輝】:問題是它是蘋果控制的語言,我們想把它編到安卓上面也沒辦法發,因為兩邊不讨好,我們跟蘋果和安卓都要合作。

【提問9】:如果在一個應用裡面插入一個遊戲子產品,這個怎麼插?

【潘輝】:海派科技它們就是這樣做的,具體就是講到代碼回答一下剛才QUICK的問題,現在QUICK已經到3.0上面已經可以跑了,它跑在手機上OK的。時間點下周五會發一個版本。QUICK就是有它做的好的地方,但是不要作QUICK2的版本。

【提問10】:我們現在做遊戲,有哪些方法可以降低它的耗電量?

【潘輝】:耗電量跟你的性能是相關的,對我來講比較簡單的方式就是這樣,你看一下哪些功能是占比特别高的,占比特别高的要分場景是測,占比高的看一下到底哪裡寫的有問題,把它幹掉。隻要有個很小的地方沒搞定,改一行代碼能直接影響到性能。耗電量還有網絡那塊兒,按道理網絡應該是事件出發的方式,應該是1毫秒,結果它寫1微秒,手機一下子發燙。全是這種小的地方。

繼續閱讀