「Counter-Strike」に10年以上存在し続けるバグの原因がついに判明
Valveが開発したFPSゲーム「Counter-Strike」のプレイヤーから多数の報告が行われ、リメイク作品に当たる「Counter-Strike:Global Offensive(CS:GO)」とそのアップデート版である「Counter-Strike2(CS2)」にも見られた特殊なバグが存在します。プレイヤーが長年悩まされてきたこのバグの根本的な解決法が見つかったとして、Counter-Strikeシリーズのコミュニティ運営に携わるソフトウェアエンジニアがバグについて解説しました。
A decade long Steam issue, is everyone just too fast for Valve? | freudenjmp
https://blog.freudenjmp.com/posts/no-user-logon/
ソフトウェアエンジニアのFreudensprung氏によると、特定の状況下でCounter-Strikeシリーズを起動してプレイした場合、ゲームから切断されてしまう「No user logon」エラーが発生するとのこと。
このバグは2008年頃から世界中の人々により報告されてきていて、開発元のValveはいつまでたっても修正しなかったとのこと。ネット上には「No user logon切断エラーを解決する5つの方法」といった題名の記事があふれ、ゲームの再インストールやファイル検証などを解決策としてあげているそうですが、これらはバグを根本的に解決するに至らず、一時的に改善するに過ぎないとFreudensprung氏は指摘しています。
これを解決する方法は意外と簡単で、「ゲームを起動したらメインメニューで10秒待つこと」だそうです。
Freudensprung氏によると、自身が携わるコミュニティ「Esportal」でも同様のバグが多数報告されていて、すでに100回以上調べたにもかかわらず原因を特定できない問題だったとのこと。バグに悩まされる中、プレイヤーがゲームに接続してから2~3分後に発生することが多いという傾向と、ある日同僚が発した「自分のスキンが表示されるのに数分の遅延が発生する」との言葉をヒントに、Freudensprung氏はひとつの仮説を打ち立てました。
その仮説とは「Valveがゲーム内でのスキン表示に不正が無いかどうか、ユーザーIDを検証しているのではないか」というものでした。実際にゲームサーバーのログを確認したところ、接続から約1分20秒後にユーザーIDを検証している様子が見られたそうです。
さらに以前リークされたCS:GOのソースコードを調べたところ、「Steam3」というサーバーがユーザーの認証を行っている可能性が浮上しました。このサーバーはマッチメイキングを行うサーバーとは別物で、ただ認証のためだけに存在するサーバーだと考えられました。
さらに問題を深掘りしたところ、Steam3は「CS2.exeが、同じマシン上で実行されているSteam.exeを介してSteam3へ接続した場合、ユーザーを正しく認証する」という処理を行っていることが判明。そのため、ゲーム外のブラウザからゲームに接続したり、Steamのフレンドリストからゲーム外のフレンドのマッチに接続したり、ゲームが起動していない状態でSteamブラウザプロトコル(steam://connect/127.0.0.1:27015)を使用して手動でサーバーに接続したりすると、高確率でバグが発生するとのことです。
Freudensprung氏は「10秒待つという解決策が99%のユーザーには有効だと確信していますが、このブログ記事で取り上げていない他の理由でこのエラーの影響を受けているユーザーがごく少数いることは十分承知しています。このエラーを報告するSlackメッセージが二度と表示されないことを願っています」と述べました。
・関連記事
レゴを使ってFPSゲーム「Counter-Strike」を再現しているムービー - GIGAZINE
Steamが同時ゲーム内プレイヤー数1000万人を達成、新型コロナパンデミックから増加傾向 - GIGAZINE
FPSゲーム「CS:GO」に登場する銃の性能を徹底的に比較できるサイト「CS Weapons」が登場 - GIGAZINE
人気オンラインFPS「CS:GO」にSteamの招待システムを介してアカウントのパスワードを盗まれる脆弱性が判明 - GIGAZINE
・関連コンテンツ