來源:http://www./archi ... ash-html5-and-unity
2011年11月10日的一篇非常詳盡的文章。從工作流、平臺穩(wěn)定性、移動終端等10個方面詳細闡述對比了用Flash,HTML5和Unity開發(fā)網(wǎng)頁游戲。
今天對于全球的Flash開發(fā)者來說是黑暗的一天,因為Adobe宣布將不再對移動設(shè)備上的瀏覽器進行Flash技術(shù)支持。在這之前,Adobe剛剛宣布 了公司范圍內(nèi)的大幅度裁員。盡管這似乎并不是什么嚴重的問題,但是這卻又使“Flash hate wagon”開始轉(zhuǎn)動。
首先,我只關(guān)心基于網(wǎng)頁的游戲開發(fā)。因此,這篇文章只關(guān)注這個主題。這并不是一篇關(guān)于Flash和HTML5的爭論文章, 也不是教你如何在移動設(shè)備上搭建應(yīng)用程序。所以,這篇文章純粹的是關(guān)注當今開發(fā)web game的現(xiàn)實。
我比較了Flash,HTML5,Unity,因為他們是當今唯一可行的web game開發(fā)平臺。我列了10個主題來比較他們:
- 開發(fā)流程 – 用它來開發(fā)一個游戲有多容易?
- 平臺穩(wěn)定性 – 當你開始和結(jié)束開發(fā)游戲這段時間內(nèi),它會發(fā)生改變嗎?
- 向后兼容性 – 用它開發(fā)的游戲10年后還能運行嗎?
- 移動性 – 移動設(shè)備的支持
- 打包與分發(fā) – 如何流通
- 安全性 – 代碼和知識產(chǎn)權(quán)保護
- 貨幣化 – 如何運營賺錢
- Facebook – 社交游戲的角度
- 多少人會玩你的游戲
- 3D支持 – Stage3D vs. WebGL vs. Unity
上述的方面我認為是所有游戲開發(fā)者在評估一個新的開發(fā)平臺時都應(yīng)該注意的。我希望這些建議對新,老Flash開發(fā)者來說都會有所幫助。
1.開發(fā)流程
Flash: 用Flash來開發(fā)游戲非常簡單。因為關(guān)于它有無數(shù)的書籍,網(wǎng)站,教程,框架,視頻和源代碼。對于開發(fā)工具來說,F(xiàn)lex route是免費的,F(xiàn)lash IDE需要付費。Flash擁有通用且強大的矢量渲染功能,這意味這你創(chuàng)建的動畫的文件格式會非常小。它全面支持音頻和大多數(shù)的Adobe應(yīng)用程序,例如 在Flash IDE中嵌入Illustrator 和 Photoshop。而且Flash還有大量的內(nèi)置功能。
HTML5:編輯器例 如JetBrains 的Astella會使編程變的不那么痛苦。有一些優(yōu)秀的調(diào)試工具使瀏覽器調(diào)試也非常簡單。有許多關(guān)于HTML5游戲開發(fā)的書籍,網(wǎng)站,在線資源和示例程 序。開發(fā)HTML5游戲的工具是免費,但是也有商業(yè)的工具,例如GameMaker HTML5 和Game Salad。如果你想讓程序效率更高,并且你不怎么關(guān)注底層運行機制,你可以使用特定的的庫類似ImpactJS。
Unity:有一個優(yōu) 秀的可視化編輯器,并且可以嵌入主流的3D應(yīng)用程序中?;A(chǔ)版本是免費供家庭使用的。也可以在公司里使用,每年需要交納不到100K $ 的費用。專業(yè)版本帶有各種插件,價格在1500$上下。一旦你有了Unity,大量的教程和資源也隨之提供,所以學(xué)習(xí)并不是問題。
2.平臺穩(wěn)定性
Flash:Flash是跨平臺的,它不在乎你用的操作系統(tǒng)和瀏覽器是什么,不管你是破舊的IE或是最新的Chrome。只要你使用的平臺上有Flash Player,對于體驗來說都是一樣的。Adobe每年都會發(fā)布一個新版本和許多現(xiàn)有版本的更新。
HTML5:HTML5 一直處于變動中?;诖擞?個副作用:第一,即便你什么都沒有做,你的游戲仍然有潛在的崩潰可能。這是因為之前你已經(jīng)升級或使用其他瀏覽器了。第二,你必 須考慮多平臺。在Chrome上可以運行只是第一步,你還必須處理IE,F(xiàn)irefox,Safari和各種操作系統(tǒng)。由此帶來的維護成本也不能低估。另 外,最大的技術(shù)挑戰(zhàn)包括音頻支持以及不一致的畫布渲染速度等。
Unity: Unity的web player擁有和Flash一樣的優(yōu)勢。Unity的插件也是跨平臺的。Unity本身也會定期的發(fā)布新功能。
3.向后兼容性
Flash:10年前,用AS1制作的游戲仍舊可以在現(xiàn)在的Flash Player11上運行。向后兼容性十分出色。
HTML5:對于HTML5來說,比較向后兼容性有點不公平,因為它還在發(fā)展中。這意味著,如果它不符合W3C標準,就會被廢棄。
Unity:Unity并不支持以前的插件,最開始我開期待它會像Flash一樣,但似乎并不是這樣。
4.移動性
Flash: 直到今天前,我可以說,除了iOS平臺,F(xiàn)lash插件對于移動平臺的支持是偉大的。 但是Adobe官方宣布已經(jīng)不再對移動設(shè)備上的Flash Player插件繼續(xù)支持了,你可以認為它已經(jīng)完全死了。當然你可以通過AIR來創(chuàng)建移動應(yīng)用程序,但是這些不屬于web game的范疇,所以我們不在此進行深入討論。Stage3D對于移動的支持并不成熟,隨著許多硬件廠商的合并,以及逐漸老化的AVM,對于Adobe的 開發(fā)者來說是一場艱難的戰(zhàn)爭。種種跡象表明,在重建過程中,Adobe已經(jīng)把Oliver Goldman從AIR團隊中調(diào)到云項目。Oliver在AIR中是核心人物,至于結(jié)果怎樣,只能仁者見仁了。
HTML5:HTML5對于移動的支持力度越來越強,iOS5上已經(jīng)看到了性能的明顯提升。當移動瀏覽器開始介入這些新特性,例如觸摸事件和加速度的支持,我對于HTML5的前景逐漸看好。當然,你必須處理不同的屏幕分辨率和畫面比例,但是這個問題不是只有HTML5有。
Unity:Unity并不支持移動瀏覽器上的插件。考慮到Unity的強項在于原生移動應(yīng)用程序的編譯,我能理解原因。
5.打包與分發(fā)
Flash:Flash的游戲最終都壓縮成一個SWF文件。SWF文件可以簡單地通過帶有HTTP服務(wù)的網(wǎng)站進行傳輸。或者,它可以鎖定到一個具體的URL上。Flash游戲的門戶網(wǎng)站完全基于SWF文件的流動方式。SWF文件傳播地越廣,你掙的錢就越多。
HTML5: 對于HTML5的游戲來說,沒有跨平臺或者統(tǒng)一的打包方式。那些最大的游戲門戶網(wǎng)站都不允許開發(fā)者上傳游戲。我認為是因為涉及到安全問題,它們不允許在站 點上運行外來的JS程序。這就意味著傳播HTML5游戲的唯一方式就是通過URL共享到一個目的站點,或者通過iFrame來嵌入。最終,是由開發(fā)者或贊 助商來為給他們的游戲提供上傳站點的主機費用買單。Flash傳播游戲的方式是從站點來取出SWF文件,然后hosting這些SWF文件。這聽起來不那 么臭名招住,因為這的確是Flash掙錢的方式。門戶網(wǎng)站可以使用帶有沙箱參數(shù)設(shè)置的iFrame,但是這樣做會阻止HTML5游戲需要使用的特性,例如 本地存儲和表單。
Unity:Unity和Flash類似,因為它也會最終創(chuàng)建出一個單一文件,然后上傳到游戲門戶網(wǎng)站,例如Kongregate。
6.安全性
Flash:SWF并不完美,但至少它能打包你所有的資源和代碼到一個單一的文件,這就需要對它本身的技術(shù)很了解或者第三方的軟件才能破解它。市場上有很多SWF保護服務(wù)和代碼混淆軟件,基本上可以防止隨意的黑客和盜賊。
HTML5: JS代碼可以混淆,但是不能被未加密的客戶端加密。在內(nèi)存中運行時,代碼很容易被修改。圖形和音頻內(nèi)容極容易被盜,可以通過Chrome或者 Firefox的對象檢查器,甚至通過瀏覽器的緩存文件夾。有人認為有一些保護HTML5資產(chǎn)的方式,并且認為Flash的資產(chǎn)一樣容易被盜用。我不打算 進入文件保護的辯論,我只想說,可以用來保護HTML5資產(chǎn)的方法都可以應(yīng)用到Flash中。
Unity:和Flash類似。如果什么人有足夠的決心來盜取它的資產(chǎn),他會需要相當多的技術(shù)知識。
7.貨幣化
Flash: 有許多很好的方式來掙錢,包括:游戲贊助,在游戲中的廣告,與游戲門戶網(wǎng)站的收入分成,廣告分成,游戲中的交易,雇傭式游戲打工等等。我知道很多開發(fā)者完 全不需要贊助商,只需要游戲和廣告收入分成。網(wǎng)絡(luò)中有大量為廣告服務(wù)的API,只需要簡單的上傳你的游戲,就可以等到長期收入分成。
HTML5: 存在一些游戲中的廣告服務(wù),也可以把Google廣告放在游戲中。我還沒看到任何HTML5的游戲贊助市場或者收入分成交易。在游戲中的交易服務(wù),比如Fortumo,已經(jīng)存在和完善。
Unity:這里我不太懂,也許讀者可以補充。
8.Facebook
Flash:Facebook 上最流行的游戲都是用的Flash。The Sims Social每個月3600萬的玩家使用的都是Flash。新的水果忍者同樣使用Flash,并且會用到Flash 11的新特性。絕大部分的Zynga游戲也都使用Flash。之所以會這樣,是因為Flash的受眾,現(xiàn)有的技能(Flash開發(fā)者眾多)和簡單的開發(fā)流 程。同時在Facebook上可以有很多方式來掙錢,因為它有大量的第三方服務(wù)和API接口。
HTML5: 我努力在Facebook上尋找最流行的純HTML5游戲。當然肯定會有一些,因此,如果你找到了請?zhí)溄?。Zynga在2010年就收購了 Dextrose,但是我還沒看到什么結(jié)果。一些公司已經(jīng)發(fā)布HTML5游戲到Facebook上,比如OMGPOP的Gem Rush,每日用戶10人。但是Gem Rush只是用了HTML5的API,游戲本身還是Flash的!因此我的結(jié)論,目前為止,F(xiàn)acebook上最大的玩家群體還是使用Flash。
Unity:看上去Unity游戲在Facebook上也有一些贏利點。如UberStrike (每個月83萬玩家) 和King’s Bounty(每個月2萬玩家)。只要游戲內(nèi)容足夠吸引人,F(xiàn)acebook的用戶也不方隊安裝Unity插件。
9.多少人會玩你的游戲
Flash: 因為事實上,很多桌面用戶都連接到互聯(lián)網(wǎng)玩游戲,所以Flash的用戶數(shù)量是巨大的。一個標準的Flash游戲在第一年通常有2-3百萬次的訪問量。好的 Flash游戲當然次數(shù)更多。我們的游戲Home Sheep Home一上線就有每天1百萬的訪問量,在18個月內(nèi)已經(jīng)有1億的訪問量。這是一個驚人的數(shù)字。加上Facebook巨大的用戶群,一定會有成百上千的用 戶在玩Flash游戲,玩家完全不是你的問題。
HTML5: 老實說,我無法找到任何相關(guān)數(shù)據(jù),可能這個技術(shù)太新了,也沒有用它做出來的好游戲。從技術(shù)上講,可以說,潛在的用戶可以有10億,但是究竟事實上能有多少,開發(fā)者可以試試。
Unity:雖然Unity官方聲明了玩家的數(shù)量,但是并沒有第三方的統(tǒng)計。Kongregate上只有總共577000的訪問量。而最好的Flash的游戲已經(jīng)有2500萬的訪問量。事實上,排名前一百的Flash游戲沒有低于250萬的訪問量。
10.3D支持
Flash:Flash Play 11引入了Stage3D,它本質(zhì)上是OpenGL ES 2.0。Adobe已經(jīng)做了一個標準化的工作來實現(xiàn)它,但是也有一大堆注意事項。首先,游戲需要用wmode=direct來嵌入。而大多數(shù)的游戲門戶網(wǎng) 站還不支持,所以如果你的游戲放到一個不支持它的門戶上,它根本不會運行3D硬件。其次,不支持GPU的黑名單很令人喪氣。任何2009年前的驅(qū)動程序無 法工作;最常見的英特爾GMAS(板載圖形芯片)也無法工作。而在2007年,90%的個人電腦都用了因特爾GMAS,這是個真正的大問題。當然 Adobe必須要劃一條線,但是Flash的吸引力在于它無所謂運行在什么樣的硬件上。如果你用了Stage3D,實際上你已經(jīng)把巨大的潛在玩家拋棄了。 所以必須非常小心的選擇這條路,確保你能盡快的回收資本。
HTML5: 在這里我們談WebGL。它和Stage3D在技術(shù)層面上有很多相似點,但是在很多關(guān)鍵領(lǐng)域有缺陷:不能全屏,沒有鼠標捕獲(Flash Player11.2支持),沒有多重渲染目標,沒有instanced drawing等等。在Autodesk的博客上有一片很好的文章說了這些問題。當然這些只是短期內(nèi)的技術(shù)難點,并且最終將可以被克服。WebGL最大的 問題在于Microsoft目前的立場是不支持它。Microsoft不是WebGL工作組的成員,而且不支持WebGL的任何格式。由于IE瀏覽器仍然 有很大的占有率,所以這個不容忽視。
Unity:Unity當然支持3D。在有限的測試中,Unity結(jié)果完美。當然你需要安裝 Unity的瀏覽器插件。但是如果你知道你的游戲玩家足夠,那么Unity仍然是目前最好的3D游戲解決方案。Unity宣稱將支持導(dǎo)出Unity游戲成 Flash格式,而且不會有Stage3D帶來的GPU黑名單問題。我真想把錢給Unity,讓他們能夠在不遠的將來能夠把Unity游戲?qū)С龀? WebGL格式。