V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
xymeng16
V2EX  ›  游戏开发

有没有懂游戏匹配实现的(以炉石传说为例),求指个路

  •  2
     
  •   xymeng16 · 2 天前 · 1684 次点击

    先说下我的思路,通过 elo 、段位等,判断一个用户所在的匹配池,随匹配时长逐步放宽匹配条件(加入更多匹配池)。但是在匹配确认的时候会有很多重复情况需要唯一性判断。

    网上搜索了一下,没有关于这方便的资料,想问问各位大佬,有什么书籍或网站推荐嘛~

    10 条回复    2025-04-02 11:16:52 +08:00
    flynaj
        1
    flynaj  
       2 天前 via Android
    星际争霸 2 可以看到 mmr,就是就是你的分数,打完一局就会根据输赢变动 mmr,确实是匹配分数相近的,然后扩大,但是不会超过分数差 300
    araraloren
        2
    araraloren  
       2 天前
    垃圾匹配机制,“旗鼓相当的对手”
    LuckyPocketWatch
        3
    LuckyPocketWatch  
       2 天前
    1 。游戏的分数,匹配类似水平的人
    2 。道德分,通过记录游戏内发言等,匹配近似的人
    3 。偏好分,游戏有种族,地图等各种元素,比如我不喜欢打千甲德,遇到就秒退,那就别给我匹配这个卡组
    4 。网络等其他因素,比如地区过大,甚至歪果仁账号会导致卡顿加剧

    对每个用户做个标记,当匹配失常过长时,放宽某个条件,比如游戏分数区间扩大,然后观察该用户的反馈,如果条件放宽后导致用户秒退,骂人等情况增多,则标记该用户为“不适合扩大游戏分数”,并尝试扩大道德分区间,以此类推

    最终每个用户都有自己的标记
    zhangk23
        4
    zhangk23  
       2 天前
    感觉炉石也是 mmr

    之前我用脚本打,我两个号的胜率出奇的低,只要同时开始排每隔五六把总能撞上

    而且哪怕换我月中本尊亲自打上传说后,两千多名排到的依然是白金钻石段的,遇到的传说也基本都是脚本
    Donaldo
        5
    Donaldo  
       1 天前
    prosgtsr
        6
    prosgtsr  
       1 天前
    没有游戏匹配实现,我这只有 pk 实现
    总的原则是,只要保证最后把这一组匹配到的人从匹配池子中拿出来的时候是原子性的就行了
    比如可以都加入匹配池,然后起定时任务根据分值捞一批相近的,然后判断是否可以匹配,如果不可以就放弃等待下一轮,如果可以,就尝试从匹配池中原子性的将这几个人取出,如果取出成功就进行游戏开始的逻辑
    LanhuaMa
        7
    LanhuaMa  
       1 天前
    @Donaldo #5 😰
    zackzergzeng
        8
    zackzergzeng  
       16 小时 59 分钟前
    @LuckyPocketWatch 炉石有偏好分这个东西吗,我感觉我打一个职业或者卡组胜率越低,他就越给我匹配,要么连输好几次把胜率拉到均线,要么克服心魔上段
    sentinelK
        9
    sentinelK  
       16 小时 0 分钟前
    不光如此,还要考虑用户近 X 局游戏的胜率以及游戏的运营策略。作为反向权重,从而提升游戏日活。

    比如默认情况下,匹配的是隐藏分-300~+300 范围的对手。
    如果本次游戏 session (本次登录)游玩时的胜率高于 50%,那就要匹配同样胜率高于 50%的对手。

    如果对方本次 session 的胜率过高,比如高于 80%(一般来讲,实践中会计算一个权重,不会是一个死的阈值,这个权重算法还会有游戏运营、策划的参与),除了匹配同样高胜率的选手外,还要增加隐藏分的匹配范围,比如变成 0~+500 。

    核心目的就一个:提升用户日活。用户有日活,才有可能消费。
    sentinelK
        10
    sentinelK  
       15 小时 59 分钟前
    然后像是炉石,这种有“预组”的游戏。用户本身的“预组”也是匹配权重算法的一部分。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1048 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:16 · PVG 03:16 · LAX 12:16 · JFK 15:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.