開發Flash網絡遊戲需要掌握的技術
轉自:http://androider.javaeye.com/blog/268914
1.顯示
一個遊戲離不開顯示,AS3已經爲開發者提供了一個比較完整的2D顯示引擎了。學習這個部分,學習顯示列表,學習DisplayObject和DisplayObjectContainer的區別,學習Shape, Sprite, MovieClip, Bitmap這些基本可顯示對象的區別。
2.鼠標輸入
交互就離不開用戶輸入的處理,鼠標是遊戲中最常用的輸入設備。需要知道只有繼承自InteractiveObject的對象才能接收鼠標消息。還要學習如何使用鼠標拖拽,如何判定鼠標消息產生的目標,如何啓用,禁用鼠標消息。鼠標座標的全局和局部的轉換。
3.鍵盤輸入
鍵盤除了標準UI組件內部會用到,遊戲的快捷鍵等功能也需要用到。
4.位圖
作爲遊戲開發,可能不是所有的美術素材都是在開發階段就固定的,或多或少需要在遊戲過程中對圖形進行一些變換處理。因此需要熟練掌握Bitmap和BitmapData對象。
5.層
作爲MMORPG遊戲,不同可視對象之間是有層次關係的。不同層的關係是固定的,比如地面層,人物層,UI層。同一層上的物體重疊時,需要通過修改在顯示列表中的相對位置來調整上下關係。
6.UI組件
按鈕,輸入框,文本框,下拉框,列表,表格。這些在遊戲中都少不了。爲了遊戲畫面的美觀和風格一致,通常都需要修改標準組件的皮膚,才能應用到遊戲中。
7.資源加載
大家都知道,傳統客戶端MMORPG遊戲,動輒幾百M上G的尺寸,大部分都是媒體資源,我們不可能把這些資源都打到一個SWF文件中,因此需要根據資源的重要程度來決定加載策略。最常用最基本的,程序啓動時加載;其他的,可以在遊戲過程中動態加載。
8.事件機制
作爲新人,或多或少都會用到addEventListener方法。作爲大型系統開發者,一定要知道這個方法背後的IEventDispatcher接口和EventDipatcher類。使用事件機制進行開發,一方面爲了降低代碼之間的耦合,另外也是方便了多人協作開發。
9.遠程通訊
作爲MMORPG的通訊方案,需要考慮效率和安全性。由於服務器端我們很熟悉Java的Socket開發,而且看到了AS3的Socket類,於是毫不猶豫的選擇了使用私有協議的通訊方式。作爲MMORPG,基於HTTP的協議效率肯定比直接基於TCP的二進制協議低。另外,基於HTTP方式,不太適用於服務器向客戶端推消息的情景。AS3的其它通訊方式我瞭解的不太清楚,不知道是否有在靈活性,安全性,性能方面超越Socket方案的。
10.性能優化
作爲商業遊戲,需要考慮到玩家環境的千差萬別,因此係統的很多效果都需要有參數可以控制,使得程序能流暢的運行於玩家的機器上。作爲Flash網遊,需要考慮客戶端的內存佔用和CPU使用,需要考慮服務器的流量和客戶端到服務器的帶寬。
11.多線程
首先,Flash沒有多線程,是一個單線程,如果有時候需要實現類似開一個線程進行耗時的複雜計算時,可以將這個計算封裝成一個類,提供一個step方法,每掉用一次step,執行若干步計算,手工爲代碼分配時間片。用這種方法來模擬多線程。
12.高級知識(js/jsfl/swf格式/加擾/虛擬機運行機制)
作爲一款產品,在開發過程中還有很多細節需要考慮。
比如使用ExternalInterface與JS通訊。Web遊戲,離不開網頁的,偶爾還是會與網頁有些交互的。
使用JSFL批量生成或者處理Fla項目文件。遊戲中大量的資源的格式是類似的,如果完全由人工,需要大量重複勞動。幸好Flash提供了JSFL的擴展,幫我們節約了大量的人工。
對SWF格式的理解。有些工作,由於JSFL的可編程性比較差,無法完美實現,我們還編寫程序直接對SWF文件進行操作。曾經有一個需求,需要四個人花一週時間才能搞定,而且還很容易出錯,後來寫了JSFL腳本,外加編程直接處理SWF,每次進行類似的工作,只需要一個人幾分鐘人工,程序跑1個小時就搞定了。
商業產品發佈時,還是要代碼加擾的。現在反編譯先鋒Sothink4/ASV6已經問世,但是AS3加擾的工作還遠遠落後於反編譯的步伐。我們這些Flash開發人員很着急呀。
13.算法
算法對於遊戲開發還是很有用的。有時候是效率的提升,有時可能是01的區別。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/roundstars/archive/2010/01/05/5133841.aspx