フィリップはすでにほとんどのボットがどのように動作するかについて素晴らしい概要を示しましたが、私は彼がカバーしたすべてのタイプのボットで、または私が開発した少しの個人的な経験があるので、もう少し詳細に説明したかったです。
Runescapeには、メモリの内容をRunescapeクライアントからローカルメモリにコピーする大きなプロジェクト(RSBot)があり、クライアントがキャッチするリスクなしにゲーム全体の状態を表示できます。データへのポインタを見つけるためにメモリ内のどこを探すかを決定するには、少しリバースエンジニアリングが必要でしたが、いったんそれを行うと、情報を活用するためのAPIを公開しました。オブジェクトの座標を取得し、カメラ変換マトリックスで座標を変換して画面上の位置を取得することで、世界のどこにいるかを正確に把握できます。ヒットマスクも読み取り可能なため、目的の結果を得るためにマウスを移動する範囲を正確に決定するのは簡単でした。
ボットは、どのタイル座標がどこにあるか、このオブジェクトがどのIDを持っているか、特定のアイテムにどのIDが属しているかなどを開発者に伝える注釈などのデバッグ情報を提供しました。ボットスクリプトを作成する実際のプロセスは、実際には非常に簡単でした。フレームワークは、次のような多くのユーティリティ関数を提供move_to(world_coordinates)
またはmouse_move(x,y)
幾分信じられる方法(繰り返しミニマップとスクリーンの両方を介して移動する、ランダムスプラインに沿ってマウスを移動する、など)で指定されたアクションを実行することになります
また、Runescapeには、グラフィックの品質を大幅に低下させるオプションがあります。画面を撮影し、いくつかの基本的なコンピュータービジョンの概念を適用して世界のモデルを構築することで、特定の種類のボットを作成するのは実際には非常に簡単でした。この手法を使用して、呪いボットと製錬ボットの両方を作成しましたが、どちらも非常にうまく機能しました。フレームを取得し、できる限り彩度を上げてから、パターンを抽出してクリックゾーンの確率マップを生成します。
呪いボットの場合、ターゲットはより小さな悪魔でした。これはただの巨大な赤いもので、見つけるのは簡単です。製錬ボットの場合、灰色に囲まれた小さなオレンジの台形を探し、それが炉になります。また、銀行の机となる、大きな明るい灰色の「L」字型を見つけようとします。これは、ダウンスケーリングと基本的なヒューリスティックで行われました。また、ミニマップの横にある便利なコンパスで自分自身を方向付けることができるため、カメラをより信頼できる位置に向けてターゲットオブジェクトを見つけることができます。
さまざまなNexonゲームでは、サーバーはクライアントを非常に信頼しています。Maplestoryでこれを悪用したのは、マップを修正してハザードを削除したり、ワープを追加したりすることで、ボットがそれほど洗練される必要がないようにすることです。また、サーバーへのトラフィックとサーバーからのトラフィックを監視して、モンスターをすばやく見つけて殺すために使用できる世界のモデルを構築しました。
MMOを実際にはもうプレイしておらず、単にMMOを自動化していないことに気付いたら、プレイを完全に停止することにしました。私が合法的に自分自身を暴露することを心配していなかったなら、MMOボットを売って殺したかもしれませんが、私は本当に訴えられたくありませんでした。だからこそ、私は最近、実際のプログラミングに時間を費やしています!