您當前的位置:首頁 > 旅遊

淺談Football Manager的演算法邏輯

作者:由 清源大和尚 發表于 旅遊時間:2017-05-31

Football Manager只是一套簡單的玩具

思維模式:

Football可以弱化為基於座標的Max/Min數學遊戲。舉例一道數學題,在一張球桌上,有A/B兩個小球,根據小球座標計算兩球間距。設間距為S,計算公式為step,則S=step(Delta(A-B)),根據AB的座標值,S為動態取值,可以取得Max/Min(S)。推導為Max/Min(Location),簡記為M(L),當前位置記為Current(Location)=C(L)。

投射到足球場上,這就是球員所做的思考。“我應該在何時,出現在何地?”。Football的思維方式因此被模擬出來。這是整個系統的Intelligence。每個球員都應該瞭解當前形勢下我的Location與最佳Location差值,並移動到最佳位置去。這就是一個尋求最佳LocationValue的有限次方程。

涉及到具體事件對抗,那麼就採取roll機制以兼顧隨機性和合理性。

總結:FM就是一個透過計算出最佳空間位置,然後以最優狀態數值參與在最佳位置上每一次roll對抗,目標為獲取最大roll得分的遊戲。

具體行為模式

player球員。他能做什麼?Move、tackle、driblle、shoot、pass等等。這些行動都是Action。根據M(L)-C(L)結果,執行move action,依據其他引數(Ball Location、Situation、Marking Space、Opposition Player、Attribute等等)執行對應的action。執行action的優先順序由Position method、Player instruction和Habit決定。其中shoot、pass、tackle等的分值不同,進而確定執行何種action可以獲得最佳的分數。Action得分方程記為,求解出Max即可確定行動方式。

比賽中具體事件的判定模式:

比賽中每一個事件的判定依賴於:

playergrade+positionAbility+M(L)+的結果,記為event score,運算簡記為score。比賽的總體結果依賴於所有area內的score總和。每一次cross、shoot、tackle等等,都是雙方player的執行後,進行一次運算,得分高的1方獲得得到match point。累計到一定程度,match point的比拼可以決出勝負。

事件分為非對抗和對抗的兩種

非對抗的如上算分累計,而對抗的則要進行隨機roll,roll的機率未經過驗證。推測為2:6:2和1:3:6兩種成功率模式,我們假定為1:3:6的成功率分配,舉例:執行FreeKick攻擊球門時,簡單的根據FK Kicker的相關屬性值和GK的能力值進行roll,能力差採取比較法測算,根據比值將獲得10%、30%、60%三種得分率,比值較大時,10次FK可以接近6次得分。而Kicker能力值無限小於門將時,得分率是不是0呢?我認為不是,所有的對抗行為都被賦予了一個保底的roll機率,或許是1%,或許是0。5%。也就是roll的機率總和>1。

比賽通用的基礎設定

座標計算:

對於Location系統做了寬泛處理,由簡單的小桌擴充套件為三維座標系(width,length,height)。即可精確定位球場的作用力位置。亦可以實現對ball軌跡的模擬。此外,由於球員不會飛,所以拋開高度,僅僅使用二維即可確保Player Position模擬。因此二維球場可以分為若干個Mathematical point,實踐中為了簡化計算,進一步將球場分為若干block,每個block包含9 or 16 points。將計算單元從point所建造block,足以完成object行為的模擬和3D展示。

Position活動軌跡定域化為area:

所有球員如果基於寬泛的M(L)思考方式,由於當前的模擬計算能力和演算法缺陷,加之每名球員個體能力值非max,無法實現理想的位置無固定化模式。必然會會形成亂跑流,形成嚴重的扎堆現象等等。為了簡化計算負荷,引入Player Position定義,固化球員的初始位置以及優先活動範圍。即GK、ST、MC、WB等等,Player Object的初始重置座標賦值birth point即為該位置,player在不需要計算M(L)的情況下,立刻向birth point移動。而player優先活動範圍實際為Move Action的優先取值座標區間。此優先取值只是概念優先,並非計算優先,實際計算中,對於不同Position設定不同的M(L)公式和初始行為引數,即可完成Position計算的差異化。以此實現對於Position的定域計算。

有了Position定域,就誕生了Formation。

整個球隊Ai模擬思考-行動的流程概括如下:

1、為了獲勝需要做什麼:Situation-》Team instruction

2、每一個個體的實時情況是什麼:LocationValue、Attribute、Morale、Stamina

3、應該具體做什麼:Player Insturction-》Action

4、我們最大能力能做什麼 Attribute

5、我們具體做收益最大的某事 Action

6、做到了or沒做到(結果取決於基於基本引數的Roll對抗)》 Result得分

-》下一組判斷迴圈。

經過無限次的思考-行動得分,總能保持分值較高的一方將大機率取勝。

AI行為的運作分層:

1、Team style層,確定個體指令action引數範圍,基於Formation、Fluid、Team Instruction確定M(L)和的基礎引數

2、Role層:基於Position和player instruction,定義個體行為模式。表現為Support和Attack模式的Winger,行動模式完全不同,並且不受Individual Instruction的支配。

3、Individual個體指令:低於上述2項,但可以影響部分Role層的行為。

影響style和role層思考模式的幾個主要公共引數:

l Formation Fluid:決定行為指令對Position定域的遵從度,fluid越高,M(L)取值區間越廣,例如特定情況下,GK計算獲知其M(L)在中圈,則可move到中圈附近。反之定域嚴格時,DC球員永遠蹲坑在後場。

l Tempo:決定的風險遵從度,高tempo下,可以簡化忽略部分防守方的計算因素,例如對方marking space和tackle屬性,因此落後情況下,高Tempo使得action可以更多地取值為突破、遠射、傳身後球等等。

l Freerole:M(L)取值不再遵從position定域限制,美其名曰流動化的理想足球。

l Backline Deepth:設定formation的起點Y軸平均座標。

l Width:設定Formation的X軸間距。例如,width設定為最小,則兩個Sideback在計算防守選位時會強制保持較小間距。

l Formation Familiar:熟練度對M(L)的取值範圍有影響,熟練度較高時,取值區間擴大。

其他比賽的Stimulate機制

FM中非玩家入場指揮的比賽是如何進行的呢?經過一定數量的模擬測試後,竊以為是如下模式:

[playerValue * Formation * CoachStyle] * roll

1、計算可上場球員(例如英倫規則下11首發+7替補)的value

2、將全部球員value按照位置套入Formation,取得攻防兩端的sum(Value)(A/D),例如某球隊使用541陣型,取值得到Attack數值20,Defense數值60

3、sum(Value)*coachstyle得到攻防數值,例如上述541配上一個防反教練,Attack*90%,Defense*150%,得到當前球隊Att18,Def90。

4、與對手球隊的AD值進行roll,並得出某個比分,以及相應的總射門、傳球、搶斷、犯規、黃牌等數值。

5、模擬比賽的roll機率,依然設定了保底機率,所以才可以SL度假實現南北足總盃逆襲英超球隊的情況。

註釋1:Stimulate分為View和Stimulate兩種。View的是假模擬,不對參賽球員分配比賽行為數值,也就是球員模擬比賽後,觸球、傳球等資料為零。Stimule真模擬情況下,比賽隨機roll到一個總的行為數值,根據每位球員的能力值、習慣和位置進行分配。例如roll到射門數為20,則給CR分派9次,Benzema5次,Ramos2次……

註釋2:模擬賽事中,CoachAbility不起作用,這就是所謂“拴狗冠”?只要CoachStyle、Favor Fomation能夠給予球隊球員戰力充分加成就好。至少也別是負面加成。

註釋3:強力替補影響模擬比賽結果,雖然強力替補或許沒有上場,但是因為戰力太高,賽後分派比賽時間和資料時,會“被上場”。

回到足球遊戲話題

——————————————-

FM中的理想足球:

從位置最大化理論出發,理想足球需要場上每一位球員擁有超高智慧,每時每刻都處在正確位置上,同時具備最高的移動速度,確保能夠接近下一秒的最佳位置。並因此完全消滅愚蠢的Formation。

從ActionRoll機制出發,為了確保每一次Action的最佳機率結果,每一位球員需要擁有最大戰力,即全20球員,或者Position定域中相關屬性最大化,即“分配好”。

球員所擁有的球商,最好超越Position定域設定,能夠跑動所有的位置;球員的能力值最好全能化,能夠支撐所有的Action;教練的Style能夠靈活多變應對各種突發情況;“模糊位置,全天候職能,兵無常勢,水無常形”。聽上去有點扯淡,但這就是宇宙隊的門檻。

未來期望:

現有的外殼很有趣,演算法已經無趣。如果未來能產生更強大的AI(儲存roll後與玩家對抗的結果,建立自我學習索引),那麼會非常有趣。

從技術角度而言,如果給予FM的AI深度學習能力,那麼單機版FM將無法實現。因為儲存空間和運算能力都遠超個人PC的配置。所以假如有Online版本,那麼非常值得期待。

以下為瞎扯淡:

1、提供Rookie到Expert教練能力的AI,根據玩家能力給予能夠分級別的AI對抗體驗,你可以在遊戲中虐殺宮磊、朱廣滬,也可以體驗被穆里尼奧、瓜迪奧拉支配的恐怖。

2、提供更佳的PVP體驗。Online的AI能夠為玩家提供更好的助教輔助,根據球隊預算(充值額度),可以聘請更好的AI助教,讓更多的RMB玩家參與到比賽指揮中來。而技術型玩家,也可以依靠自己的強大智力,逆襲氪金玩家。

3、足球可以Anytime,想象一下,用VR眼鏡觀看比賽,對著手錶喊話指揮比賽,還能用耳機與PVP玩家對話,多麼帶感!

作者:清源大和尚 歡迎加入FM引擎討論群:43320736

嚴禁複製,嚴禁轉載

標簽: 球員  roll  position  比賽  定域