• 阿里云應用開發失敗總結[轉載]

    1
    HTML5 云計算 HTML C/C++ Go 32952 次瀏覽

    距離我退出云應用開發群,徹底放棄開發已經過了3天。3天的時間足夠讓我好好冷靜一下了,之前產生的許多抱怨也慢慢消停了下來。

    總結這次開發失敗的教訓,總的來說,并不是技術上,或者算法上有什么太大的問題,而是出在了最基本的可行性分析上面

    云應用是什么?

    簡單的說,阿里云應用就是移動Web App。通過把遠端服務器(也就是阿里所說的云平臺)上的Web包(包括xml、JavaScript、CSS)加載到本地的“云應用中心”來啟動應用。這個“云應用中心”,據我觀察,不是對Android 2.2系統默認瀏覽器的二次開發,就是直接基于WebView的實現的應用程序。我這么說,并不是要貶低云應用,而是事實。

    不管是在開發群中,還是在論壇里,常常會有人問“是否支持WebSocket”。得到的答復一般都是“暫不支持”,而且似乎也沒看出來有任何后續會支持的消息。相比之下,對于WebGL,阿里云就要高調得多:在一個月前就已經放出了一段用云應用開發的WebGL 3D動畫的視頻。相比之下,作為HTML5核心技術之一的WebSocket,其在阿里云應用中的待遇為何還趕不上Canvas的加強版WebGL呢?如果你現在手中有一部Android手機(2.2、2.3系統均可),用它訪問http://html5test.com(注意使用無線網,因為數據量超大。),你就會得到答案。

    最初的吸引力

    上面所述基本上是后來才發現的。雖然有馬后炮的嫌疑,但是這種自己被自己馬后炮的感覺,誰試誰知道。其實云應用開發一開始是對我產生了極大的吸引力的,如果不是因為此,我也不會全身心地投入一個月的時間做這種開發,想必也不會有這篇總結。

    首先是10萬的獎金以及貌似非常好拿的“搶灘登陸獎”。最近半年時間,我陸續參加了新浪微博創新開發大賽、淘寶開放平臺創新大賽以及這次的阿里云應用開發大賽,坦白說都是沖著得獎去的,而阿里可以算是三者中最為慷慨的一家了。不僅有最高10萬元的大獎,而且只要應用上線,并且足夠好,就有可能得到1部阿里云手機的“搶灘登陸獎”(總共200個)。

    其時我正在學習HTML5 Canvas,在博客中也陸續發表了一些學習的心得和所做的小玩具程序,正欠缺一個實戰的機會。于是,這次阿里云應用大賽剛好是“瞌睡遇到枕頭”,而且在最初的宣傳中,阿里也表明支持Canvas,并且在不久的將來就完全支持WebGL。當時的感覺就是這個比賽簡直就是為我設計的啊!當即注冊賬號,獲取邀請碼,依照教程開始開發了。

    最初的阻力

    阿里云應用開發最大的優勢是什么呢?簡單!比Android開發還要簡單就是其優勢所在。實際上,只要把相關的JavaScript文件和CSS文件以云應用規定的格式引入到項目中,然后安裝規定的方式去調用就行了。雖然所使用的語言是前臺腳本語言,但是通過云應用的規則卻更偏向于Java(甚至是更偏向于Android)。這就使得開發變得非常簡單,只要代碼能在PC瀏覽器(IE6除外)中運行,稍加改變就能變成云應用。

    那么,如此簡單的開發為什么照樣吸引不到人呢?不是我危言聳聽,只要你到開發群中看一下就會發現80%的人估計都把這個群屏蔽的吧?經常能看到在發言的人也就那么聊聊可數的幾個。也許是為了將積極的開發者集中起來,大概一個星期以前,論壇新建了一個官方的阿里云開發者俱樂部的群。加入的時候看到人還是挺多的,但是實際的情況其實和普通的開發群還是一樣的。

    說這些的原因正是為了引出我所遇到的第一個困難:找不到測試用的阿里云手機。雖然阿里云在一開始的時候就在全國設置了多個測試點,但是偏偏沒有阿里的大本營杭州。這就讓我非常惱火了。因為,向在阿里和淘寶的同學打聽的結果表明,他們也沒有阿里云手機。在阿里工作的同學的原話是:“小米手機快要上市了,大家都在等著買小米吧!”于是,阿里云手機的市場占有率到底有多低就可見一斑了。

    在網上搜索了一番的結果更是讓我非常失望:即便是小米(2.3系統)的價格也只要1999的情況下,已經上市半年的阿里云手機(2.2系統)仍然要2600多。這對我這么一個學生黨來說簡直就是悲劇啊!而且,阿里云手機如果不刷機的情況下,不支持豌豆莢,不支持安卓市場——絲毫沒有讓人去買的誘惑力!特別是小米論壇上一篇評價阿里云手機的帖子,更是將其打擊得一無是處了。

    好在群的管理員承諾會在杭州設置測試點,雖然等了有半個月,而且測試點都設在咖啡廳,消費超級高(苦逼學生黨),但是好在應用能測試了。

    難以逾越的障礙

    到這個時候,實際上我的期望已經從最初的得大獎降低到了拿到“搶灘登陸獎”——即一臺阿里云手機——就好了,因為我始終還是抱著希望繼續開發新的阿里云應用。但是隨著測試的進行(同時咖啡廳消費的不斷增加),以及一次又一次的審核,一個技術上的障礙越發暴露出來:同屏對象過多所導致的畫面不順暢。由于我設計開發的是一個豎版飛行設計游戲,因此敵我雙方的飛行器、子彈等在Canvas上繪制都是必須的;在繪制的同時,還有涉及位置變化、彈道的計算等,算法的時間復雜度大概有n的平方。于是,畫面或者操作不流暢成了我每次審核不通過的原因中基本都會有的一條。為了解決這個問題,我降低了敵機出現的頻率,敵方子彈的軌道也從瞄準發射改為了直接向下發射,減少循環,等等。原本我的設想是做出想東方系列那樣虐心的彈幕;但實際的情況是,如果彈幕設計成那樣了,幀數也就只有個位數了。盡管如此,流暢度仍然不夠理想。

    于是,我不得不去懷疑是不是手機本身的問題。我所使用的是Moto ME525手機(Android 2.2),性能上比阿里云手機略微差一些。在我的手機上用默認瀏覽器測試的時候,也會有比較嚴重的丟幀和畫面不流暢,情況和在阿里云手機上測試的效果相差無幾。于是我開始懷疑是Android 2.2系統本身對HTML5支持上的問題了。第一個發現就是前面所述的WebSocket和WebGL的支持問題,也因此讓我推測出所謂“云應用中心”其實就是基于Android 2.2系統默認瀏覽器或者WebView開發的。其實不僅僅是2.2系統,就連2.3系統也不支持WebSocket,4.0系統似乎也不支持,也就難怪論壇和開發群里沒有對WebSocket做過多的解釋了。

    那么對于已經支持的Canvas和WebGL,阿里云手機的情況如何呢?Hi WebGL網站曾經發表了一篇比較各個瀏覽器Canvas、WebGL游戲性能的文章(http://www.hiwebgl.com/?p=618),里面提供了幾個鏈接來測試Canvas和WebGL的性能。如果用手機瀏覽器訪問的話同樣可以看到手機瀏覽器中Canvas和WebGL的性能:

    Canvas2D性能測試:http://www.scirra.com/labs/perftest-2d/

    WebGL性能測試:http://www.scirra.com/labs/perftest-webgl/

    我用小米手機(2.3系統,性能優于阿里云手機)測試的結果是:無論是Canvas還是WebGL,幀數都在14到33之間波動,同時渲染的對象在97到280之間波動。而我所使用的PC(四核,4G內存,集成顯卡)測試結果為:僅是Canvas,幀數維持在30,同時渲染的對象在2400到2800之間波動。這是我第一次意識到HTML5在移動端的支持情況如此之差。在沒有任何額外計算,純粹是繪制的情況下,同屏對象都只能達到280的情況下,時間復雜度已經達到n的平方豈不是已經宣告了悲劇?

    然后再回頭來看看現在已經得到“搶灘登陸獎”的應用。時至今日只有4個:迷字點點點、推箱子、巧關電燈、俄羅斯方塊。最初我信心滿滿地參加比賽的原因也是因為看到已經得獎的應用(當然只有第一個,后來慢慢有了第二和第三個)實在是太簡單了,我弄個豎版射擊游戲一定直接秒殺了它。我太天真了,我沒把別人秒殺,手機環境已經直接把我秒殺了。以這樣一種硬件條件,Canvas處理如此吃力的情況下,想做出一個流暢的動作/射擊游戲簡直就是癡人說夢啊!更不要提Android瀏覽器對JavaScript touch事件糟糕的響應了。

    其實在開發的時候我注意到還有另外一個朋友在做一個塔防的游戲,不知道他的情況如何了?反正到我最后一次去測試點的時候還沒看到有塔防的應用上線。現有的云應用基本上不是益智游戲,就是一些供查詢用的應用。不知道最終的大獎會是個什么貨。

    決定放棄

    最后一次去測試點的時候,恰好有一個老板模樣的人和別人在那里聊天。他聽到我問服務員關于阿里云測試手機的事情的時候,直言:“阿里云手機沒前途”。其實在此之前我也已經有這種想法了。如前所述,阿里云應用其實就是在Android的基礎上再弄了一個Web App的平臺,來加載以JavaScript和CSS為基礎的應用。其實Android的性能沒有iOS高已經是共識了,還要在Android的基礎上再弄一個解釋型語言的平臺,這簡直就是完全舍棄性能因素了。但是Android的性能還算過得去的,更何況有仍在不斷增長的用戶市場,因此有大量的Android開發者無可厚非。而阿里云應用這樣既沒有性能,又沒有市場,實在是找不出繼續開發下去的理由。因為,如何一種應用,用Java編寫,在Android市場發布,無論是哪方面都遠超阿里云。我估計這次比賽的參賽者多數都是在校或者應屆的大學生開發者了,沖著的也是獎金。那么以后呢?

    言歸正傳,最終讓我徹底放棄的原因還是因為操作不流暢的問題。本月16號我最后一次提交審核,審核依舊沒有通過,這次的原因仍然是操作不流暢。顯然阿里云的審核人員也沒有意識到阿里云手機的硬件本身就有問題,或者他們本身就知道,但是希望我們用軟件去解決。于是我意識到為什么這么長時間了只有4款益智游戲拿了“搶灘登陸獎”,云應用平臺真心不是屬于動作/射擊類游戲的。

    帶著這樣的想法,我退出了兩個開發群。

    失敗是成功之母

    上軟件過程管理課的時候,老師說,需求分析很重要,可行性分析很重要,不做的話到了軟件做完以后就會發現悲劇了。然后舉了一大堆例子。老師,我對不起你,你教的我這么快就還給你了。

    給基友袁二說起這件事的時候,丫只引用了伊利丹的一句經典臺詞:“You are not prepared!”

    總結這次的經驗教訓,最重要的就是沒有在開始的時候做好相應的可行性分析。覺得好就上了,但是測試的時候才發現硬件根本跟不上需求,于是不得不放棄了。

    但是,也不是完全沒有收獲的。雖然阿里云應用開發的那一套完全不適用與其它的開發,但是好在它還是支持第三方JS類庫的。我在開發中也是先在PC瀏覽器中進行canvas游戲的開發,然后再移植到云應用平臺的。總的來說,我把之前所用到過的canvas開發的元素都用到了這之中,實戰的目的還是達到了。

    下一篇博文我將把我的代碼共享出來,也算是作為我的HTML5 Canvas 2D開發的終章了。

    轉自:http://blog.csdn.net/sadfishsc/article/details/7084183

    相似問題

    相關經驗

    相關資訊

    相關文檔

  • sesese色