やじうまPC Watch
LoL国際大会、3試合がやり直しの事態。遅延挿入プログラムのバグで
2022年5月18日 11:09
Riot Gamesは17日(中国時間)、韓国・釜山で開かれたリーグ・オブ・レジェンド(LoL)の国際大会「MSI 2022」のうち、中国のチームが参加した3試合について、レイテンシを調整するプログラムにバグがあったとし、やり直しを行なうと発表した。この件に関して、Riot Gamesは中国のWeiboで技術的な詳細を公開しており、その内容がなかなか興味深いので紹介しよう。
今回問題となったのは、中国・上海と韓国・釜山の間のリモート試合。周知の通り上海は今、新型コロナウイルスの影響でロックダウンしており、このため中国チーム「RNG(Royal Never Give Up)」は上海からリモートで釜山の会場に接続して試合を行なった。上海と釜山は850km離れており、この間をサーバー同士が通信する必要がある。その遅延(ping値)は平均で35ms前後だという。
そもそも、35msの遅延でも選手のパフォーマンスを十分発揮できる対戦ができるのか。Riot Gamesによれば、複数のトップレベルのプロ選手と共同で検証したところ、40msを超えた辺りから多くの選手が遅延を感じ始めることから、40ms(±5ms)以内であれば問題はないとしている。そこでRiot Gamesは今回のリモート対戦の実現のために、3つの解決法を考案した。
1つ目は自然に発生するレイテンシを無視するものだが、RNGチームでは常時35ms前後のレイテンシが発生するのに対し、釜山会場では15ms程度であり、公平性を期すためこの案は却下された。2つ目は中国と韓国の中間地点にサーバーを設置することだが、中間地点は海上であるためこれも非現実的だとした。
そこで今回採択されたのが3番目の「人工的にレイテンシを挿入する」案。つまり、故意に釜山側にレイテンシを挿入して、同じ35msにして公平性を期すものである。LoLの開発チームは人工的にレイテンシを挿入する「Latency Service」を開発し、実際のMSI 2022の試合で運用した。
ところが、このLatency Serviceを加えた状態で試合中、サーバーの監視ツールからは特に異常なデータを得られなかったものの、釜山会場側でプレイしていた選手の声を聞くと、明らかに許容範囲外の遅延が発生したという。
そこでチームはネットワークのパケット“だけの遅延”を監視するツールではなく、新たにエンドツーエンドの遅延を計測するツールを開発して、ネットワークをエミュレーションして監視したところ、Latency Serviceを有効にすると、確かに選手らが述べた通り、釜山側よりも上海側の遅延が少なかったのだという。
Latency Serviceのソースコードで問題を洗い出してみたところ、演算ミスがあり、余分なレイテンシを挿入していることがわかった。そこで、後半の試合では遅延挿入プログラムのパラメータを変更し最適化を行なった。
ところが、パラメータ調整後の試合では、釜山側でゲーム内におけるping値表示(約22ms前後)が、上海側のping値(約35ms)よりも低いことが選手や観客から指摘された。しかしRiot Gamesによれば、エンドツーエンドの遅延を計測するプログラムでは、実際の遅延は35msとなっており、表示されている値より13ms高いとし、理解を求めている。
これらの結果を踏まえ、遅延挿入パラメータの修正前に上海のRNGが参加した3つの試合について“やり直し”を行なうこととなった。Riot Gamesは今回の件に関し、すぐさま問題を発見できず、ping値の表示についてチームとの意思疎通や、問題開示の透明性について不備があったとし謝罪している。
【MSI 2022 再試合のお知らせ】
— LJL(League of Legends Japan League) (@Official_LJL)May 13, 2022
RNG の試合において釜山会場との遅延設定に問題があり、競技の公平性に影響があったと判断されました。
これに伴い、DAY 3 までの RNG の試合は全て無効とし、再試合が開催されることなりました。新しい試合スケジュールは追って発表いたします。https://t.co/a7sPmmBggM