內容簡介
為了幫助想了解入門遊戲伺服器開發的從業人員或非從業人員迅速掌握Java遊戲伺服器開發的技術,本書從遊戲的行業分析、Java技術、遊戲邏輯、資料庫技術、網路理論、伺服器技術、架構分析、系統最佳化等方面對遊戲伺服器開發做了全面解析,並對目前市面較熱門的遊戲進行分析,從行業到理論到技術,再到架構到實戰。本書帶領讀者熟悉Java遊戲伺服器開發相關領域,幫助想要入門遊戲伺服器領域的讀者更快地了解並掌握相關內容。本書實用性強,既是非遊戲行業人員迅速了解並掌握遊戲伺服器技術的寶典,又是遊戲行業從業人員進階提升的實用手冊。本書適合作為非遊戲行業但想入門遊戲行業的Java工程師、想了解遊戲服務端技術的遊戲前端工程師、需要遊戲伺服器開發入門工具書的人員,以及其他對遊戲伺服器開發有興趣愛好的各類人員的閱讀書籍。
目錄
基礎篇 走進遊戲開發
第1章 認識遊戲 2
1.1 什麼是遊戲 2
1.1.1 遊戲的定義 2
1.1.2 遊戲的分類 3
1.2 遊戲開發及分工 7
1.3 遊戲行業現狀分析 12
1.4 遊戲伺服器開發要點 15
總結 17
第2章 環境搭建 18
2.1 Windows開發環境搭建 18
2.1.1 安裝JDK 18
2.1.2 安裝Eclipse 20
2.1.3 安裝資料庫客戶端工具 21
2.1.4 安裝SSH工具 21
2.1.5 安裝其他工具 22
2.2 Mac OS X開發環境搭建 22
2.2.1 安裝JDK 23
2.2.2 安裝Eclipse 23
2.2.3 安裝資料庫客戶端工具 24
2.2.4 安裝SSH工具 24
2.2.5 安裝其他工具 24
2.3 Linux伺服器環境搭建 25
2.3.1 安裝JDK 25
2.3.2 安裝Tomcat 26
2.3.3 安裝MySQL 26
2.3.4 安裝Mongo 28
2.3.5 安裝Redis 29
2.3.6 安裝Memcache 32
2.4 總結 33
入門篇 遊戲開發
第3章 網路通信 36
3.1 通信協定 36
3.1.1 面向連線的TCP 37
3.1.2 面向數據報的UDP 38
3.1.3 HTTP編程 39
3.1.4 Socket編程 46
3.1.5 WebSocket編程 54
3.2 Java NIO基礎 58
3.2.1 BIO編程(Blocking-IO,阻塞式IO) 59
3.2.2 NIO編程(Non-Blocking IO,非阻塞式IO) 61
3.2.3 AIO編程(Async IO/NIO.2,異步IO) 68
3.3 Mina的介紹及其使用 75
3.3.1 總體架構 76
3.3.2 IoService 77
3.3.3 IoFilterChain 77
3.3.4 IoHandler 77
3.3.5 IoSession 77
3.3.6 工作原理 78
3.3.7 Acceptor與Connector執行緒 78
3.3.8 Processor執行緒 78
3.3.9 執行緒模型 79
3.3.10 請求的處理順序 80
3.3.11 Mina編程 81
3.4 Netty的介紹及其使用 88
3.4.1 總體架構 88
3.4.2 零拷貝 89
3.4.3 Codec框架 90
3.4.4 Channel 90
3.4.5 ChannelEvent 91
3.4.6 ChannelPipeline 91
3.4.7 Netty編程 91
總結 100
第4章 數據互動 101
4.1 數據傳輸格式 101
4.2 JSON的使用及解析 103
4.2.1 JSON語法 103
4.2.2 JSON對象 104
4.2.3 JSON數組 104
4.2.4 Java中的JSON解析 105
4.3 XML的使用及解析 110
4.3.1 XML的特徵 111
4.3.2 數據共享 111
4.3.3 數據傳輸 111
4.3.4 平台兼容 111
4.3.5 JSON與XML的比較 112
4.3.6 Java中的XML解析 112
4.4 Google Protocol Buffer的介紹及使用 128
4.4.1 Protobuffer的安裝與編譯 128
4.4.2 Protobuffer的語法 129
4.4.3 生成Java類 130
4.4.4 Eclipse的protobuf-dt外掛程式 131
4.4.5 示例程式 132
總結 134
第5章 數據快取與持久化 135
5.1 遊戲數據存儲 135
5.1.1 數據分類 136
5.1.2 數據快取方式 136
5.1.3 數據持久化方式 137
5.1.4 資料庫的比較 137
5.2 MySQL的介紹及使用 138
5.2.1 特點 138
5.2.2 數據類型 139
5.2.3 MySQL的使用 139
5.2.4 在Java中使用MySQL 142
5.3 MongoDB的介紹及使用 157
5.3.1 MongoDB的主要特點 157
5.3.2 了解API 159
5.3.3 Mongo的使用 162
5.4 Memcache的介紹及使用 174
5.4.1 Memcache的特點 175
5.4.2 Memcache的使用場景 176
5.4.3 在Java中使用Memcache 177
5.4.4 客戶端使用要點 182
5.5 Redis的介紹及使用 183
5.5.1 Redis的特點 183
5.5.2 Redis的持久化 184
5.5.3 Redis的主從複製 184
5.5.4 在Java中使用Redis 185
總結 199
第6章 遊戲邏輯 200
6.1 邏輯架構 200
6.1.1 項目目錄 200
6.1.2 模組介紹 202
6.2 邏輯流程 212
6.2.1 網路模組 212
6.2.2 執行緒池 221
6.2.3 啟動伺服器 222
6.2.4 邏輯請求處理 223
6.2.5 關閉伺服器 228
6.3 事件處理器 229
6.4 定時任務 236
6.5 RPC框架 244
6.5.1 Json-rpc 244
6.5.2 Motan 253
總結 264
第7章 遊戲安全 265
7.1 遊戲安全的必要性 265
7.2 登錄安全 266
7.3 遊戲充值 266
7.4 SQL注入 267
7.5 通信協定與訊息格式 268
7.6 整型溢出 269
7.7 並發請求 269
7.8 邏輯漏洞 270
7.9 日誌系統 271
總結 271
高級篇 遊戲伺服器的設計及最佳化
第8章 伺服器架構分析 274
8.1 伺服器架構的演變過程 274
8.2 全區同服架構分析 277
8.2.1 COC架構模型分析 278
8.2.2 COK架構模型分析 279
8.3 分區分服架構分析 281
8.4 弱聯網類遊戲架構分析 282
8.5 MMORPG類遊戲架構分析 283
總結 285
第9章 《皇室戰爭》遊戲開發實戰 286
9.1 微競技遊戲介紹 286
9.2 架構分析及搭建 287
9.2.1 功能分析 287
9.2.2 伺服器部署架構 288
9.2.3 系統架構 289
9.3 數據持久化方案 290
9.3.1 數據結構分析 290
9.3.2 使用Morphia操作MongoDB 295
9.4 Netty網路框架的使用 300
9.4.1 Netty實現的HTTP伺服器 300
9.4.2 Netty實現的TCP伺服器 309
9.5 賬號系統 316
9.6 個人信息 323
9.7 英雄卡牌系統 327
9.8 寶箱系統 334
9.9 戰鬥系統 339
9.10 客戶端模擬 349
9.10.1 登錄界面 349
9.10.2 選服界面 354
9.10.3 主邏輯界面 358
9.10.4 對戰界面 363
總結 372
第10章 遊戲開發技術前景 373
10.1 Egret 373
10.2 Cocos 2D 374
10.3 Unity 375
10.4 Unreal 376
10.5 Java 376
10.6 Node.js 377
總結 378