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