MMORPG服务器端架构和设计
网络游戏服务器端的设计与实现
网络游戏服务器端的设计与实现随着互联网技术的不断发展,网络游戏已经成为人们娱乐的重要方式之一。
网络游戏服务器端的设计与实现是游戏开发的关键部分,对于游戏的稳定性和用户体验至关重要。
本文将从以下几个方面详细介绍网络游戏服务器端的设计与实现。
服务器架构设计是网络游戏开发的关键部分,主要包括游戏逻辑处理、玩家数据管理、网络通信等方面。
为了提高游戏的性能和稳定性,可以采用以下几种方式:分布式架构:将游戏服务器划分为多个子系统,每个子系统负责不同的功能,如游戏逻辑处理、玩家数据管理、网络通信等。
每个子系统可以独立运行,提高了系统的可扩展性和稳定性。
负载均衡:通过在服务器集群中分布不同的工作任务,使每个服务器承担的负载均衡,避免单点故障的问题。
高可用性:为了保证游戏的稳定性和可靠性,可以采用高可用性的硬件设备和网络连接,以及备份和恢复机制。
网络通信是网络游戏的核心,对于游戏的实时性和稳定性至关重要。
下面介绍几种常用的网络通信技术:TCP/IP协议:TCP/IP协议是互联网的基础协议,它提供了可靠的数据传输服务。
在游戏开发中,可以使用TCP/IP协议实现服务器和客户端之间的可靠通信。
UDP协议:UDP协议是一种不可靠的数据传输协议,但它可以提供更快的传输速度。
在游戏开发中,可以使用UDP协议实现实时性要求较高的场景,如多人在线对战等。
WebSocket:WebSocket是一种双向通信协议,可以在服务器和客户端之间建立长连接,实现实时通信。
在游戏开发中,可以使用WebSocket实现实时性的游戏场景。
玩家数据管理是网络游戏服务器端的重要组成部分,主要包括玩家账号信息、游戏数据等方面。
为了确保玩家数据的可靠性和安全性,可以采用以下几种方案:数据库管理:使用关系型数据库或非关系型数据库来存储玩家数据,如MySQL、MongoDB等。
通过数据库的索引和查询功能,快速查找和更新玩家数据。
内存管理:使用内存数据库技术,如Redis、Memcached等,将玩家数据存储在内存中,提高数据的读写速度和可靠性。
MMORPG游戏服务器端的设计与实现
MMORPG游戏服务器端的设计与实现
刘子豪
【期刊名称】《信息与电脑》
【年(卷),期】2018(000)001
【摘要】随着网络游戏在人们日常休闲娱乐中的占比越来越高,游戏开发的更迭速度也变得越来越快.游戏日常稳定运行依赖于服务器的许多特性,如服务器需要具有高并发、高可用、易于扩展等特征.因此,一款高效、松耦合的开发框架显得尤为重要.笔者介绍了一种较为通用的MMORPG类型的网络游戏服务器端框架,其中着重介绍了场景服务器的设计以及数据存储的特点,其能够较好协助用户完成指定的开发任务.
【总页数】3页(P61-63)
【作者】刘子豪
【作者单位】武汉大学信息管理学院,湖北武汉 430070;武汉东讯科技有限公司,湖北武汉 430070
【正文语种】中文
【中图分类】TP393.05
【相关文献】
1.可扩展的MMORPG游戏框架的设计与实现 [J], 李建微;陈新;黄週祥;林淮;邱贤熠
2.MMORPG游戏中通货膨胀现象的探讨 [J], 董光泽; 叶世臻
3.MMORPG游戏中通货膨胀现象的探讨 [J], 董光泽; 叶世臻
4.MMORPG与MOBA游戏动画的差异比较——以《魔兽世界》和《英雄联盟》为例 [J], 童曌
5.格斗游戏转型MMORPG 《拳皇世界》的新思路 [J], 哆哆沐;Master
因版权原因,仅展示原文概要,查看原文内容请购买。
大型游戏服务器的架构设计与优化
大型游戏服务器的架构设计与优化随着互联网技术的不断发展和普及,大型游戏服务器的需求也在不断增长。
大型游戏服务器需要应对成千上万的玩家同时在线,需要高并发处理能力和低延迟,以提供流畅的游戏体验。
下面将介绍大型游戏服务器的架构设计与优化的一些关键要点。
首先,对于大型游戏服务器,分布式架构是必不可少的。
将服务器系统分为若干个子系统,每个子系统负责处理一部分玩家的请求。
这样可以将负载分散到多台服务器上,提高系统的并发处理能力。
同时,可以使用负载均衡技术来均匀分配请求到各个子系统,避免一些子系统负载过高导致系统崩溃。
其次,数据库设计也是架构设计中的重要一环。
游戏服务器需要大量的存储和读取用户数据,因此数据库设计要考虑到数据的读写性能和一致性。
可以使用主从复制的方式来提高系统的读性能,将读请求分发到多个从数据库上。
同时,需要注意数据的一致性,可以使用分布式事务或者一致性哈希算法来保证数据的一致性。
另外,缓存技术也是大型游戏服务器优化的重要手段之一、游戏服务器可以使用缓存技术来减少对数据库的读取次数,提高系统的性能。
可以将热点数据缓存在内存中,如玩家的基本信息和游戏状态等,减少对数据库的读取压力。
同时,可以使用分布式缓存来提高系统的扩展性,保证系统性能的稳定。
此外,高效的网络通信也是大型游戏服务器的关键。
游戏服务器需要及时响应玩家的操作,因此网络通信的延迟要尽可能地低。
可以使用多线程技术来提高网络通信的并发能力,减少响应时间。
还可以使用消息队列技术来实现异步通信,将请求排队,提高系统的处理能力。
最后,监控和调优是优化大型游戏服务器的重要手段。
监控系统可以实时监控服务器的运行状态,对系统的性能进行分析和优化。
可以监控服务器的负载、内存使用情况、网络延迟等指标,通过监控数据分析出系统的瓶颈,并进行相应的调优。
综上所述,大型游戏服务器的架构设计与优化是一个复杂的任务,需要考虑到众多的因素。
分布式架构、数据库设计、缓存技术、网络通信和监控调优是其中的几个关键要点。
《新飞飞》网游服务器架构设计25页PPT
DB架构设计图
第三方接口1
第三方接口2
Mysql服务器程序
-第三方消息队列
-第三方消息队列
-数据库消息队列
<<子系统>> 第三方接口处理逻辑
<<子系统>> 数据库处理逻辑
-网络转化成第三方
<<子系统>> 网络包处理逻辑
-网络转化成数据库
-网络消息队列
<<子系统>> 账号及角色缓存管理
Game Server
集合对象设计:定义管理方式,数据结构,数据同步 方法,异常处理原则
12
GAME网络架构
基本模型:EPOLL 数据的memcpy:一次性接收,无memcpy;发数据时
有一次memcpy。数据缓存事先建立。 数据收发:统一的收取消息队列,处理函数;单个玩
家独立的发送队列,按帧发送,小包拼接。最多:位 置,对象加载,状态。 性能:2900人在线,80M带宽
韩服网络拓扑图
认证及第三方服务器
Sql Server
Account Server
DB Server
World Server1 World Server2
Core Server
Certify Server
Login Server
Cache Server
玩家
服务器列表信息
1
国服网络拓扑图
认证及第三方服务器
状态:坐下,近攻,远攻,站立,移动等 消息:设定状态,删除状态,开始,终止等 关系:维护一定时间,且与其他状态有互斥等交互行
为的可以设定为一个状态
16
GAME场景管理架构
基本内容:场景静、动态逻辑加载,区域自触发逻辑, 对象可见、范围相关的逻辑(伤害范围,可见范围等)
大型多人在线游戏服务器设计与优化
大型多人在线游戏服务器设计与优化随着互联网的快速发展,大型多人在线游戏(MMOG)在全球范围内吸引了数以百万计的玩家。
为了保证游戏的流畅性和稳定性,设计和优化游戏服务器至关重要。
本文将探讨大型多人在线游戏服务器的设计原则和优化方法。
第一部分:服务器设计1. 扩展性与可靠性在设计大型多人在线游戏服务器时,首要考虑的是扩展性和可靠性。
游戏服务器必须能够处理大量的并发连接,同时保证服务器的可靠性以防止玩家数据的丢失。
为了实现这一点,可以使用分布式架构,通过将游戏逻辑和数据存储分散到多个服务器上来实现。
2. 网络通信游戏服务器与客户端之间的网络通信是关键因素之一。
要保证低延迟和高吞吐量,可以使用高性能网络框架,如UDP(用户数据报协议)或自定义的TCP(传输控制协议)协议。
此外,为了减少网络延迟,服务器可以使用地理位置选择最佳的云服务提供商,并采用快速且可靠的网络设备。
3. 数据库设计大型多人在线游戏通常需要处理大量的玩家数据,包括角色信息、物品数据等。
为了提高数据库的查询和更新性能,可以采用垂直分区或水平分区的方式来存储数据。
此外,使用缓存技术(如Redis)来缓存频繁访问的数据,可以显著提高数据库的读取性能。
4. 安全性游戏服务器必须具备一定的安全性,以防止玩家数据被黑客攻击或泄露。
为此,可以采用SSL(安全套接层)协议对网络通信进行加密,使用防火墙来过滤恶意流量,并定期更新服务器软件以修复安全漏洞。
第二部分:服务器优化1. 负载均衡大量的并发连接是大型多人在线游戏服务器的特点之一,为了平衡服务器的负载,可以使用负载均衡器来将玩家的请求分发到多台服务器上。
常用的负载均衡算法包括轮询、最少连接和哈希等。
2. 缓存优化游戏服务器可以使用缓存来提高性能和响应速度。
对于经常访问的数据,可以将其缓存在内存中,避免频繁的数据库查询。
此外,使用LRU(最近最少使用)策略来管理缓存,可以确保缓存中总是保存最常使用的数据。
百万用户级游戏服务器架构设计
百万用户级游戏服务器架构设计效劳器结构讨论 -- 最复杂的结构所谓效劳器结构,也就是如何将效劳器各局部合理地布置,以完成最后的功用需求。
所以,结构本无所谓正确与错误;当然,优秀的结构更有助于系统的搭建,对系统的可扩展性及可维护性也有更大的协助。
好的结构不是一挥而就的,而且每个设计者心中的那把尺都不相反,所以这个优秀结构的定义也就没有定论。
在这里,我们不计划对现有游戏结构做评价,而是试着从头末尾搭建一个我们需求的MMOG结构。
关于一个最复杂的游戏效劳器来说,它只需求可以接受来自客户端的衔接央求,然后处置客户端在游戏世界中的移动及交互,也即游戏逻辑处置即可。
假设我们把这两项功用集成到一个效劳进程中,那么最终的结构很复杂:client ----- server嗯,太复杂了点,这样也敢叫效劳器结构?好吧,如今我们交往外面稍稍加点东西,让它看起来更像是效劳器结构一些。
普通来说,我们在接入游戏效劳器的时分都会要提供一个帐号和密码,验证经事先才干进入。
关于为什么要提供用户名和密码才干进入的效果我们这里不计划做过多讨论,云风曾对此也提出过相似的疑问,并给出了只用一个标识串就能进入的想象,有兴味的可以去看看他们的讨论。
但不论是采用何种方式进入,照目前看来我们的效劳器最少得提供一个帐号验证的功用。
我们把观察点先集中在一个大区内。
在大少数状况下,一个大区内都会有多组游戏服,也就是多个游戏世界可供选择。
复杂点来完成,我们完全可以丢弃这个大区的概念,以为一个大区也就是放在同一个机房的多台效劳器组,各效劳器组间没有什么关系。
这样,我们可为每组效劳器独自装备一台登录服。
最后的结构图应该像这样:loginServer gameServer| /| /client该结构下的玩家操作流程为,先选择大区,再选择大区下的某台效劳器,即某个游戏世界,点击进入后末尾帐号验证进程,验证成功那么进入了该游戏世界。
但是,假设玩家想要切换游戏世界,他只能先参与以后游戏世界,然后进入新的游戏世界重新停止帐号验证。
奇迹世界服务器架构(1)
奇迹世界服务器架构(1)1、服务器内容a、不同机器上的分为DBProxy //数据库Guild //公会数据Master //主服务器 Agent //副本服务器4种服务器,代码提供了很清晰的每个服务器的HANDLER FUNC TABLE(HASH)。
class PacketHandler : public Singleton<PacketHandler>{typedef VOID (*fnHandler)( CScence * pScence, GamePackHeader * pMsg, WORD wSize );//typedef VOID (*fnHandler_CG)( Player * pPlayer, GamePackHeader * pMsg, WORD wSize );public:PacketHandler();~PacketHandler();BOOL RegisterHandler_DG();//BOOL RegisterHandler_CG();BOOL RegisterHandler_GM();BOOL RegisterHandler_AG();BOOL RegisterHandler_Actor();VOID ParsePacket_DG( CScence * pScence, GamePackHeader * pMsg, WORD wSize );//VOID ParsePacket_CG( Player * pPlayer, GamePackHeader * pMsg, WORD wSize ); VOID ParsePacket_GM( CScence * pScence, GamePackHeader * pMsg, WORD wSize ); VOID ParsePacket_AG( CScence * pScence, GamePackHeader * pMsg, WORD wSize ); VOID ParsePacket_Actor( CScence * pScence, GamePackHeader * pMsg, WORD wSize );private:BOOL AddHandler_DG( BYTE category, BYTE protocol, fnHandler fnHandler );//BOOL AddHandler_CG( BYTE category, BYTE protocol, fnHandler_CG fnHandler ); BOOL AddHandler_GM( BYTE category, BYTE protocol, fnHandler fnHandler );BOOL AddHandler_AG( BYTE category, BYTE protocol, fnHandler fnHandler );BOOL m_FunctionMap_Acotr( BYTE category, BYTE protocol, fnHandler fnHandler );struct FUNC_DG : public BASE_FUNC{fnHandler m_fnHandler;};struct FUNC_GM : public BASE_FUNC{fnHandler m_fnHandler;};struct FUNC_AG : public BASE_FUNC{fnHandler m_fnHandler;};struct FUNC_ACTOR : public BASE_FUNC{fnHandler m_fnHandler;};FunctionMap m_FunctionMap_DG;FunctionMap m_FunctionMap_CG;FunctionMap m_FunctionMap_GM;FunctionMap m_FunctionMap_AG;FunctionMap m_FunctionMap_Actor;};CPP。
05MMORPG与游戏系统设计
地位和特 权
财富
社区性与系统设计
设计玩家目标 MMORPG的设计特点 1.2社区性与系统设计 角色等级
MMORPG中的角色等级除了标志着角色的基本强度外,还 被默认为一个玩家资历和能力的体现。随着设计思想的发展和玩 家习惯的变化,玩家对获得经验值的过程已经丌太关心,但是把 等级看作基本身仹象征的习惯还没有改变。
玩家喜欢在游戏中获得成就,但是更需要把成就迚行展示,
如果这些成就没有机会炫耀,那么它们的价值就非常低了。一个 人的炫耀会对所有看到他炫耀的人产生带劢作用,或者刺激玩家 之间的比较心理。
社区性与系统设计
满足社交需求 1.2.2满足社交需求 MMORPG的设计特点 1.2社区性与系统设计 成就炫耀 排行榜
社区性与系统设计
满足社交需求 1.2.2满足社交需求 MMORPG的设计特点 1.2社区性与系统设计 社会关系 其他社会关系
在很多MMORPG中还提供了像“师徒”、“夫妻”、“仇 敌”等社会关系,这些社会关系形式也能在一定程度上调劢玩家 的情感。
社区性与系统设计
满足社交需求 1.2.2满足社交需求 MMORPG的设计特点 1.2社区性与系统设计 成就炫耀
在多人游戏中,设计者无法再以玩家的角度考虑游戏,因 为玩家不游戏以及不其他玩家的互劢是难以预测的,除非在游戏 中设计了副本等封闭的环境,否则无法给玩家制造有效的挑战, 所以网络游戏的设计中往往会弱化针对单人的游戏体验设计。
MMORPG的设计特点
MMORPG的设计特点 1.2社区性与系统设计 注重社区性设计
社区性与系统设计
设计玩家目标 MMORPG的设计特点 1.2社区性与系统设计 特殊的挑战成果
游戏的乐趣来自挑战,能够突破挑战,玩家会把突破游戏 中的挑战作为目标,当然,在挑战之后,玩家要获得相应的奖励 以及一些标志,作为通过挑战的证明。
网络游戏服务器通信架构与结构设计
网络游戏服务器通信架构与结构设计作者:樊建国来源:《中国新技术新产品精选》2009年第21期摘要: 随着网络游戏玩家的日益增多,网络游戏服务器端承受着严峻的性能考验和负载压力。
为了提供良好的服务品质,网络游戏服务器端的设计显得尤其重要。
进行游戏服务器端网络通信架构及关键技术分析,对于游戏产业的发展有重要的现实意义。
关键词: 网络游戏;服务器端;通信架构1网络游戏服务器概述1.1 网络游戏服务器的基本需求网络游戏是一种比较典型的分布式实时互动的网络应用。
在过去几年里面,有三种都属于实时交互的网络应用,它们之间截然不同,但互联网上的地位却非常突出:(1)军事模拟类应用;(2)网络虚拟环境;(3)大规模多人在线游戏(MMOG)。
调查分析表明,现今的娱乐业在 MMOG 上,包括手机游戏和在线游戏上,都进行了大量的投资。
从其联网技术来看,MMOG和其他类的多媒体应用不同,有非常不同的特征。
在MMOG当中,用户需要与很多事物进行交互,因此就需要在网络上传递产生相当数量的控制信息。
玩家在MMOG游戏中娱乐的过程中必须保证流畅的游戏画面和动作,这也就要求游戏的事件数据必须能够在指定的间隔时间范围内到达。
1.2网络游戏服务器的设计要求快速响应用户。
整个系统应该设法隐藏固有网络延时,快速响应用户,保证用户操作流畅。
提高通信效率。
系统应当设计适当的通信协议,以降低网络通信量,使带宽不至于成为某些客户端的性能瓶颈。
设计高效的并发系统。
在C/S模型中,服务器节点维护整个世界状态,处理所有客户端请求,成为系统的关节点。
因此,客观上要求服务器具有高并发性,应当可以同时接受大量用户连接,同时能够有效隔离错误,为所有用户提供稳定的后台支持。
服务的分布。
单台服务器处理能力有限,可以承受的用户量有极限。
随着客户端的大量增加,服务器节点将需要巨大的计算能力和存储能力,因此需要把服务分布在一个基于某种策略的服务器集群上。
2网络游戏服务器系统层次框架网络游戏服务器体系从功能上可以划分成几个较为独立的子系统模块,通信部分位于体系的最底层,它向上层提供具体的业务数据传输,连接服务器与客户端的交互。
百万用户级游戏服务器架构设计
百万用户级游戏服务器架构设计服务器结构探讨-- 最简单的结构所谓服务器结构,也就是如何将服务器各部分合理地安排,以实现最初的功能需求。
所以,结构本无所谓正确与错误;当然,优秀的结构更有助于系统的搭建,对系统的可扩展性及可维护性也有更大的帮助。
好的结构不是一蹴而就的,而且每个设计者心中的那把尺都不相同,所以这个优秀结构的定义也就没有定论。
在这里,我们不打算对现有游戏结构做评价,而是试着从头开始搭建一个我们需要的MMOG结构。
对于一个最简单的游戏服务器来说,它只需要能够接受来自客户端的连接请求,然后处理客户端在游戏世界中的移动及交互,也即游戏逻辑处理即可。
如果我们把这两项功能集成到一个服务进程中,则最终的结构很简单:client ----- server嗯,太简单了点,这样也敢叫服务器结构?好吧,现在我们来往里面稍稍加点东西,让它看起来更像是服务器结构一些。
一般来说,我们在接入游戏服务器的时候都会要提供一个帐号和密码,验证通过后才能进入。
关于为什么要提供用户名和密码才能进入的问题我们这里不打算做过多讨论,云风曾对此也提出过类似的疑问,并给出了只用一个标识串就能进入的设想,有兴趣的可以去看看他们的讨论。
但不管是采用何种方式进入,照目前看来我们的服务器起码得提供一个帐号验证的功能。
我们把观察点先集中在一个大区内。
在大多数情况下,一个大区内都会有多组游戏服,也就是多个游戏世界可供选择。
简单点来实现,我们完全可以抛弃这个大区的概念,认为一个大区也就是放在同一个机房的多台服务器组,各服务器组间没有什么关系。
这样,我们可为每组服务器单独配备一台登录服。
最后的结构图应该像这样:loginServer gameServer| /| /client该结构下的玩家操作流程为,先选择大区,再选择大区下的某台服务器,即某个游戏世界,点击进入后开始帐号验证过程,验证成功则进入了该游戏世界。
但是,如果玩家想要切换游戏世界,他只能先退出当前游戏世界,然后进入新的游戏世界重新进行帐号验证。
一种新型MMOG游戏服务器架构设计方案
一种新型MMOG游戏服务器架构设计方案
马利麒
【期刊名称】《现代计算机(专业版)》
【年(卷),期】2016(000)013
【摘要】MMOG游戏在项目开始阶段对于后台游戏逻辑不能够完全给出需求,需要在开发过程中不断地修正.因此对于后台服务器开发比较合适采用原型的开发方式,即先给出服务器框架,然后在上面不断地叠加或者变更功能.根据以往的开发经验,结合传统服务器架构的优点,规避其暴露出的缺点,设计出一种新型的服务器架构,并描述出设计思想、基本架构和工作流程,对游戏服务器架构的基本问题有着较好的工程参考价值.
【总页数】4页(P47-50)
【作者】马利麒
【作者单位】西南交通大学电气工程学院,成都 610031
【正文语种】中文
【相关文献】
1.一种3G手机网络游戏服务器架构的分层设计 [J], 郑鸿
2.一种新型的网络游戏服务器架构设计 [J], 江岸
3.一种高性能的大型多人在线角色扮演游戏服务器架构设计 [J], 马亚花
4.一种新型掘进机行走驱动轮设计方案 [J], 盖巍巍; 李忠豹
5.一种新型超声发生器的设计方案 [J], 王荣
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
⑧ ⑨⑩
生成 令牌
②
③
⑤
角色数据库
⑤ 获取角色列表 ⑥ 向玩家反馈角色信息 ⑦ 玩家选择角色
网关服务器
④ ⑦ ⑥ ①
⑧ 玩家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"> 地图服务器
请求队列 …… …… …… ……
请求队列
第二次请求
请求代理 令牌 用户ID 游戏玩家
玩家n结算
空闲索引 队列 B
保存 角色服务器
载入
日志服务器 (可选)
MMORPG服务器端设计
服务器架构
网关服务器
MMORPG服务器端设计
服务器架构
网关服务器
MMORPG服务器端设计
服务器架构
网格 数据
地图服务器
MMORPG服务器端设计
服务器架构
地图服务器
MMORPG服务器端设计
服务器架构
地图服务器
MMORPG服务器端设计
服务器端部署
服务器个数: 1
方案1
● 低成本 ● 低性能
逻辑地图 服务器1
逻辑地图 服务器N
聊天服务器
网关服务器
角色数据库 账户数据库
登陆服务器
游戏玩家
游戏玩家
—— 单台服务器
MMORPG服务器端设计
MMORPG服务器端设计
服务器架构
登陆服务器
MMORPG服务器端设计
登陆服务器
严格讲不属于登陆服务器一部分,只是为找到 登陆服务器作准备。
MMORPG服务器端设计
服务器架构
登陆服务器
MMORPG服务器端设计
服务器架构
登陆服务器
参见Logonserver.conf文件: <LogonDatabase Hostname = "localhost“ Username = "root“ Password = "“ Name = “TestLogonDB“ Port = "3306“ Type = "1">
地图服务器
网关服务器 数据库服务器 登陆服务器
对话服务器 账户服务器 日志服务器
游戏玩家
游戏玩家
MMORPG服务器端设计
服务器架构
登陆服务器
DoS 检测
游戏玩家
令牌生成
账户收支
黑名单
网关代理
授权
认证
请求队列 …… …… …… …… 请求队列
第一次请求
请求代理 账户 密码 游戏玩家
掩码认证
账户数据库
服务器端部署
服务器个数: 5
方案2
● 中等成本 ● 普通性能
逻辑地图 服务器1
逻辑地图 服务器n
聊天服务器
网关服务器
角色数据库 账户数据库
登陆服务器
游戏玩家
游戏玩家
—— 单台服务器
MMORPG服务器端设计
服务器端部署
服务器个数: 5+N (N>=1)
方案3
● 高成本 ● 高性能
逻辑地图 服务器1
逻辑地图 服务器N
网关服务器
进入游戏
① 使用令牌,发出请求 ② 用户ID是否在角色列表
数据
同步
③ 是则处理,否则等待 ④ 地图服务器处理或等待
角色列表
⑤ 客户端随机请求 ⑥ 服务器端随机回复 ⑦ 其它玩家信息间歇性请求
数据
②
③
地图服务器
网格信息
同步
⑧ 其它玩家信息间歇性回复
⑧
⑦
⑥
⑤ ④
①
游戏玩家
聊天服务器
网关服务器
角色数据库
登陆服务器
账户数据库
游戏玩家
游戏玩家
—— 单台服务器
MMORPG服务器端设计
服务器端部署
—— 单台服务器
M —— 服务器集群数
商业方案
服务器个数: 3+M*(2+N) (M>=1,N>=1)
N —— 集群地图服务器数
● ● ● ● ●
支持大规模玩家 高成本 高负载均衡 高性能 高灵活性
⑥
账户收支
②
③
⑤
账户数据库
⑤允许/拒绝 ⑥ 是否有账户余额? ⑦允许/拒绝
登陆服务器
⑦
⑧
令牌 生成
①
④
⑧ 加密用户ID,生成令牌
⑨允许/拒绝, 最终回应
⑨
游戏玩家
MMORPG服务器端设计
服务器端工作流
选择玩家
① 使用令牌,发出请求 ② 空索引队列?
空索引队列
③ 是否存在空位 ④ 请求账户角色列表
网关代理 规则
MMORPG服务器端设计
服务器架构
登陆服务器
MMORPG服务器端设计
服务器架构
登陆服务器ຫໍສະໝຸດ MMORPG服务器端设计服务器架构
角色队列
网关服务器
DoS 检测 令牌
索引 队列A
空闲索引 队列 A 玩家1角色A 玩家1角色B 玩家1角色C
游戏玩家
地图 代理 玩家n角色A 玩家n角色B 索引 队列B
角色认证
--架构设计和开发基础
MMORPG服务器端设计
■ ■
■ ■
服务器端设计目标 服务器端架构
服务器端实现 服务器端工作流
MMORPG服务器端设计
服务器端设计目标
● 低系统配置 ● 低学习曲线 ● 高稳定性 ● 高性能 ● 高适应性 ● 跨平台支持
MMORPG服务器端设计
服务器端架构
服务器集群 地图服务器