我的编程空间,编程开发者的网络收藏夹
学习永远不晚

游戏服务器架构探索

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

游戏服务器架构探索

  今天大家跟随小编一起来看看游戏服务器的演进过程。

  游戏服务器的特点。

  游戏服务器是一个长期运行的程序,它还服务于多个不定时和不定点的网络请求。因此,这种服务的特点是特别注重稳定性和性能。如果这类程序需要多个协作来提高承载能力,也要注意部署和扩展的便利性;同时,还需要考虑如何在一定程度上满足容灾需求。多进程协同工作也带来了开发的复杂性,这也是一个需要注意的问题。

  功能约束是架构设计的决定性因素。基于游戏业务的功能特点,对服务器系统有以下特殊要求:

  游戏和玩家的数据存储落地。

  播放和同步玩家交互数据。

  在服务器上运算重要逻辑,做好验证,防止外挂。

  根据上述需求特点,在服务器端,我们经常关注计算机内存和CPU的使用,以满足特定业务代码下高承载、低响应延迟的需求。最基本的方法是空间换时间,通过各种缓存方式获得CPU与内存空间的平衡。还有一个约束:带宽。网络带宽直接限制了服务器的处理能力,所以游戏服务器架构也必须考虑这个因素。

  游戏服务器架构要素;

  

 

  对游戏服务端架构来说,最重要的三个部分是如何使用CPU,内存,网卡设计:

  内存架构:主要决定服务器如何使用内存,以最大限度地利用服务器内存,增加承载能力,减少服务延迟。

  逻辑架构:设计如何使用过程、线程、协程等CPU调度方案。为了提高服务器的稳定性和承载能力,选择同步、异步等不同的编程模型。可分区分服,也可采用世界服的方式,将相同的功能模块划分不同的服务器进行处理。

  通信模式:决定如何通信。根据游戏类型的不同,采用http、tcp、udp等不同的通信模式。

  服务器的演变过程。

  卡牌等休闲游戏弱交互游戏。

  根据游戏类型的不同,服务器采用的架构也不同,我们先来谈谈简单的模型,服务器采用http通信模式架构:

  这种服务器架构类似于我们常用的web服务器架构,也使用nginx负载集群支持服务器的水平扩展,memcache作为缓存。唯一不同的地方是通信层需要对协议进行再加工和加密。一般每个公司都有自己的基于http的协议层框架,很少使用开源框架。  

 

  长链接游戏服务器。

  长连接游戏和弱联网游戏的区别在于,在长连接中,玩家处于状态,服务器可以随时与client互动,数据传输,不像弱联网,每次都需要重新创建一个连接,消息传输的频率和速度都比弱联网游戏快。经过几代迭代,长链接网游的架构类型日益丰富。以下是每一代服务器的特点和架构模式。

  房间服务器(游戏大厅)

  房间类玩法和MMORPG有很大的不同,在于其在线广播单元的不确定性和广播数量很小。而且需要匹配一台房间服务器让少数人进入一个服务器。

  这一类游戏最重要的是其“游戏大厅”的承载量,每个“游戏房间”受逻辑所限,需要维持和广播的玩家数据是有限的,但是“游戏大厅”需要维持相当高的在线用户数,所以一般来说,这种游戏还是需要做“分服”的。典型的游戏就是《英雄联盟》这一类游戏了。而“游戏大厅”里面最有挑战性的任务,就是“自动匹配”玩家进入一个“游戏房间”,这需要对所有在线玩家做搜索和过滤。

  玩家先登录“大厅服务器”,然后选择组队游戏的功能,服务器会通知参与的所有游戏客户端,新开一条连接到房间服务器上,这样所有参与的用户就能在房间服务器里进行游戏交互了。  

  最后

  游戏行业相对于互联网应用来说,其开放性和标准化并不完善,这就导致了很其他行业看游戏有一种神秘面纱,隐秘而封闭。

  造成这个原因有很多,游戏业务的复杂性以及受众群体小是主要原因,它不像web应用天生有开源组织和社区基因的支持,也没有互联网行业的如此大的受众面和影响力,除了一些比较出名的游戏引擎以外其他的功能组建都是有各个游戏公司基于自己业务逻辑自己搭建,每个公司业务方向不同又加大了知识的流通以及标准的建立,这对整个生态的发展已经产生了制约,特别是那些想加入游戏行业的新人来说,准入门槛较高,网上可找到的学习资料也很少。

  这种现象目前正在发生改变,除了受众群体越来越大和丰富以外,还有一些技术组织正在推进整个社区的进步。

  比如每年一度的unity技术大会,以及其他优秀的开源引擎都在积极推进整个游戏社区的创建,除了吸引更多优秀的技术人才和团队加入,这一切都让游戏行业变得越来越开放和规范,让行业内的知识也得以流通和继承。当然了,也期望每个游戏人能够加入进来,分享自己的知识,让自由开放的共享精神传承每个地方。

  讲到这里,小编这一篇文章的内容也就结束了。

    >>>>>>点击进入游戏开发专题

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

游戏服务器架构探索

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

游戏服务器架构探索

今天大家跟随小编一起来看看游戏服务器的演进过程。
游戏服务器架构探索

解析棋牌游戏服务端架构设计基本原理

编程学习网:一款大型游戏开发主要由游戏策划,服务器端,客户端,美工,游戏测试,用户体验等几部分组成,其中服务器端的开发绝对是一个程序员大展身手的地方。那么游戏服务端架构设计原理是什么?这便是我们接下来的教程,以网狐棋牌游戏为例,解析服务端架构设计原理。
解析棋牌游戏服务端架构设计基本原理

编程热搜

  • 教你如何为你的Cocos2D-X资源加密解密
    编程学习网:我们平时在用Cocos2D-X时都不想让别人看到自己的文件,本篇教程将教你如何为你的Cocos2D-X资源加密解密。
    教你如何为你的Cocos2D-X资源加密解密
  • 教你如何用Cocos2D实现3d效果
    编程学习网:经过了之前几篇教程,相信各位同学已经对Cocos2D不陌生了,本篇教程将教你如何用Cocos2D实现3d效果。
    教你如何用Cocos2D实现3d效果
  • 零基础学习之教你如何用Cocos2D实现画中画效果
    编程学习网:没学过Cocos2D?没关系,多看看我们的教程,一步步成为游戏开发大神。本篇教程将教你如何用Cocos2D实现画中画效果。
    零基础学习之教你如何用Cocos2D实现画中画效果
  • 解析安卓Cocos2D-X2转移项目到Cocos2D-X3过程
    编程学习网:相信有一部分同学都经历过将项目从Cocos2D-X2转到Cocos2D-X3的麻烦,本篇教程将解析将项目从Cocos2D-X2转到Cocos2D-X3的过程。
    解析安卓Cocos2D-X2转移项目到Cocos2D-X3过程
  • 游戏脚本设计基础教程
    编程学习网:类游戏编程,特别是RPG脚本起着驱动整个游戏进程的作用。事件的运作建立在脚本的基础上,而脚本的设计建立在引擎的基础上,所以设计脚本之前因该想一想引擎,好的脚本对剧情的描述具有简单、准确的性质。
    游戏脚本设计基础教程
  • 成为游戏设计师必须具备的条件
    编程学习网:很多人喜欢玩游戏,他们总在不停感叹:这款游戏实在太精彩了,我要是能设计出这样的游戏就!而在他们行动之前,还有许多需要解答的问题罗列在前,我要如何成为游戏设计师?我需要具备哪些技能和素质?游戏设计师究竟在做什么工作?那么,游戏设计师有哪些任务呢?我们将讨论这个问题。
    成为游戏设计师必须具备的条件
  • 贪食蛇小游戏开发设计基础教程
    编程学习网: 贪吃蛇是家喻户晓的益智类小游戏,大家小时候应该都有玩过,编程学习网这里就不多介绍了,本教程将教你用MicrosoftVisualC++来制作它。
    贪食蛇小游戏开发设计基础教程
  • 成为优秀的Cocos2D程序员需要的十个品质
    编程学习网:相信各位同学都在为了成为优秀的Cocos2D程序员而奋斗着,那么一个优秀的Cocos2D程序员需要具备什么品质呢?本篇教程为你揭秘成为一个优秀的Cocos2D程序员所需要的十个品质。
    成为优秀的Cocos2D程序员需要的十个品质
  • Unity3d脚本基础
    最好用游戏引擎开发游戏,推荐Unity3D引擎,该引擎学习更简单,更易上手。游戏引擎可以编辑你的游戏场景、角色和游戏需要的东西。还有,学习编写脚本。编写脚本实际上就是编程。例如,你要在游戏中按键盘方向键来控制角色行走,这必须通过编写脚本。因此,脚本是游戏的逻辑。小编推荐你去学C编程,Unity3D通常是用C语言编写的。
    Unity3d脚本基础
  • 实例教程解析制作flash小游戏
    编程学习网:flash小游戏在游戏开发中是属于比较简单的类型,本例为FlashAS3.0实例教程,介绍射击类游戏的制作,主要分游戏界面的制作和类的编写两部分,从简单的开始做起,跟着教程动手做做看吧。
    实例教程解析制作flash小游戏

目录