作者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