实时联网游戏后台技术选型和挑战(房间匹配与数据同步)
发表于2018-08-20
在此前的《网络接入篇》中我们介绍了实时联网游戏网络接入相关内容,网络接入层开发考验的是开发者高性能网络编程的功底,即解决C10K甚至C10M的能力。本文开始介绍游戏逻辑层,由于不同游戏玩法千奇百怪,本文不涉及游戏具体的业务逻辑,只探讨在逻辑层实现中经常遇到的房间匹配和数据同步问题。
基于“房间”模式的联网对战游戏,游戏流程可分为匹配(matchmaking)和 对战(gameplay)两个阶段。匹配是指将在线”玩家中满足一定条件或要求的玩家“撮合”到一起进行游戏。对战是指匹配到同一房间的客户端(玩家)彼此建立通讯信道(一般是通过连接到指定房间服务器,并通过房间服务提供的接口)来同步玩家操作、游戏状态等数据以支持同一房间内玩家对战和互动。
房间匹配
一般来说房间匹配服务架构如下图所示,其中和房间匹配相关的通讯数据称之为“控制流”,房间内游戏对战通讯数据称之为“数据流”,显然两种不同类型的流对带宽、延时等指标容忍度不同,实际开发中应分别由不同服务器来承担。


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

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