游戏服务器系统设计

合集下载

网络游戏服务器端的设计与实现

网络游戏服务器端的设计与实现

网络游戏服务器端的设计与实现随着互联网技术的不断发展,网络游戏已经成为人们娱乐的重要方式之一。

网络游戏服务器端的设计与实现是游戏开发的关键部分,对于游戏的稳定性和用户体验至关重要。

本文将从以下几个方面详细介绍网络游戏服务器端的设计与实现。

服务器架构设计是网络游戏开发的关键部分,主要包括游戏逻辑处理、玩家数据管理、网络通信等方面。

为了提高游戏的性能和稳定性,可以采用以下几种方式:分布式架构:将游戏服务器划分为多个子系统,每个子系统负责不同的功能,如游戏逻辑处理、玩家数据管理、网络通信等。

每个子系统可以独立运行,提高了系统的可扩展性和稳定性。

负载均衡:通过在服务器集群中分布不同的工作任务,使每个服务器承担的负载均衡,避免单点故障的问题。

高可用性:为了保证游戏的稳定性和可靠性,可以采用高可用性的硬件设备和网络连接,以及备份和恢复机制。

网络通信是网络游戏的核心,对于游戏的实时性和稳定性至关重要。

下面介绍几种常用的网络通信技术:TCP/IP协议:TCP/IP协议是互联网的基础协议,它提供了可靠的数据传输服务。

在游戏开发中,可以使用TCP/IP协议实现服务器和客户端之间的可靠通信。

UDP协议:UDP协议是一种不可靠的数据传输协议,但它可以提供更快的传输速度。

在游戏开发中,可以使用UDP协议实现实时性要求较高的场景,如多人在线对战等。

WebSocket:WebSocket是一种双向通信协议,可以在服务器和客户端之间建立长连接,实现实时通信。

在游戏开发中,可以使用WebSocket实现实时性的游戏场景。

玩家数据管理是网络游戏服务器端的重要组成部分,主要包括玩家账号信息、游戏数据等方面。

为了确保玩家数据的可靠性和安全性,可以采用以下几种方案:数据库管理:使用关系型数据库或非关系型数据库来存储玩家数据,如MySQL、MongoDB等。

通过数据库的索引和查询功能,快速查找和更新玩家数据。

内存管理:使用内存数据库技术,如Redis、Memcached等,将玩家数据存储在内存中,提高数据的读写速度和可靠性。

教你如何构建自己的电脑游戏服务器

教你如何构建自己的电脑游戏服务器

教你如何构建自己的电脑游戏服务器构建自己的电脑游戏服务器如果你是一个游戏爱好者,那么你可能会想要搭建自己的电脑游戏服务器,那么该怎么做呢?在这篇文章中,我将向大家解释如何构建自己的电脑游戏服务器。

第一步:选择游戏首先,你需要选择一个游戏来构建你的服务器。

这个游戏可以是你个人喜欢的游戏,或者是你和你的朋友喜欢的游戏。

无论你选择哪个游戏,都需要确保这个游戏可以在服务器上运行,并且有服务器软件可用。

第二步:选择服务器软件选择一个适合你游戏的服务器软件。

这个软件将运行在你的电脑上,并负责运行和管理服务器。

有很多种软件可供选择,如Minecraft服务端、Dedicated Server等。

建议选择质量高、功能强大、易配置的软件,这样就可以轻松操作和管理服务器。

第三步:选择网络环境选择一个稳定的网络环境,用于运行你的游戏服务器。

如果你希望你和你的朋友在同一个局域网内,你可以使用无线网络或有线网络。

如果你希望其他玩家也能够连接到你的服务器,你需要确保你的网络带宽足够,并且可以支持多个玩家同时连接。

第四步:端口转发端口转发是将你的服务器程序公开到互联网上的必要步骤。

你需要在路由器设置中打开需要的端口,并将这些端口转发到你的电脑上。

这样其他玩家才能够连接到你的服务器。

第五步:服务器配置现在,你需要对你的游戏服务器进行配置。

通常这意味着设置一些基本参数,例如玩家最大数量、主题和模式等。

建议参考游戏开发者的指南、官方文档和论坛,了解如何进行配置。

第六步:玩家管理当你的服务器运行时,你需要管理连接到服务器的玩家。

如果你正在为朋友制作私人服务器,那么你需要确保只有你的朋友可以连接。

如果你正在为公共服务器制作服务器,那么你需要确保玩家遵守游戏规则。

第七步:维护和更新仔细维护和更新你的服务器至关重要。

如果你的服务器变得不稳定或过时,玩家可能会停止连接或不再回来。

确保经常更新和维护你的服务器,以提供更好的游戏体验。

总结搭建自己的电脑游戏服务器可能需要一些时间和精力,但如果你有兴趣,这是一项有趣且富有成就感的任务。

游戏服务器架构设计与优化方案分享

游戏服务器架构设计与优化方案分享

游戏服务器架构设计与优化方案分享第一章:游戏服务器架构设计概述 (3)1.1 游戏服务器发展背景 (3)1.2 游戏服务器架构设计目标 (3)1.3 游戏服务器架构设计原则 (3)第二章:游戏服务器核心组件 (4)2.1 服务器核心组件概述 (4)2.2 网络通信组件 (4)2.2.1 通信协议 (4)2.2.2 数据传输 (4)2.2.3 网络优化 (4)2.3 数据存储组件 (4)2.3.1 存储方案 (5)2.3.2 数据库设计 (5)2.3.3 数据备份与恢复 (5)2.4 业务逻辑处理组件 (5)2.4.1 玩法实现 (5)2.4.2 功能模块 (5)2.4.3 系统安全 (5)第三章:游戏服务器网络架构 (5)3.1 网络协议选择 (5)3.2 网络架构设计 (6)3.3 负载均衡策略 (6)3.4 网络安全措施 (7)第四章:游戏服务器数据库设计 (7)4.1 数据库选型 (7)4.2 数据库表设计 (8)4.3 数据库索引优化 (8)5.4 数据库备份与恢复 (9)第五章:游戏服务器功能优化 (9)5.1 CPU优化 (9)5.2 内存优化 (10)5.3 硬盘IO优化 (10)5.4 网络功能优化 (10)第六章:游戏服务器分布式架构 (11)6.1 分布式架构概述 (11)6.2 分布式服务器设计 (11)6.2.1 设计原则 (11)6.2.2 设计方案 (11)6.3 分布式存储设计 (11)6.3.1 存储需求分析 (11)6.3.2 存储方案设计 (12)6.4 分布式计算设计 (12)6.4.1 计算需求分析 (12)6.4.2 计算方案设计 (12)第七章:游戏服务器容错与故障处理 (12)7.1 容错机制设计 (12)7.2 故障检测与处理 (13)7.3 数据一致性保障 (13)7.4 系统监控与预警 (13)第八章:游戏服务器运维管理 (14)8.1 服务器部署与维护 (14)8.1.1 服务器选型 (14)8.1.2 服务器部署 (14)8.1.3 服务器维护 (14)8.2 服务器监控与调优 (15)8.2.1 监控工具选择 (15)8.2.2 监控指标设置 (15)8.2.3 功能调优 (15)8.3 服务器备份与恢复 (15)8.3.1 备份策略 (15)8.3.2 备份工具选择 (16)8.3.3 恢复策略 (16)8.4 服务器安全防护 (16)8.4.1 防火墙设置 (16)8.4.2 安全审计 (16)8.4.3 安全更新 (16)第九章:游戏服务器功能测试与评估 (16)9.1 功能测试方法 (16)9.2 功能测试工具 (17)9.3 功能评估指标 (17)9.4 功能优化策略 (18)第十章:游戏服务器跨平台设计 (18)10.1 跨平台架构设计 (18)10.2 跨平台通信协议 (19)10.3 跨平台数据同步 (19)10.4 跨平台兼容性测试 (19)第十一章:游戏服务器发展趋势 (20)11.1 云游戏服务器 (20)11.2 容器化与微服务 (20)11.3 人工智能在游戏服务器中的应用 (20)11.4 游戏服务器技术的发展方向 (20)第十二章:游戏服务器架构设计与优化案例分享 (21)12.1 案例一:某大型游戏服务器架构设计 (21)12.2 案例二:某热门游戏服务器功能优化 (22)12.3 案例三:某跨平台游戏服务器设计 (22)12.4 案例四:某游戏服务器运维管理实践 (22)第一章:游戏服务器架构设计概述1.1 游戏服务器发展背景互联网技术的飞速发展,网络游戏已经成为人们娱乐生活中不可或缺的一部分。

网络游戏服务端设计

网络游戏服务端设计
1 . 1公 平调 度
未见过的 B U G。最令 人烦恼 的是,假如 这种游戏失去兴趣 。 系统负荷 比较低 ,通常 不会 出现 B UG, 过 载处 理 常 常用 于 降 低服 务 器 负 载 ,不仅可 以有效提 升服务器本 身的性
பைடு நூலகம்
服务器 中包含 大量 的客户 ,当要决 增加 了处理 的不便 。 定某一个 处理 的 问题 时,要避 免反复在 计算机有用资源的减少通常也会降 能 ,而且还会 减低出现负 载的概 率。不 客户群 中甄选 。根据典 型游戏的开发 , 低有效地 程序数量 ,导致程 序运行 的负 过也有些服 务器 胡乱地颠倒处 理次序
器端程序 设计 的 实现 ,确 定客 户
和 服务 器端模 式中服 务器端 的程 序 。分 析在 实现程 序设 计 时所 面
临 的 关 键 问题 以 及 相 关 通 信 协
间需要 1 0毫秒 ,当有 5 0名客户时 ,响 应很容 易带 来各种各样 的副 作用 ,处理 应 的时 间范围应 该在 1 0 ~ 5 0 0毫秒 的范 过程 中系统会消耗很 多时间。 因此 ,我 围内,和游戏 玩家花费 时间相 比,响应 们 要小 心的保护服务器 系统 ,通常 ,划 时 间 比较 快了 。不 过 ,当同时有 1 0 0 0 0 定服务器运行标 准要超 出普通要求 。假
软件开发 ・ S o f t wa r e D e v e l o p me n t
网络游戏服务端设计
文/ 丁 志 耀
每 一个客户提取 的指令都要响应服务器 荷 。当某个符合超 载时 ,只需花费很 少
为 了研 究 互 联 网游 戏 服 务
频 率 ,而且要成一 定 比例 。假如 响应时 时间就可 以解决 这种 问题 ,但是链 式反

多人在线游戏服务器构架

多人在线游戏服务器构架

当今的网页游戏也越来越强调及时性,Server的负载过重也会造成Server与Client之间的不同步而导致延迟的出现,因Server较晚回应给Client,玩家的动作会因此变慢,因此造成很多玩家感觉游戏本身的游戏性较差而造成大量流失玩家,下面就将次问题讨论Server 负载与解决之道!传统线上游戏系统架构主要有四种:Client/Server、Peer2Peer、Hybrid Client/Server及Multi-Server,不同的游戏拥有不同的架构,具体情况具体分析。

一、Client/Server架构N个Client连接至一个Server,Client只负责将玩家输入的信息发送给Server,Server 处理大部分运算并将处理结果发回给Client。

优势:设计简单,玩家作弊情形不容易发生劣势:由于整个运算都是在Server端进行,所以Server的运算能力及网络的流量是真个系统的瓶颈,当Client没有收到Server的任何信息前,Client无法对玩家的输入做出任何反应,画面也无法及时更新,因此容易因Server运算延迟或网络延迟,造成游戏的不流畅,一旦Server达到上线或者Client增多时,则必须考虑使用功能强大的Server来取代。

二、P2P架构点对点构架最大的优势就是及时性,没有Server的介入,所有消息都是参与游戏的电脑之间的做资料的传送。

这种构架避免了不必要的传送延迟,但是要在网络环境上建立点对点的架构,那么每台电脑必须对所哟的电脑先建立连线并做出传输的处理,因此电脑的运算能与连线的频宽会造成不小的负担。

三、Hybrid Client/Server构架此构架的特点在于Client可以自行推测目标的状态,并且可以立即针对玩家的输入做出反应。

这种构架把整个虚拟世界当成一个由所有玩家共同享的资料库,Client可分到部分资料库类容,并且可以依照资料对玩家的输入与玩家在游戏中的状态进行推测,兵即时的反应给玩家。

网络游戏服务器报警系统的设计与实现

网络游戏服务器报警系统的设计与实现

网络游戏服务器报警系统的设计与实现摘要:网络游戏服务器一般都承受着较大的性能考验和负载压力,随着网络游戏玩家数量的增加,后台服务器数量也不断增多,为了高效的管理服务器,并及时发现服务器的硬件或者软件问题,该文设计了一套网络游戏服务器的报警系统,有效的解决了服务器的监控问题,具有较好的应用前景。

关键词:网络游戏;报警系统;服务器;架构中图分类号:tp393 文献标识码:a 文章编号:1009-3044(2013)12-2795-03网络游戏为了给玩家构建一个庞大的游戏虚拟社区,以增加游戏的娱乐性,通常都要求游戏服务器提供7*24小时的在线服务,且要求游戏服务器尽可能多的承载玩家。

因此,网游服务器的性能压力是相当大的[1],如何高效智能的监控服务器系统,以便及时的根据当前在线人数动态调整服务器数量显得尤为重要[2]。

除此之外,服务端开发人员通常希望对服务器运行的代码异常信息进行实时监控,通过对代码异常信息的分析,以便于开发人员快速定位程序隐藏的bug。

所以,为了构建健壮的游戏后台而设计服务器的报警系统是非常具有实际意义的。

1 常见网络游戏服务器的架构本文的网游服务器报警系统是针对于游戏服务器来设计的,但它不局限于某种具体的服务器架构,而是旨在提供一种通用的服务器报警系统的解决方案。

在介绍网游服务器报警系统之前,先了解下常用网络游戏服务器的架构。

网络游戏一般设计为c/s的结构[1],服务器端主要负责玩家的登陆、数据存储以及游戏核心逻辑的计算等。

一个常见的网络游戏服务器架构如图1所示。

从图中可以得知,这个游戏服务器架构是由game server、gate server、database三部分组成。

game server 主要负责游戏的具体逻辑处理,gate server负责玩家登陆与验证,database负责玩家资料信息的存储。

其中game server类型的服务器是可伸缩的,以便随着玩家数量的增加而动态调整game server 服务器的数量,从而使得整个系统承载更多的在线人数。

MMORPG服务器端架构和设计


⑧ ⑨⑩
生成 令牌



角色数据库
⑤ 获取角色列表 ⑥ 向玩家反馈角色信息 ⑦ 玩家选择角色
网关服务器
④ ⑦ ⑥ ①
⑧ 玩家ID信息& 玩家位置信息等
⑨ 根据规则,提议地图服务器 ⑩ 加密用户ID & 地图服务器ID, 生成令牌

游戏玩家
⑾ 选择地图服务器,最后回应
MMORPG服务器端设计
服务器端工作流
逻辑地图 服务器1
逻辑地图 服务器N
逻辑地图 服务器1
逻辑地图 服务器N
角色数据库1
网关服务器1
网关服务器N
角色数据库N
聊天服务器
登陆服务器
账户数据库
游戏玩家
游戏玩家
MMORPG服务器端设计
服务器端工作流
用户登陆
① 使用帐户、密码,发出请求
黑名单
掩码 过滤表
② 黑名单、掩码过滤 ③ 允许/拒绝 ④ 账户、密码有效?
游戏循环 用户群
网格数据管理 玩家加入 玩家离开 玩家移动 周围玩家
逻辑地图 服务器1 逻辑地图 服务器2
循环1
角色列表1
数据
角色列表2
循环2
网关 服务器
同步
逻辑地图 服务器N
地图数据库 (可选)
角色列表n
循环n
MMORPG服务器端设计
服务器架构
地图服务器
MMORPG服务器端设计
服务器架构
参见ascent.conf: <WorldDatabase Hostname = "localhost" Username = "root" Password = "" Name = “TestWorldDB" Port = "3306" Type = "1"> <CharacterDatabase Hostname = "localhost" Username = "root" Password = "" Name = “TestCharacterDB“ Port = "3306" Type = "1"> 地图服务器

游戏系统设计

游戏系统设计游戏系统设计是指在开发游戏过程中,设计师根据游戏的需求和目标,规划和构建游戏的各个组成部分和功能。

这涵盖了游戏的玩法机制、游戏内经济系统、角色进展系统、任务系统、社交互动等方面。

下面将分段回答你的问题。

1. 游戏玩法机制玩法机制是游戏的核心,它决定了玩家在游戏中的基本操作和互动方式。

玩法机制可以分为战斗系统、探索系统、解谜系统等。

战斗系统是指玩家与游戏世界中的敌对势力进行战斗,并通过技能、装备等提升自己的战斗力。

探索系统则是让玩家在游戏世界中探索新的地点、发现隐藏的宝藏或任务等。

解谜系统是在游戏中设置各种谜题和难题,玩家需要运用逻辑思维和探索能力解开这些谜题。

2. 游戏内经济系统游戏内经济系统是指游戏中的货币系统和物品交易系统。

货币系统是游戏中的虚拟货币,玩家可以通过完成任务、战斗、出售物品等获取货币。

货币可以用于购买装备、道具、技能等。

物品交易系统则是允许玩家之间进行物品的交易,玩家可以通过交易获取其他玩家或NPC所拥有的物品。

3. 角色进展系统角色进展系统是指玩家在游戏中角色的成长和发展。

通常游戏中的角色可以通过获取经验值来提升等级,并获得新的技能和能力。

角色进展系统还包括装备系统,玩家可以通过获得更好的装备来提升角色的战斗力。

同时,角色进展系统也可以包括角色的外观定制,玩家可以通过购买服装、配饰等来改变角色的外观。

4. 任务系统任务系统是游戏中引导玩家进行特定活动的机制。

游戏中的任务可以分为主线任务和支线任务。

主线任务是推动游戏剧情发展的任务,通常与游戏的主要故事情节相关。

支线任务则是额外的任务,玩家可以选择接取,完成支线任务可以获得经验值、装备和其他奖励。

5. 社交互动社交互动是指游戏中玩家之间的交流和互动方式。

游戏可以提供聊天系统,让玩家可以通过文本、语音或表情进行实时交流。

此外,游戏还可以提供社交功能,如好友系统、公会系统等,让玩家可以结识新朋友、组建团队或公会,共同完成游戏中的任务和挑战。

家庭游戏服务器方案模板

家庭游戏服务器方案模板家庭游戏服务器方案模板一、方案背景随着游戏行业的快速发展和家庭网络设备的普及,越来越多的家庭希望能够搭建自己的游戏服务器,在家中与亲友一起享受游戏的乐趣。

因此,为了满足这一需求,我们提供了以下家庭游戏服务器方案模板。

二、方案内容1.硬件设备选择在搭建家庭游戏服务器时,首先需要选择合适的硬件设备。

以下是一些常用的硬件设备建议:- 主机:选择一台高性能的游戏电脑,确保能够流畅运行各种游戏。

- 网络设备:选择一台性能稳定、带宽高的路由器,保证游戏服务器的网络连接质量。

- 存储设备:选择一台大容量的硬盘或固态硬盘,以便存储游戏相关的文件和数据。

- 电源设备:确保电源设备能够稳定供电,避免游戏服务器因为断电而中断。

2.网络环境设置在搭建家庭游戏服务器之前,需要对家庭网络环境进行一些设置,以保证游戏服务器的稳定性和流畅性。

- 确保主机和其他设备的网络连接质量,避免网络延迟和丢包等问题。

- 设置端口映射,使外部网络能够访问到游戏服务器。

- 分配合适的IP地址和子网掩码,以便家庭网络的设备能够正常连接到游戏服务器。

3.游戏服务器安装与配置在家庭游戏服务器搭建完成后,需要安装并配置游戏服务器软件。

以下是一些常见的步骤:- 下载并安装游戏服务器软件。

- 配置游戏服务器的基本参数,包括游戏模式、游戏规则等。

- 配置游戏服务器的权限设置,限制游戏玩家的操作权限。

- 配置游戏服务器的网络设置,确保能够正常连接到外部网络。

- 进行测试,确保游戏服务器能够正常运行。

4.安全性和稳定性考虑为了保障家庭游戏服务器的安全性和稳定性,可以考虑以下方面:- 定期备份游戏服务器的数据,以防止数据丢失。

- 安装杀毒软件和防火墙,保护服务器免受恶意软件和网络攻击。

- 设置访问密码和权限,限制非法用户对游戏服务器的访问。

- 定期检查硬件设备的状态,确保设备正常运行。

三、方案优势通过使用我们提供的家庭游戏服务器方案,您可以享受以下优势:1.自由自在地游戏:可以随时随地组织游戏活动,与亲友一起在家中尽情享受游戏的乐趣。

基于Lua的网络游戏服务器架构设计与实现

基于Lua的网络游戏服务器架构设计与实现在当今数字化时代,网络游戏已经成为人们日常生活中不可或缺的一部分。

随着互联网技术的不断发展和普及,网络游戏的规模和复杂度也在不断增加。

为了应对越来越庞大的用户群体和复杂的游戏内容,设计一个高效稳定的网络游戏服务器架构显得尤为重要。

本文将探讨基于Lua语言的网络游戏服务器架构设计与实现,希望能为相关领域的专业人士提供一些参考和启发。

Lua语言简介Lua是一种轻量级、高效、可嵌入的脚本语言,广泛应用于游戏开发领域。

它具有简洁的语法、动态类型和自动内存管理等特点,适合用于快速开发和灵活扩展。

在网络游戏服务器开发中,Lua语言可以作为服务器端脚本语言,用于实现游戏逻辑、处理网络消息等功能。

网络游戏服务器架构设计服务器端架构概述一个典型的网络游戏服务器由多个模块组成,包括网络通信模块、逻辑处理模块、数据存储模块等。

在设计服务器架构时,需要考虑到服务器的性能、可扩展性、容错性等方面的要求。

下面是一个基于Lua 的网络游戏服务器架构设计示意图:示例代码star:编程语言:+---------------------+| 网络通信模块 |+---------------------+| 逻辑处理模块 |+---------------------+| 数据存储模块 |+---------------------+示例代码endLua在服务器端的应用在网络游戏服务器中,Lua通常被用作服务器端脚本语言,负责实现游戏逻辑、处理客户端请求等功能。

通过Lua脚本,可以实现灵活的游戏内容更新、快速修复bug等操作,而无需停止服务器运行。

Lua与C++的结合虽然Lua具有很高的灵活性和表达能力,但在处理大量数据计算和高性能要求时可能存在一定局限性。

因此,在实际项目中,通常会将Lua与C++结合使用。

C++作为底层引擎语言,负责处理底层逻辑和性能敏感部分;而Lua则负责处理高层逻辑和业务逻辑部分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

游戏服务器系统设计
1.1 服务器架构分类
服务器组的架构一般分为两种:第一种是带网关服务器的服务器架构;第二种是不带网关服务器的服务器架构,这两种方案各有利弊。

在给出服务器架构设计之前,先对这两种设计方案进行详细的探讨。

所谓网关服务器,其实是Gate 服务器,比如LoginGate、GameGate 等。

网关服务器的主要职责是将客户端和游戏服务器隔离,客户端程序直接与这些网关服务器通信,并不需要知道具体的游戏服务器内部架构,包括它们的IP、端口、网络通信模型(完成端口或Epoll)等。

客户端只与网关服务器相连,通过网关服务器转发数据包间接地与游戏服务器交互。

同样地,游戏服务器也不直接和客户端通信,发给客户端的协议都通过网关服务器进行转发。

1.2 服务器架构设计
根据网络游戏的规模和设计的不同,每组服务器中服务器种类和数量是不尽相同的。

本系统设计出的带网关服务器的服务器组架构如图1 所示。

图1 带网关服务器的服务器架构设计方案
该设计有以下几点好处:
(1)作为网络通信的中转站,负责维护将内网和外网隔离开,使外部无法直接访问内部服
务器,保障内网服务器的安全,一定程度上较少外挂的攻击。

(2)网关服务器负责解析数据包、加解密、超时处理和一定逻辑处理,这样可以提前过滤掉错误包和非法数据包。

(3)客户端程序只需建立与网关服务器的连接即可进入游戏,无需与其它游戏服务器同时建立多条连接,节省了客户端和服务器程序的网络资源开销。

(4)在玩家跳服务器时,不需要断开与网关服务器的连接,玩家数据在不同游戏服务器间的切换是内网切换,切换工作瞬间完成,玩家几乎察觉不到,这保证了游戏的流畅性
和良好的用户体验。

虽然网关服务器带来上述好处,但是,还需要注意以下可能导致负面效果的两个情况:如何避免网关服务器成为高负载情况下的通讯瓶颈问题以及由于网关的单节点故障导致整组服务器无法对外提供服务的问题。

上述两个问题可以采用“多网关”技术加以解决。

顾名思义,“多网关”就是同时存在多个网关服务器,比如一组服务器可以配置三台GameGate。

当负载较大时,可以通过增加网关服务器来增加网关的总体通讯流量,当一台网关服务器宕机时,它只会影响连接到本服务器的客户端,其它客户端不会受到任何影响。

从图1 的服务器架构图可以看出,一组服务器包括LoginGate、LoginServer、GameGate、GameServer、DBServer和MServer 等多种服务器。

LoginGate 和GameGate 就是网关服务器,一般一组服务器会配置3 台GameGate,因为稳定性对于网络游戏运营来说是至关重要的,而服务器宕机等突发事件是游戏运营中所面临的潜在风险,配置多台服务器可以有效地降低单个服务器宕机带来的风险。

另外,配置多台网关服务器也是进行负载均衡的有效手段之一。

其中,各种服务器的主要功能和彼此之间的数据交互情况如下。

(1)LoginGate
LoginGate 主要负责在玩家登录时维护客户端与LoginServer 之间的网络连接与通讯,对LoginServer 和客户端的通信数据进行加解密、校验。

(2)LoginServer
LoginServer 主要功能是验证玩家的账号是否合法,只有通过验证的账号才能登录游戏。

从架构图可以看出,DBServer 和GameServer 会连接LoginServer。

玩家登录基本流程是,客户端发送账号和密码到LoginServer 验证,如果验证通过,LoginServer 会给玩家分配一个SessionKey,LoginServer 会把这个SessionKey 发送给客户端、DBServer和GameServer,在后续的选择角色以后进入游戏过程中,DBServer 和GameServer 将验证SessionKey 合法性,如果和客户端携带的SessionKey 不一致,将无法成功获取到角色或者进入游戏。

(3)GameGate
GameGate(GG)主要负责在用户游戏过程中负责维持GS与客户端之间的网络连接和通讯,对GS 和客户端的通信数据进行加解密和校验,对客户端发往GS 的用户数据进行解析,过滤错误包,对客户端发来的一些协议作简单的逻辑处理,其中包括游戏逻辑中的一些超时判断。

在用户选择角色过程中负责维持DBServer 与客户端之间的网络连接和通讯,对DBServer 和客户端的通信数据进行加解密和校验,对客户端发往DBServer 的用户数据做简单的分析。

维持客户端与MServer 之间的网络连接与通讯、加解密、数据转发和简单的逻辑处理等。

(4)GameServer
GameServer(GS)主要负责游戏逻辑处理。

在软件架构层面,本系统将游戏的众多系统设计成GS 的子系统或模块,它们共同处理整个游戏世界逻辑的运算。

游戏逻辑包括角色进入与退出游戏、跳GS 以及各种逻辑动作(比如行走、说话和攻击等)。

由于整个游戏世界有许多游戏场景,在该架构中一组服务器有3 台GS 共同负责游戏逻辑处理,每台游戏服务器负
责一部分地图的处理,这样不仅降低了单台服务器的负载,而且降低了GS 宕机带来的风险。

玩家角色信息里会保持玩家上次退出游戏时的地图编号和所在GS 编号,这样玩家再次登录
时,会进入到上次退出时的GS。

上面提到过,在验证账号之后,LoginServer 会把这个SessionKey 发给GS,当玩家选择角色登录GS 时,会把SessionKey 一起发给GS,这时GS 会验证SessionKey 是否与其保存的相一致,不一致的话GS 会拒绝玩家进入游戏。

MServer 的主要负责GS 之间的数据转发以及数据广播,另外,一些系统也可以放到MServer 上,这样也可以减轻GS的运算压力。

(5)DBServer
DBServer 主要的功能是缓存玩家角色数据,保证角色数据能快速的读取和保存。

由于角色数据量是比较大的,包括玩家的等级、经验、生命值、魔法值、装备、技能、好友、公会等。

如果每次GS 获取角色数据都去读数据库,效率必然非常低下,用DBServer 缓存角色数据之后,极大地提高了数据请求的响应速度。

LoginServer 会在玩家选组时把SessionKey 发给DBServer,当玩家发送获取角色信息协议时会带上这个SessionKey,如果跟DBServer 保存的SessionKey 不一致,则DBServer 会认为玩家不是合法用户,获取角色协议将会失败。

另外,玩家选取角色正式进入游戏时,GS 会给DBServer发送携带SessionKey 的获取角色信息协议,这时DBServer同样会验证SessionKey 的合法性。

总之,只有客户端、DBServer 和GS 所保存的SessionKey 一致,才能保证协议收到成功反馈。

与DBServer 通讯的服务器主要有GG,GS 和LoginServer,DBServer 与GG 交互的协议主要包括列角色、创建角色、删除角色、恢复角色等,DBServer 与GS 交互的协议包括读取角色数据、保存角色数据和跳服务器等,DBServer 与LoginServer 交互的协议主要是用户登录协议,这时候会给DBServer 发送SessionKey。

(6)MServer
每一个组有一台MServer,主要负责维持3 台GS 之间数据的转发和数据广播。

另外一些游戏系统也可能会放到MServer 上处理,比如行会系统。

1.3 服务器交互的主要流程
下面给出服务器之间数据通讯的主要流程,这些流程将展现出各种服务器之间交互和协同工作的方式。

图2 选择角色信息流程
图2 的流程说明了,在选角色过程中,客户端会把携带游戏账号和SessionKey 的选角色协
议发给GG,GG 做一些简单处理之后转发给DBServer,DBServer 要验证SessionKey的合法性,验证通过之后,DBServer 会从角色信息缓冲区里取出该账户的所有角色信息发给客户端。

这个过程在客户端的表现是,当选择好服务器组之后,客户端会直接显示该账号下的所有角色,之后就可以选择角色进入游戏了。

图3 玩家进入游戏流程
图3 的流程说明了,在玩家选角色正式进入游戏时,客户端会把携带游戏账号、角色ID 和SessionKey 的登录协议发给GG,GG 做一些简单处理之后转发给GS。

GS 会验证SessionKey 的合法性,验证通过之后,GS 会把验证通过的结果发给客户端,同时GS 给DBServer 发获取角色数据的协议,这些角色数据是一个玩家所有的游戏数据,包括装备、技能等等。

图4 游戏逻辑数据转发流程
图4 的流程说明了,在玩家游戏过程,客户端把逻辑协议(包括走、说话、跑、使用技能等)发给GG,GG 完成加解密和简单逻辑处理之后转发给GS,GS 负责这些协议的主要逻辑处理。

相关文档
最新文档