用Flash、HTML5和Unity開發網頁遊戲的現實

發表於2011-11-11

今天對於全球的Flash開發者來說是黑暗的一天,因為Adobe宣佈將不再對移動裝置上的瀏覽器進行Flash技術支援。在這之前,Adobe剛剛宣佈了公司範圍內的大幅度裁員。儘管這似乎並不是什麼嚴重的問題,但是這卻又使“Flash hate wagon”開始轉動。

首先,我只關心基於網頁的遊戲開發。因此,這篇文章只關注這個主題。這並不是一篇關於Flash和HTML5的爭論文章, 也不是教你如何在移動裝置上搭建應用程式。所以,這篇文章純粹的是關注當今開發web game的現實。

我比較了Flash,HTML5,Unity,因為他們是當今唯一可行的web game開發平臺。我列了10個主題來比較他們:

  • 開發流程 – 用它來開發一個遊戲有多容易?
  • 平臺穩定性 – 當你開始和結束開發遊戲這段時間內,它會發生改變嗎?
  • 向後相容性 – 用它開發的遊戲10年後還能執行嗎?
  • 移動性 – 移動裝置的支援
  • 打包與分發 – 如何流通
  • 安全性 – 程式碼和智慧財產權保護
  • 貨幣化 – 如何運營賺錢
  • Facebook – 社交遊戲的角度
  • 多少人會玩你的遊戲
  • 3D支援 – Stage3D vs. WebGL vs. Unity

 

上述的方面我認為是所有遊戲開發者在評估一個新的開發平臺時都應該注意的。我希望這些建議對新老Flash開發者來說都會有所幫助。

1.開發流程

Flash:用Flash來開發遊戲非常簡單。因為關於它有無數的書籍,網站,教程,框架,視訊和原始碼。對於開發工具來說,Flex route是免費的,Flash IDE需要付費。Flash擁有通用且強大的向量渲染功能,這意味這你建立的動畫的檔案格式會非常小。它全面支援音訊和大多數的Adobe應用程式,例如在Flash IDE中嵌入Illustrator 和 Photoshop。而且Flash還有大量的內建功能。

HTML5:編輯器例如JetBrains 的Astella會使程式設計變的不那麼痛苦。有一些優秀的除錯工具使瀏覽器除錯也非常簡單。有許多關於HTML5遊戲開發的書籍,網站,線上資源和示例程式。開發HTML5遊戲的工具是免費,但是也有商業的工具,例如GameMaker HTML5 和Game Salad。如果你想讓程式效率更高,並且你不怎麼關注底層執行機制,你可以使用特定的的庫類似ImpactJS。

Unity:有一個優秀的視覺化編輯器,並且可以嵌入主流的3D應用程式中。基礎版本是免費供家庭使用的。也可以在公司裡使用,每年需要交納不到100K $ 的費用。專業版本帶有各種外掛,價格在1500$上下。一旦你有了Unity,大量的教程和資源也隨之提供,所以學習並不是問題。

 

2.平臺穩定性

Flash:Flash是跨平臺的,它不在乎你用的作業系統和瀏覽器是什麼,不管你是破舊的IE或是最新的Chrome。只要你使用的平臺上有Flash Player,對於體驗來說都是一樣的。Adobe每年都會釋出一個新版本和許多現有版本的更新。

HTML5:HTML5一直處於變動中。基於此有2個副作用:第一,即便你什麼都沒有做,你的遊戲仍然有潛在的崩潰可能。這是因為之前你已經升級或使用其他瀏覽器了。第二,你必須考慮多平臺。在Chrome上可以執行只是第一步,你還必須處理IE,Firefox,Safari和各種作業系統。由此帶來的維護成本也不能低估。另外,最大的技術挑戰包括音訊支援以及不一致的畫布渲染速度等。

Unity: Unity的web player擁有和Flash一樣的優勢。Unity的外掛也是跨平臺的。Unity本身也會定期的釋出新功能。

 

3.向後相容性

Flash:10年前,用AS1製作的遊戲仍舊可以在現在的Flash Player11上執行。向後相容性十分出色。

HTML5:對於HTML5來說,比較向後相容性有點不公平,因為它還在發展中。這意味著,如果它不符合W3C標準,就會被廢棄。

Unity:Unity並不支援以前的外掛,最開始我開期待它會像Flash一樣,但似乎並不是這樣。

 

4.移動性

Flash:直到今天前,我可以說,除了iOS平臺,Flash外掛對於移動平臺的支援是偉大的。 但是Adobe官方宣佈已經不再對移動裝置上的Flash Player外掛繼續支援了,你可以認為它已經完全死了。當然你可以通過AIR來建立移動應用程式,但是這些不屬於web game的範疇,所以我們不在此進行深入討論。Stage3D對於移動的支援並不成熟,隨著許多硬體廠商的合併,以及逐漸老化的AVM,對於Adobe的開發者來說是一場艱難的戰爭。種種跡象表明,在重建過程中,Adobe已經把Oliver Goldman從AIR團隊中調到雲專案。Oliver在AIR中是核心人物,至於結果怎樣,只能仁者見仁了。

HTML5:HTML5對於移動的支援力度越來越強,iOS5上已經看到了效能的明顯提升。當移動瀏覽器開始介入這些新特性,例如觸控事件和加速度的支援,我對於HTML5的前景逐漸看好。當然,你必須處理不同的螢幕解析度和畫面比例,但是這個問題不是隻有HTML5有。

Unity:Unity並不支援移動瀏覽器上的外掛。考慮到Unity的強項在於原生移動應用程式的編譯,我能理解原因。

 

5.打包與分發

Flash:Flash的遊戲最終都壓縮成一個SWF檔案。SWF檔案可以簡單地通過帶有HTTP服務的網站進行傳輸。或者,它可以鎖定到一個具體的URL上。Flash遊戲的入口網站完全基於SWF檔案的流動方式。SWF檔案傳播地越廣,你掙的錢就越多。

HTML5:對於HTML5的遊戲來說,沒有跨平臺或者統一的打包方式。那些最大的遊戲入口網站都不允許開發者上傳遊戲。我認為是因為涉及到安全問題,它們不允許在站點上執行外來的JS程式。這就意味著傳播HTML5遊戲的唯一方式就是通過URL共享到一個目的站點,或者通過iFrame來嵌入。最終,是由開發者或贊助商來為給他們的遊戲提供上傳站點的主機費用買單。Flash傳播遊戲的方式是從站點來取出SWF檔案,然後hosting這些SWF檔案。這聽起來不那麼臭名招住,因為這的確是Flash掙錢的方式。入口網站可以使用帶有沙箱引數設定的iFrame,但是這樣做會阻止HTML5遊戲需要使用的特性,例如本地儲存和表單。

Unity:Unity和Flash類似,因為它也會最終建立出一個單一檔案,然後上傳到遊戲入口網站,例如Kongregate。

 

6.安全性

Flash:SWF並不完美,但至少它能打包你所有的資源和程式碼到一個單一的檔案,這就需要對它本身的技術很瞭解或者第三方的軟體才能破解它。市場上有很多SWF保護服務和程式碼混淆軟體,基本上可以防止隨意的黑客和盜賊。

HTML5: JS程式碼可以混淆,但是不能被未加密的客戶端加密。在記憶體中執行時,程式碼很容易被修改。圖形和音訊內容極容易被盜,可以通過Chrome或者Firefox的物件檢查器,甚至通過瀏覽器的快取資料夾。有人認為有一些保護HTML5資產的方式,並且認為Flash的資產一樣容易被盜用。我不打算進入檔案保護的辯論,我只想說,可以用來保護HTML5資產的方法都可以應用到Flash中。

Unity:和Flash類似。如果什麼人有足夠的決心來盜取它的資產,他會需要相當多的技術知識。

 

7.貨幣化

Flash:有許多很好的方式來掙錢,包括:遊戲贊助,在遊戲中的廣告,與遊戲入口網站的收入分成,廣告分成,遊戲中的交易,僱傭式遊戲打工等等。我知道很多開發者完全不需要贊助商,只需要遊戲和廣告收入分成。網路中有大量為廣告服務的API,只需要簡單的上傳你的遊戲,就可以等到長期收入分成。

HTML5: 存在一些遊戲中的廣告服務,也可以把Google廣告放在遊戲中。我還沒看到任何HTML5的遊戲贊助市場或者收入分成交易。在遊戲中的交易服務,比如Fortumo,已經存在和完善。

Unity:這裡我不太懂,也許讀者可以補充。

 

8.Facebook

Flash:Facebook上最流行的遊戲都是用的Flash。The Sims Social每個月3600萬的玩家使用的都是Flash。新的水果忍者同樣使用Flash,並且會用到Flash 11的新特性。絕大部分的Zynga遊戲也都使用Flash。之所以會這樣,是因為Flash的受眾,現有的技能(Flash開發者眾多)和簡單的開發流程。同時在Facebook上可以有很多方式來掙錢,因為它有大量的第三方服務和API介面。
HTML5: 我努力在Facebook上尋找最流行的純HTML5遊戲。當然肯定會有一些,因此,如果你找到了請帖連結。Zynga在2010年就收購了Dextrose,但是我還沒看到什麼結果。一些公司已經發布HTML5遊戲到Facebook上,比如OMGPOP的Gem Rush,每日使用者10人。但是Gem Rush只是用了HTML5的API,遊戲本身還是Flash的!因此我的結論,目前為止,Facebook上最大的玩家群體還是使用Flash。

Unity:看上去Unity遊戲在Facebook上也有一些贏利點。如UberStrike (每個月83萬玩家) 和King’s Bounty(每個月2萬玩家)。只要遊戲內容足夠吸引人,Facebook的使用者也不方隊安裝Unity外掛。

 

9.多少人會玩你的遊戲

Flash:因為事實上,很多桌面使用者都連線到網際網路玩遊戲,所以Flash的使用者數量是巨大的。一個標準的Flash遊戲在第一年通常有2-3百萬次的訪問量。好的Flash遊戲當然次數更多。我們的遊戲Home Sheep Home一上線就有每天1百萬的訪問量,在18個月內已經有1億的訪問量。這是一個驚人的數字。加上Facebook巨大的使用者群,一定會有成百上千的使用者在玩Flash遊戲,玩家完全不是你的問題。

HTML5: 老實說,我無法找到任何相關資料,可能這個技術太新了,也沒有用它做出來的好遊戲。從技術上講,可以說,潛在的使用者可以有10億,但是究竟事實上能有多少,開發者可以試試。

Unity:雖然Unity官方宣告瞭玩家的數量,但是並沒有第三方的統計。Kongregate上只有總共577000的訪問量。而最好的Flash的遊戲已經有2500萬的訪問量。事實上,排名前一百的Flash遊戲沒有低於250萬的訪問量。

 

10.3D支援

Flash:Flash Play 11引入了Stage3D,它本質上是OpenGL ES 2.0。Adobe已經做了一個標準化的工作來實現它,但是也有一大堆注意事項。首先,遊戲需要用wmode=direct來嵌入。而大多數的遊戲入口網站還不支援,所以如果你的遊戲放到一個不支援它的門戶上,它根本不會執行3D硬體。其次,不支援GPU的黑名單很令人喪氣。任何2009年前的驅動程式無法工作;最常見的英特爾GMAS(板載圖形晶片)也無法工作。而在2007年,90%的個人電腦都用了因特爾GMAS,這是個真正的大問題。當然Adobe必須要劃一條線,但是Flash的吸引力在於它無所謂執行在什麼樣的硬體上。如果你用了Stage3D,實際上你已經把巨大的潛在玩家拋棄了。所以必須非常小心的選擇這條路,確保你能儘快的回收資本。

HTML5: 在這裡我們談WebGL。它和Stage3D在技術層面上有很多相似點,但是在很多關鍵領域有缺陷:不能全屏,沒有滑鼠捕獲(Flash Player11.2支援),沒有多重渲染目標,沒有instanced drawing等等。在Autodesk的部落格上有一片很好的文章說了這些問題。當然這些只是短期內的技術難點,並且最終將可以被克服。WebGL最大的問題在於Microsoft目前的立場是不支援它。Microsoft不是WebGL工作組的成員,而且不支援WebGL的任何格式。由於IE瀏覽器仍然有很大的佔有率,所以這個不容忽視。

Unity:Unity當然支援3D。在有限的測試中,Unity結果完美。當然你需要安裝Unity的瀏覽器外掛。但是如果你知道你的遊戲玩家足夠,那麼Unity仍然是目前最好的3D遊戲解決方案。Unity宣稱將支援匯出Unity遊戲成Flash格式,而且不會有Stage3D帶來的GPU黑名單問題。我真想把錢給Unity,讓他們能夠在不遠的將來能夠把Unity遊戲匯出成WebGL格式。

smackdown

提示:這篇譯文翻譯了大部分原文,英文原文後面還有有關“Adobe將會多久支援Flash播放器”和“Flash遊戲開發人員該如何應對”的內容討論。

 

相關文章