Flash網遊開發入門經驗共享

       作爲Flash網頁遊戲,不單單是炫酷效果的展示,用戶的交互和邏輯也很多,因此好的遊戲一定離不開AS3代碼的。 磨刀不誤砍柴工,我建議大家在真的動手開發項目之前,把該看的文檔都看一遍,順便寫一些測試代碼加深理解。建議的文檔和理由如下:
《Adobe Flex Help》。 這個就是Flex自帶的幫助了,看了這個,就知道如何使用AS3來創建,編寫,編譯,調試,發佈應用程序。使用AS3,哪些東西能做,哪些東西不能做;哪 些東西可以直接用現成的,哪些東西需要自己來開發。有些人習慣遇到文字再查幫助,或者GOOGLE,或者到論壇提問。其實提問也是有學問的,你能把問題描 述的越準確,就能越快的得到準確的答案。
《ActionScript 3.0 Cookbook》和 《Essential ActionScript 3.0》,AS3的基本語法,常用功能,一些作者的心得。看了這些,很多問題就可以不求人了。看書的時 候,那些立刻需要使用的,最好記下來;那些暫時用不到的,知道用的時候去哪裏找答案就可以了。
下面具體說說以我認爲開發Flash網絡遊戲需要掌握的技術吧。
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的區別。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章