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が落ちるというコト
しかし、処理には時間がかかります。
- たまたま大量の処理が必要な場所にいた場合
- 大人数がログインしていた場合(30人ログインしていたら、単純計算で、サーバー機はシングルの30倍のイベント処理を行うことになる)
こういった時は、行うべき処理が多くなり、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などの無慈悲な超高速攻撃に立ち向かうスリルを味わうことができるカオスなサーバーです。