Saturday 26 May 2018

DDR, the 4th year

Some references:
[5/2016] DDR the 2nd year
[2/2017] DDR the 3rd year

Oh my. Just take a look at the screenshots in the above entries and look at the scores that I have now...

ちくわパフェだよ☆CKP Challenge Lv14
2016 - 881970 1 miss [That's really a fluke - I can't even consistently 4 miss Lv14 maps]
2017 - 918640 1 miss [That's more like regular performance]
2018 - 938370 GFC [without proper warm up so that's an underperformed play]

MAX300 Expert Lv15
2016 - ~890000 (ITG converted into DDR A scale) [again fluked somehow]
2018 - 912380 [not like I seriously grinded since I play 12-14-16+ these days... didn't even bothered to screenshot that]

嘆きの樹 Expert Lv16
2017 - 557020 Failed [Can't even make it to the laddery stream part]
2018 - 833420 [I think I'm hitting that stream too fast nowdays]

恋する☆宇宙戦争っ!! Challenge Lv17
2017 - 780660 [After playing BPM200 for a whole day]
2018 - 884020 [Playing BPM200 is almost natural for me now]

Oh and of course, I can barely handle some 18s now.

Great improvement comes from consistent targeted practicing just like what happened in 2016. In 2 months I improved from being able to marginally pass 16s to clearing some of the nastiest 17 [Tohoku Evolved, Spanish Snowy Dance] and even some 18s [Egoism, Mei, and almost Dead End Groove Radar mix].

I think that comes from a general theory that I believe to be true in explosiveness demanding sports: strength comes first and accuracy follows. Strength and accuracy is the eternal dilemma in sporting and improving one will inevitably sacrifice another expert for those chosen geniuses. Now you are an ordinary player and you have to decide which is more important to be focused and I will definitely go for strength.

Since we are not talking about pure fitness that puts excessive muscles into no use, we can generally say that greater strength allows stronger explosiveness and hence a larger margin for flexibility. That means you can sacrifice your strength [speed] to gain higher accuracy [firmer stepping that gives higher accuracy]. And more importantly you have the stamina to keep your performance and strength to fix your mistakes whenever necessary. It does not work the other way round however. Stamina and strength is the correcting factor while you do not get either if you focused on accuracy only.

It's not surprising to find players who can often pass 15-16s focused on steamrolling 12s regularly and never gain the ability to clear high 16 or 17s. Strength based players however, managed to raise their accuracy naturally by adopting their ways of advanced maps onto easier maps that are more stable and more easily corrected. Wind Fairy is a good example: it's a very simple Lv15 but with some serious 1/3 streams. There's even a vertical stream at the last which is extremely hard for Lv15 newcomers. Higher players however, can apply the dense jumping skill they gained by playing maps like MAX period or London Evolved [I hate this thing so much] so get it passed.

This theory is general in the sense that it applies to more sports other than DDR - and baseball is my favourite example. While weaker CPBL pitchers are still trying to pitch slower in order to pitch into the zone, MLB is exhibiting why the other way round is the correct way to grow a prospect: throw hard, throw fast. That's your true potential and you should try your best to grind the best out of it.

So that's my little thoughts on how to get better when you play these games/sports. I'm not saying that keep on AAA 12s are bad, nor that people have to do it in that way to be good. There are all different kinds of players in the world and there are millions of optimized way to improve the skills -- but I will keep my way playing DDR while enjoying all the songs you get there.

Statistics, mid 2018:
409 credits accumulated since DDR A
20 credits per week
Clear attack: 14~15-[2016] → 15+~16[2017] → 17~18-[2018]
AA Attack: 11~13-[2016] → 14~15-[2017] → 15~16[2018]
Lv 16: 29 Cleared / 4AA
Lv 17: 25 Cleared / 10A
Lv 18: 3 Cleared

Tuesday 22 May 2018

10 years of Osu! 雜談(2) - pp篇

寫雜談~遊戲篇時突然想把一個問題單獨拿出來寫一篇:到底pp系統是好是壞?雖然作為分數時代#1引入pp系統我一定是受害者,不過都退隱了再追究排名的話實在有點無聊。不得不承認,pp系統比起單純ranked score更能準確反映實力。

這個系統大部分設計都沒問題:當然要弄一個star rating才能計算那張圖比較難,打難圖當然比易圖更能反映高層次的實力;二次方收斂的速度也沒問題,大概pp排位前20才對整體pp有較大的影響力,跟同期頂級圖包的數量也算吻合。


先把問題簡化為SS跟1 100 2種結果好了。我們將圖的難度跟玩家程度配對,假設每一個note的誤差都呈正態分佈$X\sim N(0, \sigma ^2)$。我想看到底標準差$\sigma$要到多少,拿到SS的機會才會比1 100更高?這個問題可以看成likeihood estimator的簡化版,利用標準差選出較大可能的結果。定義$p,q$為拿到300, 100的機會:

$p = P(|Z|\leq \theta _{300}/\sigma )$

$q = P(|Z|\leq \theta _{100}/\sigma )$

二次分佈可得 $P(SS) = p^n, ~P(1\times 100) = np^{n-1}(q-p)$

可得比例為 $LR(\sigma) = \frac{p}{n(q-p)}$。留意右方為homogeneous polynomial,所以我們可以用$p/q$對應$\sigma$。嫌太複雜的話可以考慮$n=500, OD=8$的狀況:

$\theta_{300} = 31.5, \theta_{100} = 75.5, n=500$

$LR(\sigma) = \frac{p}{500(q-p)} = 1 \Rightarrow \frac{p}{q} = \frac{500}{501}$

不難證明$\sigma \mapsto \frac{p}{q}$為單調函數,所以用電腦做二分法即可得到$\sigma \approx 10.1ms$。Unstable rate = 101是甚麼概念?大概就是4.5*上下的跳圖很難達到,串圖很好達到的準確率。這個數字正好證實了我的看法:擁有可以制霸某一層級的譜面的實力時,能否SS還是打出一兩個100只是機率問題,並無實力高下之分。

那麼打出一堆100機率又怎樣算呢?當$k \ll n$時
$P(r\times 100, 1\leq r\leq k) = \sum _{r=1}^k C^n_rp^{n-r} q^r \approx \sum n^r p^{n-r}q^r = p^{n-1}n(q-p)\frac{p^k-n^k(q-p)^k}{p^k-np^{k-1}(q-p)}$

誠然$C^n_r\approx n^r$是一個很粗的估算,但我們放大這個機率時所得$\sigma$的臨界點會向下,這樣我們仍然能拿到一個有效的下限:

$LR(\sigma) = \frac{p}{n(q-p)}\frac{p^k-np^{k-1}(q-p)}{p^k-n^k(q-p)^k}$

設$LR(\sigma) = 1$再化簡後神奇地得出以下等式:

$n^{k+1}(q-p)^{k+1} -2np^k (q-p)+p^{k+1} = 0$

當$k=1$時上式化簡為$(n(q-p)-p)^2 = 0$跟我們上面計算一樣,但當$n\geq 2$時上式則可以給予$\sigma$的下限值。上式除以$q^{k+1}$再將$x = p/q$代入後可得

$f(x) = n^{k+1}(1-x)^{k+1}-2nx^k(1-x)+x^{k+1} = 0$

看似複雜的等式其實有非常漂亮的解--首先對於所有$k$我們都能拿到一個實根$x_1 = \frac{n}{n+1}$:

$f(\frac{n}{n+1}) = n^{k+1}(\frac{1}{n+1})^{k+1} -2n(\frac{n}{n+1})^{k}(\frac{1}{n+1}) + (\frac{n}{n+1})^{k+1} = 0$

然後第二個實根約為$x_2 \approx \frac{2n}{2n+1}$而且$\lim _{k\to \infty}x_{2,k} = \frac{2n}{2n+1}$[雖然因為$k\ll n$這個並沒多大意義]:

$f(\frac{2n}{2n+1})=(\frac{n}{2n+1})^{k+1}-2n(\frac{2n}{2n+1})^{k}(\frac{1}{2n+1}) + (\frac{2n}{2n+1})^{k+1} < 2^{-k-1} \to 0$

計算$f'(x)$易得以上就是$x\in [0,1]$區間所有的實根了[然後還有$k-1$個在1附近的複根,k為偶數時會在$2-x_1$附近有第三個實根]。這跟上面$k=1$的結論一致:只要達到某個準確度,打出SS跟打出幾個100的差距並不大。


留意$\frac{700}{701} \approx 0.99857, \frac{1400}{1401} \approx 0.999286$,當$k=7$時$x_2 \approx 0.999283$。來到這裡我們可以直接計算$n\mapsto \sigma$:

可得$\sigma \approx 31.12(-\log (1-\frac{p}{q}))^{-0.605}$,代入$\frac{p}{q} = 1-(dn+1)^{-1}$ ($d =1,2$)得到$\sigma \approx 31.12 (\log (dn+1))^{-0.605}$。巧合的是31.12這數字跟OD8的$\theta _{300}  = 31.5$非常接近。更神奇的是這對其他OD值也同樣成立:

$\sigma = (\theta _{300} - 0.4)(\log (dn+1))^{-0.605}$

回到OD8這個預設值,以主流長圖頂多1500combo上下來說unstable rate在100上下剛好夠用[如果取第二實根$x_2 = 1-(2n+1)^{-1}$則unstable rate需要在90上下]。這也跟主流SS紀錄的unstable rate相近[我是拿我2012年的圖出來看就是了...]。

上面的模型假設了每個note的誤差是一樣的,在實作當然不一定為真。引入數個不同的標準差$\sigma _1,..., \sigma _n$再計算二次分佈也可以得出相近的結果。另一個做法是將一個難的note看成若干($j$)個「標準」的note且假設在$k\ll n$時我們在這$j$個notes裡面頂多會打出一個100,那這個note的誤差標準差將為$\sigma ' = sd(jX) = j \sigma$。這個方法的缺點是只能考慮每個note的誤差標準差為$\sigma$的整數倍,不過將所有notes一起剁碎考慮就沒問題了呢。

TL;DR SS所給予的PP獎勵在連續性和數據上毫無意義,夠準的話SS就自然會出來 佛系SS






21/5/2018 [剛好十年又兩個月]