如何看待 HTML5 開源遊戲引擎 Egret,HTML5 遊戲開發的前景如何?

rt,看了引擎的介紹,貌似還可以發布移動平台的原生應用,大家來討論下前景如何~


-----------------------------2015年3月27日更新-----------------------------

2015年3月25日,Google做出了一個針對Dart的重大決定,原文在Dart News Updates: Dart for the Entire Web

總結這篇文章,有幾個要點:

Dart is now officially only a Coffescript alternative. Today, with this official announcement, the great dream of Dart as a "javascript.next" has been abandoned by the Dart team. Dart will never be integrated in Chrome. It will run only if transpiled to javascript with the dart2js compiler.

Dart已經正式成為Coffeescript的備選;

原本Dart team想把Dart語言變為"javascript.next"的偉大夢想基本被放棄;

Dart將不會整合進入Chrome;

Dart將只會專註於Dart to JS的編譯器工作;

片外話,Google和微軟決定合作在AngularJS上使用TypeScript。原文在Microsoft Google developer connection on TypeScript Angular 2

看到上述這些,只能說去年我們將Egret Engine選定在TypeScript上實屬幸運之舉。

---------------------------------------------------------------------------------

本來一直都在知乎潛水,但是看到樓上各位華山論劍點到了Egret,而且各持己見。我覺得我作為操盤Egret產品和技術的人,總歸要回復幾句,但是在諸位看官進入正文前,我先澄清一下,我的回復不會就以下幾個問題展開討論(為什麼不討論,相信各位資深看官都懂):

1. HTML5有沒有未來

2.開源好還是閉源好

3.Web,Hybrid和Native哪家好

4.2D沒3D牛B

我想單就Egret本身而言,給出我關於以下幾個問題的想法。

1. Egret為何用TypeScript?為何不用Dart,AtScript或者其他?

TypeScript(TS)是一個嚴格意義上JavaScript超集,而且它目前的1.4版本的語言設計更接近於ES6,如果只是單純認為TypeScript是微軟出的一個開源語言的,請認真去http://TypeScriptLang.org深入了解一下這個開源項目,了解以下微軟的首席架構師為何會針對JavaScript做了這麼個玩意。

那麼為何Egret會選用TS呢?

首先,我們認為Dart的形式針對很多會使用JS或AS3的開發者而言(尤其是初學者這個最大的群體),學習的成本曲線較陡,而谷歌又是一個在技術上「太過」創新的公司,跟隨一個有可能「朝令夕改」的技術去製作一款產品,而且將整個Egret的工具和服務的體系都懸於它之上,實在有些讓我坐卧難寢。谷歌的AtScript的目標又過於宏大,瞄準了ES7,但是就目前的H5的技術推進而言,下一個JS的標準是看齊ES6。我們想做一款創新好用的產品,但是首先我考慮的是先要創作一個能用的產品。回到TS,它目前版本是1.4,即將在2015出現2.0,語言的結構設計無限趨近與ES6的標準,有了module,有了Proxy,還會有很多更類似於ActionScript3.0的語法。微軟還提供了一個TS的編譯器,可以在編譯時為開發者提供很多幫助,而且我相信以微軟的實力,做個編譯器的水平還是很高的。目前的JavaScript恰恰有很多設計層面和開發層面的缺陷,TS都能或多或少的彌補這些問題。選用TS這個開源項目,能再現階段很好的幫助JS開發者創作更有規模,更成熟,更有質量的遊戲項目。

其次,我們可以用TS基於Canvas來封裝跟Flash ActionScript3.0的API結構設計,而且,我們僅僅封裝對於遊戲有幫助的部分。我在Adobe的10多年,全部鋪在了Flash產品和技術上,Flash是個龐然大物,當初Flash團隊之所以放棄AS3到AS4,AVM2到AVM3的項目,很大程度上是Core的部分太複雜了,經歷了幾代架構師和開發的調整,升級重構的成本已經無法估量,簡單來說,就是當時沒人改的了,所以,我們也不可能投入研發去自己做一個complier或者virtual machine去讓AS3交叉編譯為JS,君不見Adobe曾經宣布的AS3到JS的Falcon交叉編譯項目,3年了都沒動靜,最後隨同Flex一起捐給了Apache基金會么。Egret的API設計只是借鑒模仿了Flash AS3里跟遊戲有關的API部分,做了減法,因為Egret Engine的定位不是想讓開發者拿去既可以做廣告,又可以做minisite,又可以做Video,又可以做遊戲。我們只想在core上保持精簡,如果開發者對不同的遊戲類型有需求,比如狀態機,物理,粒子等等,都做到了core之外的game library里。我2014年初離開Adobe時候,中國還有接近30萬的Flash開發者,其中90%是遊戲相關,這是一個寶貴的開發者社區群體,他們對於Web頁游的開發和理解遠遠超過了任何使用其他web前端技術做網頁遊戲的群體。Egret使用TS,一方面是為了讓JS遊戲開發人員更舒服些,另一方面是考慮到Flash AS3這個開發群體,不爭取的話,慢慢都流失掉了,很可惜。下圖是我們Egret Engine在API設計上與Flash AS3 API上的對比。

第三,我們使用TS,還有一個想法。將來的JS也是遲早會跟ES6看齊的,等將來所有瀏覽器都統一支持下一代JS的時候,現在使用Egret的開發者都已經熟悉了ES6那套做法,而Egret幾乎可以0成本的直接將TS換為下一代JS的代碼,平滑過渡所有開發者,比JS現有體系過渡到下一代的體系成本都低,更順滑,何樂而不為?

2.我們2014年一口氣做了一堆工具,而沒有一上來就做個集成的開發環境呢?

我在這裡要回答的有2點。在技術和產品的進化上,第一條真理是:天下武功,唯快不破。第二條是,長鞭理論無處不在。第三條是:工作流是工作效率提升的根本。以上三條重要性依次降低,當一個CTO和CIO做了產品形態和研發的決策時,請倒推。好了,不講大道理,說一說Egret的做法,Egret里我帶的這幫人以前是做Flash Pro,Flash Builder,Flex GUI和眾多工具及框架的技術,很有經驗。但是經驗不能完全當做生產力,經驗不能當飯吃。經驗告訴我們的是,要想在市場立足,在最短時間內做出來的產品的「核」也就是中心思想很重要,它不必拘泥於是否先要有個IDE來承載這種形態,市場需要的是最有效率的工作流,其次才是一招打遍天下的IDE集成開發環境,工作流的形態可以先出現在最初的若干款產品里,他們之間獨立,小巧且專註,之間的數據通用且可以協作,對於研發而言,成本和風險均可控制。而IDE,功能強大且齊全,開發者需要的功能都具備,但是研發成本高,風險大,周期長。按照Egret Engine的雙周迭代速度,團隊潛心於一上來就要打造一個IDE的節奏是不對的。就好像你希望快走,但是又總有一條腿邁不出去的情況一樣,這個節奏的結果就是容易扯著蛋。但是2015年,我們也會做出一個第一版的IDE,叫Egret Builder。

2015年1月26日小更新:Egret IDE形態將在Egret Wing這款可視化GUI編輯器上升級,也就是第一版Egret Wing是GUI編輯器,第二版將是全功能IDE,開發H5遊戲的環境將和使用Flash Builder開發Flash項目一樣)

3.說了引擎和工具,Egret你們想怎麼商業化呢?

商業化的問題其實在這裡我不想說太多,我只想說,我們除了引擎,工具,我還讓團隊做了個運行時。也就是將來Egret的技術體系就是三位一體,Engine,Tools,Runtime。關於Runtime的細節,我也不想多談,大家可以去http://egret-labs.org上看看Egret Runtime的產品介紹頁,就明白我們為啥要針對H5做個Runtime。很多明眼人一看就會說,這不就是個Flash Player么?!答案是Yes,也是No。

Yes的部分是我們的團隊原來都是做Flash的,受Flash影響頗深。Flash Player里具備很多優秀的Web遊戲設計思想都是很贊的,我們就想我們可以用C/C++和OpenGL圍繞著這些設計思想,再做一個取代webview的遊戲加速器,讓開發者基於Egret引擎開發的H5遊戲,可以直接通過這個Runtime加速。No的部分是Flash Player是to C的,要讓用戶去裝,而Egret Runtime是to B的,集成到平台app里,作為一個庫,當用戶在平台里玩遊戲時候激活,玩家是不知道Egret Runtime存在的,我們也不打算對玩家去刷什麼存在感。Egret Runtime是為了解決H5遊戲性能,適配,系統底層調用和碎片化的問題而生的一個產品。在Egret Runtime上,我們跟各大平台的合作關係也很融洽,為什麼?因為我們就是他們平台內部的一個組件,生命周期受平台app的控管,你激活我,我就幹活,你移除了我,我就進入sleep模式,絲毫不影響人家平台業務,還能提高H5遊戲的用戶體驗,也不騷擾用戶,何樂而不為?尤其在Android上,一個activity級別的控制項是讓平台恐懼的,而一個view模式下的控制項,平台是喜歡的。下圖是Egret Runtime的HighLevel架構圖:

看了這張架構圖,我想諸位看官應該知道商業機會在哪裡了。4.Egret現在就是個2D的,木有競爭力啊!

近一年內,Egret Engine的確是2D的,但是大夥不都是以進步的眼光看待事物么?Egret也一樣,秉著天下武功,唯快不破的思路,我們規划了一下2015年的Egret Next,我們也在預研3D的部分,code name是HummingBird(請原諒我們團隊就是喜歡鳥),更細節一點的計劃圖在這裡:

當然,我們現在已經開始做了一些了,不然我也不敢說出來找虐。

2015年1月26日小更新:Egret 3D第一版預研Demo視頻,10萬個Triangle級別,物理系統,可破壞的mesh,光效陰影,原生多點觸摸及虛擬搖桿,可H5,原生,Runtime全支持,H5為WebGL,Runtime和原生為OpenGL es或DirectX(Windows移動平台))

視頻封面Egret第一版3D演示視頻

5.說了半天,你們的套路到底是啥?

來看這張圖,我們想為H5或者叫做使用H5(JS/TS)技術的web遊戲開發者打造這麼一套環境:

(當然,隨著時間推移,這圖裡面的每個環節可能都會過期)

所以,說H5移動遊戲也好,說Web移動遊戲也好,說用腳本開發native也好,工作流齊全了,這些還算是問題么?

好了,頭一次在知乎寫了這麼多東西,希望對各位有所幫助,各位要吐槽的話,請扔雞蛋,別扔板磚。

我自己作為Egret的技術管理人,在我10多年的職業生涯里,信奉這麼幾句話:

1. 永遠不要基於現在去假設未來。

2. 永遠不要嘗試用一個成功打敗另一個成功。

3. 預測未來的最好方式就是創造未來。

4. 就是干!

謝謝各位,

7yue

接著潛水去了。


我來匿名吐槽一下 。怎麼感覺樓主和上邊的回答都把Egret引擎前景和html5遊戲開發前景綁定了呢???

由於html5遊戲出現已經不是一年兩年了,國外早已有數不清的比較成熟html5遊戲引擎了,而且都發展多年,拿出來幾乎各個都比現階段的egret強,我隨便列幾個

2d方面:

  • Parser.js

  • Panda.js

  • kiwi.js

  • flixeljs

3d

  • Babylon.js

  • Three.js

其他google一下還能搜到一堆html5遊戲引擎,比如jawsjs impactjs craftyjs ....

而Egret現階段只是模仿flash的架構,而flash架構本身就不是一個遊戲引擎架構,只是一個渲染引擎,而純渲染引擎在國外也有更成熟的pixi.js,webgl canvas都支持。框架上egret更單薄,說白了也就是個對canvas的包裝,比如針對低效率設備遊戲最常用的tilemap都沒有,只是整合了幾個現有的開源件,比如龍骨p2.js,他們首要目標好像也不是增加開源引擎的功能,而是對周邊工具的閉源投入非常多,連visual studio插件都做了,這是其他引擎在這個階段時所沒有的。

那問題來了,為什麼剛剛起步的Egret會受到這麼大的關注呢? 以至於樓主以為html5遊戲前景和egret遊戲呢?

走中國特色的html5遊戲引擎路線,優先中國開發者市場,學習cocos2dx先進經驗。想在html5上再火一把。

與前邊提到的悶聲做技術的引擎不同,Egret 有錢!

你是怎麼知道Egret的?是在github上嗎?不是。他們不是在github上有名而讓其他人知道的,他們走的是在其他渠道推廣,求網友到github加star的路線

他們每發布一個版本都會發統一的公關文到各大站點。一個神經貓+egret傳奇的軟文,你知道得花多少錢推廣才能人人都知道嗎?現在已經html5夢工廠的田愛娜也被挖了過去,基本上以後國內的任何html5開發者大會,你都會看到egret的宣傳講座了。

當然egret也有優勢,他們更了解的中國開發者,中國開發者不會在乎各種閉源工具是怎麼回事,構建工具為啥要自己寫而不基於grunt.js或gulp.js,他們需要的是你能一鍵發布,然後就適配各種小米鎚子手機了。


以下僅代表個人觀點。

## 先為 Egret,也為 html5 遊戲引擎洗地:

Egret最大的風險在於:技術上沒有被市場證明成功過。

Egret 在小遊戲上已有大量成功案例,小遊戲是 Egret 目前的主打,這一塊的技術風險其實不大。至於大型項目,拋開技術,Egret 暫時確實不夠成熟,還輪不到技術評估。

它不安於做HTML5遊戲,試圖通過TypeScript,來入侵手機遊戲市場。

手游就不能是H5了么……

反觀Egret,技術路線上一是嚴重依賴其他技術……

TypeScript是開源的,而且 Egret 隨時都可以棄用 TypeScript,直接使用 JavaScript

而且他現在還僅僅是一個2D引擎。真正想要吸引開發者的注意力,那麼它必須是一款3D引擎。否則就只能在各類小遊戲或者獨立遊戲圈裡面生存下去。

cocos2d-x 不解釋

Egret的開源模式也是很有問題的

目前開源社區的力量可以忽略

所以我更建議Egret走閉源發展模式

cocos2d-x 不解釋

html5本身就是為了網頁小效果、在線小遊戲而存在的,也是它擅長的領域,搬到其它領域就沒優勢了。即便一段時間後也不適合做大項目。

不敢苟同,參考 還要多少年, 前端開發才能像客戶端開發那樣輕鬆?

它是一款遊戲引擎。遊戲引擎功能可以簡單,但速度上必須要快。

桌面上,Flash都能勝任各大MMORPG頁遊了,H5自然不在話下,只是開發工具是否好用的問題,這正是我等引擎開發團隊追求的目標。

手機上,H5確實有弱勢,但:1. 不是所有遊戲都需要吃光硬體 2. 不是所有遊戲都是重度遊戲 3. 就連蘋果的新機發布間隔也縮短到半年了 4. 別忘了摩爾定律(想想3年前,想想3年後)

此外,似乎被人遺忘的是,H5強大的跨平台能力(別局限於手持設備),以及熱更新能力。

## 我認為目前的 Egret 還有一些問題:

  • TypeScript 減輕了 JavaScript 大規模開發的困難,但語言受眾仍然太小。Egret 選擇它雖然戳中了前 Flash 開發人員的痛點,但 TypeScript 只有依託於 Visual Studio 才能體現出優勢,這對跑不動 Windows 虛擬機和不屑用 IDE 的開發者吸引力不足。

  • Egret 的工具鏈都比較分散,有點小米加步槍的感覺,缺乏一個所見即所玩的開發環境,整體體驗和它所效仿的 Flash 差距明顯。

  • Egret 就像是 web 版的 cocos2d-x,缺乏強力的商業模式。

我不認為這些是致命的,我相信 Egret 想得比我看的長遠。


先說結論:

html5遊戲前景會很好,但永遠不會成為遊戲市場中的主流。

上面太多長篇大論的,但都迴避了一個事實:

主流的遊戲,一定會榨取光硬體系統的資源。

無論PC還是移動平台,都符合這個規律

而且硬體本身一旦進步,遊戲程序第一時間就跟進了。

有用FLASH遊戲來反駁的。但沒有考慮到頁游爆發的大環境(當時國內主機市場小眾,手游還沒起來)。

但本質問題是什麼呢,瀏覽器框架的遊戲,性能上永遠低於同硬體條件下的原生遊戲。在同樣條件下,用戶永遠會選擇性能更好的產品。

那為什麼說前景很好呢?因為html5遊戲很適合作為商業品牌在移動互聯網上傳播。類似神經貓那樣的小遊戲,已經逐漸出現在各大企業的傳播渠道上。這是一個大趨勢,但這不是我們熟悉的,主流的遊戲產品。


2014年12月25日 11:21:18 update: 我這個答案是寫給小白看的,內容比較淺顯一些,主要回答我對H5遊戲開發和Egret Engine 這個遊戲引擎的未來的看法。在回答之前不知道 @馬鑒 7yue兄也會來回答,不然我就不費事寫這麼多了o(︶︿︶)o ,更多乾貨可以看他的答案。

Egret labs合作夥伴飄過(在他們官網首頁上列舉的合作夥伴中,logo比較特別的那個)。。。

在這裡我主要回答兩個問題,一個是H5遊戲的現狀和未來,二是Egret社區的現狀和未來,兼點評一下其他人的答案。主觀色彩比較濃重,大家隨便看看。

一般來說我用專業術語是比較嚴謹的,但在這裡為了討論方便,我用H5來指代現行的和正在進化著的Web技術,包括CSS3、2D Canvas、Webgl、ECMAScript和它的小夥伴們。

第一個問題,H5遊戲有前途嗎?

我個人是比較看好H5的前景,尤其是在這個移動互聯網的時代,Web技術的觸角必然會深入到各個領域,包括題主關心的遊戲領域。

當然H5目前仍然存在著不少缺點,包括大家所提到的性能較弱、碎片化問題和JS這門語言自身的缺點等等。但這不能抹殺H5自身的魅力,用戶到達成本低,這是H5的殺手級優勢。基於這個優勢,我認為H5前景必然是廣闊的,更別提H5開發還有著開發效率高、部署迭代迅速等優勢。

用戶到達效率高於一切,這在互聯網過去幾十年的歷史裡,已經被反覆證實過。假如你將運行效率置於用戶到達效率之上,那麼自然會產生不一樣的觀點。

而H5也不是一成不變的,如運行效率、碎片化,和JavaScript自身的坑,這些令人困擾的問題已經在不斷改善,Web技術也正在以一日千里的速度進化著。大家不妨回想一下,在IE的時代,在Android WebKit的時代,Web的開發和體驗有多麼痛苦,但時至今日我們已經有不少優秀的開發框架和app級的web應用,這一切要歸功於一代代程序員的不斷努力。Web技術更是已經越過了瀏覽器的邊界,正在入侵app的領域,大家可以看一下手機淘寶、手機百度、京東等。

而在移動遊戲領域,變化也在悄然發生著,最受歡迎的2d遊戲引擎Cosos2d已經支持用JavaScript開發並同時編譯成H5和原生app版本,聽說Unity也將提供H5支持。

綜上,Web技術有著不可替代的優勢,而劣勢正在逐漸改觀,參考互聯網幾十年的發展歷程和近年來Web技術的爆髮式發展,我認為H5遊戲的前景不可限量。移動app的web化、Hybrid化趨勢,兩大遊戲引擎的動向,也多多少少證明了這個觀點。

再說Egret Engine。

Egret labs的小夥伴們是比較有想法的,Egret Engine整個設計與 Adobe Flash 體系一脈相承,在眾多H5 遊戲和繪畫引擎里,Egret是比較成熟而活躍的。再加上它依託於一個商業公司,在技術和商業的推動下,使得 Egret 社區成為國內H5遊戲開發社區中最活躍的一個,也捎帶著使TypeScript在H5遊戲開發領域得到迅速推廣。ps其實我對TypeScript頗不滿,相對於ActionScript3缺失太多特性,我更希望將AS3直接編譯成js這個設計。

為了避免像有些答案那樣隔著空氣將js和h5的那些陳詞濫調翻來覆去地說,在這裡我要提一下Egret Engine的設計。

Egret Engine代碼以TypeScript寫就,編譯成js後運行於js 引擎之上,可以驅動多種renderer,目前已經支持2D canvas renderer和 web gl renderer,基於native renderer的支持也基本完成。

捎帶提一下,程序代碼運行於js引擎,驅動多種renderer,Cocos2d-js和阿里Hilo也採用了相似的設計。

由於核心類源碼與renderer剝離得比較徹底,假如Egret labs

願意的話,完全可以加入flash renderer,或者其他什麼的繪圖引擎,也可以將TypeScript換成JavaScript、ActionScript3(我希望換成AS3)或其他什麼腳本語言,或者編譯成其他什麼東西,這樣整個Egret生態圈都能比較無痛地遷移。

也就是說,雖然我對H5和Egret Engine的未來相當有信心,但假如情況有變的話,Egret 完全可以遷移到其他語言和運行環境里。這樣Egret生態圈可以受益於H5的發展,而不會受限於H5、JS,甚至是某一個具體的平台。

當然Egret 目前這個生態圈的缺點也是有的,文檔不夠完善,工具鏈和開發環境遠遠比不上Adobe Flash,甚至跟Unity等相比還有不少差距,遊戲引擎本身也還存在一些問題。但好在Egret Labs相當務實,這些問題相信會一步步得到解決。最重要的是,這一套東西已經可以跟上時代的要求。

綜上,我們有如下結論:

1. H5方興未艾,用戶到達效率高這個優勢無可替代,而運行效率等劣勢正在不斷改善,市場需求在那裡擺著,大家要有這個信心。

2. 即使對H5心有顧慮,Egret Engine也是個相當不錯的東西,剝離引擎和renderer的設計、語言轉譯的便利,使得Egret生態圈不必受制於某種語言或某個運行環境。瀏覽器不行你還可以用native renderer嘛啊哈哈。

3. 要是能用AS3代替TypeScript就好了,("?ω?")

====

私貨很多的答案點評部分

馮沖

一句話,只要w3c和whatwg不同心協力html5成不了主流。

不過就技術而言Egret引擎本身還是不錯的,但今後命運什麼樣不好說,因為它的命運完全被掌握在html5的兩大標準組織手中。

點評:2d Canvas或Webgl只是Egret 的某個renderer,而且2d canvas的 api 已經差不多定好了,這麼說危言聳聽了點吧。

Jare Guo

## 我認為目前的 Egret 還有一些問題:

TypeScript 減輕了 JavaScript 大規模開發的困難,但語言受眾仍然太小。Egret 選擇它雖然戳中了前 Flash 開發人員的痛點,但 TypeScript 只有依託於 Visual Studio 才能體現出優勢,這對跑不動 Windows 虛擬機和不屑用 IDE 的開發者吸引力不足。

Egret 的工具鏈都比較分散,有點小米加步槍的感覺,缺乏一個所見即所玩的開發環境,整體體驗和它所效仿的 Flash 差距明顯。

Egret 就像是 web 版的 cocos2d-x,缺乏強力的商業模式。

我不認為這些是致命的,我相信 Egret 想得比我看的長遠。

點評:真做過這個的,跟別人打嘴炮的,寫出來的答案就是不一樣。我基本認同Jare Guo的觀點,也推薦他的答案,但TypeScript不一定要用 VS 開發,我們團隊都用 WebStorm 體驗也很好。

匿名用戶

Egret最大的風險在於:技術上沒有被市場證明成功過。

點評:答案較長,不多複製了。我認為這個答案是不了解,或者有偏見。

Egret Engine 在引擎和renderer的處理上,原理與Cocos2d-js基本相通,js引擎跑控制流,通過統一的api驅動renderer。

要等市場證明成功再進入,這本身就有些跟不上時代的意思。更何況用腳本語言寫的遊戲,包括移動遊戲,這事並不新鮮,Lua能做到,js為什麼做不到呢。


在程序員的世界是這麼理解的:

if(條件不滿足){

這個事兒不靠譜;

return false;

}

但是商業公司卻是這樣的理解的:

do{

想辦法去滿足條件。

}while(條件不滿足);

賺錢();

不管你列出多少問題,只要這個問題是可以解決的,商業公司都會不遺餘力的去做,這個世界總要有一堆做事的人去解決問題吧,難道玩玩嘴炮就能把HTML5玩活?

如果萬事俱備了,還能有Egret什麼事兒?

這就像最近羅胖說的一個故事一樣,關於從歐洲大陸穿越海底鋪設一條電纜到美洲大陸用來發電報的那貨一樣,你們覺得impossible,但是人家Just do it .等你覺得,wow,amazing。人家已經開始數錢了。


端游換了電腦,還需要下載。頁游和電腦無關,打開網頁就玩。所以頁游可以搶些端游的市場。

而手機呢,下載一次遊戲後,手機隨身帶。想玩就玩,不用打開瀏覽器,再進遊戲。所以移動端的頁游和PC端的頁游 不是一個概念。

-----------------------------------------------------

2015/6/23更新,6個月後,新的認識:

如果有渠道有入口,H5還是有機會的,但是要把握好H5的特性。

一直在關注市面上的H5遊戲,垃圾小遊戲確實有一大堆,稍微重度點的多為頁游的H5移植版,或者native遊戲的H5移植版。對於玩家來說,遊戲內容一樣,完native和玩H5,差別不大。

現在的手遊玩家可以分兩撥,一撥是小白玩家,一撥是被手游教育過的玩家。小白玩家,不用說,啥遊戲都可以high起來;但是對於被教育過的玩家,就不再滿足於消滅星星什麼的了。被教育過的玩家的需求是什麼呢?(感興趣的可以看生理學上的韋伯定律,和心理學上的錨點效應)人都喜新厭舊,玩家也一樣。第一天吃魚翅,美味極了。第二天吃也不錯。但是天天吃,吃上半年看看。保證以後聽到魚翅就吐!所以對於H5遊戲來說,如果沒有自己的特點,對於玩家來說也會吐。H5遊戲有個自身的特有的屬性,那就是社交。一條分享,一個連接,一個二維碼就能傳播開了。想想《神經貓》就知道這個社交屬性的有多厲害。所以最好的切入點,是把社交做強

話說回來,聊聊引擎。對於我這個碼農來說。哪個好用用哪個!關鍵要把握住技術本質的東西,是種思想。框架+功能=遊戲。框架裝不同的功能生產不同的遊戲。框架我習慣用pureMVC。做頁游的結構為:基於flash,pureMVC+插件化改造+mornui。做H5的話,現在基於Egret,pureMVC+插件化改造+egretWing。為什麼選Egret,主要是看中其背後的渠道。

最後,如果你錯過了頁游,如果你錯過了native遊戲,那麼不要錯過了H5!


html5 做遊戲最大的風險不在於技術,而在於技術以外的幾個問題:

1. 移動平台上瀏覽器的用戶使用時間比例從幾年前的40%掉到了現在的14% 還在不斷的掉。

APP的使用體驗無論如何是遠高於瀏覽器的,即使瀏覽器里用html5

2. 頁游的衰退率居高不下的一個重要原因是在桌面上沒有入口,一個桌面上沒入口的遊戲怎麼能夠跟有入口的遊戲比回訪呢

3.做這樣一個假設,在APP例如微博客戶端裡面嵌html5遊戲,甚至把微博打造成最大的遊戲平台,所有小夥伴們不去APPstore 提交Native遊戲,而是去微博上提交html5遊戲,你看蘋果封殺不封殺微博客戶端。

綜上所述,html5在移動上成為主力遊戲開發平台的機會已經一去不復返了,只能做早期flash做的一些小遊戲,互動廣告,用它來開發嚴肅的商業遊戲是自尋死路


11年app,想跨平台用H5做,結果問題非常多,性能內存都極坑,半年的項目最終放棄了,然後遊戲考慮過cocos2d-js,後面發現支持非常不成熟,jsb也是一堆坑,然後發現了Lua ..至從有了quick,就再也對h5的東東不感冒了. 好像大多談h5的都在談未來,寄希望有一天H5標準統一,廠商支持,硬體提升,用戶買單,現在14年底,感覺H5還是沒成為主流,未來還要再等, 遊戲這個行業等不起的。


Egret是款很不錯的遊戲框架,理由:

1.而且有一套完成的解決方案

2.基於TypeScript使開發流程更為工程化

3.最最重要的一點,AS3轉HTML5的最佳渠道。

潛力很大,有望成為html5遊戲框架第一名。

另,小人不才,用egret來做了個小遊戲,分享到微信後效果還不錯。看效果戳這裡:Final Flight

----------------------------------答案分割線-------------------------------------------------

另外說說html5(雖然我覺得應該另起一題):

html5本身就是為了網頁小效果、在線小遊戲而存在的,也是它擅長的領域,搬到其它領域就沒優勢了,即便一段時間後也不適合做大項目。

太長遠的事情就不說了。


大家可以看看新浪微遊戲,手Q空間裡面的 HMTL5 遊戲,還有九游平台。

H5 和 native 開發遊戲的思維差異挺大的。例外,純canvas渲染模式也有諸多限制,比如文本,dom方式渲染就比canvas方式好不少,繪製圖形也不如svg,這也是點陣圖和矢量圖的差異,canvas 的優勢在於大量的動畫渲染。

只做一些小遊戲,用任何引擎差異都不太大,可能只是 api 風格的問題。

商業項目的話,個人感覺 混合技術(dom canvas) 更好點( 特別是ui和文本 ),cocos2d-h5也不錯,只是太依賴 cocos2d-x 和 jsb。

自從 android 4.4以後使用 chromium 後,瀏覽器性能已經好很多了, 另外內嵌充值也可以跳過 蘋果的分成,或許是以後 陌陌,手Q的發展方向吧。

最後針對上面的議題,說下自己的觀點。

1. HTML5有沒有未來

未來應該會像 flash web game 的老路發展,參考 手Q空間,依託平台,高分發。

2. 開源好還是閉源好

貌似都是開源的。除非有 Unity 團隊的實力

3.Web,Hybrid和Native哪家好

h5 的未來應該還是平台內嵌( 微信是個麻煩 ),不建議優先 hybird,既沒有web的跨平台易傳播的特性,又沒有native的效果,性能和體驗。

4.2D沒3D牛B

測過在移動上跑 webgl,耗電那是相當的快,如果只是 css3d 做些簡單效果沒問題,3d 雖好,還是等幾年吧。

對於Egret,還是不錯的,也用過 createjs 和 cocos2d, 當然現在 我還是傾向於 自己寫框架 跟 工具。


=====================update4===============

匿名用戶沒人權啊,哈哈。

@廖宇雷 對「用js引擎來執行遊戲腳本」的看法跟我的回答有什麼區別嗎?有嗎?有嗎?

廖兄你倒是說說,哈哈。

但總看到一個明白人也是挺高興的。雖然你的腦洞也不小,要用Lua統一世界,哈哈。

==========================================

====================update3======================

既然連 @馬鑒 都來官方回答了。

我這個外人就在他列出的觀點下面狗尾續貂,補充一點個人的見解吧。

1. Egret為何用TypeScript?為何不用Dart,AtScript或者其他?

這個分析的有點多,其實就是一句話,TypeScript和JS最接近。

雖然能編譯到js的語言毛毛多,但在Egret成立的那個時候,TS是和JS最親近的語言,甚至比Coffeescript都要接近。(List of languages that compile to JS · jashkenas/coffeescript Wiki · GitHub),順便說一句,那時候還沒有AtScript。

2.我們2014年一口氣做了一堆工具,而沒有一上來就做個集成的開發環境呢?

這個解釋得我同意。的確創業公司一下子弄出個大新聞不容易,得一步一步慢慢來。

希望早日能看到一款優秀的編輯器出現。

3.說了引擎和工具,Egret你們想怎麼商業化呢?

這個似乎圍繞Egret runtime?我剛剛去看了下,我的理解就是一個第三方的插件,在瀏覽器中類似於flashplayer的地位。(或者和Dart的VM類似,是類似)

但您說他要比flashplayer高,我就不同意了。當年推廣flashplayer的時候,作為Adobe傳教士您肯定會說它不同於其他第三方插件,是不需要安裝的。現在您推廣Egret的時候就說,flashplayer是要安裝的。這讓我有點傷心。

而且我覺得,Egret的runtime如果真的是和各類App平台整合的話,會有一個弊端,就是不是所有的瀏覽器/平台都能用到你這個runtime技術。相比,asm.js性能也不必原生慢多少,主流瀏覽器都在逐步支持它(其實就是個js子集,不支持的話,速度也就和普通js一樣),我怎麼都覺得它更有前途。否則Unity3D 5也不會把Webgl當作一個賣點了。

這點上我估計和你分歧比較大:) 你也別反駁我了,讓時間來證明。

4.Egret現在就是個2D的,木有競爭力啊!

這個不表,畢竟是計劃圖,希望儲備到足夠人才:)

5.說了半天,你們的套路到底是啥?

這個圖沒什麼好說的,PPT必備,大家懂。

順便說一下 @魯小夫 回答中的一個觀點,Egret和cocos2d-x js在js腳本執行上用的技術「類似」。

好吧,這麼說吧,都是登珠峰,一個從北面走,一個從南面走,難度不一樣。

我的回答都說了cocos2d-x技術路線上沒坑。但Egret有。

還有 @ZSEQWX CN 不知道你是被羅胖子洗腦多了還是怎麼滴。

你的意思是,技術人員如果覺得一個產品技術上不可能實現,一般他們都會放棄。而商業公司會把不可能變成可能。最後賺錢。

但羅胖子的手機不就是緊跟著喬布斯的腳步嗎?技術上沒什麼深奧的東西。

跨洋鋪設光纜就是就是個燒錢的東西,技術上也就那樣。

很多路線不是沒有人去走,只是你不知道別人已經換了一條更好的方向了。

================================================

沒用過Egret。所以觀點不一定正確。如有錯誤,感謝指出。

Egret最大的風險在於:技術上沒有被市場證明成功過。

它不安於做HTML5遊戲,試圖通過TypeScript,來入侵手機遊戲市場。其中的技術解決方案,應該是TypeScript編譯成JS,然後通過各個手機操作系統上的JS引擎來運行遊戲。不管它是編譯執行還是解析執行還是binding原生庫,效率的瓶頸是JS引擎執行代碼的速度。所以在速度上,怎麼比都沒辦法和原生的代碼比。

如果是一個APP框架,那麼問題也不大。關鍵它是一款遊戲引擎。遊戲引擎功能可以簡單,但速度上必須要快。

遊戲引擎一般的做法是什麼?一般都是腳踏C++,然後想盡各種辦法,把他們編譯到各種平台。

即使是被人認為是用C#開發的Unity3D引擎,引擎底層大部分也是用C++寫的。C#的遊戲邏輯部分,現在也通過il2cpp,編譯成C++代碼。

為什麼?一是效率,二是在技術stack上不受制於其他同級別公司(Xamarin牢牢掌握著Unity3D的mono runtime升級許可證)。

反觀Egret,技術路線上一是嚴重依賴其他技術,二是性能上的硬傷,所以前景並不明朗。

而且他現在還僅僅是一個2D引擎。真正想要吸引開發者的注意力,那麼它必須是一款3D引擎。否則就只能在各類小遊戲或者獨立遊戲圈裡面生存下去。

當然Egret還在發展之中,隨著團隊的壯大,他們可能會找到最合適的技術路線。

HTML5遊戲開發前景?當然是很美好,只是還沒有到來。什麼時候到來?隨時都會到來,可能在未來不遠的某一天,各個瀏覽器中某個API統一了,然後幾個月之後一款遊戲一夜之間被某個頁游運營商猛推到流水1KW,那麼每個人都會說HTML5的時代到來了。

================update1=================

晚上加班有時間就再說一下吧,還是那句話,個人觀點,不一定正確。

Egret的開源模式也是很有問題的。

1.在他們的官網上很難找到源代碼託管的地址。第一次逛的時候我是費了好大的力氣才努力找到github的地址。官方似乎更希望用戶直接下載打包好的安裝包。

2.每次版本更新的說明文檔更像是一個營銷文檔。

3.我看到官網推薦訪客在Github上Star這個項目,而不是Fork這個項目或者歡迎PR之類。可能是我小心眼,但他們似乎不是真的喜歡開源。

所以我更建議Egret走閉源發展模式。

==============update2===================

Jare Guo的回復看到了。

稍微補充下:

好吧,我們可能對「成功」的定義不同,我在上面說過「而且他現在還僅僅是一個2D引擎。真正想要吸引開發者的注意力,那麼它必須是一款3D引擎。否則就只能在各類小遊戲或者獨立遊戲圈裡面生存下去。」 而你認為只要有完整的小遊戲出現,那麼這款引擎就算被市場證明成功了。

手游可以是HTML5技術,但我在上文中指出的是Egret的風險是試圖進入原生APP手游市場。是我沒有顯式的說明。

我指的依賴其他技術,不僅是微軟新出來的語言TS,還是它依賴的手機上的JS引擎。這個更加不可靠,因為它是一個並沒有被大量的遊戲公司所使用的技術。

cocos2d-x 你似乎很看好。但我一直不怎麼看好。雖然技術上他比Egret踩的坑要少得多,但一個國內遊戲公司維護的開源社區總給人一種銅臭味。

你似乎比較滿意Flash技術在網頁上的表現,覺得他能勝任MMORPG。但在我印象中,頁游在圖形表現上,根本不能和端游相比。即時後期的Flash3D,估計也只能和10年前的端游相比。況且,因為Flash技術上的限制,很多其他類型的遊戲根本沒辦法實現,比如FPS,比如RTS。

綜上,你之所以對Egret感到滿意是因為它現在能做「小遊戲」。而我之所以對他不滿意,是因為它做不了「大遊戲」。


07年大家覺得flash做不了端游級別,只能做mtv,小遊戲

08年我們的頁游上線,大賺.

2009年大家都覺得Apple系的東西好貴,沒人買iPhone

10年沒人花5k去買ipad,幾乎沒人做這個平台的手游

那時沒人做過flash air方案移植頁游.都覺得不靠譜.我們公司做了,大賺了。

那時我們也分析了h5,最後還是覺得air方案較合適......

如今我們關注到了egret,比那時成熟多了.

我非常高興你們都說不靠譜,性能差,做不了大作.....我求你們都放棄研究吧.....

我的美好時代又要來了......

大把賺錢 想想都覺得很美

嗯 !


我對Egret的一些看法: 《Egret 的童話與現實》 Egret 的童話與現實 · Issue #5 · finscn/The-Best-JS-Game-Framework · GitHub 兼對 7yue 老師那個答案的回應。 不過估計不會有人在乎我這個答案吧,因為不夠長。


匿名用戶

做了15年的遊戲開發,用過最舒服的效率最高的開發工具應該是Unity3D,要抄也抄他啊。

就我上周在上海 CJ 晃蕩一圈,看到 2 個類 U3D 的 Html5 引擎:

一個叫火盒,一個叫青瓷引擎。

你可以去了解一下


作為一個曾經掉入過html5的坑的人 一定要出來說兩句

至少現在html5來做手游開發是不夠成熟的

之前我們想當然的覺得這玩意好啊,pc手機平台全兼容啊

可是事實和期望是相差更遠的

期間各種坑,最後只好放棄用了


==== update 1:

1. 對於 HTML5 遊戲,我認為兩三年內只在桌面領域還有作為。而手機上,H5 只能用於病毒傳播跑一些小遊戲或者互動廣告。

2. 在 Native 領域,JS 是沒有前途的。

====

重點說一下用腳本語言開發手游吧:

用腳本語言開發手游現在有三種運行模式:Native、Browser 和 Hybrid。

- Native 通常就是底層用 C/C++ 負責渲染、系統交互,遊戲邏輯使用腳本。

- Browser 就是用手機瀏覽器或者集成 WebView 的 App 來運行遊戲。

- Hybrid 模式則是在 App 里嵌入了 C/C++ 的渲染引擎,然後提供介面給腳本使用。現在 Cocos Play 和 Egret Runtime 都是這種模式。

三種模式,要論性能表現,是 Native &> Hybrid &> Browser。在目前的技術條件下,Browser 模式基本上只能用來跑一些小遊戲。

----

在 Native/Hybrid 上,JS 的軟肋還是性能問題。

JS 是一種極其複雜的腳本語言,一直以來各大廠商都在努力優化 JS 性能,最強悍的就是 Google V8。可惜即便是 Google 也對 JS 非常不滿意,所以推出了 Dart。要知道 JS 最初設計時只花了十天時間,非常倉促。但由於 Netscape 使用 JS 開創了一個時代,所以時勢造英雄成就了 JS 今天的火爆。但 JS 本身的問題是無法解決的,請參考 Javascript的10個設計缺陷 。

去年我做了一些測試 cocos2d-x 2.x 腳本性能測試 ,比較了 quick-cocos2d-lua 和 cocos2d-js 的性能和內存佔用問題。可以發現 SpiderMonkey 跑 JS 腳本的內存佔用、性能、幀率穩定性與 LuaJIT 有巨大差距。

所以絕大部分遊戲開發商都選擇了 Lua 來開發手游,而不是 JS,根本原因就是 JS 先天頑疾。

當然了,Google 這些大廠也在想辦法做 JS 的替代品,不過目前一個都還沒成。而且這些替代方案都不是為了嵌入式腳本設計的。

~

說到這裡,我必須開始吹噓 Lua 了:

- 為了嵌入式腳本設計的語言,天生就適合用來開發遊戲

- 極小的虛擬機

- 高性能

- 與 C 交互極其方便

- 有 LuaJIT 這樣的高性能虛擬機,甩開 JS VM 幾條街

- 因為 Lua 虛擬機小、C 介面簡單,所以包大小比起 JS 也有顯著優勢

當然,Lua 也有缺點:

- 太小眾,目前隨著手游開發火爆這種情況有改善

- LuaJIT 目前不支持 arm64,所以 2015 年 cocos2d-lua 也只有先換成 Lua,性能雖然比 JS 快不少,但還是不如 LuaJIT 爽

至於什麼 JS 面向對象比 Lua 強之類的謬論,絕對是 Lua 小白的說法。

對於 LuaJIT 不支持 arm64 的問題,目前已經有開發者在做移植,我也希望參與到這個移植里,以便儘早在 iOS arm64 設備上把 LuaJIT 跑起來。

那個時候,LuaJIT 將是 iOS/Android 上性能最強的腳本語言。

~

說了這麼多 Lua,在 HTML5 上跑不起有個毛用啊!JS 支持者肯定會說用 JS 開發的遊戲既可以跑 Native/Hybrid,又可以跑 Browser,多麼美妙。所有人都是我的用戶,所有渠道都管不住我。

先不說手機 Browser 跑不跑得動你家的大作,Lua 跑在 HTML5 上絕對不會是無法解決的問題!

目前要在瀏覽器中要跑 Lua,有兩條技術路線:

- 用 JS 跑一個 Lua VM,在這個 VM 里跑 Lua 代碼:缺點是慢到蛋碎

- 用工具將 Lua 代碼翻譯為 JS 代碼

第一個不說了,第二個才是王道。

目前我們已經考察了不少方案,其中最出色的兩個分別是:

- Lua 2 JS

- Lua.js live demo

前者是國外開源項目,後者是國內團隊的作品(未開源)。

這兩個編譯器都達到了極高的水平,編譯出來的 JS 代碼具有很好的性能,在大部分測試用例里都接近了瀏覽器跑 JS 的性能。

我們團隊正在詳細考察這兩個解決方案,最終會選定一個進行合作。然後為開發商提供一個將 Lua 遊戲轉移到 HTML5 的解決方案。

當這個方案可用時,開發商就會發現:

- 在 Native/Hybrid 模式里,Lua 具有最好的性能和擴展能力,包大小也有相當優勢

- 在 Browser 上,不管用 JS 還是 Lua,都只能跑小遊戲

- 在桌面 Browser 上,Lua / JS 解決方案都不存在性能問題

既然這樣,為什麼不用 Lua 呢?!

我們團隊計劃在 2015Q1 就搞定這個事情,嘿嘿。

~

總結:

- 在手機 Browser,只能跑小遊戲,不管你用 JS/TS 還是 XXX

- 在 Native/Hybrid,Lua 是最理想的選擇

- 在桌面 Browser,Lua 不久之後就能跑,性能和 JS 同一級別


關於技術的部分大家已經討論的足夠深入了,我說些不同的角度。

對於做事的人心懷敬意,多鼓勵,少挖苦。

當你們搜了幾篇文章,看到了各種否定HTML5新聞的時候。當你們真正動手寫了幾個HTML5的應用發現問題多多的時候。當你聽你做過HTML5的哥們跟你們訴苦的時候。你們覺得HTML5這事兒沒戲。

大家都是正常人,Egret團隊的人難道不看新聞,不開發APP,聽不到大家的抱怨么?

如果他們也像大家這樣,一句話否定了,那也許就沒有後面的這麼多日日夜夜了。他們不僅非常了解這些問題,他們更是努力的著手去解決這些問題,他們優化HTML5的性能,搭建完整的工作流,從而降低大家進入HTML5的門檻,把HTML5的缺陷逐一的解決。

他們把開發者覺得最臟最累的那部分活兒攬下來,每一個工具的背後,都是一個個工程師在無數個日日夜夜一行一行敲出來的。

他們做的事情有百利而無一害,無論是平台,開發者,還是玩家,都少了一個障礙,多了一個新的選擇。

作為一名開發者,同時也是一名玩家,我很慶幸有Egret這樣的團隊,能幫我們去解決我們自己無法解決的問題。

更讓我覺得自豪的是,這是一支中國團隊。我們總抱怨中國人缺乏創新,只會山寨。現在有這麼一支團隊,他們在解決HTML5的問題上走在了世界前面,他們不跟風,不山寨。

對於這樣的團隊,我會毫無保留的表達出我的敬意與鼓勵,也希望更多的人認識到,我們需要他們。

期待將來有更多這樣的團隊出現,致力於為我們解決各種問題。

這個世界總要有一幫做事的人,不要寒了他們的心。


html5 雖是個好東西 但是在遊戲方面 我只能呵呵了,還是lua靠譜


一句話,只要w3c和whatwg不同心協力html5成不了主流。

不過就技術而言Egret引擎本身還是不錯的,但今後命運什麼樣不好說,因為它的命運完全被掌握在html5的兩大標準組織手中。

有興趣的可來討論。


推薦閱讀:

知乎回答問題編輯框用 Ctrl+V 粘貼圖片是如何實現的?
HTML靜態頁面與CSS該如何審查代碼?
HTML5 真能代替 Flash 嗎?
YouTube使用html5是怎麼管理廣告的?
SVG 格式的動畫用什麼工具來做?

TAG:遊戲開發 | 手機遊戲 | 遊戲引擎 | HTML5 |