來(lái)源:http://www.photonstorm.com/archi ... ash-html5-and-unity
2011年11月10日的一篇非常詳盡的文章。從工作流、平臺穩定性、移動(dòng)終端等10個(gè)方面詳細闡述對比了用Flash,HTML5和Unity開(kāi)發(fā)網(wǎng)頁(yè)游戲。
今天對于全球的Flash開(kāi)發(fā)者來(lái)說(shuō)是黑暗的一天,因為Adobe宣布將不再對移動(dòng)設備上的瀏覽器進(jìn)行Flash技術(shù)支持。在這之前,Adobe剛剛宣布了公司范圍內的大幅度裁員。盡管這似乎并不是什么嚴重的問(wèn)題,但是這卻又使“Flash hate wagon”開(kāi)始轉動(dòng)。
首先,我只關(guān)心基于網(wǎng)頁(yè)的游戲開(kāi)發(fā)。因此,這篇文章只關(guān)注這個(gè)主題。這并不是一篇關(guān)于Flash和HTML5的爭論文章, 也不是教你如何在移動(dòng)設備上搭建應用程序。所以,這篇文章純粹的是關(guān)注當今開(kāi)發(fā)web game的現實(shí)。
我比較了Flash,HTML5,Unity,因為他們是當今唯一可行的web game開(kāi)發(fā)平臺。我列了10個(gè)主題來(lái)比較他們:
- 開(kāi)發(fā)流程 – 用它來(lái)開(kāi)發(fā)一個(gè)游戲有多容易?
- 平臺穩定性 – 當你開(kāi)始和結束開(kāi)發(fā)游戲這段時(shí)間內,它會(huì )發(fā)生改變嗎?
- 向后兼容性 – 用它開(kāi)發(fā)的游戲10年后還能運行嗎?
- 移動(dòng)性 – 移動(dòng)設備的支持
- 打包與分發(fā) – 如何流通
- 安全性 – 代碼和知識產(chǎn)權保護
- 貨幣化 – 如何運營(yíng)賺錢(qián)
- Facebook – 社交游戲的角度
- 多少人會(huì )玩你的游戲
- 3D支持 – Stage3D vs. WebGL vs. Unity
上述的方面我認為是所有游戲開(kāi)發(fā)者在評估一個(gè)新的開(kāi)發(fā)平臺時(shí)都應該注意的。我希望這些建議對新,老Flash開(kāi)發(fā)者來(lái)說(shuō)都會(huì )有所幫助。
1.開(kāi)發(fā)流程
Flash:用Flash來(lái)開(kāi)發(fā)游戲非常簡(jiǎn)單。因為關(guān)于它有無(wú)數的書(shū)籍,網(wǎng)站,教程,框架,視頻和源代碼。對于開(kāi)發(fā)工具來(lái)說(shuō),Flex route是免費的,Flash IDE需要付費。Flash擁有通用且強大的矢量渲染功能,這意味這你創(chuàng )建的動(dòng)畫(huà)的文件格式會(huì )非常小。它全面支持音頻和大多數的Adobe應用程序,例如在Flash IDE中嵌入Illustrator 和 Photoshop。而且Flash還有大量的內置功能。
HTML5:編輯器例如JetBrains 的Astella會(huì )使編程變的不那么痛苦。有一些優(yōu)秀的調試工具使瀏覽器調試也非常簡(jiǎn)單。有許多關(guān)于HTML5游戲開(kāi)發(fā)的書(shū)籍,網(wǎng)站,在線(xiàn)資源和示例程序。開(kāi)發(fā)HTML5游戲的工具是免費,但是也有商業(yè)的工具,例如GameMaker HTML5 和Game Salad。如果你想讓程序效率更高,并且你不怎么關(guān)注底層運行機制,你可以使用特定的的庫類(lèi)似ImpactJS。
Unity:有一個(gè)優(yōu)秀的可視化編輯器,并且可以嵌入主流的3D應用程序中?;A版本是免費供家庭使用的。也可以在公司里使用,每年需要交納不到100K $ 的費用。專(zhuān)業(yè)版本帶有各種插件,價(jià)格在1500$上下。一旦你有了Unity,大量的教程和資源也隨之提供,所以學(xué)習并不是問(wèn)題。
2.平臺穩定性
Flash:Flash是跨平臺的,它不在乎你用的操作系統和瀏覽器是什么,不管你是破舊的IE或是最新的Chrome。只要你使用的平臺上有Flash Player,對于體驗來(lái)說(shuō)都是一樣的。Adobe每年都會(huì )發(fā)布一個(gè)新版本和許多現有版本的更新。
HTML5:HTML5一直處于變動(dòng)中?;诖擞?個(gè)副作用:第一,即便你什么都沒(méi)有做,你的游戲仍然有潛在的崩潰可能。這是因為之前你已經(jīng)升級或使用其他瀏覽器了。第二,你必須考慮多平臺。在Chrome上可以運行只是第一步,你還必須處理IE,Firefox,Safari和各種操作系統。由此帶來(lái)的維護成本也不能低估。另外,最大的技術(shù)挑戰包括音頻支持以及不一致的畫(huà)布渲染速度等。
Unity: Unity的web player擁有和Flash一樣的優(yōu)勢。Unity的插件也是跨平臺的。Unity本身也會(huì )定期的發(fā)布新功能。
3.向后兼容性
Flash:10年前,用AS1制作的游戲仍舊可以在現在的Flash Player11上運行。向后兼容性十分出色。
HTML5:對于HTML5來(lái)說(shuō),比較向后兼容性有點(diǎn)不公平,因為它還在發(fā)展中。這意味著(zhù),如果它不符合W3C標準,就會(huì )被廢棄。
Unity:Unity并不支持以前的插件,最開(kāi)始我開(kāi)期待它會(huì )像Flash一樣,但似乎并不是這樣。
4.移動(dòng)性
Flash:直到今天前,我可以說(shuō),除了iOS平臺,Flash插件對于移動(dòng)平臺的支持是偉大的。 但是Adobe官方宣布已經(jīng)不再對移動(dòng)設備上的Flash Player插件繼續支持了,你可以認為它已經(jīng)完全死了。當然你可以通過(guò)AIR來(lái)創(chuàng )建移動(dòng)應用程序,但是這些不屬于web game的范疇,所以我們不在此進(jìn)行深入討論。Stage3D對于移動(dòng)的支持并不成熟,隨著(zhù)許多硬件廠(chǎng)商的合并,以及逐漸老化的AVM,對于A(yíng)dobe的開(kāi)發(fā)者來(lái)說(shuō)是一場(chǎng)艱難的戰爭。種種跡象表明,在重建過(guò)程中,Adobe已經(jīng)把Oliver Goldman從AIR團隊中調到云項目。Oliver在A(yíng)IR中是核心人物,至于結果怎樣,只能仁者見(jiàn)仁了。
HTML5:HTML5對于移動(dòng)的支持力度越來(lái)越強,iOS5上已經(jīng)看到了性能的明顯提升。當移動(dòng)瀏覽器開(kāi)始介入這些新特性,例如觸摸事件和加速度的支持,我對于HTML5的前景逐漸看好。當然,你必須處理不同的屏幕分辨率和畫(huà)面比例,但是這個(gè)問(wèn)題不是只有HTML5有。
Unity:Unity并不支持移動(dòng)瀏覽器上的插件??紤]到Unity的強項在于原生移動(dòng)應用程序的編譯,我能理解原因。

5.打包與分發(fā)
Flash:Flash的游戲最終都壓縮成一個(gè)SWF文件。SWF文件可以簡(jiǎn)單地通過(guò)帶有HTTP服務(wù)的網(wǎng)站進(jìn)行傳輸?;蛘?,它可以鎖定到一個(gè)具體的URL上。Flash游戲的門(mén)戶(hù)網(wǎng)站完全基于SWF文件的流動(dòng)方式。SWF文件傳播地越廣,你掙的錢(qián)就越多。
HTML5:對于HTML5的游戲來(lái)說(shuō),沒(méi)有跨平臺或者統一的打包方式。那些最大的游戲門(mén)戶(hù)網(wǎng)站都不允許開(kāi)發(fā)者上傳游戲。我認為是因為涉及到安全問(wèn)題,它們不允許在站點(diǎn)上運行外來(lái)的JS程序。這就意味著(zhù)傳播HTML5游戲的唯一方式就是通過(guò)URL共享到一個(gè)目的站點(diǎn),或者通過(guò)iFrame來(lái)嵌入。最終,是由開(kāi)發(fā)者或贊助商來(lái)為給他們的游戲提供上傳站點(diǎn)的主機費用買(mǎi)單。Flash傳播游戲的方式是從站點(diǎn)來(lái)取出SWF文件,然后hosting這些SWF文件。這聽(tīng)起來(lái)不那么臭名招住,因為這的確是Flash掙錢(qián)的方式。門(mén)戶(hù)網(wǎng)站可以使用帶有沙箱參數設置的iFrame,但是這樣做會(huì )阻止HTML5游戲需要使用的特性,例如本地存儲和表單。
Unity:Unity和Flash類(lèi)似,因為它也會(huì )最終創(chuàng )建出一個(gè)單一文件,然后上傳到游戲門(mén)戶(hù)網(wǎng)站,例如Kongregate。
6.安全性
Flash:SWF并不完美,但至少它能打包你所有的資源和代碼到一個(gè)單一的文件,這就需要對它本身的技術(shù)很了解或者第三方的軟件才能破解它。市場(chǎng)上有很多SWF保護服務(wù)和代碼混淆軟件,基本上可以防止隨意的黑客和盜賊。
HTML5: JS代碼可以混淆,但是不能被未加密的客戶(hù)端加密。在內存中運行時(shí),代碼很容易被修改。圖形和音頻內容極容易被盜,可以通過(guò)Chrome或者Firefox的對象檢查器,甚至通過(guò)瀏覽器的緩存文件夾。有人認為有一些保護HTML5資產(chǎn)的方式,并且認為Flash的資產(chǎn)一樣容易被盜用。我不打算進(jìn)入文件保護的辯論,我只想說(shuō),可以用來(lái)保護HTML5資產(chǎn)的方法都可以應用到Flash中。
Unity:和Flash類(lèi)似。如果什么人有足夠的決心來(lái)盜取它的資產(chǎn),他會(huì )需要相當多的技術(shù)知識。
7.貨幣化
Flash:有許多很好的方式來(lái)掙錢(qián),包括:游戲贊助,在游戲中的廣告,與游戲門(mén)戶(hù)網(wǎng)站的收入分成,廣告分成,游戲中的交易,雇傭式游戲打工等等。我知道很多開(kāi)發(fā)者完全不需要贊助商,只需要游戲和廣告收入分成。網(wǎng)絡(luò )中有大量為廣告服務(wù)的API,只需要簡(jiǎn)單的上傳你的游戲,就可以等到長(cháng)期收入分成。
HTML5: 存在一些游戲中的廣告服務(wù),也可以把Google廣告放在游戲中。我還沒(méi)看到任何HTML5的游戲贊助市場(chǎng)或者收入分成交易。在游戲中的交易服務(wù),比如Fortumo,已經(jīng)存在和完善。
Unity:這里我不太懂,也許讀者可以補充。
8.Facebook
Flash:Facebook上最流行的游戲都是用的Flash。The Sims Social每個(gè)月3600萬(wàn)的玩家使用的都是Flash。新的水果忍者同樣使用Flash,并且會(huì )用到Flash 11的新特性。絕大部分的Zynga游戲也都使用Flash。之所以會(huì )這樣,是因為Flash的受眾,現有的技能(Flash開(kāi)發(fā)者眾多)和簡(jiǎn)單的開(kāi)發(fā)流程。同時(shí)在Facebook上可以有很多方式來(lái)掙錢(qián),因為它有大量的第三方服務(wù)和API接口。
HTML5: 我努力在Facebook上尋找最流行的純HTML5游戲。當然肯定會(huì )有一些,因此,如果你找到了請帖鏈接。Zynga在2010年就收購了Dextrose,但是我還沒(méi)看到什么結果。一些公司已經(jīng)發(fā)布HTML5游戲到Facebook上,比如OMGPOP的Gem Rush,每日用戶(hù)10人。但是Gem Rush只是用了HTML5的API,游戲本身還是Flash的!因此我的結論,目前為止,Facebook上最大的玩家群體還是使用Flash。
Unity:看上去Unity游戲在Facebook上也有一些贏(yíng)利點(diǎn)。如UberStrike (每個(gè)月83萬(wàn)玩家) 和King’s Bounty(每個(gè)月2萬(wàn)玩家)。只要游戲內容足夠吸引人,Facebook的用戶(hù)也不方隊安裝Unity插件。
9.多少人會(huì )玩你的游戲
Flash:因為事實(shí)上,很多桌面用戶(hù)都連接到互聯(lián)網(wǎng)玩游戲,所以Flash的用戶(hù)數量是巨大的。一個(gè)標準的Flash游戲在第一年通常有2-3百萬(wàn)次的訪(fǎng)問(wèn)量。好的Flash游戲當然次數更多。我們的游戲Home Sheep Home一上線(xiàn)就有每天1百萬(wàn)的訪(fǎng)問(wèn)量,在18個(gè)月內已經(jīng)有1億的訪(fǎng)問(wèn)量。這是一個(gè)驚人的數字。加上Facebook巨大的用戶(hù)群,一定會(huì )有成百上千的用戶(hù)在玩Flash游戲,玩家完全不是你的問(wèn)題。
HTML5: 老實(shí)說(shuō),我無(wú)法找到任何相關(guān)數據,可能這個(gè)技術(shù)太新了,也沒(méi)有用它做出來(lái)的好游戲。從技術(shù)上講,可以說(shuō),潛在的用戶(hù)可以有10億,但是究竟事實(shí)上能有多少,開(kāi)發(fā)者可以試試。
Unity:雖然Unity官方聲明了玩家的數量,但是并沒(méi)有第三方的統計。Kongregate上只有總共577000的訪(fǎng)問(wèn)量。而最好的Flash的游戲已經(jīng)有2500萬(wàn)的訪(fǎng)問(wèn)量。事實(shí)上,排名前一百的Flash游戲沒(méi)有低于250萬(wàn)的訪(fǎng)問(wèn)量。
10.3D支持
Flash:Flash Play 11引入了Stage3D,它本質(zhì)上是OpenGL ES 2.0。Adobe已經(jīng)做了一個(gè)標準化的工作來(lái)實(shí)現它,但是也有一大堆注意事項。首先,游戲需要用wmode=direct來(lái)嵌入。而大多數的游戲門(mén)戶(hù)網(wǎng)站還不支持,所以如果你的游戲放到一個(gè)不支持它的門(mén)戶(hù)上,它根本不會(huì )運行3D硬件。其次,不支持GPU的黑名單很令人喪氣。任何2009年前的驅動(dòng)程序無(wú)法工作;最常見(jiàn)的英特爾GMAS(板載圖形芯片)也無(wú)法工作。而在2007年,90%的個(gè)人電腦都用了因特爾GMAS,這是個(gè)真正的大問(wèn)題。當然Adobe必須要劃一條線(xiàn),但是Flash的吸引力在于它無(wú)所謂運行在什么樣的硬件上。如果你用了Stage3D,實(shí)際上你已經(jīng)把巨大的潛在玩家拋棄了。所以必須非常小心的選擇這條路,確保你能盡快的回收資本。
HTML5: 在這里我們談WebGL。它和Stage3D在技術(shù)層面上有很多相似點(diǎn),但是在很多關(guān)鍵領(lǐng)域有缺陷:不能全屏,沒(méi)有鼠標捕獲(Flash Player11.2支持),沒(méi)有多重渲染目標,沒(méi)有instanced drawing等等。在A(yíng)utodesk的博客上有一片很好的文章說(shuō)了這些問(wèn)題。當然這些只是短期內的技術(shù)難點(diǎn),并且最終將可以被克服。WebGL最大的問(wèn)題在于Microsoft目前的立場(chǎng)是不支持它。Microsoft不是WebGL工作組的成員,而且不支持WebGL的任何格式。由于IE瀏覽器仍然有很大的占有率,所以這個(gè)不容忽視。
Unity:Unity當然支持3D。在有限的測試中,Unity結果完美。當然你需要安裝Unity的瀏覽器插件。但是如果你知道你的游戲玩家足夠,那么Unity仍然是目前最好的3D游戲解決方案。Unity宣稱(chēng)將支持導出Unity游戲成Flash格式,而且不會(huì )有Stage3D帶來(lái)的GPU黑名單問(wèn)題。我真想把錢(qián)給Unity,讓他們能夠在不遠的將來(lái)能夠把Unity游戲導出成WebGL格式。


