|
-- 會員 / 註冊 --
|
|
|
|
Unity 3D網絡游戲實戰 ( 簡體 字) |
作者:羅培羽 | 類別:1. -> 多媒體 -> 遊戲引擎 -> Unity |
譯者: |
出版社:機械工業出版社 | 3dWoo書號: 45617 詢問書籍請說出此書號!【缺書】 NT售價: 395 元 |
出版日:11/1/2016 |
頁數:429 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787111549963 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:本書分為兩個部分,第一部分“單機游戲”在于開發一款功能完整坦克單機游戲,除了讓坦克行走、開炮,還將介紹基于代碼和資源分離的界面系統、敵人AI。第二部分“網絡游戲”主要介紹網絡通信的原理,并開發客戶端的網絡模塊和服務端程序框架。然后將一部分的坦克游戲改造成聯網對戰的多人游戲。本書基于Unity3D5.2編寫,Unity3D5.X版本都適用。書中例子為商業游戲簡化版本,讀者可以從中了解商業游戲的設計思路和實現方法。讀者看完本書,初步擁有開發一款完整網絡游戲的能力。 |
目錄:第1章 掌握Unity3D基本元素 / 1 1.1 最最簡單的游戲 / 2 1.1.1 Unity3D的界面構成 / 2 1.1.2 在場景中創建立方體 / 3 1.1.3 編寫第一個程序 / 4 1.1.4 測試游戲 / 6 1.1.5 總結 / 6 1.2 導入資源 / 6 1.2.1 從本地導入素材 / 7 1.2.2 從本地導入包文件 / 7 1.2.3 從AssetStore導入 / 8 1.3 山體系統 / 10 1.4 燈光 / 12 1.5 材質 / 14 1.5.1 什么是材質 / 14 1.5.2 如何創建材質 / 15 1.5.3 Mesh Renderer組件 / 16 1.5.4 著色器 / 16 1.6 預設 / 19 1.6.1 制作預設 / 19 1.6.2 預設的實例化 / 19 1.6.3 使用預設的例子 / 20 1.7 聲音 / 22 1.7.1 音源 / 22 1.7.2 接收器 / 23 1.7.3 簡單播放器 / 23 1.8 GUI / 24 1.8.1 GUI繪圖基礎 / 24 1.8.2 編寫HelloWorld程序 / 25 1.8.3 繪制登錄框 / 25 1.9 場景 / 26 1.9.1 創建場景 / 27 1.9.2 場景切換 / 27 1.10 導出游戲 / 28 第2章 坦克控制單元 / 31 2.1 導入坦克模型 / 31 2.1.1 導入模型 / 31 2.1.2 調整尺寸 / 32 2.1.3 材質和貼圖 / 33 2.2 行走控制 / 34 2.2.1 基礎知識 / 35 2.2.2 上下左右移動 / 37 2.2.3 轉向和前后移動 / 38 2.3 相機跟隨 / 40 2.3.1 數學原理 / 41 2.3.2 跟隨算法 / 42 2.3.3 設置跟隨目標 / 46 2.3.4 橫向旋轉相機 / 47 2.3.5 縱向旋轉相機 / 50 2.3.6 滾輪調節距離 / 51 2.4 旋轉炮塔 / 52 2.4.1 坦克的層次結構 / 52 2.4.2 炮塔 / 56 2.4.3 炮管 / 58 2.5 車輛行駛 / 61 2.5.1 Unity3D的物理系統 / 62 2.5.2 車輪碰撞器 / 65 2.5.3 控制車輛 / 69 2.5.4 制動(剎車) / 73 2.6 輪子和履帶 / 74 2.6.1 輪子轉動 / 74 2.6.2 履帶滾動 / 77 2.7 音效 / 79 第3章 火炮與敵人 / 82 3.1 發射炮彈 / 82 3.1.1 制作炮彈 / 82 3.1.2 制作爆炸效果 / 83 3.1.3 炮彈軌跡 / 84 3.1.4 坦克開炮 / 86 3.2 摧毀敵人 / 88 3.2.1 坦克的控制類型 / 88 3.2.2 坦克的生命值 / 89 3.2.3 焚燒特效 / 89 3.2.4 坦克被擊中后的處理 / 90 3.2.5 炮彈的攻擊處理 / 92 3.3 準心 / 94 3.3.1 概念和原理 / 94 3.3.2 計算目標射擊位置 / 96 3.3.3 計算實際射擊位置 / 101 3.3.4 繪制準心 / 103 3.4 繪制生命條 / 104 3.4.1 生命條素材 / 105 3.4.2 繪制生命條 / 105 3.5 擊殺提示 / 107 3.5.1 誰發射了炮彈 / 107 3.5.2 誰被擊中 / 107 3.5.3 顯示擊殺提示 / 108 3.6 炮彈的音效 / 110 3.6.1 發射音效 / 110 3.6.2 爆炸音效 / 111 第4章 人工智能 / 113 4.1 基于有限狀態機的人工智能 / 113 4.1.1 有限狀態機 / 113 4.1.2 分層有限狀態機 / 115 4.2 程序結構 / 116 4.2.1 AI類的結構 / 116 4.2.2 在Tank中調用 / 118 4.3 搜尋目標 / 119 4.3.1 搜尋規則 / 119 4.3.2 坦克標簽 / 119 4.3.3 主動搜尋算法 / 120 4.3.4 被動搜尋算法 / 122 4.3.5 調試 / 123 4.4 向敵人開炮 / 124 4.4.1 電腦控制的方式 / 124 4.4.2 炮塔炮管的目標角度 / 125 4.4.3 調試程序 / 125 4.4.4 開炮 / 126 4.5 走向目的地 / 128 4.5.1 路點 / 128 4.5.2 路徑 / 128 4.5.3 根據場景標志物生成路徑 / 130 4.5.4 給AI指定路徑 / 131 4.5.5 操控坦克 / 132 4.5.6 調試程序 / 136 4.6 使用NavMesh計算路徑 / 137 4.6.1 NavMesh的原理 / 137 4.6.2 生成導航圖 / 137 4.6.3 生成路徑 / 140 4.7 行為決策 / 143 4.7.1 巡邏狀態 / 144 4.7.2 進攻狀態 / 145 4.7.3 調試 / 146 4.8 戰場系統 / 147 4.8.1 單例模式 / 147 4.8.2 BattleTank / 148 4.8.3 戰場邏輯 / 148 4.8.4 敵我區分 / 150 4.8.5 出生點 / 151 4.8.6 坦克預設 / 152 4.8.7 開啟一場兩軍對峙的戰斗 / 152 4.8.8 戰場結算 / 154 4.8.9 開始戰斗 / 155 第5章 代碼分離的界面系統 / 157 5.1 Unity UI系統 / 157 5.1.1 創建UI部件 / 158 5.1.2 Canvas畫布 / 159 5.1.3 EventSystem / 161 5.1.4 RectTransform / 162 5.1.5 其他UGUI組件 / 164 5.1.6 事件觸發 / 165 5.1.7 簡單的面板調用 / 165 5.2 制作界面素材 / 167 5.2.1 標題面板和信息面板 / 167 5.2.2 制作預設 / 168 5.3 面板基類PanelBase / 168 5.3.1 代碼與資源分離的優勢 / 168 5.3.2 面板系統的設計 / 169 5.3.3 面板基類的設計要點 / 169 5.3.4 面板基類的實現 / 170 5.4 面板管理器PanelMgr / 172 5.4.1 層級管理 / 173 5.4.2 打開面板OpenPanel / 174 5.4.3 關閉面板ClosePanel / 176 5.5 面板邏輯 / 176 5.5.1 標題面板TitlePanel / 176 5.5.2 信息面板InfoPanel / 178 5.6 調用界面系統 / 179 5.6.1 界面系統的資源 / 179 5.6.2 界面系統的調用 / 179 5.7 勝負面板 / 181 5.7.1 面板素材 / 181 5.7.2 面板邏輯 / 181 5.7.3 面板調用 / 183 5.8 設置面板 / 184 5.8.1 面板素材 / 184 5.8.2 面板邏輯 / 185 5.8.3 面板調用 / 186 第6章 網絡基礎 / 188 6.1 七層網絡模型 / 189 6.1.1 應用層 / 190 6.1.2 傳輸層 / 190 6.1.3 網絡層 / 190 6.1.4 數據鏈路層 / 191 6.1.5 物理層 / 191 6.2 IP與端口 / 192 6.2.1 IP地址 / 192 6.2.2 端口 / 192 6.2.3 C#中的相關類型 / 193 6.3 TCP協議 / 193 6.3.1 TCP連接的建立 / 193 6.3.2 TCP的數據傳輸 / 195 6.3.3 TCP連接的終止 / 195 6.4 Socket套接字 / 196 6.4.1 Socket連接的流程 / 196 6.4.2 Socket類 / 196 6.5 同步Socket程序 / 198 6.5.1 新建控制臺程序 / 198 6.5.2 編寫服務端程序 / 199 6.5.3 客戶端界面 / 202 6.5.4 客戶端程序 / 203 6.6 異步Socket程序 / 205 6.6.1 BeginAccept / 205 6.6.2 BeginReceive / 205 6.6.3 Conn(state) / 206 6.6.4 服務端程序(主體結構) / 208 6.6.5 服務端程序(Accept回調) / 210 6.6.6 服務端程序(接收回調) / 211 6.6.7 開啟服務端 / 212 6.6.8 客戶端界面 / 212 6.6.9 客戶端程序 / 213 6.6.10 調試程序 / 215 6.7 MySQL / 216 6.7.1 配置MySQL環境 / 216 6.7.2 建立MySQL數據庫 / 218 6.7.3 MySQL基礎知識 / 218 6.7.4 MySQL留言板服務端程序 / 220 6.7.5 調試程序 / 222 6.8 類的序列化 / 223 6.9 定時器 / 225 6.10 線程互斥 / 226 6.11 通信協議和消息列表 / 228 6.11.1 通信協議 / 228 6.11.2 服務端程序 / 229 6.11.3 消息列表 / 229 6.11.4 客戶端場景 / 230 6.11.5 客戶端程序 / 231 6.11.6 調試 / 236 第7章 服務端框架 / 238 7.1 服務端架構 / 238 7.1.1 總體架構 / 238 7.1.2 游戲流程 / 239 7.1.3 連接的數據結構 / 240 7.1.4 數據庫結構 / 241 7.1.5 項目結構 / 241 7.2 數據管理類DataMgr / 243 7.2.1 數據表結構 / 243 7.2.2 角色數據 / 244 7.2.3 Player的初步版本 / 244 7.2.4 連接數據庫 / 245 7.2.5 防止sql注入 / 246 7.2.6 Register注冊 / 247 7.2.7 CreatePlayer創建角色 / 249 7.2.8 登錄校驗 / 250 7.2.9 獲取角色數據 / 251 7.2.10 保存角色數據 / 252 7.2.11 調試 / 253 7.3 臨時數據 / 255 7.4 網絡管理類ServNet / 256 7.4.1 粘包分包現象 / 256 7.4.2 粘包分包的處理方法 / 256 7.4.3 Conn連接類 / 257 7.4.4 ServNet網絡處理類 / 260 7.4.5 ReceiveCb的粘包分包處理 / 261 7.4.6 發送消息 / 264 7.4.7 啟動服務端 / 265 7.4.8 調試 / 265 7.5 心跳 / 267 7.5.1 心跳機制 / 267 7.5.2 時間戳 / 268 7.5.3 使用定時器 / 269 7.5.4 心跳協議 / 270 7.5.5 調試心跳協議 / 270 7.6 協議 / 271 7.6.1 協議基類 / 272 7.6.2 字符串協議 / 273 7.6.3 字節流協議 / 274 7.6.4 字節流輔助方法 / 276 7.6.5 使用協議 / 278 7.6.6 調試 / 280 7.7 中間層Player類 / 282 7.7.1 登錄流程 / 282 7.7.2 下線 / 282 7.7.3 Player類的實現 / 283 7.8 消息分發 / 285 7.8.1 消息處理的類 / 285 7.8.2 消息處理類的實現 / 286 7.8.3 反射 / 287 7.9 注冊登錄 / 289 7.9.1 協議 / 289 7.9.2 注冊功能 / 290 7.9.3 登錄功能 / 291 7.9.4 登出功能 / 292 7.9.5 獲取分數功能 / 293 7.9.6 增加分數功能 / 293 7.9.7 輸出服務端信息 / 294 7.9.8 Main中的調用 / 294 7.9.9 測試用客戶端 / 295 7.9.10 調試 / 297 第8章 客戶端網絡模塊 / 300 8.1 網絡模塊設計 / 300 8.1.1 整體架構 / 300 8.1.2 監聽表 / 301 8.1.3 類結構 / 301 8.2 委托 / 302 8.2.1 使用委托 / 302 8.2.2 示例 / 302 8.2.3 操作符 / 303 8.3 MsgDistribution消息分發 / 304 8.3.1 MsgDistribution的成員 / 304 8.3.2 DispatchMsgEvent / 305 8.3.3 AddListener / 306 8.4 Connection連接 / 307 8.4.1 Connection的成員 / 307 8.4.2 連接服務端 / 309 8.4.3 關閉連接 / 309 8.4.4 異步回調 / 310 8.4.5 消息處理 / 311 8.4.6 發送數據 / 311 8.4.7 心跳機制 / 312 8.5 NetMgr網絡管理 / 313 8.6 登錄注冊功能 / 314 8.6.1 界面資源 / 315 8.6.2 登錄面板功能 / 316 8.6.3 注冊面板功能 / 319 8.7 位置同步的服務端程序 / 320 8.7.1 協議 / 321 8.7.2 場景 / 321 8.7.3 協議處理 / 324 8.7.4 事件處理 / 324 8.8 位置同步的客戶端程序 / 325 8.8.1 客戶端資源 / 325 8.8.2 客戶端程序 / 326 8.9 調試框架 / 331 第9章 房間系統 / 334 9.1 游戲界面 / 335 9.1.1 登錄面板 / 335 9.1.2 注冊面板 / 336 9.1.3 提示面板 / 337 9.1.4 UGUI的滑動區域 / 338 9.1.5 房間列表面板 / 340 9.1.6 房間面板 / 342 9.1.7 創建預設 / 343 9.2 協議設計 / 344 9.3 提示框的功能實現 / 346 9.4 登錄注冊的功能實現 / 348 9.4.1 登錄面板的功能 / 348 9.4.2 GameMgr / 349 9.4.3 注冊面板的功能 / 350 9.4.4 調試 / 351 9.5 房間列表面板的功能 / 352 9.5.1 獲取部件 / 353 9.5.2 開啟監聽 / 354 9.5.3 刷新成績欄 / 355 9.5.4 刷新房間列表 / 355 9.5.5 刷新按鈕 / 357 9.5.6 加入房間 / 357 9.5.7 新建房間 / 358 9.5.8 登出 / 359 9.5.9 測試面板 / 360 9.6 房間面板的功能 / 360 9.6.1 獲取部件 / 361 9.6.2 監聽 / 362 9.6.3 刷新列表 / 362 9.6.4 退出按鈕 / 364 9.6.5 開始戰斗 / 365 9.6.6 測試面板 / 366 第10章 房間系統服務端 / 368 10.1 玩家數據 / 368 10.2 房間類 / 370 10.2.1 數據結構 / 370 10.2.2 添加玩家 / 371 10.2.3 刪除玩家 / 372 10.2.4 更換房主 / 373 10.2.5 廣播消息 / 373 10.2.6 輸出房間信息 / 374 10.3 房間管理器 / 374 10.3.1 數據結構 / 374 10.3.2 創建房間 / 375 10.3.3 離開房間 / 376 10.3.4 輸出房間列表 / 376 10.4 玩家消息處理 / 377 10.4.1 查詢成績GetAchieve / 377 10.4.2 獲取房間列表GetRoomList / 377 10.4.3 創建房間CreateRoom / 378 10.4.4 加入房間EnterRoom / 379 10.4.5 獲取房間信息GetRoomInfo / 380 10.4.6 離開房間LeaveRoom / 380 10.5 玩家事件處理 / 381 10.6 調試 / 382 第11章 戰場系統 / 386 11.1 協議設計 / 386 11.2 開始戰斗 / 388 11.2.1 客戶端戰場數據 / 389 11.2.2 獲取陣營 / 390 11.2.3 清理場景 / 390 11.2.4 開始戰斗 / 391 11.2.5 產生坦克 / 391 11.2.6 服務端戰場數據 / 394 11.2.7 服務端條件檢測 / 395 11.2.8 服務端開啟戰斗 / 395 11.2.9 服務端消息處理 / 396 11.2.10 調試程序 / 397 11.3 三種同步位置方案 / 398 11.3.1 瞬移式位置同步 / 399 11.3.2 移動式位置同步 / 400 11.3.3 預測式位置同步 / 401 11.4 位置同步的服務端處理 / 402 11.5 位置同步的客戶端處理 / 404 11.5.1 發送同步信息 / 404 11.5.2 網絡同步類型 / 405 11.5.3 預測目標位置 / 405 11.5.4 向目標位置移動 / 408 11.5.5 監聽服務端協議 / 408 11.5.6 調試 / 409 11.6 同步炮塔炮管 / 410 11.7 輪子和履帶 / 411 第12章 炮火同步 / 413 12.1 炮彈同步 / 413 12.1.1 協議設計 / 413 12.1.2 服務端處理 / 414 12.1.3 客戶端發送同步信息 / 415 12.1.4 客戶端接收同步信息 / 416 12.2 傷害同步 / 418 12.2.1 協議設計 / 418 12.2.2 服務端處理 / 418 12.2.3 客戶端發送傷害信息 / 420 12.2.4 客戶端接收傷害信息 / 420 12.3 勝負判斷 / 423 12.3.1 協議設計 / 423 12.3.2 服務端勝負判斷 / 423 12.3.3 服務端處理戰斗結果 / 424 12.3.4 客戶端接收戰斗結果 / 425 12.4 中途退出 / 427 12.5 完整的游戲 / 428 |
序: |
|