閱讀663 返回首頁    go 阿裏雲 go 技術社區[雲棲]


黑一下HTML5 看上去很美?

HTML5的“跨平台優勢”一說由來已久。我們之前曾報道Facebook工程師的改版手記,其中提到他們對HTML5跨平台快速迭代的推崇。然而前不久紮克伯格卻公開發聲“押注HTML5是大錯”。關於它的實用性,或許使用者自己才更有發言權。

以下是Cocos2D-X核心開發者王哲在cocoaChina移動開發者大會上的演講。他認為本地應用的好處在於可以將資源打包運行,缺點是iOS審核及Android碎片化;HTML5看似跨平台,實則碎片化較Android更嚴重。各有優缺點的情況下,較理想的方式是Hybrid(混合模式),當然它也並非天衣無縫,還存在蘋果方麵的條款風險。而一定隻鼓吹“某一種模式必勝”的,背後更多是利益相關,目前開發者隻能盡己所能,將來如何需要看整個生態的發展。

(有趣的是,王哲曾是“新概念作文大賽”的冠軍,前一屆的冠軍裏出了韓寒(微博),後一屆的冠軍裏出了郭敬明,而他則被調侃為“誤入程序員”。)


Cocos2D-X核心開發者王哲Cocos2D-X核心開發者王哲

全文如下,略整理刪改:

最近在討論的是,用哪一種方式能把跨平台的遊戲做得更具一致性,體驗更好。目前有三不同的基礎,Native(本地應用)、HTML5、Hybrid(二者結合模式),一般的框架隻會選擇其中之一。我們在開發過程中有一些心得可以跟大家分享一下。

Native,我們能夠確定他們用的技術方案。在升級的時候不需要把整個遊戲重新下載,它是一個增量升級的概念,就是說它可以把腳本和資源打成一個包,下載完以後直接在本地運行。以目前的情況,困難在於Android的碎片化,自更新需要花很多的力量;而在蘋果上,遊戲發布後每次更新就必須等待漫長的審核周期。所以我們對Native的感情是很複雜的,這些年靠最靠譜的方式給大家帶來了收益,但是它又有這樣那樣的缺點。

HTML5是來補救Native的缺點的。HTML5是在瀏覽器裏麵跨平台的做,自己就比較省事兒了。目前爭論的比較多,到底移動互聯網是Native還是HTML5。HTML5信徒說未來HTML5必然要取代Native,實際上這些爭吵的背後代表了不同的利益集團。Native主要是手機平台商,就是做操作係統方麵的,HTML5的陣營主要是做瀏覽器,還有做搜索,比如說FaceBook這樣的廠商。站在開發者的角度上往前看誰有能力,實際上最後還是共生共存的狀態。公正的看這件事情,還是要客觀的看數據。

 

HTML5放在不同操作係統瀏覽器上的跑分HTML5放在不同操作係統瀏覽器上的跑分

把HTML5放在不同操作係統瀏覽器上跑,得分都不一樣,實際上很少人說這背後有什麼樣的意義。我認為它背後的意義是HTML5已經開始碎片化。這件事情是不可避免的。因為Android和iOS代表了對這個生態圈完全不同的兩種態度。Android比較自由沒有太多的約束,大家都可以搞,結果就出現了不同的定製、不同的操作係統、不同的商城。而蘋果的方式是很嚴格的控製,有點兒像獨裁者,你的遊戲是否能上去完全看他的心情。

HTML5比Android更開放更自由,這是它的優點,但是優點和缺點是相生的,也就是說你現在麵對的不像Android一樣是同一個係統不同的版本兼容性的問題,而是這個瀏覽器有這個標簽,有這個功能,另外一個瀏覽器沒有。所以給不同的瀏覽器做適配的問題在HTML5上麵隻會更嚴重,不會更容易。所以HTML5試圖想讓自己很輕易的跨平台,實際上自己又變成了分化的很多的平台,所以我認為這是HTML5社區的第一個問題。

第二個問題,是它的性能。我們的遊戲實驗下來的結果,超過幾百個元素在動的時候,還達不到要求的標準。所以HTML5有它的優點,也有它的缺點,未來有可能更好,也有可能更糟糕,但是這個事情不是我們能夠決定的。所以,目前能做的是在現有的框架、現有的標準基礎做到最好,但最後整個生態圈走多遠還是看HTML5發展的情況。

Native和HTML5各有缺點,所以第三種方式是Hybrid。國內有一些廠商會采用這種技術方案。有的遊戲使用Native,結果是每次升級需要下載幾十兆的包,還存在審核周期長,需要發布多渠道維護的情況。Hybrid怎麼做呢?發到所有渠道裏麵,然後遊戲第一次啟動的時候,到服務器上下載遊戲的腳本和資源,大概80MB左右,後麵的升級每次開遊戲的時候自動監測一下,有沒有升級包,有的話就下載下來,解壓完以後腳本和圖片資源替換掉,這樣就完全避免了Native目前碎片化的問題。對於HTML5來講,它運行效率非常高、非常流暢。

除了解決前麵這些問題之外,它還會帶來一個額外的收益就是開發時間。目前Native版本開發人員成本高,開發周期特別長,用Hybrid之後,用腳本化的編程都能夠大大的加快遊戲開發的速度,它還是處於一種運行速度和開發速度折中的方案。

同一個測試遊戲,在iPhone 4S Safari用HTML5和Hybrid下的不同表現(左下為跑分)同一個測試遊戲,在iPhone 4S Safari用HTML5和Hybrid下的不同表現(左下為跑分)

舉一個例子對比一下。同樣一個專門用於測試性能的遊戲,在iPhone 4S Safari用HTML5,可以看到畫麵並不是太複雜,屬於很簡單的情況;如果把同樣的代碼放到Hybrid的方案裏,就顯得很輕鬆,但是遊戲的代碼還是那些,沒有變。

Hybrid不是天衣無縫,它有一個致命的缺點在於,如果用Hybrid升級包方式使遊戲升級的話是違反蘋果的開發者條款的,因為蘋果禁止下載可運行的腳本,但是這個事情很多人在偷偷幹,所以不太清楚最後這個政策上的風險會怎麼樣,這是Hybrid方式唯一美中不足的地方。

最後更新:2017-04-02 22:14:28

  上一篇:go iOS及Android 4.1版Chrome發布 HTML5得到進一步發展
  下一篇:go 中國公司應加大HTML5話語權