云风详解网易网络游戏服务器的构架

时间:2022-06-01 18:23:44
2007-12-06 09:03

由中国最大的IT技术社区CSDN联合美国权威IT技术媒体CMP集团举办的国内权威*软件技术大会——“2007 软件开发2.0技术大会”(SD2C)已经完美闭幕。在本次大会上,网易技术研发经理、《大话西游》、《梦幻西游》、《网易泡泡游戏》主力开发者云风为听众讲解了网易网络游戏服务器的构架。

一。引擎三大部分

基于 freebsd 的服务器
跨平台的客户端
二进制跨平台
支持 Win32 MacOs Linux Freebsd
3d 部分基于 openGL
C 语言编写底层、逻辑部分动态脚本语言
开发用相关工具
跨平台命令行工具
Windows 下的视觉编辑工具

二。服务器的设计
底层全部由 C 语言编写
逻辑层语言无关
类 COM 的模块化设计
多语言混合编程
多进程单线程结构
服务器组内各进程功能有明显的层次划分
数据和逻辑分离

三。服务器群
单一登陆点做进入系统的认证
全局数据库仅保存用户身份信息
不保持常连接
玩家可以在整个大世界中发生联系
物理上玩家分属不同服务器组管理
用户数据库各自独立,无须实时交互
虚拟世界中的距离即物理世界上的距离

四。服务器组间消息传递
避免交互性协议
游戏设计上考虑远程通讯的时间差
允许数据复制,并考虑多个副本相遇时的处理
每组服务器有唯一的数据输入输出点
海关服务
玩家的交互受游戏设计的限制
限制是为了更丰富的可能性
虚拟世界的战争、贸易以及资源分配

五。外部连接处理
多个外部接入点
国情问题:电信网通问题
特别通道:用于管理人员进入
组播
分组管理的问题
心跳控制
流水线作业
时间控制
录象回放调试(监督数据合法性)
聊天信息分离
利用广播服务器减低负载
广义聊天信息

六。时间校对
校对玩家机器和服务器组的时间
防止时间作弊
估算消息发生时刻,更流畅的完成交互动作
精确保证时间的一致性
NTP 协议的问题
Client 的不合作(区分恶意和无意)
服务器组间的时间校对
心跳控制

七。数据服务
唯一的数据储存点
使用本地文件系统
使用简单文本结构
使用简单的交互协议
物品发放服务
虚拟物品的控制
数据监控和备份

八。开发经验和教训
曾经追求大一统的设计
过分信赖 C++
设计模式滥用
数据应当文本化
应将每单个任务足够简化
不为尚不存在的需求做设计

讲师介绍:云风

网易公司技术研发经理,自幼学习编程,具有15年编程经验。大学时代开发的游戏图象引擎“风魂”曾用于多家游戏公司的游戏项目。是《大话西游》、《梦幻西游》、《网易泡泡游戏》等网络游戏的主力开发者。《大话西游》和《梦幻西游》是网易最主要的两款网络游戏,颇受玩家喜爱,创造了国产网络游戏的高潮。目前《梦幻西游》的注册人数已经突破1.2亿,《大话西游》和《梦幻西游》的同时在线人数已逾百万。云风在工作之余,不忘分享编程经验,他著有《游戏之旅——我的编程感悟》一书,内容横跨了游戏程序的过去、现在和未来。书中传达的不仅是一些实用的技术经验,更是传达一种理念——“在实践中积累”的研发精神。从05年至今,云风在带领团队开发新的3D网络游戏引擎。爱好广泛,尤喜编程、读书、攀岩。