高并发×低延迟如何并存?
游戏开发者奥斯卡CEDECAWARDS2011著作奖
MMORPG·动作类游戏·多人游戏·非同步I/O·套接字·RPC·事件驱动·实时·在内存中·多核·并行处理·吞吐量·自动化测试·空间分配·积分管理·支付·基础设施·开发体制
从游戏策划与编程、系统架构、服务器运维、开发团队管理等方面全景展现网络游戏核心技术
详细解密如何应对大规模同时在线用户带来的性能挑战
结合案例游戏教你由浅入深一步一步开发自己的网络游戏
专业游戏开发技术人员、游戏制作人、运营者案头必备参考书
网络游戏核心技术与实战 内容简介
《网络游戏核心技术与实战》从游戏策划与编程、系统架构、服务器运维、开发团队管理等方面全景展现网络游戏核心技术。作者使用大量图表,生动翔实地描述了网络游戏的特点和架构,并以C/S MMO游戏和P2P MO游戏为例,通过实际代码告诉开发者如何应对实时、大数据量通信的挑战,在不使用昂贵的中间件的基础上,从零开始实现趣味性强的多人网络游戏系统。此外,《网络游戏核心技术与实战》还从游戏运营和基础设施建设等角度,向读者展现了网络游戏技术的全貌。
《网络游戏核心技术与实战》适合作为综合性的网络游戏开发的参考书籍,无论是专业游戏开发技术人员还是游戏制作人、运营者都可以从中获得启发与收获。
网络游戏核心技术与实战 目录
第0章 [快速入门] 网络游戏编程网络和游戏编程的技术基础
0.1 网络游戏开发者所需了解的网络编程基础
0.1.1 网络编程是必需的
0.1.2 网络编程与互联网编程
0.1.3 互联网编程的历史和思想
0.1.4 OSI参考模型--透明地处理标准和硬件的变化
0.1.5 网络游戏系统及其层次结构
0.1.6 套接字API的基础知识
0.1.7 网络游戏和套接字API--使用第4层的套接字API
专栏 网络编程的特性和游戏架构的关系
0.2 套接字编程入门--处理多个并发连接、追求性能
0.2.1 通信链路的确定(复习)
0.2.2 套接字API基础--一个简单的ECHO服务器、ECHO客户端示例
0.2.3 TCP通信链路的状态迁移和套接字API
0.2.4 处理多个并发连接--通向异步套接字API之路
0.2.5 同步调用(阻塞)和线程
0.2.6 单线程、非阻塞、事件驱动--使用select函数进行轮询
0.2.7 网络游戏输入输出的特点--单线程、事件驱动、非阻塞
0.2.8 网络游戏和实现语言
0.2.9 充分发挥性能和提高开发效率--从实现语言到底层结构
0.2.10 发挥多核服务器的性能
专栏 输入输出的实现方针和未来提高性能的可能性
0.2.11 多核处理器与网络吞吐量--网络游戏与小数据包
0.2.12 简化服务器实现--libevent
0.3 RPC指南--最简单的通信中间件
0.3.1 通信库的必要性
0.3.2 网络游戏中使用的RPC的整体结构
0.3.3 [补充] UDP的使用
0.4 游戏编程基础
0.4.1 游戏编程的历史
0.4.2 采用“只要能画点就能做出游戏”的方针来开发入侵者游戏
0.4.3 游戏编程的基本剖析
0.4.4 游戏编程精粹--不使用线程的“任务系统”
0.4.5 两种编程方法的相似性--不使用线程
0.5 小结
专栏 确保开发效率和各平台之间的可移植性
第1章 网络游戏的历史和演化游戏进入了网络世界
1.1 网络游戏的技术历史
1.1.1 网络游戏出现前的50年
1.1.2 20世纪50年代前:计算机诞生
1.1.3 20世纪50年代:早期的电子游戏
1.1.4 20世纪60年代:各种颇具影响的机器登上历史舞台
1.1.5 20世纪70年代:网络游戏的基本要素
1.1.6 20世纪80年代:网络对战游戏登场
1.1.7 20世纪90年代:游戏市场扩大
1.1.8 本世纪前10年的前期:网络游戏商业化
1.1.9 本世纪前10年的后半期:基于Web浏览器的MMOG在商业上获得成功
1.1.10 2010年之后:究竟会出现怎么样的游戏呢?
1.2 从技术变迁看游戏文化和经济圈
1.2.1 解读技术发展图
1.2.2 3个圈(三大范畴)
1.2.3 两个游戏经济/文化圈
1.2.4 文化、经济与技术的关系
1.3 小结
专栏 成为出色的网络游戏开发程序员的条件
......
第 2 章 何为网络游戏:网络游戏面面观
第 3 章 网络游戏的架构:挑战游戏的可玩性和技术限制
第 4 章 [ 实践 ] C/S MMO 游戏开发:长期运行的游戏服务器
第 5 章 [ 实践 ] P2P MO 游戏开发:没有专用服务器的动作类游戏的实现
第 6 章 网络游戏的辅助系统:完善游戏服务的必要机制
第 7 章 支持网络游戏运营的基础设施:架构、负荷测试和运营
第 8 章 网络游戏的开发体制:团队管理的挑战
网络游戏核心技术与实战 精彩文摘
5.1.3 P2P MO 游戏的特点——和 C/S MMO 游戏的比较和难点
P2P MO 游戏的需求和 C/S MMO 游戏正好相反,这里列举一下它们的不同特点。
不需要大量数据交互
游戏的相关资源,除了贴图和动画之外一般在几百兆以内,可以全部安装在普通玩家的 PC 中 2。因为不需要联网也可以进行游戏,所以需要安装全部的数据和资源。
配置信息对玩家是可见的
因为游戏的配置信息是安装在玩家的电脑中,所以可以在本地文件中看到配置内容,游戏运行时也可以跟踪内存信息,而且还可以通过逆向工程破解全部的游戏内容,这些都是无法预防的。
不能严格保证游戏数据变更的安全性(可以作弊)
正如前文所述,玩家可以通过修改内存数据来作弊,要保护游戏数据的安全性是很困难的。这样造成的结果就是:原本需要玩家花费数百小时,长时间培养游戏角色的游戏方式,以及具有精心创造的宏大游戏世界,能让玩家在不知不觉中消耗大量时间和精力的游戏方式就难以实现了。对玩家来说,这种经过长时间游戏积累的数据一旦损坏或者丢失将是难以承受的损失,游戏体验的品质也就不能得到保证。导致的结果就是 P2P MO 游戏的游戏时长较短并且以游戏内容为中心。
不能进行 P2P 连接的 NAT 网络环境有很多
玩家之间不能通过端对端方式进行网络连接(TCP 或者 UDP 的连接方式)的情况有很多。比如在公司局域网游戏时,或者使用公寓楼、大学、当地的有线电视网络等通过路由器构建的 NAT 公共网络。在日本,这种情况大概占到 10%~30%。另外还有因为 P2P 通信量的异常增大而禁止直接发送数据的情况。这种案例最近有所增加。利用这些网络环境的玩家根据所在地区的差别又会出现各种各样的情况。游戏内容针对的目标玩家不同、上市时间、游戏主机等各种因素的复杂组合导致了 NAT 问题的发生。为了解决诸如 UPnP3、SOCKS4、UPD Hole Punching(后面章节会介绍)等问题考虑了各种方法,但是还是不能完全解决。IPv6 网络普及之后也许情况会有所好转,但前景还不是很明朗。
不能简单地更新游戏
P2P 游戏的更新比较麻烦,一般要向玩家发布软件更新包并安装到 PC 来升级硬盘中的游戏程序。所以可能会有玩家在玩老版本的游戏。Steam 这类新的下载平台虽然可以解决这个问题,但是因为在不能访问网络的情况下一个人也可以玩,所以玩家往往选择不升级继续在离线的情况下玩老的版本。
不方便结合社交网络等网络服务
因为游戏程序不联网也可以玩,所以游戏结果就不能发布到社交网络上。
玩家掉线 5 的情况比较多
因为没有一直在线的服务器,游戏的通信依赖于玩家的机器,如果玩家突然关掉电源或者突然结束运行中的游戏就会导致通信中断。这种情况,需要同步玩家之间的游戏数据,同步显然不能花很长时间,所以如果数据量过大是不可行的。
→→→→→→→→→→→→→→→→→→→→查找获取
2019年7月14日 下午3:47 1F
很好的书,太棒了。
2019年12月6日 上午9:23 2F
感谢分享
2020年5月13日 上午10:46 3F
谢谢
2021年1月19日 下午3:38 4F
太棒了,特别想自己开发一款在网络上大家一起玩的游戏。