请看如下图示:
这个图是一个区的架构图,所有区的架构是一样的。上面虚线框的ServerGroup和旁边方框内的架构一样。图上的所有x N的服务器,都是多台一起的。红线,绿线,和蓝线图上也有图示,这里就不多介绍了。关于Agent Server大家也能看出来,其实就是Gate。
这里主要介绍下图上的标记了号码的位置的数据连接的内容和意义。
1- 这是一条WebService的管道,在用户激活该区帐号,或者修改帐号密码的时候,通过这条通道来插入和更新用户的帐号信息。
2- 这也是一条WebService管道,用来获取和控制用户该该组内的角色信息,以及进行付费商城代币之类的更新操作。
3- 这是一条本地的TCP/IP连接,这条连接主要用来进行服务器组在登陆服务器的注册,以及登陆服务器验证帐户后,向用户服务器注册帐户登陆信息,以及进行对已经登陆的帐户角色信息进行操作(比如踢掉当前登陆的角色),还有服务器组的信息更新(当前在线玩家数量等)。
4- 这也是一条本地TCP/IP连接,这条连接用来对连接到GameServer的客户端进行验证,以及获取角色数据信息,还有传回GameServer上角色的数据信息改变。
5- 这条连接也是一条本地的TCP/IP连接,它用来进行公共信息服务器和数个游戏服务器间的交互,用来交换一些游戏世界级的信息(比如公会信息,跨服组队信息,跨服聊天频道等)。
6- 这里的两条连接,想表达的意思是,UserServer和GameServer的Agent是可以互换使用的,也就是玩家进入组内之后,就不需要再切换Agent。如果不怕乱套,也可以把登陆服务器的Agent也算上,这样用户整个过程里就不需要再更换Agent,减少重复连接的次数,也提高了稳定性。(毕竟连接次数少了,也降低了连不上服务器的出现几率)
在这个架构里面,GameServer实际上是一个游戏逻辑的综合体,里面可以再去扩展成几个不同的逻辑服务器,通过PublicServer进行公共数据交换。
UserServer实际上扮演了一个ServerGroup的领头羊的角色,它负责向LoginServer注册和更新服务器组的信息(名字,当前人数),并且对Agent进行调度,对选择了该组的玩家提供一个用户量最少的Agent。同时,它也兼了一个角色管理服务器的功能,发送给客户端当前的角色列表,角色的创建,删除,选择等管理操作,都是在这里进行的。而且,它还是一个用户信息的验证服务器,GameServer需要通过它来进行客户端的合法性验证,以及获取玩家选择的角色数据信息。
采用这种架构的游戏,通常有以下表现。
1- 用户必须激活一个大区,才能在大区内登陆自己的帐号。
2- 用户启动客户端的时候,弹出一个登陆器,选择大区。
3- 用户启动真正的客户端的时候,一开始就是输入帐号密码。
4- 帐号验证完成之后,进行区内的服务器选择。
5- 服务器选择完成之后,进入角色管理。同时,角色在不同的服务器里不能共享。
市面上符合上面几个表现特征的游戏相当的多,而且也不乏旷世巨作。这个架构不是一个新的架构,但是它足够经典和完善,并且逻辑简单而清晰,用来做MMORPG,或者其它网络游戏的服务器架构,是一种不错的选择。
分享到:
相关推荐
该公司现有约100台服务器,其中包括大量配置较低且运行时间长达五年的老式服务器,以及部分运行在Windows Virtual Server 2005上的虚拟机。由于物理机房的空间限制、电力系统负荷过载以及老旧服务器性能不足等问题,...
- **背景**: ××公司是一家拥有近千名员工的中型企业,目前部署有超过100台服务器,其中包括大量配置较低且运行时间长达五年的老式服务器,以及部分运行在Windows Virtual Server 2005上的虚拟机。由于现有服务器...
- **背景**: ××公司是一家拥有近千名员工的中型企业,目前部署有超过100台服务器,其中包括大量配置较低且运行时间长达五年的老式服务器,以及部分运行在Windows Virtual Server 2005上的虚拟机。当前面临的主要...
通过分析和理解这些代码,可以了解到如何使用C#来构建一个游戏,包括游戏对象的创建、碰撞检测、动画系统、得分系统以及游戏循环等基本元素。 C#在游戏开发中的关键特性包括: 1. 面向对象:C#支持类、接口和继承,...
另一方面,"用linux构建仗剑江湖mud游戏服务器实战经历.txt"是一个文本文件,很可能记录了某位开发者或爱好者使用Linux操作系统搭建仗剑江湖游戏服务器的具体步骤和经验分享。通过阅读这份文档,读者可以学习到如何...
串口服务器的核心功能在于将传统的串行接口数据转化为IP数据包,使得不具备网络功能的老式设备也能接入以太网,提高了设备的利用率。在数据处理上,串口服务器执行串口与以太网之间的存储控制和格式转换,确保数据...
1. **Eclipse Virgo**:这是一个用于构建和部署OSGi(开放服务网关计划)应用程序和服务的企业级容器。Virgo旨在简化复杂的分布式系统的管理,并提供了一个健壮且可靠的环境来运行这些应用。 2. **OSGi**:OSGi是一...
这个“Android端RTMP播放工具”是一个专为Android设备设计的应用,能够接收并播放通过RTMP协议传输的视频流。由于它是基于FFmpeg和OpenCV库构建的,我们可以深入探讨这两个关键组件及其在实现RTMP播放中的作用。 ...
"2022年软考系统架构设计师知识点" 系统架构设计师知识点是指在软件架构设计领域中需要掌握的知识点,以下是该领域的详细知识点: 操作系统类型: 1. 批解决操作系统 2. 分时操作系统 3. 实时操作系统 4. 网络...
传统的IT基础设施构建方式类似于手工艺人根据客户需求定制的老式汽车,每个应用都有其独特的服务器配置,导致成千上万的应用孤岛,硬件配置各异,互不兼容,极大地限制了企业的灵活性和市场响应速度。此外,由于...
【标题】"dosbox-x-macosx-arm64-20210401114115.zip" 提供的是一个针对...10. **软件遗产**:DOSBox不仅仅是一个游戏工具,它还帮助保护了计算机历史的一部分,让用户有机会体验和学习早期个人计算机时代的技术。
【OPC(OLE for Process Control)】是工业自动化中的一个接口标准,它使得不同制造商的硬件和软件能够无缝集成。OPC技术在本文中用于实现现场设备与监控软件的集成,简化了系统的设计和维护,提高了系统的灵活性。 ...
对于学习ASP编程、研究老式Web应用的架构或者想要复刻类似游戏平台的开发者来说,这是一个宝贵的资源。不过,需要注意的是,由于其年代较早,可能不支持现代浏览器特性,且可能存在安全漏洞,因此在实际使用时需要...
需要注意的是,由于IPX主要用于老式游戏和特殊网络环境,它可能不兼容现代网络架构,如路由器和NAT(网络地址转换),因此在某些家庭网络中可能无法直接工作。此外,大多数现代游戏已经改用TCP/IP协议进行网络通信,...
"se-rebirth"项目正是这样一个典型的案例,它旨在将那些深受用户喜爱的、基于文本的老式浏览器游戏带入现代生活,通过先进的技术手段赋予它们新的生命力。这个项目的核心是利用PHP编程语言来实现对旧游戏数据的重新...
7. **ApacheMonitor.h**:这是一个头文件,通常包含函数声明、常量定义和数据结构等,供其他源文件在编译时引用。这可能是`ApacheMonitor.c`和`wintty.c`中使用的函数和数据结构的定义。 要理解和使用这些源代码,...
"标签"中的"经典"和"网站"再次强调了这是一个基于ASP的老式网站项目,它可能展示了早期互联网时代的网站设计和开发实践。"源码"一词则提醒我们,这个资源提供了完整的代码,使得学习者可以深入了解ASP编程和Web开发...
3. 代理服务器:在开发环境中,可以设置一个本地的代理服务器,将前端请求转发到实际的API服务器。Vue CLI提供了webpack配置的代理功能,可以在`vue.config.js`文件中设置,将所有/api开头的请求代理到指定的后端...
7. **实时推送**:为了及时将新消息推送给用户,可能需要用到事件驱动的服务器架构,如Node.js或RabbitMQ等消息队列服务。 8. **UI设计**:良好的用户体验对于任何插件都是关键,WebIM的前端界面应简洁易用,同时...
【标题】"老项目模版渲染的,FreeMarker 乾坤项目"揭示了这是一个基于FreeMarker模板引擎的老式项目,主要用于动态生成HTML内容。FreeMarker是一个用Java编写的开源模板语言,它与Vue.js和JavaScript结合使用,可能...