单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,大世界网络游戏服务器的构架,Deep cold 游戏引擎,引擎三大部分,基于 freebsd 的服务器,跨平台的客户端,二进制跨平台,支持 Win32 MacOs Linux Freebsd,3d 部分基于 openGL,C 语言编写底层、逻辑部分动态脚本语言,开发用相关工具,跨平台命令行工具,Windows 下的视觉编辑工具,服务器的设计,底层全部由 C 语言编写,逻辑层语言无关,类 COM 的模块化设计,多语言混合编程,多进程单线程结构,服务器组内各进程功能有明显的层次划分,数据和逻辑分离,具体设计,服务器群,单一登陆点做进入系统的认证,全局数据库仅保存用户身份信息,不保持常连接,玩家可以在整个大世界中发生联系,物理上玩家分属不同服务器组管理,用户数据库各自独立,无须实时交互,虚拟世界中的距离即物理世界上的距离,登陆过程,服务器组间的消息传递,服务器组间消息传递,避免交互性协议,游戏设计上考虑远程通讯的时间差,允许数据复制,并考虑多个副本相遇时的处理,每组服务器有唯一的数据输入输出点,海关服务,玩家的交互受游戏设计的限制,限制是为了更丰富的可能性,虚拟世界的战争、贸易以及资源分配,服务器组的内部结构,外部连接处理,多个外部接入点,国情问题:电信网通问题,特别通道:用于管理人员进入,组播,分组管理的问题,心跳控制,流水线作业,时间控制,录象回放调试(监督数据合法性),聊天信息分离,利用广播服务器减低负载,广义聊天信息,时间校对,校对玩家机器和服务器组的时间,防止时间作弊,估算消息发生时刻,更流畅的完成交互动作,精确保证时间的一致性,NTP 协议的问题,Client 的不合作(区分恶意和无意),服务器组间的时间校对,心跳控制,数据服务,唯一的数据储存点,使用本地文件系统,使用简单文本结构,使用简单的交互协议,物品发放服务,虚拟物品的控制,数据监控和备份,系统登陆与灾难处理,门卫,用户登陆排队,登出登记,黑洞,从灾难中恢复,保持跟玩家的有限交互,游戏逻辑的实现,多进程单线程结构,避免进程间通讯,严格控制数据进出,做好灾难处理,特殊功能模块的设计,帮派/行会,交易所,避免全局数据交互,Client/Server 通讯:RPC,避免依赖单一语言工具,创建合适的小语言,语言无关的模块设计,开发经验和教训,曾经追求大一统的设计,过分信赖 C+,设计模式滥用,数据应当文本化,应将每单个任务足够简化,不为尚不存在的需求做设计,谢谢,PPT 下载,云风,。