作者tadpole1 (蝌蚪)
看板tetris
标题Re: [资讯] 复赛赛後统计数据表
时间Sun Mar 10 00:46:36 2013
※ 引述《doom8199 (~口卡口卡 修~)》之铭言:
: ※ 引述《tadpole1 (蝌蚪)》之铭言:
: 若想要统计一些数据,建议写个程式来做事後统计
: 不然用看的太累人了 = =ll, 也可以降低人为主观因素参杂
: 可以有两种做法:
: <1> 请 top 的原作者看能不能提供一个 switch
: 将游戏过程的数据 dump 出来 (就像 FB上的 battle 那样)
: 再自己写个 parser 拿出需要的 information 做後续分析
: 这东西是一定存在的,只是要看作者本人愿不愿意提供XD
: <2> 写个程式 (如 matlab), 直接从录下来的影片档建 database
: 例如以游戏中暂放 tetromino 的 queue 为标准
: 只要 frame 与 frmae 之间的 queue 有变动
: 就撷取 +- 0.x s 时的 frame (做为 current end 和 next start 的 pattern)
: 有了这些 pattern,利用背景颜色判断每个 frame 中的 20*10 window size
: 已被占去那些方块,再取 per-frame difference 可以算出
: "每个 queue 变动时,玩家获得的 grade"。
: 一旦有了上述的 database, 就可以自己从中组合出自己想要的统计量。
: 当然走这条路的建议是,录制游戏画面的程式、以及录出来的 size ratio
: 要 unify, 以简化程式的 programming。
可以的话也挺希望能自动化的QQ
不过大概机会不大就是了 至少wojtek他应该不会想做
: =======
: : http://ppt.cc/XtgM
: : 1.Unforced Errors (非受迫性失误)
: : 只有单纯记"手滑"的部份
: : 隐形失误大部份看不太到 记不了(EX:误按hold、方愧堆叠不佳连带妥协也不计)
: 个人觉得这一项可以先拿掉,主要是因为定义的不够 specific
: 而且这东西也很难去订出一个客观的标准
: 例如玩家A放了一个直立 S而造成空洞,而这个空洞是可以做出 T转凹槽
: 观看者其实不能确定在这当下 玩家A是否真的手滑,只是後来发现可以做
: 出T槽;抑或是真的故意铺下T槽之路。这个行为是 depend on 玩家的思考,
: 光靠画面是很难 render 出玩家真正的思考逻辑
基本上我看的时候标准很松 只要後面有接到T spin的我几乎全部不算
但这当然也是有点结果论啦
另一方面是从手上的方块顺序事实上也能大至上看的出是不受是失误
毕竟连方块堆不好 妥协的方块都没算进去了 几乎不太会看错
而且这个统计量其实蛮重要的 事实上失误对比赛的单局的往往是蛮大的
高LPM高APM但也高失误的不见得能稳赢比他实力低一些些的对手
不过也因为标准很松 失去的information一定也不少
到底这个量的用处大不大 可能等这次比赛完再来看看
: : 2.KO Points (KO点=胜点)
: : 代表攻击有致死的机会
: : 但有时候用看的有点辛苦 大概会有误差
: 同上。若假设玩家 A 叠了 3w 14 lines, 他/她可能有机会将对方一次打挂;
: 但同一个画面下让其他玩家 play, 你是没办法 guarantee 该玩家有 "机会"
: 可以将对手顶上天XD 。这个统计量得牵涉到双方的手速、攻击力、以及
: 解洞能力
我这边的定义是 红线只要不抵消不消行就会死的状况为KO point
所以这毫无疑问的是个"机会"
当然确实会有3.4W 叠高时看起来明显是刻意给他打的这种情况
但只要combo断或失误就死 这样的话依然是一次有效的攻击机会
可能会应该称为"机会"感到不太对的感觉 因为我也有这种感觉= =
所以後来才在加个高点进来
以区分一个是"有被攻击的危险"和"已经被攻击可以会死的危险"
: : 3.KO (KO数=胜场数)
: : 事实上也等於胜场
: : 4.High Point (高点=危机次数)
: : 高处定义:中央4排高度大於等於16行
: 个人觉得 "危机" 用 "指数" 比用 "次数" 来诠释会比较有意义
: 主因是 "一次的危机" 可大可小。要 induce 大小概念,比较直观
: 的想法是 "玩家处在中央高度1x行越久,危机越大"。
: 因此 "危机指数" 可以将时间纳入考虑
: 例如 玩家A 花了 48s 玩了一场 game
: 其中有 3s 高度在 16 lines、 4s 高度在 17 lines
: 那最简单可以用加权平均 (3*X + 4*Y)/48, (X、Y 为 cost)
: 来代表 "危机指数"
: 甚至也能改成:
: 1 19
: ── Σ c(i)*t(i) , 其中 c(i) 为中央四排高度 i 时的 cost
: T i = 0 t(i) 为中央四排高度 i 时的时间
: 19
: T = Σ t(i) 代表一场游戏的时间
: i = 0
: 至於名称可以叫 hazard, crisis 之类的
可以的话这个确实比较好 只是也是有记录技术上的问题...
: : 5.Miss Per Game (平均每场(非受迫性)失误次数)
: : =非受迫性失误次数/场数
: : 6.KO Rate (KO成功率)
: : =KO/(KO point)
: : 表示致命一击成功率
: : 7.High Point Attack Rate (补刀率)
: : =(KO point)/(High point)
: : 对方在高点时进行(致死)攻击的比率
: : 8.High Point KO Rate
: : =KO/(High point)
: : 对方在高点时KO的比率
: : 9.Lpm Apm Time
: : total那行是指这几场下来的(加权)平均Apm和Lpm,Time在total那行则是以分为单位
: : APMfinal=sum(APMi*TIMEi)/sum(TIMEi) i=1~n
: : LPM亦同
: : 目前只记了一场和一些部份
: : 以上的词可以的话帮我想帅一点的
: ======
: battle 跟最初的 tetris game 最大差异主要有几个:
: <1> combo <2> SRS <3> B2B <4> hard drop
: 所以目前我想到的统计量大概跟上述有关
: 例如: (a) 单场平均发动一次 combo 的个数
: (combo times per snapshot)
: (b) 单场平均发动一次 combo/b2b 的攻击力
: (combo/b2b power per snapshot)
: (c) 单场平均一分钟发动 "几次" combo/b2b
: (combo/b2b times per min)
: (d) 单场平均一分钟 soft drop 的秒数
: (soft drop utilization per min)
: 其实 top 的能力图也有将上述的资讯展现出来 (可惜是总平均)
: 若能每场都分析这些数据,再搭配 lpm 和 apm,
: 我是觉得可以约略定位出该玩家的攻击模式与能力水平 for every game period
其实只要能自动化纪录的话 对怎样的统计量都可以自己去组合
事实上现在记录上就包括你上面说的 连失误都很难计 误差也不知道会不会很大
也就是说 现在面临的问题比起设计、定义 实际收集资料的问题比较大
最理想的状况是直接做出一款新的tetris游戏 而且有强大的官方伺服器之类的
但这个感觉就是去睡觉比较快...
而且对很多玩家来说 数据可能也只是看看就好
反正一直练快练强把人打爆就够了...科科
所以要有这些东西出来好像真的有点需要奇蹟(?)
不过或许像你最前面所说写个程式来跑其实不会很难(?)
只是我不会就以为做不到这样 大大了低估众人的力量XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.40.104.149
1F:推 doom8199 :失误这个数据的确是很重要,但要量化它却很困难 03/10 01:12
2F:→ doom8199 :主因是"失误" 是对玩家本身而言,而非旁观者 03/10 01:12
3F:→ doom8199 :我举格斗的例子: 不少格斗游戏会有 "立回" 这个概念 03/10 01:13
4F:推 Rentch :其实像combo/ren可以算单场最大值 其他像tetris 03/10 01:14
5F:→ doom8199 :高手在对战的时候,都会很注重立回面,稍没做好 03/10 01:14
6F:推 Rentch :Tspin B2B好像用每分钟好一点 03/10 01:14
7F:推 liu2007 :就拿蝌蚪你推荐我的那场high light来说,那个L是因为 03/10 01:14
8F:→ tadpole1 :我了解你的意思 03/10 01:15
9F:→ doom8199 :可能就是被对方多择或凹招。因此立回没做好 03/10 01:15
10F:→ doom8199 :对高手而言可能都算是个 "失误" 03/10 01:15
11F:→ liu2007 :我急於DS,倒没有真的有心作T spin,只是後来发现可 03/10 01:15
12F:→ liu2007 :以 03/10 01:15
13F:→ doom8199 :但对普通人而言,可能连立回是啥都不清楚 03/10 01:15
14F:→ tadpole1 :不过该怎麽说呢 或许如果我把"失误"改成"手滑"会更 03/10 01:16
15F:→ tadpole1 :贴切点 因为你说的那种基本上就已经是depends on个人 03/10 01:17
16F:→ tadpole1 :的能力了 事实上就是实力的差距 如果把每种这样的失 03/10 01:17
17F:推 Rentch :稍微查了一下立回 在tetris里的抉择错误如果是战略的 03/10 01:17
18F:→ tadpole1 :误都拿来讨论的话反而会变的有点奇怪 对战比的是失误 03/10 01:18
19F:推 Rentch :一般不视为失误而是个人状况 真的摆出来比较算 03/10 01:18
20F:→ tadpole1 :并不是比其他skill之类的 毕竟只要做的不理想就是失 03/10 01:19
21F:推 Rentch :就是蝌蚪说的! 03/10 01:19
22F:→ tadpole1 :误 当然我也了解这就是你想说的 失误是看"自己" 03/10 01:19
23F:→ tadpole1 :举运动当例子来看 棒球守备是能力差别 不会说因为这 03/10 01:20
24F:→ tadpole1 :球该扑出去接但没扑就记失误(即使扑了真的接的到) 因 03/10 01:21
25F:→ tadpole1 :这已经是能力的差距了 03/10 01:21
26F:→ tadpole1 :所以才会有人说"隐形失误" 这就是没反应在数据上的部 03/10 01:22
27F:→ tadpole1 :分 一样的道理 一定会有摆下去觉得"X 我摆这干麻"的 03/10 01:23
28F:→ tadpole1 :状况 但事实上这是自己练习不够习惯不好 而"手滑"的 03/10 01:24
29F:→ tadpole1 :话则是 "X 放错了 死定了"这种感觉 而我也认为这种对 03/10 01:25
30F:→ tadpole1 :单局的影响更大更明显 反而是如果把这两种失误计一起 03/10 01:26
31F:→ tadpole1 :会降低"手滑"的information EX:摆不好10次 手滑1次 03/10 01:26
32F:→ tadpole1 :而对手摆不好20次 手滑0次 但赢了 这样反而把手滑的 03/10 01:27
33F:→ tadpole1 :重要性给变小了 这样的状况一定也不少 所以当然能分 03/10 01:27
34F:→ tadpole1 :别出来还是会有好处的 03/10 01:29
35F:推 doom8199 :我懂你的意思。但我想表达的是,你无法 100%确定 03/10 01:30
36F:→ doom8199 :该玩家是不是真的"手滑"。 能将 失误 和 skill 分离 03/10 01:30
37F:→ tadpole1 :至於"手滑"的影响程度如何 可能还是等比赛整个结束 03/10 01:30
38F:→ doom8199 :当然会比较好,但对第三者而言,你还是得定义一套 03/10 01:31
39F:→ tadpole1 :资料收集完 去用些统计方法来看看到底他的影响大不大 03/10 01:31
40F:→ doom8199 :何谓 "手滑" 的标准。 这个定义很难适用於全部人 03/10 01:32
41F:→ tadpole1 :说到100%确定的话 大多还是像我文中所说啦 不过真的 03/10 01:32
42F:→ tadpole1 :偶尔会有不好判断的 目前我顷向於"误差不会太大" 03/10 01:36
43F:→ tadpole1 :毕竟不好判断的占蛮少的 另一方面也会有方块看起来 03/10 01:37
44F:→ tadpole1 :正常无比 而且也不是我刚才说的那种"脑袋放错" 而是 03/10 01:38
45F:→ tadpole1 :确实手滑但看不出来的(我想你想讲的应该是这个) 03/10 01:38
46F:→ tadpole1 :这些多算和少算就像在统计里的error term一样 我认为 03/10 01:41
47F:→ tadpole1 :(想想这比喻不太对= =)这个误差还不至於数据有太大的 03/10 01:42
48F:推 doom8199 :不,我的意思是玩家有可能真的故意这样放 03/10 01:43
49F:→ tadpole1 :影响 有需要的话 这个应该是可以实验的 但也有点麻烦 03/10 01:43
50F:→ tadpole1 :就是了 科科 03/10 01:43
51F:→ doom8199 :但旁观者却会认为是手滑 03/10 01:43
52F:→ tadpole1 :这个会有但真的不多 而且如果再用我刚才前面说的结果 03/10 01:44
53F:→ tadpole1 :论来判断的话会再减少很多 只剩有一些是为了妥协而刻 03/10 01:45
54F:→ tadpole1 :而刻意放的才是真的麻烦 03/10 01:45
55F:推 doom8199 :所以说,你现在是以 "高手的标准" 来定义 "手滑" 03/10 01:47
56F:→ tadpole1 :但结果论判断法也会有一些误差也是真的 因为有些状况 03/10 01:47
57F:推 doom8199 :用检估角度来看, 有了 q 这笔 data, 你想 estimate 03/10 01:55
58F:→ doom8199 :(p→q) , 但 information 根本不足 03/10 01:55
59F:→ doom8199 :一个做法是,你假设一个 "已知的 model" p 03/10 01:56
60F:→ doom8199 :来 training 出 p=>q 的 model, 就能估出 (p=>qi) 03/10 01:57
61F:→ doom8199 : 为 false 的个数。 03/10 01:57
62F:→ doom8199 :所以我前面所说的"手滑标准", 其实就是你要定出 p 03/10 01:58
63F:→ doom8199 :当你定出 p, 你就得分析出你这个模型p是不是适用於 03/10 02:00
64F:→ doom8199 :所有人,还是只针对 "特定族群" 03/10 02:00
65F:→ tadpole1 :与其说"高手的标准" 我是觉得这更像"常理" 像是方块 03/10 02:01
66F:→ tadpole1 :放下之後有缺格之类的 03/10 02:01
67F:→ tadpole1 :虽然可能还是可以说 我新手 我本来就是想这样放 03/10 02:02
68F:→ tadpole1 :这不是手滑没错 但这还是个"放错"才对 03/10 02:05
69F:推 doom8199 :对,我知道您想表示手滑这项数据的意义 03/10 02:05
70F:→ doom8199 :但"常理"这个东西也是"人为定出来的" 03/10 02:06
71F:→ doom8199 :我不是想否定手滑这个数据很难订还是无用之类的 03/10 02:08
72F:→ tadpole1 :可以的话当然是希望能得到"该做对但没做对"的量 03/10 02:08
73F:→ doom8199 :而是说,一但你标准订出来了,就得做 validation 03/10 02:08
74F:→ doom8199 :才能有信心说明你这项手滑标准p 的 estimation 03/10 02:09
75F:→ doom8199 :误差不大 03/10 02:09
76F:→ tadpole1 :我了解你的意思 我开一篇新的好了 要整理一下 03/10 02:17
77F:推 doom8199 :不好意思 > <, 较专业的术语比较难做譬喻 03/10 02:21
78F:→ doom8199 :简单说你想要写程式统计"手滑", 要做的步骤大致是: 03/10 02:22
79F:→ doom8199 :<1> 订出你觉得是手滑的 rule 03/10 02:23
80F:→ doom8199 :<2> 先用人眼判断影片那些属於手滑 (当ground truth) 03/10 02:24
81F:→ doom8199 :<3> 根据<1>写程式跑出 estimate 出来的(手滑)结果 03/10 02:25
82F:→ doom8199 :<4> 比较 <2><3> 的差异性程度 03/10 02:26
83F:→ doom8199 :若差异性过大,就不断修复 rule, 直到误差在容许范围 03/10 02:28
84F:→ tadpole1 :真的挺难的QQ 03/10 02:40
85F:→ tadpole1 :放下方块後 每一行的方块都能连到最底部 会有两个状 03/10 02:47
86F:→ tadpole1 :况 1.spin的缺格都被算进去2.共四行也会有先消个一两 03/10 02:47
87F:→ tadpole1 :行 过几个方块我就会把这格给消掉的状况 03/10 02:48