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

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

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