elo rank 配對需求

開發限制

程式語言 rust
框架 actix-web
資料庫 mysql,禁止 stored procedure
OS Ubuntu 18.04 LTS

完成時間:6個月

包含restful API的設計

基本需求

  1. 能夠自由的N對N配對,1對1,2對2
  2. player 能夠在分數相差範圍M以內,自由的組隊
  3. 能設定配對到的隊友elo相差範圍
  4. 能設定配對到的對手平均elo相差範圍
  5. player 提供配對系統自己與各地server的連線品質 ping
  6. 能夠依據比較好的ping將 player 配對在一起
  7. player 遇過的對手在N場內絕對不會再被重複配對到
  8. 提供 player 不會再遇到黑名單 player 在同隊的配對功能
  9. 如果最近 player 做了不好的事,ex. 中離、外掛、惡意破壞遊戲體驗等等,可以設定條件來暫停該玩家的配對能力
  10. 提供類似dota2小黑屋的方式,能將滿足某些行為的玩家只能一起玩
  11. 能設定 5排 只能遇到 5排,多排的人優先撞多排的人
  12. 能設定沒多排的人遇到多排時的elo相差分至少要相差多少,ex. 1+1+1遇到3排時 1+1+1的平均分至少要大於3排50分,類似這樣的機制

架構:

  1. 基本的配對系統
  2. 黑名單機制
  3. 單排跟多排的差別
  4. NG跟RK的差別

一. 基本的配對機制

  1. ELO制(隱藏積分)
  2. ELO的加減分規則
    a. 連勝或連敗會有elo加成
  3. 配對的上下限(同隊最高與最低的差距)
  4. 優先配對(伺服器選擇)(同server/品行(ex:榮譽值)/同語系)
  5. 補位系統(角色/狀態繼承問題)
  6. 連勝跟連敗的補正(ELO加成-有上限)(對手越來越強)

二. 名譽機制

  1. 榮譽值(軟):影響配對(只影響對友)
    a.可以有一些行為可以影響,像是按讚跟檢舉會影響這個分數
    新手預設 1000 最高2000
    b.榮譽值高可以送一些遊戲內的內容

  2. 記點(硬):會有處罰

  3. 處罰機制
    a.列隊時間延長
    b.dota2的小黑屋(列隊優先度低&遊戲模式限制)

  4. 避免同隊機制(OW為例)
    a.系統上同樣的對手/隊友連續排到的機率會越來越低
    b.可以手動避免同隊(有限額/時限)
    c.不會排到黑名單的(隊友?對面OK嗎?)
    d.避免排到同隊-防雷隊友/黑名單-隊友對手都不會排到

  5. 檢舉
    a.檢舉次數的限制
    b.榮譽值會影響檢舉次數 比如新人一開始一天只能檢舉1次
    隨著榮譽值每提升100,每天可以多檢舉一次別人
    不限定一場只能檢舉1個人
    c.多排一起檢舉別人只會算一次

三. 單排跟多排的差別

  1. 多排的會優先排到多排的
  2. 多排的會對到平均ELO比較高的非多排對手(五排的要特別)

四. NG跟RK的差別

  1. NG的ELO配對範圍比RK更廣
  2. NG是用隱藏ELO
  3. RK是顯示出來的ELO
  4. RK沒有牌位戰(沒有BO)
  5. RK連續N天不打會掉分
  6. RK有牌位獎勵

實作邏輯

登入

  1. 檢查是否帳密正確
  2. 檢查當前是否被延長排隊時間,若有被延長,回傳幾秒後可以開排

使用者查詢

  1. 查詢自己當前被幾個人黑名單
  2. 查詢自己的榮譽值
  3. 查詢自己的elo ranking

使用者操作

  1. 將指定玩家列為同隊黑名單(天數上限30天)
  2. 將指定玩家列為敵隊黑名單(天數上限30天)

使用者組隊

  1. 邀請指定玩家為隊友
  2. 指定玩家接受/拒絕邀請
  3. 開始排隊
  4. 取消排隊
  5. 排到玩家後等待確認
  6. 玩家確認
tags: MOBA
Select a repo