实时联网游戏后台服务技术选型和挑战(房间匹配与数据同步篇)

在此前的《网络接入篇》中我们介绍了实时联网游戏网络接入相关内容,网络接入层开发考验的是开发者高性能网络编程的功底,即解决C10K甚至C10M的能力。本文开始介绍游戏逻辑层,由于不同游戏玩法千奇百怪,本文不涉及游戏具体的业务逻辑,只探讨在逻辑层实现中经常遇到的房间匹配和数据同步问题。

基于“房间”模式的联网对战游戏,游戏流程可分为匹配(matchmaking)和 对战(gameplay)两个阶段。匹配是指将在线”玩家中满足一定条件或要求的玩家“撮合”到一起进行游戏。对战是指匹配到同一房间的客户端(玩家)彼此建立通讯信道(一般是通过连接到指定房间服务器,并通过房间服务提供的接口)来同步玩家操作、游戏状态等数据以支持同一房间内玩家对战和互动。

房间匹配

一般来说房间匹配服务架构如下图所示,其中和房间匹配相关的通讯数据称之为“控制流”,房间内游戏对战通讯数据称之为“数据流”,显然两种不同类型的流对带宽、延时等指标容忍度不同,实际开发中应分别由不同服务器来承担。

不同游戏的匹配策略可能不太一致,例如常见的基于场次、基于等级、随机匹配等。如果在房间创建时给房间打上一定数量的标签,我们便可以借鉴搜索引擎的倒排索引的思路来实现房间匹配算法。例如待加入的房间有:R1: [T1,T2,T3],R2:[T3],R3:[T1,T3],Rn:[T1,T2],这些房间不仅会存在与全局匹配列表中,同时还会存在每个标签索引中。

假如Tag1表示“竞技场”,要匹配“竞技场”房间只需在Tag1索引队列中匹配,同时为了增加灵活性,匹配还应该支持由AND、OR、NOT、括号操作符组成的逻辑表达式,例如 T1 AND T2 的匹配候选集= INTERSEC(Tag1队列, Tag2队列),(T1 AND (NOT T2))的匹配候选集=DIFF(Tag1队列, Tag2队列)。

游戏同步

在《网络接入篇》中介绍过网游三种常见的网络架构:C/S架构,P2P架构,还有一种C/M架构,分别如下图所示。

网络游戏中通过同步机制来保证各个客户端游戏世界的一致性,主流的同步机制有两种:1 状态同步; 2帧同步。状态同步是指:由客户端负责将玩家的操作发往中心节点 (服务器或master客户端),由中心节点来负责游戏逻辑计算并将计算结果广播给客户端,再由客户端负责渲染游戏结果。而帧同步的理论基础是:游戏逻辑由操作指令驱动,只要操作序列一致,那么游戏结果就应该一致。

下表我们简要对比了两种同步机制的差异

游戏类型、网络条件是同步机制选择时的首要考虑因素,对于同步频次低,例如休闲回合制游戏,鉴于数据流量小同时对游戏逻辑安全性和以及防外挂能力有较高要求,一般大都采用状态同步的方式。但对于操作要求比较高的,例如运动、赛车类游戏里涉及大量的物理逻辑运算,以及MOBA类对流畅性有更高要求的游戏,帧同步是更好的选择。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容