標籤:

天梯匹配演算法優化

匹配規則相對比較簡單,匹配只基於競技場積分,有一個動態擴大的匹配區間。初始的簡單粗暴的核心匹配演算法是:

for playerA in players for playerB in players if playerA match playerB then 匹配成功; end endend

但是這個演算法實在是效率不好,是O(n^2)的複雜度。

後來又實現一個基於hash的匹配演算法,將分數段每10分分為一段,作為hash表上一個key。玩家根據自己當前的匹配狀態把自己插入到一個或多個key下。同個key下的玩家可直接匹配。

使用初始演算法,1萬人(50萬同時在線以上)同時匹配耗時0.5s(單核)

優化後的演算法,100萬(5000萬同時在線)同時匹配耗時0.3s(單核)

推薦閱讀:

斷線重連問題綜述
skynet初探
幀同步和狀態同步
通服整體架構設計概述

TAG:遊戲伺服器 |