书籍详情
《百万在线:大型游戏服务端开发罗培羽》[44M]百度网盘|亲测有效|pdf下载
  • 百万在线:大型游戏服务端开发罗培羽

  • 出版社:互动出版网图书专营店
  • 热度:10497
  • 上架时间:2024-06-30 09:08:33
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

 书名:  百万在线:大型游戏服务端开发|8083549
 图书定价:  99元
 图书作者:  罗培羽
 出版社:  机械工业出版社
 出版日期:  2021/8/20 0:00:00
 ISBN号:  9787111687559
 开本:  16开
 页数:  353
 版次:  1-1
 内容简介
部分“学以致用”揭示了 Skynet 引擎的使用方法及注意事项,以“球球大作战”的案例贯穿本篇内容,全面又详尽地剖析服务端结构设计、通信协议格式、数据表结构设计、断线重连方案等众多核心技术。第二部分“入木三分”揭示了在多核时代采用现代 C++ 编写多线程 TCP 网络服务器的高效做法,以 C++ 重写 Skynet 的案例贯穿本篇内容,使用大量图表,生动翔实地描述 Linux 环境下的编程技术。第三部分“各个击破”列举了同步算法、热更新、防外挂等实际工程难题,并对其逐一击破,非常具有实用价值。
 目录

前 言
第一部分 学以致用
第1章 从角色走路说起 2
1.1 每走一步都有事情发生 2
1.1.1 走路的五个步骤 3
1.1.2 服务端视角的游戏流程 3
1.2 从网络编程着手 4
1.2.1 用打电话做比喻 4
1.2.2 最少要掌握的三个概念 5
1.2.3 搭一个简单的服务器 6
1.2.4 让角色走起来 8
1.3 能够承载多少玩家 9
1.3.1 单线事件模型 9
1.3.2 承载量估算 9
1.4 用分布式扩能 10
1.4.1 多个程序协同工作 11
1.4.2 三个层次的交互 11
1.4.3 搭个简单的分布式服务端 12
1.4.4 一致性问题 14
1.5 回头看操作系统 15
1.5.1 多进程为什么能提升性能 15
1.5.2 阻塞为什么不占CPU 16
1.5.3 线程会占用多少资源 17
1.6 一张地图的极限 18
1.6.1 难以分割的业务 19
1.6.2 在延迟和容量间权衡 19
1.7 万物皆Actor 19
1.7.1 灵感来自Erlang 20
1.7.2 对世界的抽象 20
1.7.3 为何适用 22
第2章 Skynet入门精要 25
2.1 下载、编译、运行 26
2.1.1 下载和编译 26
2.1.2 运行范例 27
2.2 理解Skynet 28
2.2.1 节点和服务 28
2.2.2 配置文件 29
2.2.3 目录结构 30
2.2.4 启动流程 31
2.3 第一个程序PingPong 32
2.3.1 功能需求 32
2.3.2 学习服务模块 32
2.3.3 代码实现 33
2.3.4 运行结果 35
2.4 写Echo,练习网络编程 35
2.4.1 功能需求 36
2.4.2 学习网络模块 36
2.4.3 代码实现 37
2.4.4 运行结果 37
2.5 做聊天室,学习多人交互 38
2.5.1 功能需求 38
2.5.2 代码实现 38
2.6 做留言板,使用数据库 39
2.6.1 功能需求 39
2.6.2 学习数据库模块 40
2.6.3 准备数据库 40
2.6.4 代码实现 43
2.6.5 运行结果 45
2.7 监控服务状态 45
2.7.1 启用调试控制台 45
2.7.2 监控指令 46
2.8 使用节点集群建立分布式系统 48
2.8.1 功能需求 48
2.8.2 学习集群模块 48
2.8.3 节点配置 49
2.8.4 代码实现 49
2.8.5 运行结果 51
2.8.6 使用代理 52
2.9 使用Skynet的注意事项 52
2.9.1 协程的作用 52
2.9.2 扣除金币的Bug 52
第3章 案例:《球球大作战》 54
3.1 功能需求 54
3.2 方案设计 55
3.2.1 拓扑结构 55
3.2.2 各服务功能 56
3.2.3 消息流程 57
3.2.4 设计要点 57
3.3 搭架子:目录结构和配置 58
3.3.1 目录结构 58
3.3.2 配置文件 58
3.3.3 第1版主服务 59
3.3.4 启动脚本 60
3.3.5 服务配置 60
3.4 磨刀工:封装易用的API 62
3.4.1 定义属性 63
3.4.2 启动逻辑 63
3.4.3 消息分发 64
3.4.4 辅助方法 65
3.4.5 编写空服务 66
3.5 分布式登录流程 67
3.5.1 完整的登录流程 67
3.5.2 掉线登出流程 69
3.5.3 协议格式 69
3.6 代码实现:gateway 70
3.6.1 连接类和玩家类 70
3.6.2 接收客户端连接 71
3.6.3 处理客户端协议 74
3.6.4 编码和解码 75
3.6.5 消息分发 76
3.6.6 发送消息接口 78
3.6.7 确认登录接口 79
3.6.8 登出流程 80
3.7 代码实现:login 81
3.7.1 登录协议 81
3.7.2 客户端消息分发 81
3.7.3 登录流程处理 82
3.8 代码实现:agentmgr 83
3.8.1 玩家类 83
3.8.2 请求登录接口 84
3.8.3 请求登出接口 86
3.9 代码实现:nodemgr 86
3.10 代码实现:agent(单机版) 87
3.10.1 消息分发 87
3.10.2 数据加载 87
3.10.3 保存和tui出 88
3.10.4 单机测试 88
3.11 测试登录流程 89
3.11.1 第2版主服务 89
3.11.2 单节点测试 90
3.11.3 跨节点测试 90
3.12 战斗流程梳理 91
3.12.1 战斗流程 91
3.12.2 协议 91
3.13 代码实现:场景服务 93
3.13.1 Ball类 93
3.13.2 Food类 94
3.13.3 进入战斗 95
3.13.4 tui出战斗 97
3.13.5 操作移动 97
3.13.6 主循环 97
3.13.7 移动逻辑 99
3.13.8 生成食物 99
3.13.9 吞下食物 100
3.13.10 第3版主服务 101
3.14 代码实现:agent(跨服务器版) 101
3.14.1 多个模块 101
3.14.2 进入战斗 101
3.14.3 tui出战斗 103
3.14.4 最后的辅助方法 103
3.14.5 运行结果 104
3.15 改进 104
第4章 Skynet进阶技法 106
4.1 用“长度信息”解TCP包 107
4.1.1 长度信息法 107
4.1.2 使用netpack模块解析网络包 107
4.1.3 测试小案例 110
4.1.4 阻塞方法的时序 113
4.2 用Json序列化协议 114
4.2.1 安装lua-cjson模块 115
4.2.2 使用lua-cjson模块 115
4.2.3 设计完整协议格式 117
4.2.4 编码Json协议 117
4.2.5 解码Json协议 118
4.2.6 测试 118
4.3 用Protobuf高效传输 119
4.3.1 什么是Protobuf 120
4.3.2 安装Protobuf和pbc 120
4.3.3 编译proto文件 121
4.3.4 编码和解码 121
4.4 如何设计游戏数据库 122
4.4.1 传统设计方法 123
4.4.2 传统的数据库难以应对版本更新 124
4.4.3 Key-Value表结构 125
4.4.4 用Protobuf描述玩家数据 126
4.4.5 创建角色 126
4.4.6 读取角色数据 127
4.4.7 应对游戏版本更新 128
4.4.8 拆分数据表 129
4.5 如何关闭服务器 130
4.5.1 管理控制台 130
4.5.2 关闭服务器的流程 131
4.5.3 阻止新玩家连入 132
4.5.4 缓缓踢下线 133
4.5.5 测试关闭服务器的功能 135
4.6 怎样做定时系统 136
4.6.1 每天第一次登录 136
4.6.2 定时唤醒 137
4.7 断线重连 138
4.7.1 原理解析 139
4.7.2 身份标识 139
4.7.3 消息缓存 140
4.7.4 处理重连请求 141
4.7.5 断线处理 142
4.7.6 测试 143
第二部分 入木三分
第5章 你好,C++并发世界 146
5.1 从HelloWorld开始 147
5.1.1 HelloWorld 147
5.1.2 用CMake构建工程 147
5.1.3 “学猫叫”小例子 149
5.1.4 各文件的依赖关系 151
5.1.5 模仿Skynet写底层 151
5.2 多核多线程 153
5.2.1 操作系统调度原理 153
5.2.2 创建线程对象 154
5.2.3 模仿Skynet开启线程 155
5.2.4 等待线程退出 158
5.2.5 Worker设计模式 159
5.3 探索C++对象模型 160
5.3.1 Actor模型的消息类 160
5.3.2 栈、堆、智能指针 161
5.3.3 对象的内存分布 162
5.4 队列与锁 162
5.4.1 模仿Skynet写服务类 163
5.4.2 锁的初始化 164
5.4.3 多线程队列插入 166
5.4.4 在多线程队列取出元素 166
5.4.5 三个回调方法 168
5.4.6 分析临界区 168
5.5 多线程下的对象管理 170
5.5.1 使用...
 编辑推荐
使用Skynet引擎开发对战游戏,直面各类工程难题!
《Unity3D网络游戏实战(第2版)》姊妹篇,共同构建“客户端+服务端”游戏开发技术体系!