[轉]基於Starling移動項目開發準備工作

來源:互聯網
上載者:User

標籤:

最近自己趁業餘時間做的flash小遊戲已經開發得差不多了,準備再完善下ui及數值後,投放到國外flash遊戲站。期間也萌生想法,想把遊戲拓展到手機平台。這兩天嘗試了下,除去要接入ane介面的工作,小遊戲本身不用做任何改動就可以遷移到android和ios手機平台。只是在手機上,遊戲的掉幀情況非常嚴重,遠達不到pc上的體驗效果。看來做flash移動遊戲,不用starling架構是不行的。打算這幾天學習下starling,對項目進行改造。

 

基於Starling移動項目開發準備工作

  轉自: Starling中文站 - Starling移動開發教程

  作者: 郭少瑞(NeoGuo)

  現在移動開發可謂熱火朝天,如果您是一位Flash開發人員,或許您所在的團隊,已經開始基於Flash內容的行動裝置 App開發了。由於Adobe已經提供了AIR打包技術,來幫我們把同一份程式打包到iOS,Android,BlackBerry等系統或裝置,這在很大程度上降低了跨平台的研發成本,也為傳統的Flash研發團隊進入移動開發領域提供了很好的機會。但是有機遇,也有麻煩。其中一個比較大的麻煩就是效能問題。現在的PC平台都有很強大的計算能力,我們基於Flash的應用開發,一般不太關心效能問題,但進入行動裝置,我們會發現自己面臨的硬體環境相當苛刻(當然現在的智能機硬體設定已經大大改善,讓我們開發上的限制已經寬鬆了許多)。比如我們基於傳統思路,用Flash電影剪輯等方式做了一個應用,在PC上預覽沒有問題,但在行動裝置上卻不能很好的執行(出現丟幀現象,這是顯示渲染的壓力太大所致)。為什麼會出現這種情況?因為Flash中傳統的顯示列表機制(Stage,Sprite,MovieClip),都是依賴CPU的,也就是說渲染壓力基本都在CPU上。在行動裝置上CPU處理能力低下的情況下,出現丟幀的現象也就不足為奇了。

  能改善這種情況的一種方式就是利用GPU加速,也就是利用顯卡在圖形方面的計算能力,減輕CPU在螢幕渲染上的壓力。但悲劇的是,Adobe在“為傳統的顯示列表機制提供GPU加速”這個工作上進展緩慢,之前曾推出了在設定檔中增加<renderMode>GPU</renderMode>的設定來開啟硬體加速,但不要激動,這個設定對於PC無效,對於行動裝置也是限制多多,而且並不穩定。筆者曾經在一個項目中分別設定CPU和GPU模式來測試程式(iPad 1),發現CPU模式反而運行效率更好且穩定。出現這樣的情況相當讓人沮喪,Adobe的技術團隊也專門寫過一篇Blog來解釋其中的難度之大:Flash在之前的架構設計上完全是基于于CPU的(通常我們稱之為軟解),也就是說傳統的2D顯示列表就是為CPU渲染設計的,這對於跨平台來說非常有效,但現在要遷移到GPU上就非常麻煩了。

  這對我們來說,就意味著如果我們之前有一個複雜的,基於Flash傳統顯示列表的應用或遊戲,想要原封不動的移植到智慧型裝置上,而且還要保證和PC相似的執行效率,還是挺困難的。當然Flash盛行了這麼多年,開發人員也積累了很多行之有效經驗,來提升運行效率(比如基於Bitmap的動畫實現,以空間換時間),這些經驗可以協助我們在一定程度上改善現有應用的執行效率。但可能還不夠,行動裝置的特性決定我們需要儘可能的將最佳化做到極致。要做到這一點,我們必須更有效利用GPU。當然Adobe也意識到GPU對於提升渲染效能的重要性,所以推出了Stage3D。Stage3D雖然也做了抽象(解決平台無關性),但無疑是和硬體更接近的,基於Stage3D我們可以開發和案頭遊戲相媲美的網路3D遊戲。當然因為Stage3D是偏底層的API,學習和掌握的成本也高一些。關於Stage3D本文不做過多介紹,如果您還不瞭解Stage3D,建議參考下面的文章:

  • Stage3D 翻譯系列之一: Stage3D是如何工作的(一)(概念篇)
  • Stage3D 翻譯系列之一: Stage3D是如何工作的(二)(深入篇)
  • Stage3D 翻譯系列之一: Stage3D是如何工作的(三)(完結篇)

  當然正如其名,Stage3D是面向3D應用的API。如果我們只是想做2D應用,是不是就不能使用Stage3D了呢?當然也是可以的,但編程和實現思路將和我們之前的Flash經驗大不相同,我們需要完全站在顯卡的角度去編寫實現過程,這無疑將是枯燥而且困難的,而且有很高的學習成本。所幸的是,一些具備探索和分享精神的技術達人,在Stage3D的基礎上做了進一步的封裝,以更接近傳統Flash 2D顯示對象的機制,來提供對傳統Flash開發人員更加友好的技術架構。這樣的架構已經存在一些,比較知名的有Starling,ND2D等等。其中Starling得到Adobe官方的推薦,其介面也和Flash原有顯示對象非常接近,所以筆者也選擇了Starling來進行項目實踐,並和大家分享這個過程中的經驗。

  Starling是由Gamua團隊推出和維護的一個基於Stage3D的2D架構。這是一個位於奧地利的團隊,有兩位核心開發成員:Daniel Sperl和Holger Weissb ck。他們擅長Objective C和ActionScript,也正是因為這樣,他們實際上有兩個開源架構:Starling Framework和Sparrow Framework,兩個架構的設計思想是一樣的,只是前者面向Flash,後者面向iOS。

下載,安裝和配置

  工欲善其事,必先利其器,讓我們先把“武器”準備好。這裡的武器是指我們的IDE,考慮到大多數Flash開發人員應該都是基於Flash Builder進行編程的(Flash Professional實在不適合編程,其它第三方IDE比如Flash Develop,當然也很優秀,但為了文章簡練起見,不再涉及其它IDE了,如果您使用其它IDE,請參考IDE的協助,整合最新的AIR SDK即可),我們就以Flash Builder為準,來介紹後面的操作步驟。

  請安裝最新的Flash Builder 4.6,這個版本已經支援移動項目建立,並且包含了最新的Flex SDK 4.6(PS:我們後面的討論裡不包括Flex架構或Flex項目,只是在Flash Builder中任何類型的項目都是依賴Flex SDK來編譯的),但是內建的Flex SDK 4.6包含的是AIR 3.1的SDK,而對於行動裝置的Stage3D支援則是在AIR 3.2中實現的。所以這個地方我們要做一下調整,替換Flex SDK中的AIR的部分。

  操作步驟:

  • 進入Flex SDK目錄(Win下面是{您的安裝路徑}\Adobe Flash Builder 4.6\sdks\),您的最新版本應該是4.6,將4.6複製一份,命名為4.6_AIR3.2
  • 從Adobe官方下載最新的AIR SDK,地址是:AIR SDK下載
  • 下載後解壓縮,覆蓋4.6_AIR3.2
  • 啟動Flash Builder,開啟視窗->喜好設定->Flash Builder->已安裝的SDK,建立一個SDK配置,目錄指向剛才建立的4.6_AIR3.2,並設定為預設SDK
  • 建立一個ActionScript手機項目,觀察主應用的XML設定檔的命名空間(比如主類是Main.as,那麼設定檔是Main-app.xml),如果命名空間是,則代表配置成功

  然後我們需要下載Starling。當然跟所有的ActionScript類庫一樣,我們可以使用它編譯後的SWC,也可以使用它的源碼。這裡筆者建議大家盡量使用源碼,因為作為一個新生架構,Bug是不可避免的,一旦有問題,我們可以追蹤源碼來發現和解決。如果用SWC就沒有這個便利了。

  目前Starling官網( ),提供的穩定下載版本是1.0,從這裡下載。然後還有一個正在開發的版本,在github託管,地址:經測試發現,目前Github上的版本也比較穩定,而且Demo裡帶了一個iOS的執行個體,如果您做移動開發,可以嘗試用github上的最新代碼版本。

  下載源碼後,可以通過Flash Builder建立一個庫項目,包含Starling的源碼,Flash Builder會自動將代碼編譯SWC。然後您可以建立一個ActionScript手機項目,在構建路徑->庫路徑這個介面上,引用剛才建立的庫項目即可。

  剛才也說到,源碼中是附帶了例子的,如果您下載的是github上的源碼,裡面還有一個專門的iOS的例子。如果您已經具備了Flash開發經驗,那麼看這個例子無疑是快速瞭解Starling使用方式的最佳途徑。

  請遵循下面的步驟啟動這個例子

  • samples目錄實際上包含兩個例子:demo和demo_ios,其中demo_ios需要依賴demo的資源,在後面的步驟中需要注意。
  • 在Flash Builder中建立一個ActionScript手機項目,類型可以設定為iOS,平台為iPhone,然後引入上面建立的Starling庫。
  • 在源碼設定部分,將demo/src和demo_ios/src兩個目錄全都設定進去,然後設定啟動的Application為demo_ios/src/Startup_iOS.as。
  • 如果沒有提示編譯錯誤,那就表示配置成功,可以用Flash Builder的類比介面進行測試,可以看到如下的介面:

  如果您想在真實裝置測試,就要分情況而言:如果是Android裝置,比較簡單,通過自建認證打包為APK,安裝到Android裝置即可;如果是iPhone或iPad ,就麻煩一些,您需要一個蘋果認可的簽署憑證才能完成打包,這個認證需要註冊蘋果開發人員帳號並付費才能擷取,具體過程參見James Li的教程,這裡不再細述。

  今天就到這裡,後面我會繼續和大家探討使用Starling過程中的一些問題和經驗。

[轉]基於Starling移動項目開發準備工作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.