展开全部

主编推荐语

本书主要讲述大型多人在线游戏开发的框架与编程实践,以实际例子来介绍从无到有地制作网络游戏框架的完整过程,让你了解网络游戏制作中的所有细节。

内容简介

全书共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 libschmerver库与游戏逻辑
  • 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框架的libschmerver
  • 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 ConnectObj内存组织
  • 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 总结
  • 写在最后——如何构建自己的框架
  • 附录A 在CentOS上建立开发环境
展开全部

评分及书评

评分不足
1个评分

出版方

机械工业出版社有限公司

机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。