TPSとは?

TPSとは、 Ticks Per Second の略で、「1秒あたりのTick数」を示しています。

端的にいうと、TPSはサーバー機の処理能力の指標です。

(このページは2017/02/13に改定されたものです。これまでのTPSのページはこちら。)

Tickとは?

Minecraftをはじめ、多くのゲームは、大量のイベント処理群をまとめて無限ループさせて動かしています。
たとえば、雨の時の落雷判定、氷が凍る・解ける判定、植物が育つ判定etc…は、このループ1回ごとに、確率で発生するようにプログラムされています。

Minecraftでは、このループをTick(ティック1))と呼んでいます。

公式Wikiほかより、Tickに依存するとされている処理の一部を列挙します。

これ以外にもたくさんありそうです。

TPSの理想値

Tickは、平常時、1秒の20分の1に1回(=1/20秒に1回 = 0.05秒に1回)回るようになっています。

図:20TPSのイメージ

上の図では、10:00:00から10:00:01までの1秒間に、1Tickの処理を20回行っています。
1秒あたり20Ticks というところから、20Ticks per Secondとなり、20TPS(またはTPS202))という表現に至ります。
Minecraftにおいては、これが理想値です。

TPSが落ちるというコト

しかし、処理には時間がかかります。

こういった時は、行うべき処理が多くなり、1Tickに時間がかかると思われます。

図:13.8TPSのイメージ

上の図では、10:00:00から10:00:01までの1秒間に、1Tickの処理を13.8回しかできませんでした。
即ち、13.8TPSと表現されます。

この状況下では、Tickに依存する処理は、20TPSのときに比べて遅くなります。

たとえば「トロッコの進む速度」は最も体感しやすいものと思われます。人のいない日中時間帯に乗るのと、人の多い夜に乗るのとでは、速度が雲泥の差です。
この速度の変化は、TPSの低下によるものです。

そしてTPSの低下は、先述の通り、1Tickの処理に手間取っているために起きるのです。

TPSを落とさないために

TPSは、1Tickにて行うべき処理の数が多い(=サーバーへの負荷が高い)場合に低下しますが、
TPSはサーバーへの負荷に対して反比例のグラフを描いて低下していきます3)

図:サーバーへの負荷とTPSの相関

図の左上、「サーバーへの負荷が著しく低い」時にはTPSが20を超えています。
MinecraftはTPSが20になるように努めているだけであり、1Tickの処理が思ったより早く済んだ場合は、20TPSを超えることがあります。
平日の日中や深夜など、ログイン人数が自分を含めて1~2人といった時間帯に入ってみると、そんな状態を味わうことができます。

「サーバーへの負荷」は一定のものではありません
人が一箇所に集まる瞬間もあれば、てんでバラバラな場所に動く瞬間もあります。
たまたま複数人が同時に大規模なレッドストーン回路を動かすこともあるでしょう。
ログイン人数が多い時、TPSは乱高下しやすいです。

先にも述べた通り、ログイン人数が増えるほど、サーバーへの負荷は増すものであり、
この状況下では20TPSの維持は不可能です。
そういった「必要経費的な負荷」を減らすのではなく、「無駄な負荷」を減らすことが重要です。


おまけ:高速鯖

当サーバーの管理人、ecolight氏の発案により、20TPSというリミッターを解除したサーバーが存在します。
TPS400などの値を記録し、太陽、月、MOBなどのTPSに依存したコンテンツは驚くほど超高速に動作します。
プレイヤー自体の動きは通常通りなので、その対比が不思議な世界観を演出し、
敵MOBなどの無慈悲な超高速攻撃に立ち向かうスリルを味わうことができるカオスなサーバーです。

1)
[名詞]時計やメトロノームなどがカチカチ言う音、一瞬 [動詞]時計がカチカチ音を立てる、時間が過ぎる といった意味の英単語。時計の針が進む音「チクタク」はこの単語が基らしい。
2)
筆者的にはTPSという言葉の定義から「20TPS」の表記がしっくり来るが、「TPS20」といった書かれ方も割と多く見かける どちらも同じ意味である
3)
一般に、「コンピュータへの負荷とスループット」の関係は反比例(よりも急)なものが多い