自學開發筆記,有興趣的同學請關注微信WiGameFun,不定時分享游戲開發相關技術。有不對的地方煩請指點修正。
樂游舫(WiGameFun)
Egret是Forward學習的第三款游戲開發引擎,這里計劃專門用一個系列來記錄自己的學習心得,如果有不對的地方希望能幫我指正。
安裝Egret引擎
不論使用哪一款引擎,都存在搭建開發環境的問題。Egret的學習也不例外。首先從官網鏈接下載Egret引擎安裝包,下載完成后雙擊執行安裝,如下圖所示:
https://www.egret.com/products/engine.html
安裝完成之后啟動,我們可以看到如下圖的啟動頁面:
注冊Egret賬號并登錄,并在引擎頁簽,選擇我們要使用的引擎版本號,點擊下載:
點擊“安裝本地版本”,將上一步中下載好的安裝包拖入該頁面中,完成安裝即可。
安裝Egret開發工具
在安裝好Egret引擎之后,我們選擇“工具”頁簽,選擇需要的開發工具,下載并安裝。這里簡單做一下說明。
Egret Wing:Egret邏輯開發的代碼編輯器。
DrangonBones:動畫編輯器,可以幫助我們進行骨骼動畫和序列幀動畫的編輯。
Texture Merger:圖集處理工具,幫助我們對游戲中使用的資源圖片進行處理,方便在游戲中使用。
Egret Feather:粒子編輯器,游戲中使用的焰火、雪花等粒子效果都可以使用這個編輯器來制作。
LakeShore:游戲編輯器,使用LakeShore,用戶可以不用編寫代碼就能完成游戲制作,同時使用這款工具制作的游戲Windows、Android、IOS、Phone平臺上運行。
Egret Inspector:Chrom調試插件,幫助開發者可視化的調試游戲。
Egret Android Support:支持將Egret開發的Html5游戲轉化為Android App產品。
Egret iOS Support:支持將Egret開發的Html5游戲轉化為iOS App產品。
創建項目
安裝好開發工具之后我們來創建一個Egret項目,如下圖中所示,我們在“項目”頁簽點擊“創建項目”,并填入項目名稱、路徑、類型,選擇擴展庫、引擎版本號,以及界面尺寸、縮放模式等信息后即可完成項目創建。
創建OK,使用Egret Wing工具打開剛剛創建的項目,如下圖中標識的區域,在Egret Wing中我們可以編輯、保存代碼,并編譯運行查看執行效果。
在菜單欄中選擇“項目”——“構建”——“調試”,查看運行結果。
為移動游戲引擎的后來者,Egret的出現一開始著實令我們困惑;而當我們得知Egret是一個基于Html5的開發引擎時,更多的問題開始涌現:
● 現在移動游戲領域已經是Unity 3D和Cocos2dx的天下,Egret準備如何殺出一條血路?
● Html5一直被認為性能低下、難堪大任,Egret又為什么選擇這個標準作為引擎的核心?
● 作為一個開源的游戲引擎,Egret如何避免其它免費開源引擎的老路,實現真正的商業化?
帶著這樣的問題,葡萄君來到了Egret公司所在地,和Egret的陳書藝(CEO和聯合創始人)以及馬鑒(聯合創始人)進行了對話,我們嘗試從一個新興HTML5游戲引擎開發商的角度,來看看這個此前已經陷入低谷的開發技術,現在正站在一個什么樣的時間節點上。
以下是整理過的對話記錄。
Q: 你們的引擎是基于Html5的,但是被寄予厚望的Html5一直沒有達到業界期望的規模,你們認為是什么原因呢?
陳: 我們內部認為有幾個原因。首先還是環境的原因。一開始,Html5這個概念拋出來的時候大家的預期太高了。尤其是當喬布斯說蘋果不再支持Flash,移動的未來是屬于Html5的時候,很多人就把HTML5炒得很高。但是當時硬件的能力還不行,11年的手機甚至沒有GPU,不支持硬件加速渲染;而蘋果也沒有提供API給硬件加速。
第二個問題是網絡。直到今天,4G才剛開始鋪設;當時的3g的覆蓋不夠到位,不具備能支持Html5的網絡環境。
第三個比較重要的問題是沒有成體系的引擎和工具,市面上只有JAVASCRIPT框架和很小很輕量級的東西。前輩里比較關注Html5的磊友等廠商都在做內容本身,而不是對引擎和工具進行完善。我的同事馬鑒可以補充一下,他之前在Adobe一直站在比較高的高度看問題,看到的東西可能多一點。
馬:09年的時候,大家對HTML5抱的希望確實太高了。它一下子被喬布斯推到了web技術的焦點。所有人都去轉向HTML5的時候,但大多數人并沒有真正理解HTML5能帶來什么。但為什么這兩年會有一個很大的契機呢?是因為移動互聯網變得成熟了。每個人都有一臺或者幾臺智能設備,智能設備上多渠道的內容呈現就是HTML5的核心價值所在。Web的內容是無所不在的,不僅僅出現在原生市場上,還在瀏覽器上,甚至于廣義的嵌入Web View的方式——比如百度輕應用或者微信——其實都可以把很多HTML5的內容放進去。我覺得這個時候才是HTML5技術真正適合被商業化的時候。再者,移動互聯網的硬件革命帶來了處理速度、存儲容量和顯示技術的提高,還有可穿戴設備的智能化,使得太多內容需要被呈現。這個時候,移動互聯網行業沒有Flash Player這樣的播放器插件技術、沒有這樣廣泛的標準的問題才凸顯出來,這時候HTML5才能為大家所用。
陳:分兩個層面再補充一下。技術層面上,以前有很多人去做HTML5游戲,都用JavaScript去寫。這樣會面對兩個問題,首先JavaScript是弱類型的,所以HTML5給人的印象是只能做一些表現力很弱的、很卡的游戲,包括聲音也有問題,沒有被廣泛的支持,只能放背景音樂。對于工程學來說,開發游戲維護起來非常困難,代碼越寫越亂、越寫越多。所以我們通過微軟的TypeScript語言來解決這個問題,用TypeScript寫然后再編譯成JavaScript。TypeScript是一個強類型的語言,而且是JavaScript的超集,也就是說你可以JavaScript和TypeScript混著寫。使用TypeScript寫,首先語法和AS3很像,其次它是一個強類型的語言,比較容易像C++那樣去維護。
商業層面上,可以參考PC時代的步伐:先單機、然后弱聯網,然后出現MMO,然后更注重表現力、出現3D。隨著端游越來越大、推廣成本越來越高;即點即玩的頁游的推廣成本低,自然而然就火了。手游現在也開始出現這樣的趨勢,有幾千家手游廠商擠在榜里,大家只能去買積分墻或者去做很強的市場推廣,而不是很注重游戲的品質或者通過口碑的傳播來推廣游戲。現在整個平臺的格局大體要形成了,比如騰訊、百度、360等大廠商都在對渠道進行整合,推廣變得更困難了。現在如果能出現無端或者一兩秒就能進入游戲的,一邊玩一邊加載的產品,這時候渠道會發生一些變化,CP的營銷方式也會發生一些變革。所以今年不僅僅是技術上得到了提升,商業角度來看,移動Web領域也對Html5有很強的需求。
Q:現在市面上有很多Html5的引擎和框架,夢工場還做過一百多種框架的對比,你們定位的差異化在什么地方呢?
馬:我來說一下Egret的思路。我們首先覺得Html5是一個開源技術,國內外加起來的JavaScript庫、框架甚至引擎,都屬于片面地解決了游戲驅動的核心問題,但沒有做很多配套的東西。在Adobe和微軟這樣的級別的公司中有一個很重要的詞語,叫做“工作流(work Flow)”。換句話說,給開發者一個庫或者引擎,他們能做出或大或小的游戲;但是這些庫和引擎拿去商業化運作的時候,會發現做不大,核心原因是不能夠滿足開發者的開發需求,滿足不了社區的開發需求。社區的開發需求是什么呢?是需要一個核心的高效的引擎,同時圍繞這個引擎建立一套上層的為開發人員或開發團隊構建的成熟的工作流。比如說這個引擎要做好,要有GUI,不可能UI都要工程師去手寫代碼。我們做Egret的時候,同時要推進很多項目,其中一大部分都是工具級別的。這些工具都是為引擎的封裝格式所服務的。比如說GUI,UI編輯器,可以給美術、策劃來使用;粒子編輯器,讓美術人員可以用可視化的工具來調整,通過拖拽或者圖形文件的編排,就可以生成一些特效,然后進行文件格式的輸出。然后還有場景編輯器,還有各種平臺發行商的SDK接入的配置環境。
所以說想要引擎成熟起來,必須以引擎為核心打造一套為游戲的團隊中不同的開發角色的完整的工作流。只有把他們串起來,每個人都有工具可以圍繞引擎工作的時候,產品的商業化才算上一臺階,否則就永遠停留在庫或者框架的級別。未來想要實現最后一公里,必須圍繞引擎做框架、工具、服務,把整個服務做好。以這種思路做產品,才有可能成功。
陳:另一個我們比較大的優勢是,我們這套引擎靈感源于flash。Adobe這么多年的積累,被馬鑒移植到這個引擎中,無論是語法、API、工具流,都是圍繞著怎么做一個Web應用去展開的。這樣的好處是我們可以爭取到第一批開發者。他們大都是pc上的頁游開發者,不需要轉型,語法和API都一樣,他們習慣的工具還可以繼續用,比如用Flash做動畫,用Dragonbones做骨骼。以前他們自己開發的地圖編輯器和場景編輯器,稍作改變,只要支持Egret的數據格式就可以繼續使用。對于所有的大頁游廠商來說,轉手游幾乎是零成本。比如墨麟,游戲谷都是我們的典型用戶,他們花費了僅僅兩三個月時間就用Egret開發出游戲。
Q:所以這些頁游廠商是在對引擎進行測試?
陳:對。我們準備六月份公開發布,但已經內測了兩個多月了。這期間已經有頁游廠商開發出很不錯的產品了。
Q:你們說對游戲引擎而言生態非常重要。但是我看官方網站上的時間表,開發相關的工具要到今年8月才開始著手做,這意味著在Egret發布的初期,引擎的生態是不完整的,這時候怎么說服開發者不去用Cocos2dx或者Unity3D呢?
陳:我們的辦法是讓曾經的開發者慣用的工具很簡單地就可以支持Egret。很多過去的開發商他們自己做的工具,只要數據格式支持,我們就可以把他們的數據格式直接轉換為Egret的格式支持。。我們會推出自己的官方編輯器,雖然這是相對靠后的一個事情,但并不影響他們使用Egret。
Q:會考慮像Unity那樣做自己的插件商店嗎?
陳:我們會提供。這也是第三季度到第四季度會推出的東西。
Q:之前和幾個工程師聊了聊Egret,他們很好奇為什么用TypeScript而不用CoffeeScript
馬:TypeScript是微軟官方的一種語言,是JavaScript的超集。它遵循的ECMA Script 6.0是下一代的JavaScript。今年年底,微軟、谷歌和Mozila三個擁有自主技術的瀏覽器巨頭會宣稱在他們的瀏覽器JIT環節支持JavaScript2.0——其實就是ES6。但是現在瀏覽器都是JavaScript1.5的版本,是弱類型的語言,還沒有面向對象的概念,沒有類、沒有命名空間等等。所以從微軟的角度來說,推出TypeScript是幫助web開發者過渡到未來的web開發技術當中。之所以不用CoffeScript去封裝我們的引擎,而選用TYPESCRIPT,是因為TypeScript的語言設計和ActionScript3.0一模一樣,可以幫助幾十萬Flash開發者快速上手Egret。他們一看到我們的語法設計、結構設計就會非常非常熟悉,花很短的時間就能上手。為了知識體系的過渡,我們把flash整個的顯示列表技術和API設計技術用原封不動的語法設計從ActionScript3.0挪到了TypeScript上。這就是剛剛陳總說的,很多用ActionScript3.0的頁游的開發人員,拿到我們的東西知識不會有任何損失。
陳:這個東西是雙向的。對于工程師來說,學習的成本很低。用官方群里的一個開發者的說法來說,“學習Egret甚至不需要看文檔。”對于老板來說,愁的是什么?怎么找C++的工程師,找Unity的開發,因為整個行業都在搶。這導致很多AS3的工程師不得不轉型。原來我做CP,有幾百號工程師,轉型的過程中也非常痛苦。如果我們早做這些事兒(Egret),那些人都可以成為新生的生產力,對老板來說成本變低了很多,對工程師來說又可以發揮自己的作用了。
Q:有提到HTML5的音頻兼容性不好,比如IE10不支持。
陳:這就是我們的另一個核心價值:不僅是寫了很多代碼然后做了一個引擎,我們也有使命去幫助Html5在中國進行推進。所以我們和百度騰訊和瀏覽器公司合作推動他們的瀏覽器去支持游戲需要的API,其中就包括Web Audio。以前支持的不好,其實是因為沒有人去敲這個門,解決這個問題。現在我們做這個引擎,很多人在用了,然后在使用的過程中發現這個問題,再去推動廠商,他們會很愿意解決這個問題。
Q:最后能做到接近原生的程度?
陳:幾乎是可以的,如果能完善起來就沒問題。
Q:時間上有期望值嗎?完善到和原生差不多的程度需要的時間。
馬:我覺得未來一年就可以。因為移動互聯網只用了兩年時間就把端游的生命周期走完了。
陳:其實這個東西就是HTML5標準中的一部分,但因為Html5都是拿來做應用啊,資訊網站啊,用不著這些接口。現在因為Egret出來了,抓住很多開發者做游戲,帶來了更多的游戲內容,有內容要分發了,平臺才意識到需要提供更好的服務,才把這些本該加上的接口加上。之所以預計需要一年的時間,是因為有很多很多的廠商需要去推動,需要一家家去讓他們支持。
Q:有沒有對打包好的游戲,有沒有方便斷點測試的工具?
陳:我們都是live測試。甚至于對Android和iOS的支持都是這樣。用其它引擎做游戲,需要打包出來用模擬器或者裝到手機里面才能看效果,但我們高效很多。你整個編碼過程中都是所見即所得的,在瀏覽器里只要打開debug工具隨時都可以調代碼,隨時都可以看到效果。最終效果滿意了,再去打包,不用打包完了再去調。
Q:這樣通過瀏覽器的應用,在iOS上和蘋果會有沖突嗎?
陳:這是更高層面的問題了。這個首先看蘋果的胸懷了,其次是平臺方都會努力去規避這個風險。Html5游戲是蠻大的一個機會,蘋果會不會覺得這個繞過他們,這可能不是我們引擎的角色能解決的問題。
Q:你們怎么看磊友呢?他們是Html5領域的先行者,而且一直在堅持。
陳:磊友現在是我們的潛在客戶,我們和他們并沒有直接的競爭關系。他們的定位是Html5游戲平臺和游戲內容開發商,但也遇到了同樣的問題:適配,兼容性,性能。
Q:他們做了幾年,沒有技術的沉淀嗎?
陳:這個東西技術門檻很高。馬鑒在Adobe十幾年,才積累下這么一套web渲染的技術和基于web的優化。多泡他們只做了兩三年,想全解決這些是很困難的。與其自己花很大成本去做,不如把這些難點交給Egret來解決,實現他們自己的核心價值,也就是很多好的內容。
馬:做引擎和做工具流門檻是很高的。Flash之所以普及這么廣,是因為有Flash pro,有Photoshop,有Illustrator,然后有很多成熟的工具圍繞著Flash讓你做游戲和應用。這些東西需要很長時間的積累。再者,原來我做Flash Player,知道Web游戲最痛的地方是什么。但是以前沒接觸過Flash Web游戲,而是因為Html5的興起而來做游戲的人,他們基本上沒遇到過這些問題。當他們碰到這些門檻的時候,就很難跨過去。對于磊友來說,他們專注于內容的研發,分發,讓他們去做引擎、工具太不劃算了,用我們的工具是性價比最高的方案。
Q:很多頂尖的引擎商都有自己的研發團隊,你們有計劃建立第一方的研發團隊嗎?
陳:我們自己確實會做一些游戲,但不是通過做游戲來盈利。首先我們覺得一個引擎公司如果不做游戲,很難了解游戲開發者真實的需求。其次開發者的增值服務體系里面,是包括我們幫他們出定制方案,幫他們搭建游戲的框架,甚至幫他們寫部分代碼,解決性能問題等等。所以我們確實會自己研發一些游戲,但只會維持在比較小的規模。
Q:剛剛說到商業化的問題,我們也很好奇你們作為開源的引擎,有什么商業化的構想?
陳:商業模式還在探索和完善的過程中。但我們的引擎一定會是免費并且開源的。我覺得當下的重點是做好引擎本身,服務好開發者,其他人通過我們來獲利。我們的商業模式之一就是和開發者分賬。你們用Egret引擎是免費的,想用增值服務,定制工具,定制方案,解決適配問題、開發難點,只要分一個點的流水給我們就可以了。換個說法,你賺錢了,分給我一點。如果只是試水的項目,那也沒關系。如果我們的工具足夠好用,平臺和開發者會希望我們越做越好,也肯定希望我們越來越強大。所以目前我們不是很愁商業模式,更大的壓力來自于怎么把Egret做成最好的引擎。
Q:有一個開發者說之前用開源引擎做項目,沒想到做到一半的時候開源引擎不維護了,項目受到了很大的影響。這個問題你們是怎么考慮的呢?
陳:我們之前也看到一些同行的做的不錯的引擎框架,但他們多數是社區開源,由一些愛好者聚集在一起做的,而不是像我們這樣進行商業化的運作。我們這個團隊有像馬鑒這樣來自Adobe的高手,帶來了一些以前的同事,包括Starling的參與者,Dragonbones的參與者,還有Flexlite的創始人,在不同的web領域的這些引擎框架的核心作者。我們也在爭取另外兩個很強的人,近期他們會加入。我們希望把這些最優秀的人聚集在一起,通過我的商業化的運作,投資和戰略規劃,能活得更長遠一些。我們很專注,不會又做游戲又做發行,只會專心把引擎做好。我們就是一個很小的公司,有幾十人,有大量的資金支持。未來越多人用我們這個東西,我們就有越多的資金,這個事情可以做的很長久。
Q:Egret編譯的速度如何?
馬:TypeScript的編譯器是微軟的,我們和他們有好幾輪技術會談,關于他們的編譯器的大規模編譯也提了很多建議,這些都是基于我們在Flash AS上的經驗。下周還和微軟有會議,會推進TypeScript編譯器的改進。
Q:Egret當前的目標主要還是2D?
馬:對,今年的路線圖主要還是2D,明年啟動3D相關的開發。
Q:Egret會不會提供一些周邊的工具呢?比如說拼圖工具或者導出工具?
馬:有,比如Flash pro我們就支持,Flash標準的工具流我們已經打通了。Flash動畫可以直接導出為我們的格式,骨骼工具Dragonbone也可以直接使用。我們為了降低轉移成本做了很多工作,比如我們做了一個AS轉TypeScript的工具,轉換完成以后只需要稍微調整一下就可以使用了。
陳:我們還提供了一個GUI系統,只需要做好皮膚和流式布局的方案,很容易就能適應不同屏幕的設備。實際上,我們借鑒了很多Flash上比較成熟的東西。
Q:目前都有哪些開發者進行內測呢?
馬:大概有兩類吧,一類是受邀請的已經開始用Egret做游戲的廠商,另一類是原來用Flash開發的AS3的大牛。我們一共邀請了大概100個左右開發者。他們上手都不用看文檔,一看結構設計就可以開始寫。
陳:這些人在各大頁游CP中可能都是CTO或者游戲主程。他們很自愿地來做小白鼠,來吐槽我們的東西,我們再加以改進。如果這些人都覺得好用了,那其他人就更沒有問題了。
Q:通過Egret打包成原生效率如何?
馬:接近于原生。我們不用瀏覽器渲染,我們寫了一套驅動層,和JavaScript里面做渲染的,比如說Canvas啊,繪圖是一一對應的。
陳:你就這么想,我們直接調用系統底層的觸摸、聲音等等,效率可能是幾倍于web上的。隨著web的提升,這差距會漸漸縮小。音效和音軌方面,原生就完全沒問題。
Q:六月份的Public Beta會有發布會嗎?
陳:如果時機成熟的話,我們可能會在八月的時候為真正的Final版本做發布會。六月份的正式公測所有人都能訪問Github。
Egret是一套完整的HTML5游戲開發解決方案。Egret中包含多個工具以及項目。Egret Engine是一個基于TypeScript語言開發的HTML5游戲引擎,該項目在BSD許可證下發布。
TypeScript是一種由微軟開發的自由和的編程語言。它是的一個超集,而且本質上向這個語言添加了可選的靜態類型和基于類的。,的首席架構師,已工作于TypeScript的開發。2012年十月份,微軟發布了首個公開版本的TypeScript,2013年6月19日,在經歷了一個預覽版之后微軟正式發布了正式版TypeScript 0.9,向未來的TypeScript 1.0版邁進了很大一步。
H5是一系列制作網頁互動效果的技術集合,即H5就是移動端的web頁面。而H5游戲,你可以看作是移動端的web游戲,無需下載軟件即可體驗,這就是H5在傳播上的優勢。對于許多手游玩家來說,H5可能是個十分陌生的名詞,其實H5就是HTML的高級版本,目前H5技術正在不斷完善。
小編已經分享了CAD軟件、C語言基礎、GO語言、Python基礎、CAD基礎、英語基礎、PS基礎、Android開發、AI機器人開發、等一系列基礎視頻,將來會持續分享各類視頻,小編也不求什么回報,只希望大家能用心評論一下文章,點個贊,謝謝。前面的資源關注小編后去文章里面查看。
資源獲取方法1:接下來告訴大家如何獲取資源:轉發、評論、點贊后點擊小編頭像、關注小編后私聊小編"1026"即可免費獲取資源,小編發的所有資源都是免費分享。希望大家能積極轉發讓跟多人看到,給予小編鼓勵與支持,有動力分享資源。
資源獲取方法2:關注小編《微-信》公、z、號:公》Z《號可以直接在鏈接里面獲取資源,不需要回復關鍵詞:所有2天以上的資源只能公》z《號領取
需要更多資源請關注,長按保存圖片,然后去微信掃描如果私聊沒反應的請關注獲取。或者查看小編微頭條獲取號
*請認真填寫需求信息,我們會在24小時內與您取得聯系。