幫助中心 | 我的帳號 | 關於我們

多人在線遊戲架構實戰(基於C++的分散式遊戲編程)

  • 作者:編者:彭放|責編:遲振春
  • 出版社:機械工業
  • ISBN:9787111667926
  • 出版日期:2021/01/01
  • 裝幀:平裝
  • 頁數:398
人民幣:RMB 109 元      售價:
放入購物車
加入收藏夾

內容大鋼
    本書主要講述大型多人在線遊戲開發的框架與編程實踐,以實際例子來介紹從無到有地製作網路遊戲框架的完整過程,讓讀者了解網路遊戲製作中的所有細節。
    全書共12章,從網路遊戲的底層網路編程開始,逐步引導讀者學習網路遊戲開發的各個步驟。本書通過近50個真實示例、近80個流程圖,以直觀的方式闡述和還原遊戲製作的全過程,涵蓋了網路遊戲設計的核心概念和實現,包括遊戲主循環、線程、Actor模式、定時器、對象池、組件編碼、架構層的解耦等。
    本書既可以作為大學電腦相關專業網路遊戲開發課程的參考書,又可以作為網路遊戲行業從業人員的編程指南。

作者介紹
編者:彭放|責編:遲振春

目錄
前言
第1章  網路編程基礎
  1.1  單機遊戲與網路遊戲的區別
  1.2  理解IP地址
  1.3  理解TCP/IP
  1.4  阻塞式網路編程
    1.4.1  工程源代碼
    1.4.2  服務端代碼分析
    1.4.3  客戶端代碼分析
    1.4.4  系統差異
    1.4.5  網路底層函數說明
    1.4.6  小結
  1.5  非阻塞網路編程
    1.5.1  工程源代碼
    1.5.2  服務端代碼分析
    1.5.3  客戶端代碼分析
    1.5.4  小結
  1.6  總結
第2章  網路IO多路復用
  2.1  Select網路模型
    2.1.1  ::select函數說明
    2.1.2  工程源代碼
    2.1.3  網路基類:Network
    2.1.4  NetworkListen分析
    2.1.5  Server流程詳解
    2.1.6  NetworkConnector分析
    2.1.7  測試流程詳解
    2.1.8  ConnectObj分析
    2.1.9  Buffer分析
    2.1.10  RecvNetworkBuffer分析
    2.1.11  SendNetworkBuffer分析
    2.1.12  Packet分析
    2.1.13  小結
  2.2  Epoll網路模型
    2.2.1  函數說明
    2.2.2  源代碼分析
    2.2.3  小結
  2.3  網路協議:protobuf
    2.3.1  在Windows下編譯使用protobuf
    2.3.2  在Linux下編譯使用protobuf
    2.3.3  使用protobuf定義協議
  2.4  總結
第3章  線程、進程以及Actor模型
  3.1  遊戲架構概述
    3.1.1  無服務端遊戲
    3.1.2  單進程CS架構
    3.1.3  多進程CS架構
  3.2  框架瓶頸
    3.2.1  滾服遊戲
    3.2.2  副本遊戲

    3.2.3  大圖分割空間遊戲
  3.3  設計遊戲框架
  3.4  遊戲主循環
  3.5  理解進程和線程
    3.5.1  進程是什麼
    3.5.2  線程是什麼
    3.5.3  C++標準線程庫
  3.6  Actor模型
  3.7  遊戲框架中的線程
    3.7.1  包裹類ThreadObject
    3.7.2  線程類Thread
    3.7.3  線程管理類ThreadMgr
    3.7.4  libserver庫與遊戲邏輯
  3.8  Actor對象之間的消息處理機制
    3.8.1  消息定義原則
    3.8.2  消息隊列機制
  3.9  總結
第4章  賬號登錄與驗證
  4.1  登錄流程圖
  4.2  製作一個簡單的驗證介面
    4.2.1  Nginx參考配置
    4.2.2  php-fpm參考配置
  4.3  導入PHP登錄介面
    4.3.1  修改PHP中的資料庫配置
    4.3.2  導入測試賬號
    4.3.3  批量生成賬號
  4.4  編碼中用到的第三方庫
    4.4.1  庫libcurl
    4.4.2  庫libjsoncpp
  4.5  賬號驗證代碼分析
    4.5.1  定義登錄協議號
    4.5.2  處理協議的Account類
    4.5.3  Account類如何放置到線程中
    4.5.4  處理驗證的HttpRequestAccount類
  4.6  結果測試
  4.7  消息過濾機制
  4.8  測試機器人
    4.8.1  狀態機
    4.8.2  狀態機基類
    4.8.3  狀態機管理類
    4.8.4  Robot類中的狀態機
  4.9  批量登錄測試
  4.10  總結
第5章  性能優化與對象池
  5.1  Visual Studio性能工具
  5.2  內存中的數據結構
    5.2.1  交換型數據結構
    5.2.2  刷新型數據結構
  5.3  gprof
    5.3.1  gprof調用堆棧圖

    5.3.2  讓進程安全退出
    5.3.3  用gprof工具查看框架
  5.4  valgrind
  5.5  對象池
    5.5.1  對象池代碼分析
    5.5.2  使用cmd命令查看對象池
  5.6  總結
第6章  搭建ECS框架
  6.1  一個簡單的ECS工程
    6.1.1  組件類Component
    6.1.2  實體類Entity
    6.1.3  系統類System
    6.1.4  管理類EntitySystem
    6.1.5  測試
  6.2  基於ECS框架的libserver
    6.2.1  通過字元串動態創建類
    6.2.2  提供多參變數來創建實例
    6.2.3  EntitySystem的工作原理
  6.3  基於ECS框架的login和robots工程
    6.3.1  Account類
    6.3.2  動態創建組件或實例
    6.3.3  ECS框架下的網路通信
    6.3.4  執行效率
  6.4  YAML文件
    6.4.1  YAML編譯安裝
    6.4.2  讀取YAML配置文件
    6.4.3  合併線程
  6.5  log4cplus日誌
    6.5.1  log4cplus的編譯安裝
    6.5.2  配置文件
    6.5.3  使用log4cplus
  6.6  總結
第7章  MySQL資料庫
  7.1  MySQL Connector/C
  7.2  連接時使用的函數說明
  7.3  資料庫連接組件
    7.3.1  MysqlConnector組件
    7.3.2  連接資料庫
    7.3.3  關閉連接
  7.4  寫入數據時使用的函數說明
  7.5  寫入數據示例
    7.5.1  創建預處理
    7.5.2  用預處理創建角色
  7.6  查詢數據時使用的函數說明
  7.7  查詢數據示例
    7.7.1  Query查詢函數
    7.7.2  查詢玩家數據
  7.8  數據表的創建與更新
    7.8.1  創建表
    7.8.2  更新表

    7.8.3  測試更新與創建組件
  7.9  數據表中的數據結構與protobuf結構
  7.10  角色查詢與創建流程
    7.10.1  為login進程與dbmgr進程創建連接類
    7.10.2  找到指定的NetworkConnector實例
    7.10.3  創建角色
    7.10.4  機器人登錄創建角色測試
  7.11  總結
第8章  深入學習組件式編程
  8.1  新的系統管理類SystemManager
    8.1.1  實體系統EntitySystem
    8.1.2  更新系統UpdateSystem
    8.1.3  消息系統MessageSystem
    8.1.4  測試執行效率
  8.2  allinone工程
    8.2.1  新工程allinone
    8.2.2  協議是如何被轉發的
    8.2.3  查看線程中的所有對象
    8.2.4  測試執行效率
  8.3  線程分類
  8.4  IAwakeSystem介面與對象池
    8.4.1  DynamicObjectPoolCollector對象池集合
    8.4.2  全局單例對象
    8.4.3  查看線程中的所有對象
  8.5  主動銷毀對象
    8.5.1  一般組件銷毀
    8.5.2  引用計數銷毀對象
  8.6  時間堆
    8.6.1  堆實現代碼
    8.6.2  時間堆組件
  8.7  總結
第9章  伺服器管理進程與HTTP
  9.1  啟動多個login進程
  9.2  appmgr進程
  9.3  HTTP
  9.4  使用Mongoose分析HTTP格式
    9.4.1  HTTP類型
    9.4.2  接收HTTP數據
    9.4.3  處理HTTP數據的協議號
    9.4.4  收到HTTP請求是如何響應的
    9.4.5  發送HTTP返回數據流程
  9.5  為Packet定義新的網路標識
    9.5.1  使用網路標識創建一個連接
    9.5.2  使用網路標識發送數據
    9.5.3  向外部請求HTTP數據
  9.6  HTTP分塊
  9.7  機器人測試批量登錄
  9.8  總結
第10章  分散式登錄與Redis內存資料庫
  10.1  game與space的定位

    10.1.1  選擇合適的game進程
    10.1.2  使用token登錄game進程
    10.1.3  Player組件
  10.2  Redis及其第三方庫
    10.2.1  Redis的安裝
    10.2.2  Redis命令行命令
    10.2.3  hireids厙
    10.2.4  組件RedisConnector
    10.2.5  Redis在login中的應用
    10.2.6  Redis在game中的應用
    10.2.7  從Redis刪除數據
  10.3  性能瓶頸分析
    10.3.1  使用日誌查看瓶頸
    10.3.2  優化MessageComponent組件
    10.3.3  ConnectObi內存組織
  10.4  多進程登錄協議回顧
  10.5  總結
第11章  分散式跳轉方案
  11.1  資源數據配置與讀取
    11.1.1  資源管理類ResourceManager
    11.1.2  地圖資源管理類ResourceWorldMgr
    11.1.3  地圖資源類ResourceWorld
  11.2  地圖類World與代理類WorldProxy
    11.2.1  地圖類World
    11.2.2  為什麼需要WorldProxy
  11.3  分散式地圖跳轉流程
    11.3.1  發起跳轉協議的時機
    11.3.2  跳轉協議的數據定義
    11.3.3  目標代理地圖收到跳轉協議
    11.3.4  網路標識如何在網路中傳遞
    11.3.5  space進程發送的協議如何轉發到客戶端
  11.4  通過客戶端進入遊戲
  11.5  玩家在WorldProxy之間的跳轉
  11.6  總結
第12章  斷線與動態載入系統
  12.1  玩家斷線
    12.1.1  玩家在login進程中斷線
    12.1.2  玩家在game進程中斷線
    12.1.3  玩家斷線時World類的處理
    12.1.4  玩家數據的讀取與保存
    12.1.5  如何進入斷線之前的地圖
  12.2  進程之間的斷線
    12.2.1  login進程斷線與重連
    12.2.2  game進程斷線與重連
    12.2.3  space進程斷線與重連
    12.2.4  appmgr進程斷線與重連
  12.3  動態新增系統
    12.3.1  MoveComponent組件
    12.3.2  新系統MoveSystem
    12.3.3  載入新系統

    12.3.4  測試移動
  12.4  總結
寫在最後——如何構建自己的框架

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032