本书的作者都是第一线的网络游戏开发人员,书中的所有内容都整理自完整的网络游戏项目,是实践经验的总结。第二章到第十四章的内容,基本是从一个多人在线冒险型网络游戏项目中整理而来,第十五章则整理于一个即时战略游戏项目。在内容的讲述中尽量避免了和具体游戏内容的关联,以便更具有通用性。
本书的目标是帮助读者掌握常见类型的网络游戏的开发环境、流程、关键制作技术、方法和技巧,读者通过学习和实践甚至可以成为专业的网络游戏程序设计师。本书面向的读者对象主要是有一定编程经验,并对制作网络游戏很有兴趣的爱好者或者是有单机游戏设计经验,正在向网络游戏转型的程序设计师。同时对于非程序开发,但对网络游戏项目很有兴趣的朋友也是很好的参考书。
第1章 网络游戏开发概述
1.1 网络游戏的类型
1.2 网络游戏的开发环境
1.3 开发注意事项
第2章 网络通讯底层设计与实现
2.1 Socket简介
2.2 常用的Socket函数
2.3 Server与Client的常用模型
2.4 编写一个Socket代码跨平台
2.5 Socket高级话题
2.6 如何使Socket代码跨平台(Win32,Linux)
2.7 命令封包
2.8 数据压缩和加密
2.9 传输层整体结构
第3章 客户端中文输入法的处理
3.1 输入法消息处理
3.2 组字窗口消息
3.3 IME通知消息
3.4 获得输入的内容
3.5 获得当前输入法名字
3.6 关闭当前的输入法窗口
第4章 客户端界面系统之格式化文字显示
4.1 自定义格式化文本CFT
4.2 自定义格式化文本CFT的读取
4.3 游戏中的CFT的应用
第5章 客户端数据资源的管理
5.1 游戏中可重复使用的资源
5.2 用统一的方法管理可多重使用的资源
5.3 资源的缓冲池
第6章 客户端基于3D的多边形的寻路系统
6.1 Pathing-finding的基本原理
6.2 3D地形的概念:Terrain
6.3 在Terrain上寻路
第7章 简繁体文字转换的处理
7.1 文字的编码
7.2 码表的生成
7.3 简繁转换程序
7.4 如何更聪明地转换
第8章 游戏服务器的架构和设计要点
8.1 大型网络游戏的起源与发展
8.2 整体结构
8.3 游戏服务器
第9章 嵌入式表达式系统的设计与实现
9.1 运算符的优先级别
9.2 简单表达式的求解
9.3 单目运算符
9.4 逻辑表达式
9.5 变量
9.6 函数调用
9.7 参数传递
第10章 回合制战斗系统的设计与实现
10.1 战斗系统的功能结构
10.2 回合制战斗流程
10.3 Server与Client之间的交互协议
10.4 角色属性和数值
10.5 运用表达式(公式)系统来计算
10.6 技能的实现
10.7 客户端画面表现
第11章 MySQL数据库的应用
11.1 MySQL简介
11.2 MySQL C API
11.3 设计一个简单的MySQL读写类库
11.4 一些常见的问题
第12章 数据库服务器的设计与实现
12.1 DBS的设计目的和要点
12.2 DBS的实现
第13章 自动更新系统的设计与实现
13.1 文件版本管理
13.2 文件传输服务器
13.3 客户端功能
第14章 巫师管理工具的设计与实现
14.1 GM概述
14.2 如何快速响应用户的服务请求
14.3 玩家请求分配中心
14.4 同时处理多个玩家的请求
14.5 GM的管理
第15章 即时战略网络对战功能的设计与实现
15.1 功能需求
15.2 程序结构的环境
15.3 确定实现的基本方案
15.4 定义操作命令
15.5 操作命令在游戏中的使用
15.6 同步周期的概念
15.7 命令的收集与缓冲
15.8 同步的相关处理
15.9 DirectPlay在游戏中的使用
15.10 网络消息的接收与处理
15.11 消息接收的线程同步
15.12 建立容错机制
15.13 用Log文件帮助调试
15.14 实现录像功能
15.15 Lobby大厅的制作
附录 Internet上的开发资源
网络游戏无疑是近年来电子娱乐行业中最亮丽的风景,甚至整个信息产业也为之振奋。随之而来的是网络游戏的开发也变成了软件项目的大热门,大大小小的网络游戏开发公司如同雨后春笋一般涌现,而关心和投入到网络游戏开发的程序设计师也变得多了起来。但是从书刊到网络,关于网络游戏程序开发的资料,尤其是中文资料,还处于很稀缺的状态。希望本书的出现能够填补一块小小的空白。
本书的目标是帮助读者掌握常见类型的网络游戏的开发环境、流程、关键制作技术、方法和技巧,读者通过学习和实践甚至可以成为专业的网络游戏程序设计师。本书面向的读者对象主要是有一定编程经验,并对制作网络游戏很有兴趣的爱好者或者是有单机游戏设计经验,正在向网络游戏转型的程序设计师。当然对于非程序开发,但对网络游戏项目很有兴趣的朋友也可以来看看这本书,毕竟他山之石,可以攻玉嘛。
关于本书内容和章节安排的说明
本书的作者都是第一线的网络游戏开发人员,书中的所有内容都整理自完整的网络游戏项目,是实践经验的总结。这些经验代表的是开发上各种可行的方案方法,而不是教条准则,读者尽可以带着怀疑和改进的心态来阅读它。第二章到第十四章的内容,基本是从一个多人在线冒险型网络游戏项目中整理而来,第十五章则整理于一个即时战略游戏项目。在内容的
讲述中尽量避免了和具体游戏内容的关联,以便更具有通用性。
关于本书出现的代码的说明
本书中出现的代码主要有三类:
1.使用具有明确意义的英文变量和函数名,加上中文描述组成的伪代码,采用这类形式的代码主要是因为当前讲述的内容不适合使用大量的实际代码,这些代码会和游戏中的其他功能的代码混合在一起,而且篇幅巨大,既不容易看懂,也无助于理解。所以这部分内容主要靠结合伪代码来讲述思路、算法和流程等,例如服务器架构和即时战略游戏网络对战的部分内容就是以此类代码为主。
2.对于一些很独立的功能模块的代码,我们用代码结构说明加上实际代码,再加上详细注释的方法来处理。这类代码通常只需略加改动甚至可以直接被读者使用,比如跨平台的socket类、Lobby大厅的制作、自动更新系统、可自定义变量和函数的表达式脚本等。
3.另外有些代码是很常见的算法或功能函数,为了不占用篇幅,就不列出详细内容,这类代码要么出现在附带光盘上,要么在网络上非常容易查到。
关于作者
在章节的编写安排上:
第一章、第六章、第十章、第十二章、第十三章和第十五章由王鑫编写。
第三章、第四章、第五章、第八章、第九章和第十四章由罗金海编写。
第二章、第八章和第十一章由赵千里编写。
感谢重庆大学出版社和重庆拓智文化发展有限公司(www.topwise.cn)!感谢所有给予我们关心和支持的朋友!
如果读者在阅读本书的过程中,产生疑问或者愿意帮助指正书中的错误和不足之处,可以发Email至ryan_www@21cn.com,我们随时欢迎你们就有关问题进行交流、切磋!