ポイント計算

version: 20190715

ポイントの計算方法

世界ランクの計算に用いられるポイントは以下の過程により計算されます。


A. 計算対象となるツイート

まずポイントの計算にあたって対象となるのは、以下の二つの条件を満たしたツイートです。


  • 過去100日前までの投稿の内、03:34:00.000 ~ 03:34:01.000 の間に投稿されたツイート
  • 以下に記載する公式クライアントを用いて投稿されたツイート


最初の条件は、換言すれば、記録が1.000秒 (1000ms) 以内の結果のみを反映させるということです。フライングしたり1秒より遅い結果は対象外となります。

二つ目の条件は、公式クライアントで投稿されたツイートのみを反映させるということです。ここで公式クライアントとは以下のリストに含まれるクライアントを指します。


  • Twitter for iPhone
  • Twitter for Android
  • Twitter Web Client
  • TweetDeck
  • Twitter for iPad
  • Twitter Web App
  • Twitter Lite


一般に、スマートフォンやPCで公式のアプリケーションで投稿すればほぼ間違いなくこれらのクライアントを用いて投稿されます。逆にサードパーティー製のクライアントは現時点ではポイントの計算の対象外となります。ご注意ください(※2・3)。


※2 利用者が多く自動化ツールの使用の心配が少ない信頼度の高いサードパーティ製のクライアントに関しては、ご要望と調査に応じて追加する予定です。詳細に関しては設計思想の項目をご覧ください。


※3 二つ目の条件を加味しない記録は後述の参考記録として同様にポイントが計算されます。


B. 記録→ポイントへの変換

次に、各記録からポイントへ変換します。ジャストタイム(3:34:00.000)との誤差をx秒 (ただし0≦x≦1)としたとき、ポイントは以下の式で表されます。

この計算式は以下の2点を意味します。

  • ジャストタイムで満点 10,000 pt
  • 0.1 秒 (100ms) 遅れる毎にポイントが半分になる


C. ポイントの集計1: 総和演算

さてB.において各参加記録のポイントを求めたので、そこから累計ポイントを計算します。ここでは、ただ単純に総和を取るのではなく、以下の式で表されるような加重総和によってポイントを計算します。

ここでx_nn日前の記録、Xは有効な記録の集合を表します。有効な記録に関して、その日付に応じて総和を取ったものがg(X)になります。この式では、古い記録ほど得点への貢献度が減衰(1日経つごとに0.95倍)します。


D. ポイントの集計2: 出場頻度による補正

C.において加重平均を取る代わりに、出場頻度を成績に加味するために、以下の式で表されるような補正加重平均h(X)を最終的なポイントとします。

ただし分母の定数αは以下の値を採用します。

このh(X)の値に基づき、上から順番に順位を付けます。

設計思想

ここからはポイント計算方法の背後にある設計の意図に関して説明します。


A-1. フライングおよび「悪い結果」の除外

本計算方法では、フライングおよび1.000秒以上遅れた結果は、ポイント計算の対象から外れます。これは事前の調査により、これらの結果を含めて計算した場合、最終的に算出されるポイントに与える影響が大きいと判明したからです。ポイントが実質0 ptの「悪い結果」を排除し実質的に不参加扱いにすることで、この影響を最小限にします。また結果的に、「良い成績」のみをポイントの計算に反映させることで、よりシビアな結果を狙うモチベーションを高めることが期待されます。


A-2. Botによる記録の判別・分離

お気づきの方も多いかもしれませんが、最近"334"において自動化されたクライアント(通称bot)やマクロツールを使用したと思われる投稿が散見されます。334_Rankerにおいては、運営者による恣意性を排して公正さを保つため、Twitter社の定める規約に抵触しない範囲での自動化ツールの使用は禁止しない方針であります(悪質なケースを除き計測からは除外しない)。一方でランキングを運営する上で、通常の手段による参加者と同じ尺度で計算した場合、どのような尺度でも自動化ツールを用いたPlayerが上位を独占することは容易に予想されます。これは他のオンラインゲームでも頻繁に問題視されるようにゲーム性そのものを損ないかねません。


本計算方法では公式クライアントを使用した投稿にポイントの計算対象を限定することでこの問題を回避します。上記に挙げられた公式クライアントは自動化ツールが使われる可能性が低く(※4)、したがって公式クライアントの使用の可否を判定することは、手動による投稿を判別するのに適しています。また統計によれば、過去全有効記録 (0.000~1.000の記録) のうち約81.3%の記録が上記の公式クライアントによる投稿であり、仮に公式クライアントのみに限定しても十分な人数のPlayerがポイント計算とランキングに反映されることが期待されます。


なお今回公式クライアントに限定しましたが、サードパーティ製のクライアントに関しても、ご要望と調査結果に応じて、順次計算対象のクライアントに追加する予定です。現在こちらで考えている条件は以下の2点です。


  • API key流出の可能性が低い、また仮に流出したとしても不正利用を防止する手段が講じられているクライアント
  • 使用頻度がそれなりに高い (目安として過去1000回以上用いられている)クライアント


また先述の通り、クライアントによる判別を行わないポイントは参考ポイントとして同様に計算され提供されます。これはいわばレギュレーションの存在しない無差別級でのポイントであり、純粋に結果の是非によって決定される値になります。Playerの強さを図る尺度としてお使いください。


※4 上記の公式クライアントは、開発者が実際に調査しましたが、自動化ツールの使用を制限する何らかの機構が存在しているようです。


B. 相対評価の排除・絶対評価の導入

以前の計算方法ではその日の順位によって変わる相対的なポイントが加算されていましたが、今回の計算方法では相対的な要素を完全に排し、投稿の秒数によって決まる絶対的な要素のみでポイントが計算されます。またポイントの変換式に指数関数を導入し、よりシビアに評価を与えます。


絶対評価のみに絞った理由は、参加人数によって、同じ成績でも得点が変化することを防止するためです。一般に平日より休日の方が参加人数が多く、相対評価を導入した場合、平日のポイントが高くなる傾向にあります。"334"では陸上競技のように結果がそのまま実力の指標になるので、できるだけ実力をそのままポイントに反映させたいという思想が背後にあります。


また、これは本計算方法を設計する際に参考にした、テニス(ATP Rankings)やゴルフ(OWG Rankings)、F1(FOWC)等のプロスポーツにおけるポイント計算方法との大きな違いの一つと言えます。なぜならこれらのスポーツでは大会やツアー毎に獲得ポイントに差異を設けているのに対し、本計算手法では大会毎の獲得ポイントの差異をなくすように設計されているからです。


余談ですが、ポイントの比率を計算することで、Player間で精度を大まかに比較できます。例えば、ポイントが2倍のPlayerが存在しかつ参加頻度が大体同じならば、目安としてそのPlayerの平均的な精度がおよそ0.1秒良いことを意味します。


C. 日付による減衰

単純な算術平均を導入すると、過去の記録が100日後まで同じ割合で影響します。これは試合数が多くなるほどポイントが変化しにくく単調になりやすくなることを意味します。そこで日付によって減衰する係数を導入し、より直近の記録をより大きな割合で評価します。また後述の分母の定数と合わせて、参加が途絶えたPlayerのポイントを下げる効果があります。


0.95という値は、100日間の記録を集計する上で、適当に決めたものです。先述のプロスポーツとは異なり、"334"は毎日大会が開催され一つ一つの大会の重みが相対的に小さいので、より減衰しやすいように設定してあります。例えばATPRでは実質的に減衰なし(減衰係数1.0 + 過去1年分反映)、OWGRでは線形な減衰が加味されています(13週以降、1週あたり1.087%減衰)。


D. 出場頻度による補正

プロ野球において規定打席数が存在するように、成績を評価する上で出場頻度は結果の平均値と並んで重要な指標です。もし参加数を加味せず単純に加重平均を計算した場合、例えば偶々数試合で良い成績をとったPlayerでもランキング上位に長期間滞在できてしまいます。またこれは逆に多く参加するPlayerほど不利になることを意味し、適切ではありません。


h(X)における分母はこの問題に対処すべく、出場試合数が多いPlayerほど、また直近の参加が多いPlayerほど高く評価するように設計されています。


また余談ですが、もし毎日参加して過去100日間の参加で全てジャストタイムを実現できた場合、ポイントは10,000 ptになります。逆にすべての成績は10,000 pt以内に収まります。