一种经典的网络游戏服务器架构
首先,二话不说,上图(用Windows画图画的。。。)
这个图是一个区的架构图,所有区的架构是一样的。上面虚线框的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,或者其它网络游戏的服务器架构,是一种不错的选择。
一种经典的网络游戏服务器架构相关推荐
- 几种经典的网络服务器架构模型的分析与比较
前言 事件驱动为广大的程序员所熟悉,其最为人津津乐道的是在图形化界面编程中的应用:事实上,在网络编程中事件驱动也被广泛使用,并大规模部署在高连接数高吞吐量的服务器程序中,如 http 服务器程序.ft ...
- 经典网络游戏服务器架构
首先,二话不说,上图(用Windows画图画的...) 这个图是一个区的架构图,所有区的架构是一样的.上面虚线框的ServerGroup和旁边方框内的架构一样.图上的所有x N的服务器,都是多台一起的 ...
- 一种高性能网络游戏服务器架构设计
网络游戏的结构分为客户端与服务器端,客户端采用2D绘制引擎或者3D绘制引擎绘制游戏世界的实时画面,服务器端则负责响应所有客户端的连接请求和游戏逻辑处理,并控制所有客户端的游戏画面绘制.客户端与服务器通 ...
- 网络游戏服务器架构流程
移动端网络游戏主要分为两种类型,一种是弱联网的,一种是强联网的. 弱联网的游戏,主要是指对游戏数据实时性要求比较低的联网游戏,比如卡牌游戏,休闲游戏等. 强联网的游戏,主要是指对游戏数据实时性要求比较 ...
- 网络游戏服务器架构设计
有一天,我突然不想做游戏了.于是写点开发总结,于是就有了这篇文档. 入手 假如,我现在接手一个新项目,我的身份还是主程序.在下属人员一一到位之前,在和制作人以及主策划充分沟通后,我需要先独自思考以下问 ...
- 如何做一名主程之Unity3D网络游戏服务器架构设计
下面我们开始今天的Unity3D游戏开发技能. 初期学习目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D.3D小规模游戏及网页游戏开发. 今天给大家讲一下如何做一个好 ...
- Unity3D游戏开发之网络游戏服务器架构设计培训
下面我们开始今天的Unity3D游戏开发技能培训. 我们专业培养"游戏主程",挑战20W年薪,初期学习Unity3D培训目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改 ...
- 12 种经典亿级流量架构之资源隔离思想与方法论
- 为什么要资源隔离 - 常见的资源,例如磁盘.网络.CPU等等,都会存在竞争的问题,在构建分布式架构时,可以将原本连接在一起的组件.模块.资源拆分开来,以便达到最大的利用效率或性能.资 ...
- Unity3D游戏开发之网络游戏服务器架构设计(如何做一名主程)
下面我们开始今天的Unity3D游戏开发技能. 初期学习目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D.3D小规模游戏及网页游戏开发. 今天给大家讲一下如何做一个好 ...
最新文章
- eclipse 添加 server library
- SESSION 页面刷新 失效
- echarts瀑布图_ECharts · Example
- 路遥工具箱全面迁移至 .NET 6.0 并发布 3.0 版本及迁移记录详解
- Win11重磅新功能推送!
- wamp2.5可用php5.6,局域网访问,多站点配置
- python调用命令行获取pid_命令行命令/命令运行时的pid及获取
- SQL那些事儿(九)--oracle数据库知识体系
- c语言删除堆栈所有的结点,深入浅出数据结构C语言版(15)——优先队列(堆)(示例代码)...
- 真好玩python教孩子学编程_Python真好玩:教孩子学编程
- 2021年茶艺师(中级)考试内容及茶艺师(中级)找解析
- Proxmox VE 7.2 使用qemu-img转换磁盘格式
- 使用Rancher搭建K8S环境的准备工作
- SAP案例教程FIAR应收账款后台配置
- odb 使用指南(三)持久化对象的处理
- SQL为什么动不动就N百行以K计
- 中国麻纺行业竞争动态及产销需求预测报告(2022-2027年)
- Precision, Recall, BLEU and ROUGE
- armv7与armv8 cp15 cache指令
- 【Cadence Virtuoso】IC617 入门操作 (MOS特性分析)