Intel:如何支持Cocos引擎
在近日召開的Cocos 2014 開發者大會(秋季)上,負責Web引擎的研發,以及H5標準推廣和增強的Intel軟件技術經理余枝強先生就開發者們比較關心的問題,在大會現場接受了媒體的訪問。
問:能介紹一下這個引擎本身和Cocos之間的一些合作點在哪?
余枝強:先從游戲領域說起,游戲的運行邏輯上分幾個層次,最上面是游戲的程序本身,下面是游戲引擎,如果是Web程序的話,底下還有一層,稱之為Web引擎,支撐的是HTML5相關規范的支持,還有運行的支持, Crosswalk 屬于Web引擎這一層。從上到下,開發者用HTML5開發游戲在最上面,然后是游戲引擎的API,包括通用的游戲邏輯封裝,音頻、視頻、圖形等再往下就是Web引擎,去支持H5里面各種各樣的標簽(比如DOM/CSS/WebGL/等)以及Javascript代碼這些需要Web引擎的支持。最后再往下就是操作系統中相應的Driver,以及硬件的芯片(CPU/GPU/等)、各種整合在一起。
Cocos引擎有幾個系列,比如Cocos2d-x (c++) , Cocos2d-x JS Binding, Cocos2d-html5等. 我們和Cocos2d-html5有較強的互補關系?;贖TML5把游戲封裝好,游戲需要用到比較前沿完整的HTML5功能的時候,就需要Web引擎來支撐。目前的現狀是,現有的Web引擎(現有的瀏覽器以及Webview組件),在H5的功能和性能上都有各自的不足,我們的Web引擎-Crosswalk就是為了解決這個問題,提供較為完整的H5支持以及較好的性能,同時不斷的優化和增強,涉及跟Cocos合作方面,我們還會針對游戲,尤其是利用Cocos2d-Html5 API的這種場景專門做針對性的優化。游戲還是有些特性的,針對這些特性,我們會在引擎方面做優化。
當用戶玩一個游戲時,其實整個流程是需要軟硬件配合,現在硬件在日新月異不斷往前發展,進展很快。比如單指令多數據并行指令(SIMD),硬件多核等,如何把這些能力給Web開發者使用,這也是Web引擎要解決的領域。我們在這方面做了一些拓展,希望通過和Cocos的合作,讓HTML5游戲開發者不但可以用到很豐富的H5功能,同時也可以充分的利用到硬件的特性,以及針對性的優化?,F在市面上很多HTML5游戲引擎都只用到HTML5的一個子集,我們希望看到一個全集,去開發更加精美強大的HTML5 游戲。我們希望可以解決這些問題。
問:您的意思是否如果我是一個開發者,想開發一個H5的游戲,就必須要用到這個引擎?
余枝強:HTML5本身包括很多功能,很多API(DOM/CSS/WebAudio/WebGL/WebRTC/GamePad/等等)。目前市面上的H5游戲引擎,(包括Cocos2D-js),只包含了H5一個子集(主要是圖形方面)。如果一個游戲只用到很小部分的API,不涉及到DOM/CSS/其他H5 API等,就可以不需要Web引擎,直接調到下面(一般是通過一個簡化的Javascript引擎再加上一些Javascript Binding的API)。如果想用到豐富的HTML5功能,一個完整的Web引擎就繞不過,必須用Web引擎。
舉個例子,如果我們把一個完整的游戲比作汽車,汽車有跑車、一般汽車,決定汽車跑得多快、多好,引擎是決定因素。在H5領域,Web引擎相當于汽車里面的引擎。
問:Cocos相當于什么?
余枝強:Cocos2d-JS模塊可以認為是一個子集,某種程度上也可以說是這個HTML5子集的引擎。如果要用到HTML5的全集功能,就必須要一個Web引擎來支撐。如果只是選一個子集,那是另外一條路線,H5很多功能相當于丟掉了。所以我們跟客戶合作時說,現在很多H5游戲蠻多是在子集上,大家針對子集就跑起來了,但是H5有很多豐富的標準的API,還有很多好用的HTML5軟件庫,這些想完整跑得非常好的話,就需要類似Crosswalk 這種Web引擎來支撐。
問:我和一些開發者聊過很多人都跟我說H5的性能完全無法和NativeApp(原生應用)相提并論的,所以他們可能并不是很看好這一塊。
余枝強:這是一個很好的問題,也是我們想盡力解決的問題。H5直觀上來說跟原生應用相比多了一個中間層,性能打了個折扣,同時從API方面來看也是相對有所不足,但是Web引擎以及相應HTML5框架演進和發展非???,這塊差距在不斷縮小。性能方面相對需要更多的努力。舉個例子,在游戲方面尤其是復雜的游戲,有些非常經典的例子,比如說1000個精靈同時在屏幕上以各種形式運動,還有粒子系統,實現各種效果,比如煙霧彈出來的動畫效果這些情況下,目前的Web引擎很難達到原生應用類似的體驗。比如說Chrome內核,它在H5引擎里面是比較領先的 ,但是對上述兩個例子的處理速度還不到原生應用的一半。Cocos里面提供了相應的測試用例。我們針對游戲這種情況做了優化,和Cocos引擎里面相關的代碼做了一些深度整合,包括在我們引擎做針對性優化之后,初步的實驗結果是:對1000個精靈的例子,性能可以提高50%,當然比原生程序(C++)慢20%-30%,但已經比較接近了;對粒子系統那個例子(煙霧效果),基本可以達到和原生程序一樣的性能。我們還有更多的優化在進行中。游戲這種特殊產品,結合游戲引擎和Web引擎,我們做一些全棧式優化,這里還有很多機會可以做。性能差異目前是存在的,但不代表這個東西不可以逾越。而且根據目前的試驗結果,我們有信心通過針對性地優化,讓Web引擎的性能進一步提升,有能力去支撐重度游戲。。
另一方面也是Intel的優勢,Intel包括芯片、系統性能優化,并行處理都有比較強的技術積累。,現在手機CPU 一發布經常都是4核、8核,GPU 更是多核,CPU還有類似SIMD(單指令多數據)的并行處理能力。這些能力目前在H5游戲領域基本都沒有用到,我們正在在Web引擎里加一些支持,可以把4核、8核或幾十個核以及SIMD這些能力銜接在一起發揮出來,讓性能得到進一步的飛躍。,這也是我們另外一個優勢。Web現在趕超非常明顯。
我們前段時間做了一件事情,騰訊有個Web前端團隊 (AlloyTeam)做了個開源圖形處理庫,這是基于H5開發的,可以方便的利用HTML5實現一些圖形處理,比如粗糙效果/木雕效果等這些效果的處理,在臺式機上性能還可以,而在在移動端需要4、5秒,有些復雜情況的處理(比如木雕效果)甚至需要40、50秒,這樣的性能根本沒辦法在移動端使用。。我們用了并行技術優化后,在Crosswalk上可以達到2倍-20倍性能提升。原本木雕效果是40秒以上才能完成,優化后只需2秒左右。而且這樣的優化是在引擎以及Javascript庫這層實現的,對開發者比較透明,上層的HTML5程序無需修改就可以體驗到性能提升。對開發者很簡單。
我們可以看到,目前情況下一些看來用HTML5不可能實現的事情,通過這些些優化之后,突然變得可能了。我相信這塊會有很多機遇在打開。如果大家聽了上午的演講,可以感覺到基于Web的開發正在慢慢崛起。通過軟硬件結合,通過在Web引擎領域不斷的創新和推動,我相信HTML5能做很多事情,到時候希望有更多的實例展示給大家。我們也希望跟游戲引擎、游戲開發者一起有更多的合作。
Web語言很靈活,導致高效的程序不容易寫,需要更多優化,如果看到一個游戲性能很差,問題可能會發生在很多層次,可能是Javascript寫的不好,沒有對Web引擎很好了解的話很容易中招,也有可能是游戲引擎不夠高效,也有可能是Web引擎的性能問題。通過不同層面的優化,會慢慢得到很大的改觀,而且會做越來越多的事情。希望和大家一起努力推動HTML5前行。
Cocos 2014開發者大會(秋季)是Cocos開發者平臺的第九次會議,秋季大會的主題為“Great or nothing”。觸控科技將在大會中正式發布了“Cocos開發者平臺”,并宣布與多個國際巨頭的戰略合作。作為本屆大會的重頭戲,Cocos開發者平臺將一體化整合開發者生態圈,Cocos Engine工作流可為開發者提供“創意→游戲上線→收入提升”過程中所需的全套產品與服務,包含暢思廣告平臺、Cocos Play、AnySDK等重要戰略級產品。