文/ Matchvs

在此前的《網(wǎng)絡接入篇》中我們介紹了實時聯(lián)網(wǎng)游戲網(wǎng)絡接入相關內(nèi)容,網(wǎng)絡接入層開發(fā)考驗的是開發(fā)者高性能網(wǎng)絡編程的功底,即解決C10K甚至C10M的能力。本文開始介紹游戲邏輯層,由于不同游戲玩法千奇百怪,本文不涉及游戲具體的業(yè)務邏輯,只探討在邏輯層實現(xiàn)中經(jīng)常遇到的房間匹配和數(shù)據(jù)同步問題。

基于“房間”模式的聯(lián)網(wǎng)對戰(zhàn)游戲,游戲流程可分為匹配(matchmaking)和 對戰(zhàn)(gameplay)兩個階段。匹配是指將在線”玩家中滿足一定條件或要求的玩家“撮合”到一起進行游戲。對戰(zhàn)是指匹配到同一房間的客戶端(玩家)彼此建立通訊信道(一般是通過連接到指定房間服務器,并通過房間服務提供的接口)來同步玩家操作、游戲狀態(tài)等數(shù)據(jù)以支持同一房間內(nèi)玩家對戰(zhàn)和互動。

房間匹配

一般來說房間匹配服務架構如下圖所示,其中和房間匹配相關的通訊數(shù)據(jù)稱之為“控制流”,房間內(nèi)游戲?qū)?zhàn)通訊數(shù)據(jù)稱之為“數(shù)據(jù)流”,顯然兩種不同類型的流對帶寬、延時等指標容忍度不同,實際開發(fā)中應分別由不同服務器來承擔。

171957x1i7ep6et6216eue.png
不同游戲的匹配策略可能不太一致,例如常見的基于場次、基于等級、隨機匹配等。如果在房間創(chuàng)建時給房間打上一定數(shù)量的標簽,我們便可以借鑒搜索引擎的倒排索引的思路來實現(xiàn)房間匹配算法。例如待加入的房間有: R1: [T1,T2,T3],R2:[T3],R3:[T1,T3],Rn:[T1,T2],這些房間不僅會存在與全局匹配列表中,同時還會存在每個標簽索引中。

171955umyu003zry70p3lh.png
游戲類型、網(wǎng)絡條件是同步機制選擇時的首要考慮因素,對于同步頻次低,例如休閑回合制游戲,鑒于數(shù)據(jù)流量小同時對游戲邏輯安全性和以及防外掛能力有較高要求,一般大都采用狀態(tài)同步的方式。但對于操作要求比較高的,例如運動、賽車類游戲里涉及大量的物理邏輯運算,以及MOBA類對流暢性有更高要求的游戲,幀同步是更好的選擇。

via: 游戲扶持by騰訊游戲?qū)W院


銳亞教育

銳亞教育,游戲開發(fā)論壇|游戲制作人|游戲策劃|游戲開發(fā)|獨立游戲|游戲產(chǎn)業(yè)|游戲研發(fā)|游戲運營| unity|unity3d|unity3d官網(wǎng)|unity3d 教程|金融帝國3|8k8k8k|mcafee8.5i|游戲蠻牛|蠻牛 unity|蠻牛