Facebook版《憤怒的小鳥》為何選用Flash
譯文【51CTO外電頭條】你是不是想知道為Facebook開發《憤怒的小鳥》的首席Flash程序員究竟是何方神圣?不妨會一會來自《憤怒的小鳥》游戲開發商芬蘭Rovio公司的Ville Koskela。他在這篇獨家采訪中披露了Rovio的開發團隊幕后采用的一些開發技巧。
問:Ville,你好!看到Facebook版《憤怒的小鳥》擁有種種新穎而出色的社交功能,真是讓人驚嘆。
Ville:確實如此!過去的幾周忙得不可開交,因為對于像《憤怒的小鳥》這樣廣受歡迎的品牌,我們確實不得不確保第一個版本極其穩定。
問:這款游戲使用了Flash Player 11中新的Stage3D應用編程接口(API),之前你為這款游戲使用的是哪種2D框架?
Ville:我們現在使用Starling框架,它既提供了界面等Flash顯示對象,又提供了相當好的性能。
問:你是Starling直接就拿來使用嗎?還是說針對具體的使用場合,對某些方面進行了調整?
Ville::我們一開始使用的初始版Starling的性能不如我們想象的那么好,但是由于它是采用簡化的BSD許可證來發行的,所有源文件都隨時可供使用,因而我們得以在諸多方面對它進行了優化。我一直在自己的博客中撰寫這些優化方面的文章;現在大多數優化包含在最新版的Starling中。Daniel也添加了另外幾處調整。
問:軟件渲染方面又怎么樣?能不能透露幾招,以便開發人員可以充分發揮軟件渲染的功能?
Ville:從我們的游戲收集而來的性能數據表明,就軟件渲染而言,最大幀速率預計只有硬件渲染的三分之一。這意味著,如果你的游戲要求很高的幀速率,那么使用軟件渲染時,可能會丟失一些圖形細部。就Facebook版本的《憤怒的小鳥》而言,我們現在丟棄了最后面的背景層,還調整了渲染質量,如果游戲使用軟件渲染來運行的話。
問:你是否為每一個元素使用不同的圖像,或者精靈圖(sprite sheet)?為什么?
Ville::我們使用自己實施的精靈圖,我們在同一張圖上合并盡可能多的精靈:2048×2048像素紋理大小方面的限制允許可以使用多少個精靈,我們就使用多少個精靈。這加快了Stage3D渲染速度,因為之后,共享同一基本紋理的Starling精靈就可以成批渲染。
Ari(Rovio高級Flash程序員)和我在Rovio公司總部
問:你是否把DisplayList元素覆蓋到Stage3D上,還是說整個游戲就用Stage3D?如果這樣,你覆蓋什么?
Ville:只有游戲界本身才使用Stage3D圖形。我們決定使用傳統的Flash顯示對象來開發用戶界面的所有元素,因為使用我們的圖形設計師們熟悉的Flash集成開發環境(IDE),就很容易為它們賦予動畫效果。Flash 11也能很好地處理顯示對象覆蓋,它們其實并不影響幀速率。
問:你如何處理設備丟失(借助Stage3D來處理)?這是否意味著,如果有人玩游戲時去吃午飯,PC就會鎖住屏幕?
Ville:我們為這個事件實施了自己的處理程序,因為Starling本身在默認情況下并不支持。渲染設備丟失后,Context3D的driverInfo字符串就會變成“Disposed”(釋放),那樣針對每次幀更新,我們就能進行這方面的檢查。要是設備丟失了,我們可以立即從渲染返回。當Flash能夠創建新的渲染上下文時,就會發送 Event.CONTEXT3D_CREATE事件。我們只要偵聽這個事件,然后下一次渲染調用時,對所有當前的紋理及其頂點和索引緩沖器進行重新初始化。幸好,即將發布的Starling版本也可以處理設備丟失問題,那樣開發人員再也不需要自行實施這種檢查機制了。
問:你能不能對我們講講你與Starling結合使用的粒子引擎?
Ville:我們使用的是經過調優的Starling粒子引擎擴展。眼下,它用于“Suft and Turf”這一集中的海浪動畫。粒子引擎本身結合了操作腳本代碼和基于圖形處理器(GPU)的Stage3D渲染。
問:你使用哪種物理引擎?你使用默認的設置還是某些特別的設置?
Ville:與其他所有版本的《憤怒的小鳥》一樣,Facebook版《憤怒的小鳥》同樣使用Box2D,只是某些方面作了細微調整。
問:你是否用某種代碼混淆軟件為最終的SWF文件確保安全?
Ville:是的,的確如此。
問:你在開發這款游戲時,是不是要考慮到Facebook的某些獨特方面?
Ville:首先,就Flash 11和Stage3D而言,你必須使用窗口模式(wmode)為“direct”,這意味著在一些瀏覽器上,HTML覆蓋會在Flash內容下面可以得到渲染。為了處理這個問題,Facebook提供了javascript API,我們把Flash內容換成了在網頁上屏幕截取。我們還想讓初始游戲下載的速度盡可能快,以確保用戶不至于還沒有運行游戲、就關閉了游戲。為此,只有在需要時,我們才為關卡實時下載額外的游戲資產。
問:你總體上覺得Facebook版《憤怒的小鳥》如何?有沒有計劃為游戲增添新的功能特性?
Ville:我認為,這個項目取得了很大的成功,我們從Adobe和Facebook都得到了大力支持,這給我們的這個項目幫了大忙。在最終用戶看來,連初始版都沒有太多的軟件缺陷(bug);就算那些軟件缺陷現在大部分也得到了修復。說到將來,其他的我確實講不出太多,只能每周至少一兩次回過頭來關注游戲,看看有沒有新的功能。
原文:http://www.flashrealtime.com/interview-angry-birds-rovio-ville-koskela/
【編輯推薦】