首先,二话不说,上图(用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,或者其它网络游戏的服务器架构,是一种不错的选择。

一种经典的网络游戏服务器架构相关推荐

  1. 几种经典的网络服务器架构模型的分析与比较

    前言 事件驱动为广大的程序员所熟悉,其最为人津津乐道的是在图形化界面编程中的应用:事实上,在网络编程中事件驱动也被广泛使用,并大规模部署在高连接数高吞吐量的服务器程序中,如 http 服务器程序.ft ...

  2. 经典网络游戏服务器架构

    首先,二话不说,上图(用Windows画图画的...) 这个图是一个区的架构图,所有区的架构是一样的.上面虚线框的ServerGroup和旁边方框内的架构一样.图上的所有x N的服务器,都是多台一起的 ...

  3. 一种高性能网络游戏服务器架构设计

    网络游戏的结构分为客户端与服务器端,客户端采用2D绘制引擎或者3D绘制引擎绘制游戏世界的实时画面,服务器端则负责响应所有客户端的连接请求和游戏逻辑处理,并控制所有客户端的游戏画面绘制.客户端与服务器通 ...

  4. 网络游戏服务器架构流程

    移动端网络游戏主要分为两种类型,一种是弱联网的,一种是强联网的. 弱联网的游戏,主要是指对游戏数据实时性要求比较低的联网游戏,比如卡牌游戏,休闲游戏等. 强联网的游戏,主要是指对游戏数据实时性要求比较 ...

  5. 网络游戏服务器架构设计

    有一天,我突然不想做游戏了.于是写点开发总结,于是就有了这篇文档. 入手 假如,我现在接手一个新项目,我的身份还是主程序.在下属人员一一到位之前,在和制作人以及主策划充分沟通后,我需要先独自思考以下问 ...

  6. 如何做一名主程之Unity3D网络游戏服务器架构设计

    下面我们开始今天的Unity3D游戏开发技能. 初期学习目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D.3D小规模游戏及网页游戏开发. 今天给大家讲一下如何做一个好 ...

  7. Unity3D游戏开发之网络游戏服务器架构设计培训

    下面我们开始今天的Unity3D游戏开发技能培训. 我们专业培养"游戏主程",挑战20W年薪,初期学习Unity3D培训目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改 ...

  8. 12 种经典亿级流量架构之资源隔离思想与方法论

    -     为什么要资源隔离    - 常见的资源,例如磁盘.网络.CPU等等,都会存在竞争的问题,在构建分布式架构时,可以将原本连接在一起的组件.模块.资源拆分开来,以便达到最大的利用效率或性能.资 ...

  9. Unity3D游戏开发之网络游戏服务器架构设计(如何做一名主程)

    下面我们开始今天的Unity3D游戏开发技能. 初期学习目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D.3D小规模游戏及网页游戏开发. 今天给大家讲一下如何做一个好 ...

最新文章

  1. eclipse 添加 server library
  2. SESSION 页面刷新 失效
  3. echarts瀑布图_ECharts · Example
  4. 路遥工具箱全面迁移至 .NET 6.0 并发布 3.0 版本及迁移记录详解
  5. Win11重磅新功能推送!
  6. wamp2.5可用php5.6,局域网访问,多站点配置
  7. python调用命令行获取pid_命令行命令/命令运行时的pid及获取
  8. SQL那些事儿(九)--oracle数据库知识体系
  9. c语言删除堆栈所有的结点,深入浅出数据结构C语言版(15)——优先队列(堆)(示例代码)...
  10. 真好玩python教孩子学编程_Python真好玩:教孩子学编程
  11. 2021年茶艺师(中级)考试内容及茶艺师(中级)找解析
  12. Proxmox VE 7.2 使用qemu-img转换磁盘格式
  13. 使用Rancher搭建K8S环境的准备工作
  14. SAP案例教程FIAR应收账款后台配置
  15. odb 使用指南(三)持久化对象的处理
  16. SQL为什么动不动就N百行以K计
  17. 中国麻纺行业竞争动态及产销需求预测报告(2022-2027年)
  18. Precision, Recall, BLEU and ROUGE
  19. armv7与armv8 cp15 cache指令
  20. 【Cadence Virtuoso】IC617 入门操作 (MOS特性分析)

热门文章

  1. tensorflow2.0对应python版本_TensorFlow2.1.0最新版本安装详细教程
  2. css3制作俩面翻转盒子效果
  3. 指针01:指针的定义与使用
  4. 程序猿必须要知道的一个内容:客户端+服务端一(源码解析、建议收藏)
  5. C# visionpro搜索区域拖动改变事件
  6. c语言教程文库,C语言经典教程
  7. python程序设计实验七_Python程序设计实验报告七:组合数据类型
  8. POJ1011 Sticks
  9. JVM常见的七种垃圾收集器的简单比较
  10. 一次性搞懂JavaScript 执行机制