iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
Software Development

徵坦補! 新手可! Open-Match 配對框架系列 第 27

Day27 Apex 配對機制分析

Apex 為一款筆者近期最喜歡的競技遊戲,想藉著分析的名義,趁機推廣一下這款大逃殺遊戲。由於此遊戲一開始就是以競技類別推出,他本身的牌位系統,很適合延續我們討論到的牌位與配對設計,且遊戲人數基數夠多,勢必必須考量到配對速度的系統問題,最後就讓我們來看看想達到這樣的設計,需要在配對系統上進行的設計有哪些。

我只是想放這張圖

https://i.imgur.com/g8YHqu9.png

基本公開配對資訊

簡單介紹一下遊戲機制,遊戲由玩家組成三人小隊,與另外 19組隊伍相殺,直到剩下最後一組小隊時,該小隊即為冠軍小隊。遊玩模式有分成,休閒玩家的一般模式,以及玩家間競技的階級模式。目前公開配對資訊如下:

  • 3人組成小隊
  • 20 小隊遊戲開始
  • 不重複角色
  • 等級
  • 階級
  • 級分
  • 伺服器地區
  • 黑名單

隱藏配對資訊

這邊是我個人猜測可能用到的資訊,這些資訊用來體現一個玩家遊戲能力,符合先前提到 Skill system 計算出的級分與相關資訊,可用協助我們找到實力更為相近的對手或隊友。

  • 歷史平均傷害
  • 歷史平均 K/D
  • 目前連勝場數

Create Ticket

顯而易見的,上述這些條件 將被我們於 create ticket 時,事先將玩家過往對戰紀錄 ,與當前遊戲選擇(角色、伺服器、指定隊友)統一放到我們的 ticket 裡。回過頭來看一下 Ticket 裡的 StringArgsDoubleArgs ,雖然在結構設計上,僅是提供我們帶入不同型態的參數,但如果加上資料的理解,可以發現 StringArgs 放的參數偏向硬性條件,像是遊戲模式與使用的伺服器地區,而 DoubleArgs 則是一個會被 MatchProfile 條件區間包含的參數,並且考量到 overlapping 的使用方式,我們在設計 MMF 處理 DoubleArgs 時,會給予每個 DoubleArgs[xxx] 不同的權重,以方便計算出唯一的 quality value 提供 evaulator 評估。

Example ticket

t := &pb.Ticket{
	SearchFields: &pb.SearchFields{
		StringArgs: map[string]string{
			"mode":        "3v3_normal_battle_royale", // or 3v3_rank_battle_royale
			"server":      "Taiwan_GCE2",
			"role":        "Valk",
			"user_name":   "wesley",
			"user_id":     "123456789",
			"team_member": `["23456789"]`,
			"black_list":  `["11009837"]`,
		},
		DoubleArgs: map[string]float64{
			"level":             154,
			"rank":              3, // 0~7 the higher better
			"team_member_count": 2,
			"score":             2880,
			"avg_dmg":           312,
			"win_streak":        1,
			"avg_kd":            0.87,
		},
	},
}

上一篇
Day26 玩家技巧、階級與配對關係
下一篇
Day28 Apex 模擬配對實作
系列文
徵坦補! 新手可! Open-Match 配對框架30

尚未有邦友留言

立即登入留言