內容簡介
Flash因其外掛程式檔案尺寸小、性能優異而得到全球網民的青睞,這也使得Flash成為網路休閒遊戲開發的首選平台。
遊戲開發融合了很多技術與表現風格,除了要有高質量的代碼、迷人的藝術設計和良好的用戶界面,更重要的一點是要讓玩家覺得好玩。本書教會讀者利用Flash設計出這樣的遊戲。作者以自己十多年的Flash開發經驗為基礎,總結了一些實用的遊戲開發原則,並將遊戲開發基本術語和概念、整個遊戲流程的規劃、音頻和可視化資源的管理以及遊戲邏輯處理、一些代碼及庫的組織方式以及Flash移動開發的內容,都囊括在這本書中,極具學習和實用價值。
本書在第一版的基礎上進行了全面修訂,加入了包括移動開發在內的很多高級內容,適合所有Flash開發人員。
書籍目錄
第1章 計算機科學並不適合所有人
1.1 一些基礎知識
1.2 常見遊戲類型
1.2.1 冒險類遊戲
1.2.2 動作類遊戲
1.2.3 益智解謎類遊戲
1.2.4 辭彙類遊戲
1.2.5 策略與模擬經營類遊戲
1.2.6 角色扮演遊戲
1.2.7 駕駛類遊戲
1.2.8 桌面式和卡牌式遊戲
1.3 常用開發術語
1.3.1 偽碼
1.3.2 算法
1.3.3 過程式編程
1.3.4 面向對象編程
1.3.5 設計模式
1.3.6 類
1.3.7 Public、Protected、Private和Internal
1.4 遊戲特有的開發術語
1.4.1 人工智慧
1.4.2 遊戲循環(或者說“主循環”)
1.4.3 遊戲視角
1.4.4 捲動背景
1.4.5 區塊式遊戲
1.5 Flash程式開發術語
1.5.1 舞台
1.5.2 顯示對象
1.5.3 事件和偵聽器
1.5.4 包
1.5.5 創作時事件、編譯時事件及運行時事件
1.6 醒一醒
第2章 最佳編程工具
2.1 倒敘幾句
2.2 Flash的一些優點
2.2.1 玩家占有率
2.2.2 靈活性
2.2.3 上市速度
2.2.4 美觀性
2.3 白璧微瑕
2.3.1 缺點:代碼編輯器
2.3.2 解決方案:使用附加工具
2.3.3 缺點:性能及記憶體管理
2.3.4 解決方案:使用第三方解決方案或自己創建
2.3.5 缺點:內容調試
2.3.6 解決方案:使用跟蹤輸出與自定義工具
2.3.7 缺點:缺乏內建遊戲庫
2.3.8 解決方案:自己開發工具或尋找開源工具
2.4 不要和Flash對抗
2.5 Flash所能創建的內容
2.5.1 動畫與遊戲
2.5.2 應用程式與遊戲
2.5.3 Flash與Flex
2.5.4 網站與遊戲
2.5.5 Flash與傳統遊戲開發
2.6 最佳創作工具
第3章 一份計畫抵得上千片阿司匹林
3.1 用一兩句話來描述遊戲
3.2 為包含所有遊戲界面的遊戲流程列出提綱或繪製線框圖
3.3 概述遊戲所使用的核心機制
3.4 列出所需的資源清單
3.5 列出遊戲所需的技術清單
3.6 用UML建模工具設計類圖(可選)
3.7 規劃步驟的快速回顧
第4章 //太棒了!
4.1 適當的提醒 部分1 類
4.2 包
4.3 類就像檔案一樣
4.4 構造函式
4.5 常量、變數與方法
4.6 getter與setter方法
4.7 類標識符
4.8 繼承與多態
4.9 接口
4.10 將Flash 中的資源與類連結起來
4.11 類與基類
4.12 使用沒有類檔案的導出元件
4.13 getDefinitionByName與Casting
部分2 事件
4.14 dispatchEvent方法
4.15 addEventListener方法、removeEventListener方法以及事件流程中的各階段
4.16 事件的傳播與取消
4.17 自定義事件
部分3 錯誤
4.18 try、catch、finally
4.19 自定義拋出錯誤
部分4 數據結構與列表
4.20 Object
4.21 數組
4.22 Vector
4.23 Dictionary
4.24 ByteArray
4.25 到底該使用哪種列表
4.26 自定義數據結構
部分5 讓所有人都能讀懂你的注釋
4.27 底線
部分6 Flash為什麼會這么做
4.28 事件流程
4.29 幀腳本
4.30 使用多個SWF檔案
4.31 記憶體垃圾回收
4.32 本章小結
第5章 管理資源與使用圖像
5.1 小議組織庫元件
5.2 使用圖像
5.3 常用的光柵圖像格式
5.3.1 壓縮
5.3.2 平滑
5.3.3 解塊
5.3.4 外部的圖像編輯工具
5.4 要點
第6章 讓它動起來:ActionScript動畫
6.1 幾個術語
6.1.1 緩動
6.1.2 序列
6.2 是否補間?這是個問題
6.3 一個由腳本驅動的簡單射擊遊戲
6.3.1 Projectile類
6.3.2 SimpleShooter類
6.4 記憶力遊戲:補間動畫
6.4.1 MemoryCard類
6.4.2 Memory類
6.5 本章小結
第7章 如雷貫耳:如何使用音頻
7.1 常用音頻格式
7.2 常用導出設定
7.3 使用外部檔案
7.4 聲音編輯工具
7.5 編寫音效腳本
7.5.1 理解與聲音有關的類
7.5.2 SoundEngine類
7.5.3 使用SoundEngine類
7.5.4 SoundMixer類
第8章 重塑“視頻遊戲”
8.1 視頻編解碼器
8.2 外部視頻套用:過場與選單
8.3 CutsceneManager類
8.4 時間軸上的視頻
8.4.1 檔案尺寸
8.4.2 庫:易於使用與雜亂無章
8.4.3 性能表現
8.4.4 自由的動態模糊
8.5 建立內部視頻
8.6 本章小結
第9章 XML與動態內容
9.1 引入數據:理解URLLoader類
9.2 XML
9.3 E4X
9.4 縱橫字謎
9.4.1 CrosswordTile類
9.4.2 CrosswordClue類
9.4.3 CrosswordPuzzle類
9.5 內容並非只有現成的:縱橫字謎編輯器
9.6 數據傳送
9.7 示例:XML與Flash Vars的套用對比
9.8 本章小結
第10章 就是一個詞兒:數學
部分1 Math類
10.1 幾何學及三角學
10.2 簡要介紹一下弧度與pi值
10.3 Flash中的3D
13.1.1 位置
13.1.2 旋轉
13.1.3 透視投影
10.4 簡單的TunnelShooter範例
10.4.1 基本機制
10.4.2 所需類檔案
10.4.3 Tunnel類
部分2 物理學
10.5 標量
10.6 矢量
10.7 Vector3D類
10.8 位移
10.9 速度
10.10 加速度
10.11 摩擦力
10.12 慣性
10.13 物理仿真與假象
10.14 真實性與期望值
10.15 範例:頂視角的驅動引擎
10.15.1 Vehicle類
10.15.2 Time類
10.15.3 Game類
10.16 範例:頂視圖且帶有漂移效果的賽車遊戲
10.17 本章小結
第11章 別碰我
11.1 能力與需求
11.2 hitTestObject——最基本的檢測方法
11.3 hitTestPoint——更先進的檢測方法
11.4 半徑/距離檢測法——極適合圓形的檢測方法
11.5 矩形框線檢測法
11.5.1 新的Enemy 類
11.5.2 SimpleShooterCollisions類所新增的內容
11.5.3 該方法的一些不足之處
11.6 這些辦法都不靈?那就用雞尾酒療法
第12章 建築師——由來已久的夢想
12.1 OOP概念
12.1.1 封裝
12.1.2 繼承
12.1.3 多態性
12.1.4 接口
12.2 遊戲開發中的實用OOP技巧
12.3 單例模式:一種良好的文檔模式
12.4 本章小結
第13章 驛館閒談
13.1 簡單地進行封裝——類與容器
13.2 將有關數值存儲到變數與常量中
13.3 不要信任舞台
13.4 不要使用不理解或不適用的架構或設計模式
13.5 要把握好向別人展示自己作品的最佳時機
13.6 本章小結
第14章 MixUp——一個簡單的遊戲引擎
14.1 主文檔
14.2 MixUP類
14.3 Title類
14.4 RulesPanel類
14.5 Game類
14.6 接口
14.7 GameBoard類
14.8 SourceImageEmbedded類
14.9 GameHistory類與Results類
14.10 SourceImageCamera類
14.11 本章小結
第15章 技術大融合:製作平台遊戲
15.1 平台類型遊戲
15.2 數據流程
15.3 遊戲流程與功能
15.3.1 遊戲背景設定
15.3.2 關卡設計及牆壁的作用
15.3.3 出口(portal)
15.3.4 玩家角色
15.3.5 物品
15.3.6 敵人
15.4 關卡檔案格式以及資源結構
15.4.1 關卡的XML檔案
15.4.2 資源SWF檔案
15.4.3 遊戲所用類的概述
15.5 引擎類
15.5.1 ISprite接口
15.5.2 IPlayer接口
15.5.3 IEnemy接口
15.5.4 IItem接口
15.5.5 IPortal接口
15.5.6 IWall接口
15.5.7 PlatformerEvent類
15.5.8 PortalDestinations類與PortalRequirement類
15.5.9 PlatformerConfig類
15.5.10 GridReference類
15.5.11 CollisionGrid類
15.5.12 PlatformerEngine類
15.6 遊戲實現類
15.7 資源類
15.7.1 Player類
15.7.2 Enemy類
15.7.3 Item類
15.7.4 Portal類與Wall類
15.7.5 遊戲中的資源
15.8 本章小結
第16章 獨樂不如眾樂:開發多人遊戲
16.1 RTMFP
16.2 Stratus
16.3 MixUp多人遊戲
16.3.1 遊戲所用的類
16.3.2 SourceImageWebCamera類
16.3.3 ConnectionPanel類
16.3.4 Title類
16.3.5 Results類
16.3.6 MixUp類
16.4 本章小結
第17章 找到就幹掉:獵蟲行動
17.1 Bug
17.1.1 trace
17.1.2 FlashTracer
17.1.3 調試器
17.2 性能與最佳化
17.2.1 FrameRateProfiler類
17.2.2 MemoryProfiler類
17.2.3 Sample包
17.3 本章小結
第18章 當心惡賊
18.1 惡意使用
18.1.1 關閉不再需要的事件偵聽器
18.1.2 為所要接受的輸入設定最低延時
18.1.3 一經發現惡意使用就將遊戲關閉
18.2 數據保護
18.2.1 記憶體攻擊
18.2.2 數據的散列加密
18.2.3 拆解數據
18.2.4 插入誤導性數據
18.2.5 保護要傳送與接收的數據
18.2.6 保護傳輸數據安全的散列加密法
18.2.7 矩陣加密法
18.3 SWF檔案保護
18.4 本章小結
附錄A 攝像頭與麥克風
附錄B 本地化
附錄C JSFL——情人們的JavaScript
後記