cocos2d-x與三國群毆傳

>>>  小城故事吳儂軟語溫婉人心的力量  >>> 簡體     傳統

cocos2d-x與三國群毆傳

主持人:

下面有請IM2.0高級技術經理王植萌,他演講的題目是“Cocos2d-X與三國群毆傳”。

王植萌:

尊敬的各位來賓、各位朋友大家好!我是王植萌,來自IM2.0互聯集團,我今天跟大家分享的題目是“Cocos2d-X與三國群毆傳”。今天我主要跟大家分享兩部分內容:第一、三國群毆傳簡介;第二,三國群毆傳項目分享。

ios三國群毆傳的成績:ios三國群毆傳上市快一年了,排名中國區收費游戲總榜36位,現排名中國區收費游戲策略游戲榜第4位,最高排名中國收費游戲總榜第1位。Android三國群毆傳上市五個月,Android市場的排名不斷地攀升,現在排名Android市場動作類射擊類游戲第8位,排名機鋒市場動作類游戲第10位。

三國群毆傳的啟示正確的們在正確的位置上才能事半功倍——欠扁

我們在Android版正式開發之前,也利用將近兩周的時間對Android上可以運行的游戲框架進行了調研,從調研結構來看就選擇了Cocos2d-X,我們在調研中覺得常用的接口比較穩定,可以滿足要求。我們在調研過程中,也做了HTML5版相類似的試驗,只不過是在Android上進行的。MIT許可協議無協議風險,可以根據需要休假框架。接口與Cocos2d和ios應用程序生命周期有對應關系,便于移植。王哲和張小明,我一開始加入了Cocos2d-X的QQ群,他們給我非常多的支持,每當我遇到問題的時候,王大會讓我復線一下,只要能復線他就會幫我解決,盡管他非常的忙。QQ群的討論氛圍非常好,不能所有問題都靠王大、小明他們來解決,我們在QQ群里面很多人的段位也非常高,我們經過互相討論也能夠解決一些技術難題。

正是因為Cocos2d-X出現在三國群毆傳引擎的位置上,所以我們移植工作就顯得效率提高了很多。差不多四個月完成了三國群毆傳從ios版到Android版的移植工作,但是代碼移植工作只用了30%的時間,另外有20%的時間用于代碼重構,還有20%的時間開發了一個動畫精靈模塊,把原先動畫表現形式做了優化。還有就是對游戲本身的優化,這個我在后面會詳細的說明。還有10%的進行了附加功能點的開發,比如說分享功能、精彩活動。

開發要點:游戲數據管理、內存管理、地圖、動畫、游戲模塊、多媒體、分享、性能優化。時間有限,我重點講一下內存管理、動畫、性能優化這幾部分。成就管理和ios版幾乎沒有什么區別,而且比ios版簡單一些,因為沒有游戲中心這個東西,游戲狀態管理也和ios版沒有區別,都是通過MD5加密,防止用戶篡改游戲加密等等。關卡這部分幾乎也是一樣的。在內存管理這部分,首先是由兩個大部分,一是如何防止發生內存泄漏;二是解決內存泄漏的方法。我們在開發的時候,由于這個框架本身把OC里面所有的特性都涵蓋了,所以我覺得要按照OC的開發規范去做,這樣能夠防止內存泄漏發生,如果發生了內存泄漏的話,我們做的方法是把開發放到visualstudio封裝win32調試接口,明確提示并定位內存泄漏位置。框架內檢查代碼邏輯缺陷,可以根據指針地址,一直跟到發生泄漏為止。

地圖,由于Android手機性能差別比較大,有些手機沒有圖形加速,也沒有GPU,所以為了考慮這些手機也能夠流暢的運行三國群毆傳,我們把地圖主要分了三大類,低端機使用單張地圖背景色深16位;中端機大于320×480,比較早期的高分辨機型歸為第二類,這幾款機型的內存有問題,一旦元素比較多是容易發生崩潰的。層次感地圖,色深16位;大于320、480分辨率(高端機),層次感地圖,色深32位。

動畫和粒子效果:動畫編輯的改進,ios版改進之后的游戲打造是73.2mb,我們當時分析這個游戲包作為Android游戲來講有點兒太大了,所以我們當時的初衷想縮小游戲資源,使圖片資源能夠更多的復用。我們的改進首先利用一個工具,首先是理念上的改變,iPhone版的三國群毆傳沒有module這個模塊,就是由很多的frame組成了action。在Android版先組成了很多frame再組成action,這樣的話程序員不用參與動畫制作了,因為我在接觸iPhone版源碼的時候發現一個素材后面跟著一大堆的數字,這些數字分別代表它是什么,這些東西是什么級別的,它朝哪個方向做的是哪個動作的第幾幀,每一個圖還得根據不同的位置做不同的偏移量,這就等于是美術工作者和程序員共同完成了一個動畫的制作。經過了我們的代碼封裝,使動畫完全由美術工作者自己完成,而不需要程序員的參與。這樣還有一個優點,我們實現了資源文件的壓縮,壓縮率大概達到了46%。

動畫設計:我們動畫最開始的時候,存到手機上的圖片是PPT上左邊上面的樣子,是不同的Module,組成了不同的Frame,再組合在一起形成了action。大家可以看一下,拿這個弓箭手為例,他是屬于320和480分辨率的資源圖,就是把所有的frame都貼到了一個圖上,大小是319倍。改進后的Android版的實現,就是把所有的frame拆分開變成了不同的module分成三張圖,加起來只有172K,節約資源是46%。所以,我要提一點,Android三國群毆傳是移植,但是并不是簡單的復制,它也有自己的創新在里面。

游戲模塊和iPhone版幾乎沒有什么區別,如果細心的玩家會體會到大地圖的拖拽和iPhone版的感覺不太一樣,iPhone版使用的是開源的控件,而Android版沒有開源控件,所以Android版是我們自己實現的。

多媒體和分享采用agg格式16bit雙聲道壓縮音頻比iPhone的caf格式音頻縮小80%。為了克服一下我們這個是單機游戲,存在傳播渠道比較單一的問題,所以我們加入了新浪微博、人人、騰訊微博的分享,使用的是騰訊微博和人人、微博的JavasSDK。

性能的優化,經過優化之后的三國群毆傳可以廣泛的運用在各種320×480分辨率以上的機型上,我們在G3上可以大家每秒15幀,在G6上可以達到25幀,在G7上就可以達到30幀以上了,優化的重點第一是針對CCSprite BatchNode的組件,相關素材的刷新都放到一起。CCSprite BatchNode這個組建性能并不高,后來都去掉了,性能有了很大的提升。還有游戲的前后臺切換的問題,切換前后臺重新執行onSurfaceCreate()方法優化后還是偏慢,只能盡可能提高效率,框架能否考慮在后臺保留這個,雖然這不是Google提倡做的。

開發中的經驗。對開發人員的要求較高,這個人得懂點兒C、C++、Android、ios,所有OC的特性都要繼承了過來,也需要ios的開發知識。我是從Android開發轉過來的開發人員,一開始還是使用eclipse+ndk+cdt的開發模式,發現內存泄漏都很馬上,后來轉到Win32上面開發以后效率才有了明顯的提高。還有就是對于低端手機的支持,這個做的還不是很好,最多像G3、三國群毆傳這樣的,最多維持在15幀左右的樣子,但是從游戲玩兒家反饋的數據來看,低端玩兒家并不是占很大的比例,所以可以適當的考慮對低端玩兒家的照顧,但不用過分。盡量不要使用比較敏感的計費權限,尤其是互聯網、短信的權限,像我在看一些Android市場的回復的時候,很多玩兒家留言說,為什么要短信權限,作為單機游戲要短信權限干什么,是不是你們的游戲要從后臺給我發短信,是不是要扣錢。其實不是,我們只是為了滿足新浪微博的一鍵注冊功能,但是這樣造成了很多誤會。

游戲包盡量不要過大,如果過大的話,個別機型的安裝會有問題,比如說有一次人人網的一個負責游戲市場的人就跟我說,他自己的手機安裝不上,后來我專門找到跟他吃了一頓飯,才幫他用我的方法安裝上,確實是有問題的。

前面說的內容都只是技術上的提高,其實游戲的成功點可能技術上只占了不大的一部分。這個游戲其實主要還是屬于設計上的成功,三國群毆傳體現出IM2.0公司的靈魂,創新、開放、多元、極致,體現出這么一種追求。像鐘濤和澤一在技術上的把關,還有大勇和小小,在我看來就屬于游戲藝術家級別一樣的人物,還有不得不提的姍姍,恰到好處的游戲難度,三國群毆傳的難度很多玩兒家經過努力可以三星過關的,但是它又不是特別的容易,所以在難度設計上三國群毆傳做的很好,可以勾著玩兒家不停地想玩兒。三國群毆傳Android上線五個月以來沒有經過任何的宣傳,但是它的激活量已經超過了180萬,我們對這個成績是表示滿意的。

一些建議:Cocos2d-X平臺的一些希望,作為Android平臺來說比其他平臺更開放,Cocos2d-X在僅僅的追隨Cocos2d的同時,能不能在Android上設計一些更有色,集成性更高的接口。能夠更好的解放一些游戲的設計人員,像大勇、小小,他們都屬于游戲藝術家這個級別的了,如果能夠讓他們的開發更方便一些,更少的去考慮代碼開發上面的問題,更多的去把精力放在游戲創意上,我覺得這樣的話可能會設計出更多更好的游戲。注意對Android重大升級版本的快速兼容,在兼容問題上,Cocos2d-X要反應的更快一些,這樣游戲的反應就更快了,就跟上了。對主流機型和主流衍生平臺的兼容,這個有點兒困難,比如說我們在測試的時候對三星i9000、9108都進行了測試,但是沒有對9100進行測試,但是沒想到i9100音質這個模塊就出了問題,造成了很多的崩潰,玩兒家就說9100不能玩兒,就給他半顆星走人了。希望進一步提高平臺的穩定性和運行效率。

希望和祝福:無論是三國群毆傳還是Cocos2d-X,都是手機游戲風行的時代給大家帶來的機遇,所以還希望無論是平臺還是游戲都能夠把握這種瞬息萬變的時代基于,再接再勵創造更多的輝煌。Cocos2d-X這一年來的發展既在我的意料之外,也是情理之中的。因為就像剛才那位演講者說的,他確實是做的太好了,我由衷的祝愿Cocos2d-X越來越好。

我其實也是一個普通Cocos2d-X的開發者,其實是非常巧合的機遇才有機會來接觸游戲這個領域,而且一開始接觸就接觸到三國群毆傳這么好的游戲,接觸到Cocos2d-X這么優秀的平臺,這對我來說也是很幸運的事情。另外,我今天帶來了兩個游戲主人公欠扁的玩偶,我準備了兩個小問題,沒有什么技術含量,希望大家能夠回答這個問題,得到我們非常可愛的玩偶。

1、2012年iPower出品三國系列游戲叫什么名字?

提問:

怎么把動畫的幀拆解成一個一個組件?

王植萌:

我們選擇了一個動畫編輯器具備這樣的功能,把一張圖片加載進來之后可以圈出不同的module,在另一個模板上生成frame,再組成action,生成資源文件,原始加上資源文件一塊兒做成一個動畫模塊。

提問:

在Android移植的時候用到CCsprit,你能說一下原因嗎?為什么用CCsprit效率反而提高了?

王植萌:

就是在美國薇薇把一個數據重新寫到一個文件里,在重新寫到另一個文件之前把它重新進行加密。

提問:

把每個數據寫成MD5是什么效用,我們知道它是不能反向的,它起什么作用呢?

王植萌:

我們做這個可以進行解密的,沒有問題,我們可以把它讀出來。我說的可能不是特別明白,我們這個地方做了加密,不僅僅是MD5的加密,加密之后是有辦法把它解密出來的。

 


姚康 2013-08-31 21:57:02

[新一篇] 一個人的電影:一個資深影迷的0預算小電影

[舊一篇] 《星際爭霸2:蟲群之心》全過場CG 中文語音完整版
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表