スクラップブック集め
たいていのボットは、アリーナがたまたま出してきた 3 人を攻撃します。名誉のためな らそれで結構ですが、スクラップブックには役に立ちません。その 3 つの名前を選んで いるのはゲームであって、あなたに足りないものではないからです。
Mercy SF は裏で殿堂を巡回し、見かけたプレイヤーの装備をすべて覚え、次の攻撃を 全体で最良の、勝てる相手に送ります。つまり、あなたの本にまだ入っていないアイ テムを最も多く身につけている相手です。

auto_scrapbook で有効にし、arena_mode を Scrapbook にします。
母集団の仕組み
クローラーは、アカウントごとにプレイヤーとその装備の母集団をメモリ上に築きます。 以後の戦闘は、アリーナの提案一覧ではなく、この母集団から選ばれます。
母集団はセッションのあいだだけ生き、それ以上は残りません。これは意図的です。 保存しておくのは無料の知識に見えて、そうではありませんでした。
- 際限なく膨らみました。実測したあるアカウントは 119 MB で 187,136 人に達し、 20 分ごとに 20 MB ほどのペースでまだ増えていました
- 変更のたびにファイル全体を同期的に書き直し、しかもボットが戦闘相手を選ぶのに必 要で、アリーナ画面が描画に必要とするロックを握ったままでした。実測で 27 秒ごと に 119 MB の書き直しです
- 書き込みは原子的ではなく、読み込みに失敗すると空のキャッシュに落ちたので、書き 込み途中でクラッシュすれば結局は巡回の成果まるごとが黙って捨てられました
- キャッシュされた装備は、その人が身につけていたものの断面にすぎません。プレイヤ ーは絶えず装備を替えるので、再起動をまたいで残ったものの大半は誤りでした
実行のたびに取り直すというのは、これが着想を得た参考ツールがやっていることでもあ り、理由も同じです。
相手の選び方
母集団のプレイヤーは、攻撃に値するまでにいくつもの関門を通ります。
| 関門 | 設定 | 既定 | 意味 |
|---|---|---|---|
| レベル上限 | scrapbook_max_level_diff | 0 | 相手が自分より何レベル上まで許されるか。0 は「自分より上は不可」。 |
| レベル下限 | scrapbook_min_level_diff | 0 | 相手が自分より何レベル下まで許されるか。0 は下限なし。 |
| 強さ | scrapbook_max_attribute_pct | 120 | 相手の合計ステータスを自分の何パーセントまで許すか。100 なら「自分より強い相手は不可」。 |
| 除外リスト | arena_never_attack | 空 | 何を持っていようと決して攻撃しない名前。 |
| 生存 | サーバーが「プレイヤーが見つかりません」で拒否した名前は覚えて飛ばします。 |
レベルの上下 2 つの制限がどちらもあるのは、失敗の向きが逆だからです。はるか上の 相手には負けます。はるか下の相手には楽に勝てますが装備が低位なので、ほぼ完成した 本では無料戦闘を 1 回使って何も返ってきません。
結果を予測する力はレベルよりステータスのほうがはるかに上なので、実際に決めて いるつまみは scrapbook_max_attribute_pct です。既定の 120 は自分より 5 分の 1 まで強い相手を許すので、気づく程度の頻度で負けます。1 つも負けたくないなら 100 に 下げてください。
除外リストはすべての供給元に対して照合されます。アリーナの 3 つの提案、殿堂、 そしてクローラーの母集団。あなたが「ノー」と言った名前が、別の入り口から戻ってき てはいけません。
探索の帯
scrapbook_search_band_enabled はオンで、これは誰が資格を持つかではなく、母集団 をどう探すかを変えます。
育ったアカウントでは母集団は 6 桁に達し、その中で点数が最も高いプレイヤーはしばし ばレベル範囲の端にいます。それは勝てないか、価値がないかのどちらかの戦いです。そ こで探索は自分のレベルを中心とした帯から始まり、その帯が尽きたときにだけ広がりま す。
| 設定 | 既定 | 意味 |
|---|---|---|
scrapbook_search_band_start | 10 | 探索を始める帯の半幅、レベル単位。 |
scrapbook_search_band_step | 10 | 帯が尽きるたびに広がるレベル数。 |
scrapbook_search_band_max | 100 | 最初に戻るまでに帯が広がる最大幅。 |
最初に戻るとき、同時に整理も行います。上限まで全レベルを探しても相手が見つからな かったのなら、サーバーが空だというより、覚えている内容のほうが古びたと考えるのが 自然だからです。
古さ
scrapbook_cache_max_age_hours の既定は 72 です。キャッシュした装備は断面で あり、プレイヤーは絶えず装備を替えるので、1 週間前に取った記録は、その人が今何を 着ているかより、何を着ていたかを語ります。さらに悪いことに、すでに集め終えた一 式は、はじめから何の価値もなかった一式と見分けがつきません。0 にすると古さの扱 いは完全に無効になります。
消えた名前
プレイヤーは改名され、削除され、サーバーを移ります。サーバーは「プレイヤーが見つ かりません」と返し、記憶がなければ古びた母集団の 1 件がこのエラーを広めて、モジュ ール全体を 1 時間止めてしまいます。これらの名前はアカウントごとに覚えるので、ある アカウントの消えた相手が、別のアカウントにとって申し分ないプレイヤーを隠すことは ありません。
この集合は 1 万件までです。そこに達するというのは、実際のセッションよりはるかに入 れ替わったということなので、いったん空にし、まだ意味のある少数の名前は 1 件につき 1 回の無駄な照会で学び直します。
巡回の速さ
設定は 2 つで、役割が違います。
| 設定 | 既定 | 何を制限するか |
|---|---|---|
scrapbook_max_hof_lookups | 20 | ボットの 1 サイクルあたりの照会数。 |
scrapbook_crawl_requests_per_min | 60 | アカウント全体での 1 分あたりの照会数。0 で上限なし。 |
毎分 60 はおおよそ毎秒 1 件を継続する速さです。母集団を絶えず育てるには十分で、サ イクルあたりの予算だけを上げたときに起きるような、まとまった要求の山を作りませ ん。だからこそ両方あります。巡回をもっと強く回したいなら、両方を上げてください。
そのほかの設定

| 設定 | 既定 | 内容 |
|---|---|---|
auto_scrapbook | オン | モジュールそのもの。 |
scrapbook_crawler_enabled | オン | アリーナの提案を読むだけでなく、殿堂を継続的に巡回する。 |
scrapbook_after_xp_wins | オン | 経験値優先の戦闘を終えてからスクラップブックの相手を狙う。 |
scrapbook_scan_arena_opponents | オン | アリーナが出す 3 人の装備も記録する。これは無料の情報です。 |
scrapbook_early_game_priority | オン | キャラクターが低レベルのうちはスクラップブック戦を優先する。本が最も速く埋まる時期だからです。 |
scrapbook_hof_rankup | オン | アイテムのためだけでなく、殿堂を上るための候補一覧も維持する。 |
scrapbook_notify_at | 0 | 本のアイテム数がこの数に届いたら知らせる。0 は通知しません。 |
buy_scrapbook | オン | ゲームが販売しているところではスクラップブックの項目を購入する。 |
判断が行われている場所
ソースを読むなら知っておくとよいことです。スクラップブックはかつて独立したボット モジュールでしたが、それは誤りでした。これとアリーナのモジュールは、どちらもアリ ーナのクールダウンは自分のものだと思い込み、互いの関門を写し合い、勝率の下限が無 料戦闘に拒否権を持てるかどうかで食い違っていました。
判断する側は今、戦闘モジュールにあります。「スクラップブック」の下に残っているの は、母集団を選ぶに値する状態に保つ仕掛けです。クローラー、古さの扱い、レベル制 限、そして順位上げ用の候補一覧です。