书籍作者:罗培羽 | ISBN:9787111687559 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:6770 |
创建日期:2021-12-22 | 发布日期:2021-12-22 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
《百万在线:大型游戏服务端开发》首部分:学以致用(第1-4章)
这部分介绍了Skynet引擎的使用方法及注意事项,以《球球大作战》的案例贯穿其中,全面又详尽地剖析了服务端结构设计、通信协议格式、数据表结构设计、断线重连等方案的核心技术。
《百万在线:大型游戏服务端开发》第二部分:入木三分(第5-7章)
这部分揭示了在多核时代采用现代C++编写多线程TCP网络服务器的高效做法,以C++重写Skynet的案例贯穿其中,使用大量图表,生动翔实地描述Linux环境下的编程技术。
《百万在线:大型游戏服务端开发》第三部分:各个击破(第8-11章)
这部分列举了同步算法、热更新、防外挂等实际工程难题,并对其逐一击破,非常具有实用价值。
尽管《百万在线:大型游戏服务端开发》以Skynet为例,但其同样适用于使用C++自研引擎的项目组,甚至是选用Erlang、Golang、Java的开发者。
罗培羽,现就职于广州四三九九公司技术研发中心,参与游戏研发和技术研究工作。曾组织“民间团队”开发同人游戏《仙剑奇侠传5前传之心愿》,是多年来“民间团队”制作3D仙剑同人游戏的一次成功尝试。著有《手把手教你用C#制作RPG游戏》《Unity3D网络游戏实战》等计算机图书,所著图书被部分高校的软件工程专业选为教材。
这本书讲什么
本书是基于C++与Lua语言开发游戏服务端的入门图书,内容涵盖Skynet引擎、CH底层开发、服务端架构设计等多个方面,全面展现网络游戏核心技术。
第一部分“学以致用”揭示了Skynet引擎的使用方法及注意事项,以《球球大作战》的案例贯穿这部分内容,全面又详尽地剖析服务端结构设计、通信协议格式、数据表结构设计、断线重连方案等众多核心技术。第二部分“入木三分”揭示了在多核时代采用现代C++编写多线程TCP网络服务器的高效做法,以C++重写Skynet的案例贯穿这部分内容,使用大量图表,生动翔实地描述Linux环境下的编程技术。第三部分“各个击破”列举了同步算法、热更新、防外挂等实际工程难题,并对其逐一击破,非常具有实用价值。
尽管本书以Skynet为例,但目的是探求服务端开发的一般性方法,因此它同样适用于使用C++自研引擎的项目组,甚至是选用Erlang、Golang、Java等语言的开发者。本书既可以作为大学计算机相关专业的指导教程,也可以作为游戏公司的培训材料,亦是独立游戏开发者的参考指南。
为什么写这本书
进入手游时代,服务端技术也在向前演进。现代游戏服务端既要承载数以万计的在线玩家,又要适应快速变化的市场需求,因此,如何设计合适的架构就成了重中之重。服务端技术并不简单,作为服务端新人,全面掌握服务端技术可能需要数年时间;作为游戏公司,培养员工的成本也不低。
新人或许有这样的经历,在请教资深技术人应该看什么资料学习C++服务端知识时,可能得到的答案是先把《TCP/IP详解》《UNIX环境高级编程》《数据库系统》这些大部头啃一遍,或者是把Redis、Skynet的源码过一遍,再看点Linux源码就都会了。虽说啃大部头、看源码是服务端从业者的必经之路,但人的时间是有限的,因此,在入门阶段,在有限的时间里学到最实用的知识很关键。
找到契合实际项目开发需要的学习资料并不容易。市面上的服务端资料,有些着重讲网络编程、多线程处理等操作系统知识,这些知识虽然很重要,但不太适合“快速入门并马上有产出”的开发节奏;有些又太过简单浅显,不能适应商业游戏的品质要求。游戏服务端的知识体系既包含系统底层知识,也包含具体游戏业务的设计,内容很多,学习不易。
基于以上所述,我决定将自己多年的开发经验全盘托出,编写一本既实用又深入浅出的游戏服务端教程,为未来游戏行业的繁荣发展添砖加瓦。
前言
第一部分 学以致用
第1章 从角色走路说起
1.1 每走一步都有事情发生
1.1.1 走路的五个步骤
1.1.2 服务端视角的游戏流程
1.2 从网络编程着手
1.2.1 用打电话做比喻
1.2.2 最少要掌握的三个概念
1.2.3 搭一个简单的服务器
1.2.4 让角色走起来
1.3 能够承载多少玩家
1.3.1 单线事件模型
1.3.2 承载量估算
1.4 用分布式扩能
1.4.1 多个程序协同工作
1.4.2 三个层次的交互
1.4.3 搭个简单的分布式服务端
1.4.4 -致性问题
1.5 回头看操作系统
1.5.1 多进程为什么能提升性能
1.5.2 阻塞为什么不占CPU
1.5.3 线程会占用多少资源
1.6 -张地图的极限
1.6.1 难以分割的业务
1.6.2 在延迟和容量间权衡
1.7 万物皆Actor
1.7.1 灵感来自Erlang
1.7.2 对世界的抽象
1.7.3 为何适用
第2章 Skynet入门精要
2.1 下载、编译、运行
2.1.1 下载和编译
2.1.2 运行范例
2.2 理解Skynet
2.2.1 节点和服务
2.2.2 配置文件
2.2.3 目录结构
2.2.4 启动流程
2.3 第一个程序PingPong
2.3.1 功能需求
2.3.2 学习服务模块
2.3.3 代码实现
2.3.4 运行结果
2.4 写Echo,练习网络编程
2.4.1 功能需求
2.4.2 学习网络模块
2.4.3 代码实现
2.4.4 运行结果
2.5 做聊天室,学习多人交互
2.5.1 功能需求
2.5.2 代码实现
2.6 做留言板,使用数据库
2.6.1 功能需求
2.6.2 学习数据库模块
2.6.3 准备数据库
2.6.4 代码实现
2.6.5 运行结果
2.7 监控服务状态
2.7.1 启用调试控制台
2.7.2 监控指令
2.8 使用节点集群建立分布式系统
2.8.1 功能需求
2.8.2 学习集群模块
2.8.3 节点配置
2.8.4 代码实现
2.8.5 运行结果
2.8.6 使用代理
2.9 使用Skynet的注意事项
……
第3章 案例:《球球大作战》
第二部分入木三分
第三部分各个击破