Re: [資訊] 複賽賽後統計數據表

看板tetris (俄羅斯方塊 - Tetris)作者 (蝌蚪)時間11年前 (2013/03/10 00:46), 編輯推噓13(13074)
留言87則, 4人參與, 最新討論串4/4 (看更多)
※ 引述《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

03/10 01:12, , 1F
失誤這個數據的確是很重要,但要量化它卻很困難
03/10 01:12, 1F

03/10 01:12, , 2F
主因是"失誤" 是對玩家本身而言,而非旁觀者
03/10 01:12, 2F

03/10 01:13, , 3F
我舉格鬥的例子: 不少格鬥遊戲會有 "立回" 這個概念
03/10 01:13, 3F

03/10 01:14, , 4F
其實像combo/ren可以算單場最大值 其他像tetris
03/10 01:14, 4F

03/10 01:14, , 5F
高手在對戰的時候,都會很注重立回面,稍沒做好
03/10 01:14, 5F

03/10 01:14, , 6F
Tspin B2B好像用每分鐘好一點
03/10 01:14, 6F

03/10 01:14, , 7F
就拿蝌蚪你推薦我的那場high light來說,那個L是因為
03/10 01:14, 7F

03/10 01:15, , 8F
我了解你的意思
03/10 01:15, 8F

03/10 01:15, , 9F
可能就是被對方多擇或凹招。因此立回沒做好
03/10 01:15, 9F

03/10 01:15, , 10F
對高手而言可能都算是個 "失誤"
03/10 01:15, 10F

03/10 01:15, , 11F
我急於DS,倒沒有真的有心作T spin,只是後來發現可
03/10 01:15, 11F

03/10 01:15, , 12F
03/10 01:15, 12F

03/10 01:15, , 13F
但對普通人而言,可能連立回是啥都不清楚
03/10 01:15, 13F

03/10 01:16, , 14F
不過該怎麼說呢 或許如果我把"失誤"改成"手滑"會更
03/10 01:16, 14F

03/10 01:17, , 15F
貼切點 因為你說的那種基本上就已經是depends on個人
03/10 01:17, 15F

03/10 01:17, , 16F
的能力了 事實上就是實力的差距 如果把每種這樣的失
03/10 01:17, 16F

03/10 01:17, , 17F
稍微查了一下立回 在tetris裡的抉擇錯誤如果是戰略的
03/10 01:17, 17F

03/10 01:18, , 18F
誤都拿來討論的話反而會變的有點奇怪 對戰比的是失誤
03/10 01:18, 18F

03/10 01:18, , 19F
一般不視為失誤而是個人狀況 真的擺出來比較算
03/10 01:18, 19F

03/10 01:19, , 20F
並不是比其他skill之類的 畢竟只要做的不理想就是失
03/10 01:19, 20F

03/10 01:19, , 21F
就是蝌蚪說的!
03/10 01:19, 21F

03/10 01:19, , 22F
誤 當然我也了解這就是你想說的 失誤是看"自己"
03/10 01:19, 22F

03/10 01:20, , 23F
舉運動當例子來看 棒球守備是能力差別 不會說因為這
03/10 01:20, 23F

03/10 01:21, , 24F
球該撲出去接但沒撲就記失誤(即使撲了真的接的到) 因
03/10 01:21, 24F

03/10 01:21, , 25F
這已經是能力的差距了
03/10 01:21, 25F

03/10 01:22, , 26F
所以才會有人說"隱形失誤" 這就是沒反應在數據上的部
03/10 01:22, 26F

03/10 01:23, , 27F
分 一樣的道理 一定會有擺下去覺得"X 我擺這幹麻"的
03/10 01:23, 27F

03/10 01:24, , 28F
狀況 但事實上這是自己練習不夠習慣不好 而"手滑"的
03/10 01:24, 28F

03/10 01:25, , 29F
話則是 "X 放錯了 死定了"這種感覺 而我也認為這種對
03/10 01:25, 29F

03/10 01:26, , 30F
單局的影響更大更明顯 反而是如果把這兩種失誤計一起
03/10 01:26, 30F

03/10 01:26, , 31F
會降低"手滑"的information EX:擺不好10次 手滑1次
03/10 01:26, 31F

03/10 01:27, , 32F
而對手擺不好20次 手滑0次 但贏了 這樣反而把手滑的
03/10 01:27, 32F

03/10 01:27, , 33F
重要性給變小了 這樣的狀況一定也不少 所以當然能分
03/10 01:27, 33F

03/10 01:29, , 34F
別出來還是會有好處的
03/10 01:29, 34F

03/10 01:30, , 35F
我懂你的意思。但我想表達的是,你無法 100%確定
03/10 01:30, 35F

03/10 01:30, , 36F
該玩家是不是真的"手滑"。 能將 失誤 和 skill 分離
03/10 01:30, 36F

03/10 01:30, , 37F
至於"手滑"的影響程度如何 可能還是等比賽整個結束
03/10 01:30, 37F

03/10 01:31, , 38F
當然會比較好,但對第三者而言,你還是得定義一套
03/10 01:31, 38F

03/10 01:31, , 39F
資料收集完 去用些統計方法來看看到底他的影響大不大
03/10 01:31, 39F

03/10 01:32, , 40F
何謂 "手滑" 的標準。 這個定義很難適用於全部人
03/10 01:32, 40F

03/10 01:32, , 41F
說到100%確定的話 大多還是像我文中所說啦 不過真的
03/10 01:32, 41F

03/10 01:36, , 42F
偶爾會有不好判斷的 目前我頃向於"誤差不會太大"
03/10 01:36, 42F

03/10 01:37, , 43F
畢竟不好判斷的佔蠻少的 另一方面也會有方塊看起來
03/10 01:37, 43F

03/10 01:38, , 44F
正常無比 而且也不是我剛才說的那種"腦袋放錯" 而是
03/10 01:38, 44F

03/10 01:38, , 45F
確實手滑但看不出來的(我想你想講的應該是這個)
03/10 01:38, 45F

03/10 01:41, , 46F
這些多算和少算就像在統計裡的error term一樣 我認為
03/10 01:41, 46F

03/10 01:42, , 47F
(想想這比喻不太對= =)這個誤差還不至於數據有太大的
03/10 01:42, 47F

03/10 01:43, , 48F
不,我的意思是玩家有可能真的故意這樣放
03/10 01:43, 48F

03/10 01:43, , 49F
影響 有需要的話 這個應該是可以實驗的 但也有點麻煩
03/10 01:43, 49F

03/10 01:43, , 50F
就是了 科科
03/10 01:43, 50F

03/10 01:43, , 51F
但旁觀者卻會認為是手滑
03/10 01:43, 51F

03/10 01:44, , 52F
這個會有但真的不多 而且如果再用我剛才前面說的結果
03/10 01:44, 52F

03/10 01:45, , 53F
論來判斷的話會再減少很多 只剩有一些是為了妥協而刻
03/10 01:45, 53F

03/10 01:45, , 54F
而刻意放的才是真的麻煩
03/10 01:45, 54F

03/10 01:47, , 55F
所以說,你現在是以 "高手的標準" 來定義 "手滑"
03/10 01:47, 55F

03/10 01:47, , 56F
但結果論判斷法也會有一些誤差也是真的 因為有些狀況
03/10 01:47, 56F

03/10 01:55, , 57F
用檢估角度來看, 有了 q 這筆 data, 你想 estimate
03/10 01:55, 57F

03/10 01:55, , 58F
(p→q) , 但 information 根本不足
03/10 01:55, 58F

03/10 01:56, , 59F
一個做法是,你假設一個 "已知的 model" p
03/10 01:56, 59F

03/10 01:57, , 60F
來 training 出 p=>q 的 model, 就能估出 (p=>qi)
03/10 01:57, 60F

03/10 01:57, , 61F
為 false 的個數。
03/10 01:57, 61F

03/10 01:58, , 62F
所以我前面所說的"手滑標準", 其實就是你要定出 p
03/10 01:58, 62F

03/10 02:00, , 63F
當你定出 p, 你就得分析出你這個模型p是不是適用於
03/10 02:00, 63F

03/10 02:00, , 64F
所有人,還是只針對 "特定族群"
03/10 02:00, 64F

03/10 02:01, , 65F
與其說"高手的標準" 我是覺得這更像"常理" 像是方塊
03/10 02:01, 65F

03/10 02:01, , 66F
放下之後有缺格之類的
03/10 02:01, 66F

03/10 02:02, , 67F
雖然可能還是可以說 我新手 我本來就是想這樣放
03/10 02:02, 67F

03/10 02:05, , 68F
這不是手滑沒錯 但這還是個"放錯"才對
03/10 02:05, 68F

03/10 02:05, , 69F
對,我知道您想表示手滑這項數據的意義
03/10 02:05, 69F

03/10 02:06, , 70F
但"常理"這個東西也是"人為定出來的"
03/10 02:06, 70F

03/10 02:08, , 71F
我不是想否定手滑這個數據很難訂還是無用之類的
03/10 02:08, 71F

03/10 02:08, , 72F
可以的話當然是希望能得到"該做對但沒做對"的量
03/10 02:08, 72F

03/10 02:08, , 73F
而是說,一但你標準訂出來了,就得做 validation
03/10 02:08, 73F

03/10 02:09, , 74F
才能有信心說明你這項手滑標準p 的 estimation
03/10 02:09, 74F

03/10 02:09, , 75F
誤差不大
03/10 02:09, 75F

03/10 02:17, , 76F
我了解你的意思 我開一篇新的好了 要整理一下
03/10 02:17, 76F

03/10 02:21, , 77F
不好意思 > <, 較專業的術語比較難做譬喻
03/10 02:21, 77F

03/10 02:22, , 78F
簡單說你想要寫程式統計"手滑", 要做的步驟大致是:
03/10 02:22, 78F

03/10 02:23, , 79F
<1> 訂出你覺得是手滑的 rule
03/10 02:23, 79F

03/10 02:24, , 80F
<2> 先用人眼判斷影片那些屬於手滑 (當ground truth)
03/10 02:24, 80F

03/10 02:25, , 81F
<3> 根據<1>寫程式跑出 estimate 出來的(手滑)結果
03/10 02:25, 81F

03/10 02:26, , 82F
<4> 比較 <2><3> 的差異性程度
03/10 02:26, 82F

03/10 02:28, , 83F
若差異性過大,就不斷修復 rule, 直到誤差在容許範圍
03/10 02:28, 83F

03/10 02:40, , 84F
真的挺難的QQ
03/10 02:40, 84F

03/10 02:47, , 85F
放下方塊後 每一行的方塊都能連到最底部 會有兩個狀
03/10 02:47, 85F

03/10 02:47, , 86F
況 1.spin的缺格都被算進去2.共四行也會有先消個一兩
03/10 02:47, 86F

03/10 02:48, , 87F
行 過幾個方塊我就會把這格給消掉的狀況
03/10 02:48, 87F
文章代碼(AID): #1HEsTksv (tetris)
討論串 (同標題文章)
文章代碼(AID): #1HEsTksv (tetris)