查看: 3117|回复: 14

[转载] Football Manager只是一套简单的玩具

[复制链接]
发表于 2018-11-8 11:17 | 显示全部楼层 |阅读模式
看到一篇对FM的游戏原理做的数学分析,比较涨姿势,分享给FM粉们~
原文出处:公众号:卡柏利,作者:龙雨




思维模式:
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得分方程记为<AC>,求解出Max<AC>即可确定行动方式。



比赛中具体事件的判定模式:
比赛中每一个事件的判定依赖于:
playergrade+positionAbility+M(L)+<AC>的结果,记为event score,运算简记为score。比赛的总体结果依赖于所有area内的score总和。每一次cross、shoot、tackle等等,都是双方player的<ac>执行后,进行一次运算,得分高的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仿真。因此二维球场可以分为若干个Mathematicalpoint,实践中为了简化计算,进一步将球场分为若干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、应该具体做什么:PlayerInsturction-》Action
4、我们最大能力能做什么Attribute
5、我们具体做收益最大的某事 Action
6、做到了or没做到(结果取决于基于基本参数的Roll对抗)》  Result得分

-》下一组判断循环。

经过无限次的思考-行动得分,总能保持分值较高的一方将大概率取胜。


AI行为的运作分层:
1、Team style层,确定个体指令action参数范围,基于Formation、Fluid、Team Instruction确定M(L)和<AC>的基础参数
2、Role层:基于Position和player instruction,定义个体行为模式。表现为Support和Attack模式的Winger,行动模式完全不同,并且不受Individual Instruction的支配。
3、Individual个体指令:低于上述2项,但可以影响部分Role层的行为。
影响style和role层思考模式的几个主要公共参数:
FormationFluid:决定行为指令对Position定域的遵从度,fluid越高,M(L)取值区间越广,例如特定情况下,GK计算获知其M(L)在中圈,则可move到中圈附近。反之定域严格时,DC球员永远蹲坑在后场。
Tempo:决定<AC>的风险遵从度,高tempo下,<AC>可以简化忽略部分防守方的计算因素,例如对方marking space和tackle属性,因此落后情况下,高Tempo使得action可以更多地取值为突破、远射、传身后球等等。
Freerole:M(L)取值不再遵从position定域限制,美其名曰流动化的理想足球。
BacklineDeepth:设置formation的起点Y轴平均坐标。
Width:设置Formation的X轴间距。例如,width设置为最小,则两个Sideback在计算防守选位时会强制保持较小间距。
FormationFamiliar:熟练度对M(L)的取值范围有影响,熟练度较高时,取值区间扩大。
个体指令的作用方式:
1、作用优先级低于Team和Role层,表现为指令取值受到Role(A/S/D)的限制。
2、Fluid和Tempo即使设置高于Team层,作用效果依然低于Team指令。
3、Dribble、Cross、Pass、Shoot等设定在这一层面作用较大,与球员habbit的配合度也较高。

针对性防守指令的作用:
1、弱势脚:
2、盯人模式:决定MarkingSpace取值作用距离。Tight Marking需要在防守态势下强制Move到很近的盯人距离。人盯人模式下,盯人距离的计算延续到本方攻击态势下。
3、凶狠度:大幅提升tackle的<AC>值,使得防守方能够针对性地频繁发动Tackle行为。
4、逼抢模式:决定tackle的作用距离,close逼抢设定下,tackle作用距离较远,反之就是目送对方带球。
5、针对对方球员、位置的统一全局公式,自动作用于我方全体。




其他比赛的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:强力替补影响模拟比赛结果,虽然强力替补或许没有上场,但是因为战力太高,赛后分派比赛时间和数据时,会“被上场”。

浅谈CA和PA:
CA是一个可视化数值,另有一个RCA(实时战力值)。但这两个数值都不是比赛模拟进程中的反映真实战力的有效数值,仅仅是给玩家参考,以及快速Stimulate比赛计算使用的数值。简而言之,CA对于跳跳党玩家略微有用,指挥党玩家无用。
与此共生的PA值,是养成参数,已经被研究得很透,不再讨论。



回到足球游戏话题
-----------------------------
FM中的理想足球:
从位置最大化理论出发,理想足球需要场上每一位球员拥有超高智能,每时每刻都处在正确位置上,同时具备最高的移动速度,确保能够接近下一秒的最佳位置。并因此完全消灭愚蠢的Formation。
从ActionRoll机制出发,为了确保每一次Action的最佳概率结果,每一位球员需要拥有最大战力,即全20球员,或者Position定域中相关属性最大化,即“分配好”。

球员所拥有的球商,最好超越Position定域设定,能够跑动所有的位置;球员的能力值最好全能化,能够支撑所有的Action;教练的Style能够灵活多变应对各种突发情况;“模糊位置,全天候职能,兵无常势,水无常形”。听上去有点扯淡,但这就是宇宙队的门槛。



FM里面的务实足球:
梦不到乌托邦,就只能小米加步枪。储备每个位置的最佳分配球员,提升实际战力。适用于跳跳党和指挥党。
对于跳跳党,聘用合乎球队能力配置的Coach(Favor Formation/Style),能够提供模拟过程战力加成。
对于指挥党,分为4个层面的策略
1、Position定域层面:针对对方Formation调整阵型,在每个Area内堆积最大化战力,在该Area内得到更多对抗分数。缩小己方弱势Area的战力差距,增强在对方弱势Area的战力差距。这是最简单的策略,同级别的对抗,在特定Area堆积战力所获优势,远远大于Style和IndividualInstruction针对性设置所带来的优势。
2、Style层:针对对方Coach Style,选择对应的攻防心态、Backline、Width、fluid、pass数值进行克制
3、Action层:针对对方player的数值属性和习惯等针对性防守克制,同时依据本方能力分配和球员习惯进行设置做出roll的最优解。
4、Tips层:杀伤战术、利用盯人判定、角球判定缺陷等获益。





FM的外衣装饰:
假如仅仅是计算Location和Action取值,那么真的不如玩斯诺克台球。为了披上足球游戏的外衣,FM中的洲际、国家、联赛、俱乐部、球员数值、球场、服装、历史、规则等等都是算法具象化的表现。获取并加工一堆图片、数字、文字,也是力气活。披上外衣,算法就成了足球游戏。如果披上斯诺克的外衣,那么FM就成了台球游戏。
制作外衣需要付出高额的人工劳动,这部分沉淀的价值一点不比算法价值低。




未来期望:
现有的外壳很有趣,算法已经无趣。如果未来能产生更强大的AI(存储roll后与玩家对抗的结果,建立自我学习索引),那么会非常有趣。
从技术角度而言,如果给予FM的AI深度学习能力,那么单机版FM将无法实现。因为存储空间和运算能力都远超个人PC的配置。所以假如有Online版本,那么非常值得期待。

以下为瞎扯淡:
1、提供Rookie到Expert教练能力的AI,根据玩家能力给予能够分级别的AI对抗体验,你可以在游戏中虐杀宫磊、朱广沪,也可以体验被穆里尼奥、瓜迪奥拉支配的恐怖。
2、提供更佳的PVP体验。Online的AI能够为玩家提供更好的助教辅助,根据球队预算(充值额度),可以聘请更好的AI助教,让更多的RMB玩家参与到比赛指挥中来。而技术型玩家,也可以依靠自己的强大智力,逆袭氪金玩家。
3、足球可以Anytime,想象一下,用VR眼镜观看比赛,对着手表喊话指挥比赛,还能用耳机与PVP玩家对话,多么带感!
发表于 2018-11-8 12:10 | 显示全部楼层
其实我觉得FM是最适合那种服务类游戏的了,每年缴纳一比100左右的服务费,就能一只玩儿,AI、战术等等在云端持续的更新
发表于 2018-11-10 13:14 | 显示全部楼层
以前滑块的时候,有人用网格来分析AI的对抗。后来加入角色把这种东西隐藏淡化了。故意忽悠误导玩家。
发表于 2018-11-10 15:08 | 显示全部楼层
BUG战术就是对有迹可循的规律总结~~~{:16_701:}
发表于 2018-11-10 20:44 | 显示全部楼层
我们都热衷于做人贩子
发表于 2018-11-10 22:02 | 显示全部楼层
本帖最后由 lhrng 于 2018-11-10 22:03 编辑

我喜欢买高职业高决心的小牛拿来练满。整个过程简单来说就是练练姆巴配。看着196满能力的姆巴配可以开心一天。还有那个184的米林。那个属性。。舒服
发表于 2018-11-10 22:27 | 显示全部楼层
周杭ch_007 发表于 2018-11-8 12:10
其实我觉得FM是最适合那种服务类游戏的了,每年缴纳一比100左右的服务费,就能一只玩儿,AI、战术等等在云 ...

jin进步还是很多的
感觉比很多通讯产品的进步大
发表于 2018-11-10 22:46 | 显示全部楼层
你这么说马上就有人跳出来让你去看看他的战术,明明是足球,你却当成游戏玩。
给你个战术贴去学习下,看看这游戏该怎么玩,要观察球员的表现,关注球员的情绪,多看足球比赛,学习战术知识
hhhhhhhh
发表于 2018-11-12 14:30 | 显示全部楼层
周杭ch_007 发表于 2018-11-8 12:10
其实我觉得FM是最适合那种服务类游戏的了,每年缴纳一比100左右的服务费,就能一只玩儿,AI、战术等等在云 ...

SAAS模式的游戏
发表于 2018-11-13 14:18 | 显示全部楼层
看不懂,我只是来买人卖人的
发表于 2018-11-13 14:36 来自手机 | 显示全部楼层
这不是之前在爆棚发过吗?
发表于 2018-11-13 14:37 | 显示全部楼层
 楼主| 发表于 2018-11-13 16:19 | 显示全部楼层
xlwt123 发表于 2018-11-13 14:36
这不是之前在爆棚发过吗?

哈哈,抱歉之前没看到过~
发表于 2018-11-13 17:55 | 显示全部楼层
以我的执教能力,恐怕是朱广沪也会轻轻轻轻松松松松地支配并虐杀我……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|爆棚小组 PlayGM论坛

GMT+8, 2024-5-6 18:36 , Processed in 0.038525 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表