內容簡介
本書面向遊戲開發人員及廣大遊戲編程愛好者,同時,也是大專院校相關專業師生的有力參考。本書配套光碟內容為書中實例原始碼。Java在遊戲編程方面的功能強大,本書將帶領大家一步一步學習編寫JAVA遊戲,最終製做出自己滿意的作品。
圖書目錄
第一部分 Java遊戲基礎
第1章 Java執行緒 1. 1 什麼是執行緒 1. 2 在Java中生成與運行執行緒 1. 2. 1 擴展Thread類 1. 2. 2 實現Runnable接口 1. 2. 3 使用匿名內類 1. 2. 4 等待執行緒完成 1. 2. 5 休眠執行緒 1. 3 同步 1. 3. 1 為什麼要同步 1. 3. 2 如何同步 1. 3. 3 同步是什麼 1. 3. 4 不同步是什麼 1. 3. 5 避免死鎖 1. 4 使用wait 與notify 1. 5 Java事件模型 1. 6 何時使用執行緒 1. 7 何時不使用執行緒 1. 8 執行緒池 1. 9 小結
第2章 二維圖形與動畫 2. 1 全螢幕圖形 2. 1. 1 螢幕布局 2. 1. 2 像素顏色與位深度 2. 1. 3 刷新率 2. 1. 4 將顯示切換到全螢幕方式 2. 1. 5 抗齒邊 2. 1. 6 選用顯示方式 2. 2 圖像 2. 2. 1 透明度 2. 2. 2 檔案格式2. 2. 3 讀取圖像 2. 2. 4 硬體加速圖像 2. 2. 5 圖形繪製基準程式 2. 2. 6 動畫 2. 2. 7 活動繪製 2. 2. 8 動畫循環 2. 3 避免閃爍與裂開 2. 3. 1 雙快取 2. 3. 2 翻頁2. 3. 3 監視刷新與裂開 2. 3. 4 BufferStrategy類 2. 3. 5 生成螢幕管理器 2. 3. 6 幽靈 2. 4 簡單效果 2. 5 小結
第3章 互動性與用戶界面 3. 1 AWT事件模型 3. 2 鍵盤輸入 3. 3 滑鼠輸入 3. 4 通過滑鼠移動的觀看模式 3. 5 創建輸入管理器 3. 6 使用輸入管理器 3. 6. 1 暫停遊戲 3. 6. 2 增加重力 3. 7 設計直觀用戶界面 3. 8 使用Swing組件 3. 8. 1 Swing基礎 3. 8. 2 在全螢幕方式中使用Swing 3. 9 創建簡單選單 3. 10 遊戲者配置鍵盤 3. 11 小結
第4章 聲效與音樂 4. 1 聲音基礎 4. 2 JavaSoundAPl 4. 2. 1 打開聲音檔案 4. 2. 2 使用Line 4. 3 播放聲音 4. 4 創建實時聲音過濾體系結構 4. 5 創建實時迴響過濾 4. 6 仿真三維聲音 4. 6. 1 生成三維過濾器的思路 4. 6. 2 實現三維過濾器 4. 6. 4 測試三維過濾器 4. 7 創建聲音管理器 4. 7. 1 Sound類 4. 7. 2 SoundManager類 4. 7. 3 執行緒局部變數4. 8 播放音樂 4. 8. 1 播放光碟聲頻 4. 8. 2 播放MP3與OggVorbis 4. 8. 3 播放MIDI音樂4. 8. 4 生成適配音樂 4. 9 小結
第5章 創建二維平台遊戲 5. 1 生成基於地磚的地圖 5. 1. 1 實現Tile地圖 5. 1. 2 讀取Tile地圖 5. 1. 3 繪製Tile地圖 5. 1. 4 繪製幽靈 5. 1. 5 視差滾動 5. 1. 6 充電器 5. 1. 7 簡單壞人 5. 2 碰撞探測 5. 2. 1 探測碰撞 5. 2. 2 處理碰撞 5. 2. 3 幽靈碰撞 5. 3 完成與加速 5. 4 生成可執行的.jar檔案 5. 5 擴展遊戲 5. 6 小結
第6章 多人遊戲 6. 1 Java I/O庫的變革 6. 1. 1 JDK 1. 4NIO庫的概述 6. 1. 2 信道 6. 1. 3 快取 6. 1. 4 選擇器與SelectionKeys 6. 2 基本多方遊戲應用程式6. 2. 1 伺服器端 6. 2. 2 建立與運行伺服器 6. 2. 3 客戶端6. 2. 4 建立與運行客戶機 6. 3 多方遊戲伺服器框架 6. 3. 1 設計目標與戰術 6. 3. 2 設計 6. 3. 3 共用類與接口 6. 3. 4 伺服器實現 6. 3. 5 客戶機 6. 4 RPS遊戲 石頭. 布. 剪刀 6. 4. 1 類 6. 4. 2 運行RPS遊戲 6. 5 建立框架 6. 5. 1 客戶機GUI 6. 5. 2 持久性 6. 5. 3 夥伴名單. 門廳與閒聊 6. 6 伺服器管理 6. 6. 1 登記 6. 6. 2 啟動/關閉 6. 6. 3 伺服器管理控制台 6. 6. 4 遊戲監查 6. 7 高級課題 6. 7. 1 切斷與重接 6. 7. 2 HTTP隧道 6. 7. 3 量化測試 6. 7. 4 Modem連線 6. 7. 5 性能剖析與統計 6. 7. 6 性能調整 6. 8 小結
第二部分 三維圖形與高級技術
第7章 三維圖形 7. 1 三維繪製的類型 7. 2 回顧曾經學過的數學 7. 2. 1 三角學和直角三角形 7. 2. 2 向量數學 7. 3 3D的基礎 7. 4 3D的數學 7. 5 多邊形 7. 6 三維變換 7. 6. 1 旋轉 7. 6. 2 包裝旋轉和平移變換 7. 6. 3 採用變換 7. 6. 4 旋轉順序 7. 7 3D的簡單管道 7. 8 鏡頭移動 7. 9 實體和背面刪除 7. 9. 1 點積 7. 9. 2 交積 7. 9. 3 再談點積和交積 7. 10 掃描轉換多邊形 7. 11 三維剪取 7. 12 最後繪製管道 7. 13 小結
第8章 紋理貼圖與照明 8. 1 透視正確紋理貼圖的基礎 8. 2 簡單紋理貼圖器 8. 3 最佳化紋理貼圖 8. 3. 1 紋理的存儲格式 8. 3. 2 原始最佳化 8. 3. 3 內聯方法 8. 3. 4 快速紋理貼圖演示程式 8. 4 簡單燈光 8. 4. 1 擴散反射 8. 4. 2 環境光 8. 4. 3 光源強度 8. 4. 4 距離減弱 8. 4. 5 實現點光源 8. 5 實現紋理照明 8. 6 使用陰影圖的高級照明 8. 6. 1 求出邊界矩形 8. 6. 2 採用色檔圖 8. 6. 3 建立色檔圖 8. 6. 4 建立表面 8. 6. 5 快取表面 8. 6. 6 陰影表面演示程式 8. 7 其他概念 8. 7. 1 深度提示 8. 7. 2 偽陰影 8. 7. 3 MIP貼圖 8. 7. 4 雙線性插值 8. 7. 5 三線性插值 8. 7. 6 法線圖與深度 8. 7. 7 其他類型的光 8. 8 小結
第9章 三維對象 9. 1 表面消隱 9. 1. 1 油畫算法 9. 1. 2 反油畫算法 9. 1. 3 Z快取 9. 1. 4 使用1/Z的Z快取 9. 1. 5 計算Z深度 9. 2 三維動畫 9. 2. 1 空間運動 9. 2. 2 角度運動 9. 3 多邊形組 9. 4 從OBJ檔案裝入多邊形組 9. 4. 1 0BJ檔案格式 9. 4. 2 MTL檔案格式 9. 5 遊戲實體 9. 6 管理遊戲實體 9. 7 綜合起來 9. 8 改進 9. 9 小結
第10章 用BSP樹管理三維視景 10. 1 BSP樹簡介 10. 2 二叉樹基礎 10. 3 一維BSP樹 10. 4 二維BSP樹 10. 4. 1 建立BSP樹 10. 4. 2 BSP樹遍歷實例 10. 5 實現二維BSP樹 10. 5. 1 BSPLine 10. 5. 2 確定點相對於直線的邊 10. 5. 3 BSP多邊形 10. 5. 4 遍歷BSP樹 10. 5. 5 中序遍歷 10. 5. 6 由前到後遍歷 10. 5. 7 樹的建立 10. 5. 8 兩條線求交 10. 5. 9 用直線剪取多邊形 10. 5. 10 刪除T形接頭 10. 5. 11 測試BSP樹 10. 6 從前到後畫多邊形 10. 7
第一個BSP樹例子 10. 8 在視景中畫實體 10. 9 從文中裝入貼圖 10. 10 綜合起來 10. 11 改進 10. 12 小結
第11章 碰撞探測 11. 1 碰撞基礎 11. 2 實體間碰撞 11. 2. 1 減少測試 11. 2. 2 框線球 11. 2. 3 框線圓柱 11. 2. 4 離散時間問題 11. 3 實體與世界碰撞 11. 3. 1 測試地板的框線 11. 3. 2 尋找特定位置的BSP葉 11. 3. 3 實現地板和天花板高度測試 11. 3. 4 測試牆的框線 11. 3. 5 BSP樹的線段交點 11. 3. 6 角問題 11. 3. 7 實現實體/世界碰撞探測 11. 4 基本碰撞探測演示程式 11. 5 滑動與碰撞處理 11. 5. 1 實體間滑動 11. 5. 2 實體沿牆的滑動 11. 5. 3 重力與爬樓梯 實體沿地 面滑動 11. 5. 4 實現跳動 11. 6 碰撞探測與滑動演示程式 11. 7 改進 11. 8 小結
第12章 路徑搜尋 12. 1 路徑尋找基礎 12. 2 初步路徑尋找方法 12. 3 A*算法基礎 12. 4 採用A*算法 12. 5 BSP樹與A*算法 12. 5. 1 門戶 12. 5. 2 實現門戶 12. 6 一般性路徑尋找 12. 7 建立PathBot 12. 8 改進A*搜尋 12. 9 小結
第13章 人工智慧 13. 1 人工智慧基礎13. 2 減少Bot的神力 13. 2. 1 視覺 13. 2. 2 聽覺 13. 3 狀態機與回響 13. 4 機率機 13. 5 決策 13. 6 模式 13. 6. 1 躲避 13. 6. 2 攻擊 13. 6. 3 跑開 13. 6. 4 瞄準 13. 6. 5 射擊 13. 7 實體派生 13. 8 綜合起來 13. 8. 1 大腦 13. 8. 2 健康與死亡 13. 9 進化 13. 9. 1 再生 13. 9. 2 進化Bot 13. 9. 3 演示改進 13. 10 進化 13. 11 小結
第14章 遊戲腳本14. 1 關於腳本 14. 2 實現接觸與釋放通知 14. 3 遊戲實體監聽器 14. 4 腳本 14. 4. 1 設計腳本 14. 4. 2 嵌入BeanShell解釋器14. 5 延遲事件 14. 6 綜合起來 14. 7 改進 14. 8 小結
第15章 保存遊戲 15. 1 遊戲保存基礎 15. 2 對遊戲狀態保存使用Java序列化 API 15. 2. 1 序列化簡介 15. 2. 2 序列化基礎 15. 2. 3 序列化規則 15. 2. 4 序列化問題 15. 2. 5 覆蓋預設行為 15. 3 生成遊戲螢幕圖形 15. 3. 1 生成螢幕略圖圖形 15. 3. 2 保存圖形 15. 4 將遊戲保存到正確目的地 15. 5 小結
第三部分 調整與完成遊戲
第16章 最佳化技術 16. 1 最佳化規則 16. 2 剖析 16. 2. 1 基準測試 16. 2. 2 使用HotSpot剖析器 16. 3 HotSpot 16. 3. 1 Java特定最佳化 16. 3. 2 死亡代碼消除 16. 3. 3 循環不變項提升 16. 3. 4 公共子表達式消除 16. 3. 5 常量傳遞 16. 3. 6 內聯方法 16. 4 最佳化技巧 16. 4. 1 算法 16. 4. 2 移位 16. 4. 3 求模 16. 4. 4 乘法 16. 4. 5 指數 16. 4. 6 更多循環不變項提升 16. 4. 7 查找表 16. 4. 8 定點算術 16. 4. 9 異常 16. 4. 10 輸入/輸出 16. 4. 11 記憶體貼圖檔案 16. 5 記憶體使用與回收 16. 5. 1 Java堆與記憶體回收 16. 5. 2 監視記憶體回收 16. 5. 3 監視記憶體使用 16. 5. 4 調整堆 16. 5. 5 調用記憶體回收單元 16. 5. 6 減少對象生成 16. 5. 7 對象復用 16. 5. 8 對象池 16. 6 感覺性能 16. 7 小結
第17章 生成遊戲圖形與聲音 17. 1 選擇外觀 17. 1. 1 尋找靈感 17. 1. 2 保持一致 17. 2 取得自由著作權遊戲媒體 17. 3 與藝術家和聲效工程師合作 17. 4 工具 17. 5 生成聲音 17. 6 生成紋理與幽靈 17. 6. 1 圖形檔案格式 17. 6. 2 生成無縫紋理 17. 6. 3 生成替換紋理 17. 6. 4 生成過渡紋理 17. 6. 5 生成多層紋理 17. 7 生成漂亮螢幕與HUD圖形 17. 8 生成UI圖形 17. 9 生成字型17. 10 小結
第18章 遊戲設計與最後10%
18. 1 最後10% 18. 1. 1 效果
18. 1. 2 遊戲狀態機
18. 2 遊戲設計要素
18. 2. 1 環境
18. 2. 2 故事要素
18. 2. 3 玩遊戲
18. 2. 4 告訴用戶怎么玩
18. 3 生成貼圖編輯器
18. 4 調試
18. 4. 1 調試Java2D問題
18. 4. 2 日誌
18. 5 保護代碼
18. 6 遊戲部署
18. 7 JavaWebStart遊戲部署
18. 7. 1 從jar檔案取得資源
18. 7. 2 簽名jar檔案
18. 7. 3 生成JNLP檔案
18. 7. 4 設定Web伺服器
18. 8 自然編譯遊戲部署
18. 9 更新與補丁
18. 10 頻寬問題
18. 11 反饋與Beta測試
18. 12 賺錢
18. 13 綜合起來
18. 14 小結
第19章 未來
19. 1 Java的演變
19. 1. 1 Java社團
19. 1. 2 缺陷天堂 BugParade
19. 2 Java 1. 5 Tiger
19. 2. 1 一般 JSRl4
19. 2. 2 枚舉 JSR201
19. 2. 3 靜態導入口 JR201
19. 2. 4 改進for循環 JSR201
19. 2. 5 編譯器API JSRl99
19. 2. 6 網路傳輸格式 JSR200
19. 2. 7 共享虛擬機JSR121
19. 3 Java平台需要什麼
19. 3. 1 更多滑鼠與鍵盤輸入選項
19. 3. 2 遊戲桿輸入
19. 3. 3 硬體加速半透明圖像
19. 3. 4 高精度定時器
19. 3. 5 Linux中的硬體加速圖形和全螢幕 方式
19. 3. 6 運行環境中的硬體加速三維 特性
19. 3. 7 HotSpotSIMD最佳化
19. 3. 8 更多字型光順選項
19. 3. 9 其他情況
19. 4 新設備與Java Games Profile JSR
134 19. 5 小結
Java 是一個由 Sun 公司開發而成的新一代程式語言。使用它可在各式各樣不同機器、不同操作平台的網路環境中開發軟體。
遊戲編程屬於軟體開發。用編程製作軟體屬於編程,但是指在進行中,而一但編制完整就屬於軟體開發了。