ビデオゲームにおけるチートとは、プレイヤーがさまざまな方法を用いて通常のゲームプレイを超えた優位性を作り出すことであり、通常はゲームを容易にすることを目的としています。チートと呼ばれる個々のテクニックやエクスプロイトは、ゲーム自体から有効化される場合(オリジナルのゲーム開発者によって実装されたチートコード)、サードパーティのソフトウェアによって挿入される場合(ハッキングプログラム、ゲームトレーナー、またはデバッガー)、または外部ハードウェアによって作成される場合(チートカートリッジ)があります。また、ソフトウェアのバグを悪用すること によって実現される場合もあります。これは、そのバグが一般的に知られており、正当なゲームプレイとしてその使用が受け入れられているかどうかに基づいて、チートと見なされる場合と見なされない場合があります。オンラインゲームやスピードランにおけるチートは、オンラインゲームコミュニティに影響を与える最も問題のある問題の1つとして広く認識されており、[ 1 ]競争するゲーマー間の信頼とスポーツマンシップを失わせます。
最初のチートコードは、プレイテストの目的で導入されました。プレイテスターはゲームのメカニズムを厳密にテストする必要があり、このプロセスを容易にするためにチートコードを導入しました。初期のチートコードはManic Minerで見つけることができ、そこで「6031769」(マシュー・スミスの運転免許証に基づく)と入力するとチートモードが有効になります。[ 2 ] 1981 年にWizardry: Proving Grounds of the Mad Overlordがリリースされてから数か月以内に、少なくとも 2 つの市販のトレーナーが登場しました。[ 3 ] 1983 年にCastle Wolfenstein (1981)用の「The Great Escape Utility」の広告では、15 ドルの製品が「ゲームのあらゆる機能を再構築します。起動の遅延、クラッシュ、宝箱の待ち時間をなくします。任意のアイテムを任意の数量で入手できます。任意の部屋、任意のランクから開始できます。照準にハンディキャップを付けることができます。アイテムを追加することもできます」と約束していました。[ 4 ]
コンピュータゲームでは、すべての数値はメモリに「そのまま」格納されます。ゲーマーは、ゲームを起動する前に、ゲームの一部を再プログラムすることができました。多くの8ビットコンピュータのゲームでは、ゲームをメモリにロードし、起動する前に特定のメモリ アドレスを変更して、無制限のライフ、通貨、無敵、透明化などを得るチートを行うのが一般的でした。このような変更は、POKEステートメントによって実行されました。Commodore 64、Amstrad CPC シリーズ、ZX Spectrum では、適切なカートリッジまたはMultifaceアドオンを備えたプレイヤーは、実行中のプログラムをフリーズし、POKE を入力して再開することもできました。一部のゲームは Multiface を検出して、それが存在する場合はロードを拒否しました。初期のモデルには「非表示」機能はありませんでした。後のバージョンでは、スイッチが追加されたり、ゲームをロードする前にメニューが開いて閉じられた場合に非表示になったり、自動的に非表示になったりしました。
例えば、ZX Spectrum版のKnight LorePOKE 47196,201では、無敵状態が実現されています。Crashなどの雑誌には、こうしたゲームのPOKE命令リストが定期的に掲載されていました。それらを見つけるには、ハッカーはマシンコードを解読し、ライフ数が減ったり、衝撃が検出されたりする重要なポイントを特定する必要がありました。POKEという用語は、このような特定の意味で使われることもありました。
初期のチートは難しかったため、技術志向のプレイヤーがチートを悪用しました。しかし、ゲームシステムが進化するにつれて、チートを商品としてパッケージ化して販売することで、チート産業が出現しました。[ 5 ]チートブック、ゲームガイド、チートカートリッジなどのチートを可能にするものは、チート産業の形成を助け、チートをゲーム文化の一部として定着させました。[ 6 ]しかし、初期のゲームではチートは普遍的に受け入れられていたわけではありません。ゲーム雑誌のAmiga Powerは、チートは公平性の哲学の一部ではないという立場を取り、チートをする人を非難しました。彼らはまた、これを逆方向にも適用し、ゲームもプレイヤーを騙すことを許されるべきではないと主張しました。ガイド、ウォークスルー、チュートリアルはゲームをクリアするために使用されることがありますが、これがチートかどうかは議論の余地があります。さまざまなハッキング方法は、違法なものとしてのハッキングの概念における緊張と両義性に対する警告です。[ 7 ] その後、雑誌、ウェブサイト、さらにはコンソールやコンピュータシステムのチートやウォークスルーを掲載するテレビ番組「Cheat!」によって、チートはより人気になりました。 POKE のチートはトレーナーやチートコードに取って代わられました。一般的に、現代のシステムにおけるチートコードの大部分は、ゲーマーではなくゲーム開発者によって実装されています。多くの人がビデオゲームを自分でクリアする時間がないため、カジュアルゲーマーにとってゲームをよりアクセスしやすく魅力的にするためにチートが必要だと言う人もいます。[ 8 ]多くの場合、開発者はテストを容易にするためにチートを作成し、人々がゲームをプレイできる方法の数を増やしても、それらをゲーム内に残しました。[ 9 ]ゲームの人気が高まるにつれて、外部ソフトウェアやハードウェアを使用したチートは、ゲームコードの変更に関連する多くの著作権法上の問題を引き起こしました。
多くの現代ゲームでは、特定の秘密のボーナスをアンロックする場合を除き、チートコードが完全に削除されています。リアルタイムの実績追跡の使用により、どのプレイヤーもチートを行うことが不公平になりました。オンラインマルチプレイヤーゲームでは、チートは好ましくなく、禁止されており、多くの場合、BANにつながります。ただし、特定の条件を満たせば、シングルプレイヤーのチートがアンロックされるゲームもあります。また、Sourceエンジンを使用するゲームなど、開発者コンソールを使用して、シングルプレイヤーまたはサーバー管理者によってさまざまなチートを有効にすることができるゲームもあります。ビデオゲームは、古い形式のメディアと相互作用して、他の娯楽手段を開発してきました。[ 10 ] [ 11 ]
ゲーム内課金を採用している多くのゲームでは、チート行為は間違っているだけでなく違法であると考えられています。なぜなら、そのようなゲームでチート行為を行うと、本来は課金しなければ入手できないコンテンツ(パワーアップアイテムや追加コインなど)にプレイヤーがアクセスできるようになるからです。しかし、デジタルミレニアム著作権法に詳述されているように、既に所有されているソフトウェアを改変することに対する法律がないため、そのようなゲームでのチート行為は依然として法的にグレーゾーンです。[ 12 ]
最も基本的なタイプのチートコードは、ゲームデザイナーによって作成され、ビデオゲーム自体の中に隠されているもので、通常のゲームメカニズムの一部ではないあらゆる種類の異常な効果を引き起こします。[ 13 ]
チートコードは通常、秘密のパスワードを入力したり、コントローラーのボタンを特定の順序で押したりすることで有効化されます。[ 14 ]あまり一般的ではない有効化方法としては、特定のハイスコア名を入力したり、死亡時にキーやボタンを押し続けたり、特定の順序でアイテムを拾ったり、その他直感に反するアクションを実行したりすることが挙げられます。一部のゲームでは、ゲームパラメータを編集するために使用できるデバッグコンソールも提供される場合があります。効果としては、キャラクターのロック解除やキャラクターのパフォーマンスの向上などが挙げられます。たとえば、車の加速性能を向上させるなどです。[ 14 ]または、ゴールデンアイ 007の「ビッグヘッドモード」のような視覚的なギャグもあります。[ 15 ]一部のゲームでは、他のゲームのチートコードを使用すると、ユーモラスにペナルティが課せられます。たとえば、HereticでDoomのチートコードを使用すると、無敵になる代わりに即死したり、武器が提供される代わりに武器が剥ぎ取られたりするなど、目的とは正反対の効果が得られます。[ 16 ]
他のチート方法とは異なり、チートコードはゲーム開発者自身によって実装され、[ 13 ]多くの場合、ゲームの特定の側面を難なくプレイテストするためのツールとして使用されます。この種のチートの最も初期の例の1つは、1986年にコナミの開発者である橋本和久が、 1985年のアーケードゲーム「グラディウス」をニンテンドーエンターテインメントシステム用に移植する際に作成したコナミコマンドです。橋本は「アーケード版のグラディウスは本当に難しいですよね?私はあまりプレイしたことがなく、ゲームをクリアする方法がなかったので、いわゆるコナミコマンドを入力しました」と述べています。[ 17 ]
ボットとは、人工知能(AI)に基づいたエキスパートシステムソフトウェアの一種で、人間の代わりにビデオゲームをプレイし、有利な状況を作り出すための行動(反復的なものか否かを問わず)を実行する。
ゲームの実行中にゲームデータを改変することで、簡単にチートを行うことができます。これらのチート方法は、ゲームの作成者がゲームに含めたチートコードよりも信頼性が低い場合が多いです。これは、特定のプログラミングスタイルやゲーム内部ロジックの癖、ゲームの異なるリリースバージョン、あるいは同じゲームを異なる時間または異なるハードウェアで使用することによって、メモリ使用量が異なり、トレーナープログラムが効果を発揮しないか、ゲームの実行を完全に停止する可能性があるためです。[ 18 ]ゲームデータを改変することは、通常、プログラムの変更を一切禁止するソフトウェアライセンス契約に違反します。

メモリ編集によるチート行為とは、ゲームがステータス情報を格納しているメモリ値を変更することです。その方法は、ゲームが動作している環境によって異なります。

チートカートリッジは、家庭用コンピュータやゲーム機のインターフェースポートに接続されます。これにより、ユーザーはゲームの実行前または実行中にゲームコードを変更することができます。初期の例としては、ZX Spectrum 用のMultifaceがあり、それ以降のほぼすべてのフォーマットでチートカートリッジが作成されました。例えば、 DatelのAction Replayデバイスシリーズなどです。この他にも、Genesis、NES、Super NES、Game Boy、Game Gearなどのゲーム機用のGame Genieがよく知られています。現代のディスクベースのチートハードウェアには、大規模なチートデータベースからゲームコードを変更するGameSharkや Code Breaker などがあります。後世代のゲーム機では、チートカートリッジはチートディスクに置き換えられ、ゲームディスクをロードしてメイン実行ファイルを変更してから起動するシンプルなローダープログラムが内蔵されています。
この種のデバイスの合法性については疑問視されており、例えば、Lewis Galoob Toys, Inc.対Nintendo of America, Inc.の訴訟では、任天堂がLewis Galoob Toysを訴え、同社の不正デバイスであるGame Genieがゲームの二次的著作物を作成し、著作権法に違反していると主張したが、敗訴した。
これを実現する最も基本的な方法は、メモリエディタソフトウェアを使用することです。このソフトウェアを使用すると、プレイヤーは特定のメモリアドレス内の数値データを直接編集できます。この種のソフトウェアには通常、メモリ検索機能が搭載されており、プレイヤーが既知の値(残機数、スコア、体力レベルなど)が格納されているメモリ領域を特定するのに役立ちます。メモリアドレスが指定されると、メモリエディタはそのアドレスを「フリーズ」し、ゲームがそのメモリアドレスに格納されている情報を変更できないようにすることもできます。
ゲームトレーナーは特殊なタイプのメモリエディタであり、特定のコンピュータゲームの実行時メモリを変更するための定義済み関数がプログラムに付属しています。[ 19 ]配布されるトレーナーには、多くの場合、タイトルに「+」と数字が1つ追加されており、これはトレーナーが利用できる変更の数を表しています。[ 19 ]
1980年代から1990年代にかけて、トレーナーはクラッキンググループによってゲーム本体に直接組み込まれるのが一般的でした。ゲームが最初に起動されると、トレーナーは通常、独自のスプラッシュ画面を表示し、トレーナーに関連するオプションの変更を可能にする場合もあり、その後、実際のゲームへと進みました。クラッキンググループのリリースリストや紹介文では、トレーナーのオプションごとに1つ以上のプラス記号がゲーム名の後に付けられていました。例えば、「Mega Krew presents: Ms. Astro Chicken++」のようにです。
多くのエミュレーターには、ゲームの実行中にプレイヤーがデータを変更できる機能が組み込まれており、Game Genieのようなチートハードウェアをエミュレートできるものもあります。さらに、一部のエミュレーターは、プレイヤーがデータの編集内容をエクスポートおよびインポートできるようにしています。コンソール向けゲームの編集テンプレートは多数収集され、チートパックとして再配布されています。
エミュレーターは、エミュレートされたマシン全体の状態を任意の時点で保存できるという利点も提供することが多く、ゲーム自体にセーブ機能がない場合でも、ゲーム内の任意の時点でセーブすることが可能です。「インスタントリプレイ」などのチート機器も、一部のゲーム機で同様の動作を可能にします。
メモリ編集よりもやや特殊なコードインジェクションは、 POKEコマンドなどを使用して、ゲームの実行中の実行可能コードを変更するものです。ZX SpectrumコンピュータのJet Set Willyの場合、人気のチートとして、プログラム内のZ80命令DEC (HL)(ライフを1つ減らす役割を担っていた)をに置き換えるというものがありNOP、これによりプレイヤーは実質的に無限のライフを得ることができました。[ 20 ] Microsoft Windowsでは、 DLLの使用によるビデオゲームのハッキングが一般的です。ユーザーはサードパーティのプログラムを使用して、選択したゲームにDLLを注入します。[ 21 ]
セーブデータを編集することは、ゲームデータを間接的に変更する手段となります。永続ストレージ内のファイルを変更することで、ゲームがセーブデータをロードしようとした際に復元される実行時ゲームデータを効果的に変更することが可能です。
16進エディタは、セーブデータファイルを編集する最も基本的な手段でした(例えば、『デューンII』のような戦略ゲームでプレイヤーに多額のお金を与える場合など)。しかし、ゲームエディタと同様に、専用のゲーム編集ユーティリティがすぐに登場し、特定のゲームのセーブデータを簡単に編集できる機能などが搭載されたため、16進エディタはこの用途ではほとんど使われなくなりました。
セーブデータが複数のファイルに保存されている場合、これらのファイルを組み合わせるだけで不正行為を行うことが可能です。例えば、あるファイルが宝箱の中身を表し、別のファイルがプレイヤーの持ち物を表す場合、プレイヤーは宝箱からアイテムを取り出す前と後にゲームを保存し、アイテムを取り出す前の宝箱ファイルと、その後の持ち物ファイルを使ってゲームを続けることができます。プログラムのロジックがアイテムの複数所持を制限しない限り、プレイヤーはアイテムを繰り返し取り出すことで、アイテムを複数入手することが可能になります。
オンラインゲームにおける不正行為の別の方法として、クライアントとサーバー間の送受信ネットワークトラフィックを改変する方法がある。
この概念の初期の実装例の1つは、ラグスイッチに見られました。ラグスイッチとは、ネットワークトラフィックを一時的に制限するハードウェアまたはソフトウェアのメカニズムを指します。ほとんどのチートとは異なり、Xbox OneとPS4コンソールで使用できたため、人気が高まりました。ファーストパーソンシューターでは、ラグスイッチの一般的な用途は、プレイヤーにリスクを与えることなく敵の位置を把握できることでした。[ 22 ]
例えば、プレイヤーが部屋に敵がいるかどうか確信が持てない場合、ラグスイッチを起動してネットワークトラフィックを一時的に遮断することができました。これにより、プレイヤーは部屋に入って敵の位置を偵察することができ、その動きはゲームサーバーに送信されません。結果として、サーバー(および敵)の視点から見ると、プレイヤーのキャラクターは事実上安全な位置に留まっていました。プレイヤーは敵の位置に関する必要な情報を収集したら、ラグスイッチを解除して通常のプレイを再開することができました。その後、多くのゲームがラグスイッチの効果を制限するために「アンチデシンク」対策を実装しました。これには、接続が切断された場合にクライアントゲームがプレイヤーの移動を阻止するなどの対策が含まれます。
より現代的な手法では、通常、「中間者攻撃」スタイルの低レベルなパケット編集や偽造が用いられます。例えば、対称暗号鍵をゲームのメモリから読み取ることで、受信パケットへのアクセスが可能になります。これらのパケットを編集することで、クライアントゲームにサーバーの現実を反映しない情報を提供できます。つまり、敵プレイヤーが移動速度を低下させる能力を使用した場合、減速係数の詳細を示すパケットを低い値に変更することで、クライアントゲームに低い値を適用するように操作できます。このような手法は、単純なメモリ操作ほど一般的ではなく、通常は特定のシナリオでのみ使用されます。[ 23 ]
達成可能な実績やハイスコア記録、あるいはその両方が存在するゲームにおいて、チート行為は、不正行為を行わないプレイヤーが正当な手段では達成不可能または極めて困難な実績やスコアを簡単に達成することを可能にする。代表的な例としては、以下のようなものがある。
マルチプレイヤービデオゲームでは、チート行為が蔓延している。シングルプレイヤーゲームを容易にするためのチートコードなどの手段は以前から存在していたが、マルチプレイヤーゲームでは開発者はしばしばチート行為を防止しようと試みてきた。しかし、最初の人気インターネットマルチプレイヤーゲームが登場したことで、チート行為は新たな局面を迎えた。以前は、ほとんどのゲームがローカルネットワークやコンソールでプレイされていたため、他のプレイヤーがチート行為をしているかどうかを見分けるのは比較的容易だった。インターネットの登場によりマルチプレイヤーゲームの人気が高まり、プレイヤーに匿名性が与えられ、チート行為に関する情報が共有されるようになったことで、状況は一変した。
一人称視点シューティングゲームにおけるチートの例としては、エイムボット(プレイヤーがターゲットを狙うのを補助し、ユーザーに不公平なアドバンテージを与える)、ウォールハック(プレイヤーが固体または不透明なオブジェクトを透過して見ることができる、またはテクスチャを操作または削除できる)、メッシング(ゲーム開発者が意図していない方法でアイテム/NPC/プレイヤーを別のオブジェクト/プレイヤー/場所のグラフィック境界に押し込む行為)、ESP (他のプレイヤーの情報を表示する)などがあります。また、ターゲットのヒットボックスのサイズを大きくして、ターゲットの近くに当たったショットがヒットとして認識されるようにするチートもあります。
オンラインのトレーディングカードゲームにおいて、デバイスをジェイルブレイクして複数のアカウントを作成し、より多くの報酬を得る行為は、アカウントを1つしか持っていないプレイヤーにとって不公平であるため、不正行為とみなされる可能性がある。
オンラインマルチプレイヤーゲームでは、プレイヤーはマクロスクリプトを使用してアイテムを自動的に見つけたり、敵を倒したりすることができます。World of Warcraft、Anarchy Online、EVE Online、EverQuest、Guild Wars、RuneScapeなどの大規模マルチプレイヤーオンラインゲーム(MMORPG)の普及により、ゲーム内通貨を現実世界の通貨と交換するようになりました。[ 29 ]これは仮想経済につながる可能性があります。仮想経済の台頭により、ゲーマーがマクロを使用して大量のゲーム内通貨を獲得し、それを現実の現金と交換するチート行為が発生しました。[ 30 ]現在、ほとんどの最新のオンラインゲームの利用規約では、アカウントの譲渡やゲーム内アイテムの現実世界の通貨での販売が明確に禁止されています。しかし、これらの規約の執行は企業によって異なり、検出と防止にはリソースが必要であり、プレイヤーをBANすると収益の損失につながるため、多くの企業はこのような取引を黙認しています。
オンラインゲームにおけるチート行為は、パブリックゲームサーバーではよく見られます。Battlefield 1942などの一部のオンラインゲームでは、PunkBuster、nProtect GameGuard、Valve Anti-Cheatといったツールを組み込むことで、チート行為に対抗するための特別な機能を備えています。しかし、アンチウイルス企業と同様に、一部のアンチチートツールは常に回避され続けており、アップデートによってチート作成者が保護を回避する新たな方法を見つけざるを得なくなるまで、その状態が続きます。
シングルプレイヤーゲームでは、開発者がチート行為を防ぐために利用できるプラグインが数多く存在します。難読化ツールは、コードを難読化して逆コンパイラで読み取れないようにしたり、イベント、プロパティ、メソッドの名前を変更したり、偽のコードを追加したりします。また、メモリ内の変数を暗号化したり、文字列をマスクしたりする機能もあります。アンチチートツールキットには、スピードハックの検出、プレイヤー設定の暗号化、時間チートの検出、ウォールハックの検出など、さまざまなツールが用意されています。これらのツールは、ほとんどのマルチプレイヤーゲームでも使用できます。
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ){{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ){{cite web}}: CS1 maint: url-status (リンク)