[轉錄] 用AIR開發行動裝置應用程式

看板Flash作者 (viceversa)時間11年前 (2013/05/15 10:40), 編輯推噓11(11021)
留言32則, 9人參與, 最新討論串1/1
網路上看到的好文 [心得分享]用AIR開發行動裝置應用程式,我的第一支Android APP 本帖最後由 David_Lai 於 2012-2-17 12:52 編輯 http://7-12.idv.tw/forums/viewthread.php?tid=2442 遊戲介紹 & 開發歷程 https://market.android.com/details?id=air.idv.davidlai.together2.android 各位若有Android 手機,可至MARKET搜尋「湊作伙!」關鍵字。 這是一個可以在Andorid手機上執行的小遊戲,只要把相鄰兩個以上的方塊圖案按下就可 以消除,只要消除的越多,玩家在排行榜上的名次就越高。 YES,就這麼簡單。這是一個看似無腦,但若要有好成績還是需要動點腦筋的小遊戲。 開發平台的抉擇 iOS V.S. Android 眾人皆知現行Mobile兩大OS平台 iOS 與 Android (Mango就不在討論之內了,畢竟AIR目 前暫時也不能publish,市佔率也……)。小弟的Smart Phone是 HTC Incredible S 採用 Android系統。為何要選擇Android陣營呢? 並非我不喜歡iPhone(其實也很想要唉鳳啊~),也不是Android比較好,而是基於這些理由 : 1.對Develpoer來說,Google收取開發者憑證費用是25美金(終身),而Apple則是99 美金/年(貴桑桑~)。由於目的不是要朝向獨立遊戲製作者邁進,所以不選水果選小綠 人。 2.開發上傳測試,當申請好開發者帳號後,很快地就可以上傳*.apk檔案,再過沒多久(時 間不定,最遲不超過1HR)就可以在Google Market上看到你自行上傳的檔案,這樣你可 以在短時間(與水果商店相比)內從Market下載測試自己的檔案。但是水果商店不行,還是得 先經過官方審核……….(我得承認我沒有美國時間可以耐心等待) 3.價位問題,雖然我當初也曾想過是不是唉鳳比較水呢?但是價位讓我這小市民買不下手 ,幾經比較之後,最後選擇了還算是中階價位的HTC Incredible S作為開發機種。 4.其他………. 雖然因為上述的理由而選擇小綠人的懷抱,但小弟並非因此而貶低水果。每種選擇都各有 其優缺點,並非有絕對的優劣好壞,端看用什麼角度去看待如此。對Flash AIR for Mobile開發者來說,跨平台的開發能力當然是日後要邁進的目標,這也才是能夠真正發揮 Flash cross platform的特性。 遊戲類型的決定,不是每個遊戲到哪都好玩!? 當初本來想要嘗試製作的是類似在Wii平台上所發行的像雷射曲棍球那樣的遊戲(就是在遊 樂場需要2人才能進行遊戲,目的是將圓盤推到對方的陣營裡。),需要即時反應、兩個人 同時玩充滿著刺激互動性。 在Google Market上有搜尋到類似的遊戲,下載後馬上試玩了一下,很快地,馬上就發現 同樣的遊戲類型在不同的環境下玩有著很大的差異,不論是在遊樂場或是在電視前使用 Wii Remote玩,畫面上是絕對淨空的,但使用觸控的方式進行遊戲,尤其是在手機上,遊 戲進行中最大的阻礙反而是自己的手!! 自己的手指因為要不斷的移動遊戲中的物件,在要即時反應的情況下有時候反而會因為自 己的手指擋住了佔據部份螢幕擋住視線,然後就這樣好幾次被電腦解決掉了……………. 這讓我玩起來有點挫折,因為在玩實體與Wii的時候都不會有此情形發生(我才沒那麼遜啦 ), 難道是因為手機螢幕只有4吋真的還不夠大? 或許換成平板情況就不會如此才是? 但是小弟並非家財萬貫,手中沒有銀兩買那麼多台實機測試;因此我決定更改遊戲類型, 既然是在SMART PHONE上,那就應該以一直TOUCH的直覺式操作方式來進行遊戲才容易被大 眾接受吧! 螢幕大小影響視覺感受 上面這行看起來好像廢話,但對於我這個龜毛的人來說,在設計過程中這卻讓我有深刻體 驗。 當初設計藍本是以參考ZOO KEEPER(以下簡稱Z)為主,在設計圖像上我設計了幾個擬人化 的蔬果圖案,在laptop上看起來當然是清楚又可愛啦~ 可是一但在手機螢幕上,要各自被縮小放在11*9 =99格的方塊中,任憑你畫的再怎麼漂亮 可愛,看不清楚就是看不清楚,而且看起來還很雜亂。這可能放在平板上或許可以改善這 樣的情形,但當時只有手機的情況下自然是希望有一款手機平板皆合宜的APP。 後來我分析了我的遊戲與Z的不同之處,在Mobile版本的Z,方塊(以動物為主角),遊玩方 式與我的不同,它並不需要非常多的格數來容納可以消除的方塊(只要適當即可),所以自 然可以將圖案放得更大一些,讓它可以更好清楚辨認,但我最初設計的遊戲方式卻是要方 塊要越多才越有挑戰性,而畫面整體效果看起來也無法讓我滿意,幾經權衡之下,只好把 當初設計的圖案捨棄,改用簡單的幾何圖形才能達到辨識度高的要求。 雖然不是每款遊戲都會有這樣的問題,但在某些地方細節上的處理我卻認為這是不能忽略 的地方。儘管Z後來的線上更新版本也換成了較複雜的圖案,但我認為更新版本反而不如 原先來得好,在辨識上更顯得不便,這樣會使得我對這樣的遊戲興趣缺缺。 點陣vs向量 雖然多用點陣少用向量的話已經快變成是老生常談了,但這邊還是分享一下給各位參考: 為求測試快速,我曾偷懶的直接使用Flash編輯工具畫出向量形狀充當方塊使用,在測試 階段時,物件開始生成的那一瞬間FPS確實會往下掉,看起來似乎還好嘛? 但一但向量物件一多(假設整個背景圖都是向量線條),即使沒有做任何運算,手機上的效 能已經很明顯的低落到不行(大概是從40FPS→個位數這樣的差距),簡直就像是要騎老爺 腳踏車上45度以上斜坡那樣的吃力困難。 這故事告訴我們:出來跑的遲早要還,該節省的資源還是要儘可能的省下來。 多螢幕尺寸的顯示比例 當遊戲的大多功能都製作完畢後,還有個因應Andorid系統最常見的問題,就是每家廠商 推出的螢幕尺寸都不一樣! 說實話在沒有實際的機器測試,根本無法得知正確的情形究竟 是如何,但是誰又有那麼多錢錢可以每台都買來測試呢? 這無異是天方夜譚~ 在茫茫網海上搜尋,有這兩篇文章的資訊可供參考: http://www.adobe.com/devnet/flash/articles/authoring_for_multiple_screen_sizes.html http://www.adobe.com/devnet/air/flex/articles/writing_multiscreen_air_apps.html 我沒有完全依照ChristianCantrell的做法(眼花撩亂啦><),但原則上有幾點是可以參考 的: 1. this.stage.scaleMode = StageScaleMode.NO_SCALE; 2. this.stage.align = StageAlign.TOP_LEFT; 3. 偵聽REZISE事件 小弟很幸運的向友人借得Samsung Galaxy Tab GT-P1000來作測試。詭異的是在 Incredible S上時只會出現1次的resize事件,但是在Samsung平板測試上卻出現了3次, 而且每次值都不一樣!! 為了搞定這個真的是吃盡了苦頭,最後用取得的場景寬度比例去 做適度的尺寸縮放與位置調整,才能讓手機與平板兩個裝置上看起來是差不多的視覺效果 ,但因為沒有更多的實體機器去驗證我的想法是否100%正確,也就只能暫時如此了。 小弟在這邊分享一些自己個人在開發過程中的心得,雖然不見得都會是程式設計相關,但 是有些經驗真的是要遇到了才知道呀~僅在此提供一些小小分享提供給需要的朋友,讓大 家在一起玩Flash的路上多點陪伴、多點參考,若有謬誤不適之處,也懇請前輩指點一二 。 而上架過程那又是另外一回事了……. 此次篇幅已佔據過多版面,就留待之後有機會再分享吧~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.26.66.44

05/16 02:48, , 1F
感謝分享,air缺點就是打包後體積增加9MB
05/16 02:48, 1F

05/16 22:30, , 2F
我記得手機也必須要安裝 AIR原件之類的 程式才能跑?
05/16 22:30, 2F

05/17 10:58, , 3F
手持專置講求的重點是效能>檔案大小
05/17 10:58, 3F

05/17 10:59, , 4F
像是以往我們發佈SWF會做成向量圖,但是手持裝置會做
05/17 10:59, 4F

05/17 11:00, , 5F
成點陣圖,因為效能好,但檔案就會變肥
05/17 11:00, 5F

05/17 11:01, , 6F
手機要安裝AIR Runtime才能跑air相關程式
05/17 11:01, 6F

05/17 14:40, , 7F
不需要,你發佈時選擇capitive runtime就不用裝AIR,
05/17 14:40, 7F

05/17 14:40, , 8F
但伴隨而來的缺點就是檔案肥大
05/17 14:40, 8F

05/17 18:20, , 9F
事情總有一體兩面,跨平台若是優勢,那缺點就是會肥一點
05/17 18:20, 9F

05/17 18:27, , 10F
真沒想到這是第一次在PTT上發言
05/17 18:27, 10F

05/17 18:28, , 11F
小弟是原文作者,希望有機會可以互相多多交流心得 :)
05/17 18:28, 11F

05/18 11:13, , 12F
記得以前不是可以輸出成APK檔?
05/18 11:13, 12F

05/18 15:45, , 13F
一直都可以,安卓平台就是輸出成apk,iOS平台就是輸出
05/18 15:45, 13F

05/18 15:45, , 14F
成ipa,所以與有沒安裝AIR runtime無關,iOS上根本不
05/18 15:45, 14F

05/18 15:45, , 15F
能裝AIR runtime,編譯出來的app照樣能跑
05/18 15:45, 15F

05/22 10:20, , 16F
Android可以選擇要不要把AIR runtime包進去 iOS則一定會包
05/22 10:20, 16F

05/22 10:20, , 17F
沒有包AIR runtime的會在執行時檢查並要求你安裝Adobe AIR
05/22 10:20, 17F

05/22 10:22, , 18F
另外雖然跨平台了 不過iOS的效能輸Android有點多
05/22 10:22, 18F

05/22 14:05, , 19F
mxml盡量少用,在行動平台上的效能不理想,建議還是用a
05/22 14:05, 19F

05/22 14:05, , 20F
s3 class開發,效能會好很多
05/22 14:05, 20F

05/22 15:42, , 21F
謝謝以上資訊! 受益良多!
05/22 15:42, 21F

05/24 11:47, , 22F
樓樓上說得沒錯,我曾使用flex開發app,但效能非常不理想
05/24 11:47, 22F

05/24 11:48, , 23F
我馬上重寫改用starling framework來做,效能提升非常多
05/24 11:48, 23F

05/24 13:24, , 24F
感謝支持,其實用starling framework開發的app,我覺得
05/24 13:24, 24F

05/24 13:24, , 25F
效能上已經可以商用了,至少以我的標準來說可接受
05/24 13:24, 25F

05/29 17:40, , 26F
Maiyo說的效能與我實際測試有出入,採用Native,
05/29 17:40, 26F

05/29 17:41, , 27F
Android-ASUS EeePad, iOS-iPad2,iPhone4S,iOS相對較好
05/29 17:41, 27F

05/29 17:42, , 28F
還沒採用Starling雙平台測試,尚不得而知
05/29 17:42, 28F

05/30 13:07, , 29F
我是有測試過使用Starling製作遊戲在iOS及Android上跑
05/30 13:07, 29F

05/30 13:09, , 30F
的確是iOS較好,我測試時Android裝置硬體甚至比iOS裝置好
05/30 13:09, 30F

05/30 13:10, , 31F
但卻是iOS跑比較順,而且還順很多
05/30 13:10, 31F

05/30 22:07, , 32F
感覺是gpu影響
05/30 22:07, 32F
文章代碼(AID): #1HalMvb3 (Flash)
文章代碼(AID): #1HalMvb3 (Flash)