李劍英:推薦使用c#進行跨平臺移動游戲開發(fā)
原創(chuàng)推出近兩年,Windows Phone終于“從默默無聞到有人喜歡”。四月里,Windows Phone應用再上新臺階,突破了八萬款,同時,“春Phone”系列活動陸續(xù)展開,諾基亞Lumia800c也強勢上市,一切的一切都在這個春天里顯示出欣欣向榮的景象。
消費者已經(jīng)開始陸續(xù)將目光投向“另類”的Windows Phone手機,開發(fā)者也蠢蠢欲動。那么,一年多來,Windows Phone的開發(fā)環(huán)境有了哪些方面的提升?在Windows Phone應用開發(fā)中蘊含著哪些機遇?特別是廣大人民群眾喜聞樂見的手機游戲應用方面,其開發(fā)有何技巧和工具?
最近,51CTO獨家采訪了瘋光無線輸入法和奪寶奇兵(跨平臺游戲)作者、Windows Phone開發(fā)專家李劍英老師,請他分享了一些在Windows Phone開發(fā)方面的一些心得。
以下是采訪實錄:
51CTO: 從Windows Phone7到Windows Phone7.5,系統(tǒng)性能有了部分提升,那么相應的在此階段中,Windows Phone應用開發(fā)在工具、技術和第三方平臺等方面是否有值得稱贊的進步?
李劍英:windows phone 7.5 的產(chǎn)品代號是mango,加入了很多振奮人心的新特性,這有一份長長的列表。從工具這邊來講,我個人認為最主要的是加入了對異步編程框架的支持,具體要安裝一下Async CTP v3,然后就可以使用await async 的異步開發(fā)模型,這是windows 8帶來的新特性,我們在mango中已經(jīng)可以提前使用它。Await async 編程模型讓異步代碼看起來像順序執(zhí)行的函數(shù)那樣,具體的大家可以自己嘗試一下。從技術的角度講,我感受到最主要的變化是ie9內核的引入,html5來了。我沒有理解這個第三方平臺的意思,如果是指軟件商店,現(xiàn)在windows phone 的政策是不存在第三方平臺的。如果是指用戶聚合的平臺,那現(xiàn)在騰訊、新浪、人人,都可以看到他們也在積極的在windows phone 上面拓展。值得一提的是OpenXLive,windows phone 7 在國內會取消xbox live,OpenXLive就可以提供windows phone 7游戲內的社交功能。
51CTO:之前看過一個演示視頻,國外用戶在使用Windows Phone的社交功能時,通訊錄與facebook、Twitter等的無縫銜接體驗讓人贊嘆,但囿于國內外環(huán)境的不同,這些優(yōu)勢在國內無法發(fā)揮應有的效果,您認為這方面中文版WP應該如何改進?只是將facebook換成人人網(wǎng),Twitter換成新浪微博就可以解決嗎?
李劍英:對社交網(wǎng)絡這部分,我覺得放棄facebook就等于放棄了世界,國內的社交平臺無法替代他。基于中國的特殊情況,主要是網(wǎng)絡的問題,windows phone給大家提供一個內置免費VPN就好了。如果真把這人人、新浪整合進系統(tǒng)了,實名制和審核,也會讓社交移動變成移不動,當然這只是個人意見。
51CTO: 看到您博客上最近有幾篇關于手機游戲和社交網(wǎng)絡的文章,能否簡單總結下,您認為社交網(wǎng)絡的發(fā)展給手機游戲開發(fā)者帶來了哪些發(fā)展契機?
李劍英:這方面我知之甚淺,只能以自己的一點點經(jīng)驗來談,首先是推廣,通過和社交網(wǎng)絡的整合,就可以利用社交網(wǎng)絡來進行推廣,最主要的是好友邀請的方式,這個方式基本沒有成本,效果比傳統(tǒng)廣告要好。然后是多人游戲的圈子,利用社交網(wǎng)絡組織的游戲,多人游戲情況下,更多情況都是認識的朋友一起玩,到底是游戲促進了社交,還是社交促進了游戲,這個不重要,關鍵是會比不認識的人一起玩多玩一些時間。最后是炫耀,社交游戲取得的成就炫耀的效果更好,因為可以更準確的讓認識我們的人知道,這可以持續(xù)提供給玩家東西進行游戲。我們利用OpenXLive就可以比較容易的完成社交游戲的這些特點,現(xiàn)在在windows phone上接入新浪和騰訊也是很簡單的。
51CTO: 移動游戲受限于設備性能和屏幕大小及分辨率,要讓一款手機游戲在保證使用效果的情況下盡可能少的占用系統(tǒng)資源,這方面是否有什么訣竅?
李劍英:目前基本沒有什么辦法,因為游戲動態(tài)東西多就要采用幀刷新的方式來做,每秒30次幀邏輯,30次幀繪制,甚至更多,我們純粹是在虐待電池。如果非要說訣竅的話,windows phone的游戲分辨率不一定要是全屏,可以用更低的分辨率,系統(tǒng)會等比縮放到全屏,如果長寬比不是10:6,就會留黑邊,這樣可以節(jié)省一點系統(tǒng)資源。要徹底的解決這個問題,只有依靠電池技術的進步和cpu功率進一步降低了。
51CTO: 您認為跨平臺(Android、iOS、WP)游戲用什么技術開發(fā)比較好?您如何評價HTML5技術目前在游戲方面的表現(xiàn)?
李劍英:先說HTML5,目前還是看上去很美的狀態(tài),主要是HTML5里有一塊WebApp的標準還沒有得到廣泛支持,目前在瀏覽器里用HTML5還是頁面的模式,每個瀏覽器各自有一些處理,讓HTML5追求的全兼容依然是個理想。現(xiàn)在有PhoneGap在嘗試解決這個問題,也算有一定的實用性了,但離成熟還有很長一段路要走。用HTML5做游戲,又面臨WebGL標準沒有在手機端廣泛支持,軟3D在手機性能下不能實用的問題,3D游戲判死刑,2D游戲如果用canvas來刷,同比會比用c#和XNA組合更耗電,這主要js解釋器的額外消耗。還有輸入方面的問題,ios支持的最好,觸摸事件什么的都有,windows phone 目前除了沒有觸摸事件,在點擊的時候還總是把頁面區(qū)域變灰,有點討厭,很顯然,還是有很多障礙的,現(xiàn)在用HTML5開發(fā)Windows phone 游戲,是一種挑戰(zhàn)。
跨平臺游戲開發(fā),我推薦使用c#,在windows phone 上是原生的,在ios 有 monotouch,在android 有 monoforAndroid,在windows phone 上圖形是XNA,在Monotouch 有OTK里面的GLES封裝。各個手機的本地存儲、多媒體、觸摸、重力傳感器接口都比較類似,主要是圖形方面的封裝差異稍微有點大。對于搞圖形的朋友來說,封裝兩個渲染器也不是太大的一件事,咱們以前很多游戲都是要開發(fā) DX OGL 兩套渲染器的,甚至更多,模式是一樣的,我們采用統(tǒng)一的C#語言來開發(fā),至少不涉及語言改寫的問題。這方面也有一個重量級的DeltaEngine,大家可以了解一下。
Cocos2DX也說是跨平臺引擎,他的跨平臺方法是改寫,但是cocos2DX使用者更多,怎么取舍大家根據(jù)自己的實際情況判斷吧。
51CTO:請推薦幾款使用XNA開發(fā)WP游戲的好用的工具或控件(包括第三方的),并簡單介紹下其特點。
李劍英:這個必須是第三方的^_^,因為官方什么都沒有。鎖定在XNA這個特定的范圍中的話,其實就只剩圖形引擎了,那么推薦大家看一下
DeltaEngine ,這是一個全能的游戲引擎,目標是用c#做的跨平臺引擎
Xen,這是一個XNA的活躍圖形引擎,完成度很高,可以直接實用。