特に子供の頃にプログラミングを始めるきっかけになったので、いつも疑問に思っていたことが、ビデオゲームボットのしくみでしたか?さまざまな方法がたくさんあると思いますが、MMORPGの自動化についてはどうですか?それともFPSタイプのボットですか?
プレイヤーが作った自動化ボットについて話している。
ゲームを「ボット」するには、プログラムで2つのことを実行できる必要があります。ゲームで何が起こっているかを検出し、ゲームに入力を提供します。
ゲームで何が起こっているかを検出することは、2つのうちでより困難になる傾向があります。これを行うためのいくつかの方法は次のとおりです。
通常、ゲームに入力イベントを生成する方が簡単です。いくつかの方法は次のとおりです。
ゲームで「ボット」を実行すると、通常、ゲームの利用規約に違反することになり、一時停止、禁止、またはそれ以上の事態につながる可能性があります。一部の法域では、これにより刑事罰が科せられる場合があります。これは、ゲームの組み込みスクリプト機能を使用するためのもう1つの利点です。ゲームソフトウェアの一部となるように設計されている場合、ゲームパブリッシャーは、その使用を禁止することはほとんどありません。
簡単なMMORPGボットを自分で書いた後、 AutoHotkey を使用しました。
つまり、画面で敵の名前(ゲームのフォントを含む画像として保存されている)を検索し、スクリプトはその下の数ピクセルをクリックして攻撃しました。また、低すぎる場合は、ヘルスバーとポットを追跡します。
とてもささいなこと。しかし、私もAutoHotkeyを使用して作成されたWoWボットを知っています。そして、私は see 他の多くの人々が同じ考えを持っていました(私のものはWoWのためではありませんでしたが、おそらく違法でもありました)。
より高度な手法 画面をキャプチャせずに直接 ゲームのメモリを読み取る 。これを機能させるには、多くのリバースエンジニアリングを実行する必要があります。そして、ゲームが更新されると動作を停止します。
個人は毎日どのように行動していますか?
これは、ゲームのAIが解決する問題の一種です。
エンティティに何をしてほしいですか?それを行うようにエンティティをコーディングします。モンスターにプレーヤーのアバターを追跡させたい場合は、モンスターはアバターに向かい合って、それに向かって移動する必要があります。そのモンスターが適切な距離内に入ると、プレーヤーのアバターを噛むことを選択できます。この選択は、AmICloseEnough(monster, player);
のように単純な場合もあれば、さらに複雑な場合やランダムな場合もあります。
FPSのボットは、完璧にするのは簡単ですが、楽しくするのは簡単ではないので、正しく理解するのが難しいです。例えば。プレイヤーがどこにいるかを常に正確に把握しているため(gPlayer.GetPosition()
)、毎回プレイヤーの頭を撃つことは簡単です。ボットを人間のように動かすには、少し「芸術」が必要です。
それはAI(人工知能)と呼ばれ、複製するのはそれほど難しくありません。ゲームのプログラミング言語の一連のルールとコマンドがうまく機能します。たとえば、FPSボットは、プレーヤーの体の座標を取得し、その座標を狙って敵ボットの銃を設定し、特定の範囲内で射撃を開始することで機能します。
FPSスタイルのボットについては、Unreal Development Kitをご覧ください。私が理解しているように、これには実際のゲームのソースコードがたくさんあります。
btaはとても良い返事をくれました。私は、さまざまな方法がゲーム会社によるさまざまな検出手段の影響を受けやすいことを付け加えたかっただけです。メモリモニタリングまたはパケット分析によるゲームクライアントへのハッキングは、通常、より簡単に検出できます。あなたは非常に簡単に捕まることができるので、私は一般にそれをお勧めしません。
入力エミュレーションで使用される画面スクレイピングは、一般的に、ゲームをボットして捕まらないための最も安全な方法です。多くの人々(私も含む)は何年も問題なくそれをやっています。
さらに、ゲームで何が行われているのかを検出してから入力を提供するまでのステップを追加するために、ゲームによっては、ゲームに提供する入力の種類を決定する前に大規模な計算が必要になります。たとえば、敵を攻撃するときに送信する船の数を計算しなければならないゲームがありました。これは、私が持っている船の数、船の種類、および誰とどのような種類の敵に基づいていました。通常、ほとんどすべてのプログラミング言語で計算できるため、計算は通常「簡単な」部分です。