見出し画像

【BDSP】なぞのかけら集めを自動化してみる!【poke-controller】

BDSPにて伝説ポケモン集めをしててつらいこと
そう、なぞのかけら集めという地下労働…
今回はこれの自動化にチャレンジしてみました。
プログラムがほしいだけという方はダウンロードの項まで飛んでください


動作の流れ

地下に潜り壁に沿って斜め移動しながら
一定距離進んで採掘可能な個所がなければ地上に戻り
採掘可能な地点があればそこを掘る、そして地上に戻る
以上をなぞのかけら必要数が集まるまで繰り返します。

言葉にしてみれば単純なのですが
これをプログラムで書いてみると思ったよりも複雑に…
とりあえずは放置で動き続けてくれるように出来たので満足

以下、どれだけの人に需要があるかわかりませんが
詳細について書いていきます。

プログラムの構成

このプログラムは大まかに探索パートと採掘パートの
2つに分けて書いてみました。

探索パートについて

ここはできるだけシンプルに、確実に動いてくれるような
動作のみにしています。

効率的には採掘可能な光ってる箇所を画像認識で読み取りそこに向かうよう
するのが一番いいのでしょうが…
どうしても識別箇所の画像サイズが小さくうまく認識してくれなかったり
誤認識してしまうことが多かったので
斜め移動しながらRボタンとAボタンを連打するだけの簡単な動作にしました
効率よりも安定性を取った感じです。

採掘パートについて

探索パートにて採掘が開始されると採掘パートへと移り
採掘を始めます。
ここの処理にとにかく悩みまくりました…

BDSPの化石掘りは縦10マス、横13マスの範囲で掘っていくわけですが
なぞのかけら大が生成されさえすれば確実に掘るための掘り方があります。

この画像の■印がついた部分を掘れば3×3のなぞのかけらのどこかにヒットするわけですね
そして、そこを画像認識を使って掘り出せば自動で掘り続けてくれる
プログラム完成ー

…と行きたかったのですが


読み取り範囲が小さいためスルーしてしまうことが多発
かといって閾値を下げると誤認識してピッケルの残り数を無駄に消費してしまい崩壊…とそんな板挟みのような状況

最終的に1か所だけで識別させようとしてるから難しいのであって
2か所(掘り当てた個所とかけらの中心と思われる場所)で両方とも
画像認識を通ったものをなぞのかけらLとして採掘を行うようにしました。

2つの■にてなぞのかけらと認識されれば3×3の範囲を採掘

これがそこそこ成功、体感6~7割ぐらいでなぞのかけらLを採掘できるようになりました。
(とはいえ100%ではないので普通にスルーしたり誤認識して掘り続けたりする…)

なぞのかけらSについてはわりと掘り出せるのであまり難しいことはせず
画像認識1回だけで掘り出す動作をさせるようにしました。

ダウンロード

・言語は漢字ひらがなのみ対応しています

v1.0 とりあえず動く初期バージョン
v1.1 採掘アルゴリズムの見直し

前提

poke-conを用いた画像認識が使える環境があることが必須となります。
導入に関しては「ポケコン導入 arduino」等で検索すると
わかりやすく解説されているページがあるのでそちらを参照してください。

また、ゲーム内でハマナスパークが解放されている必要があります。
(解放されていないとなぞのかけらが生成されない)

使用方法

「BDSP_nazo.py」を下記のフォルダへ格納する
  Poke-Controller-master\SerialController\Commands\PythonCommands

「BDSP_nazo」という名前のフォルダを下記へ格納する 
  Poke-Controller-master\SerialController\Template

道具の登録を「たんけんセット」のみにしておく

フタバタウン内であればどこでも可

フタバタウンへと移動して本コマンドを実行
(ほかのところでも大丈夫ではあるけど効率が下がります)

BDSP なぞのかけら集め自動化」と書かれたコマンドが本プログラムです。

あとがき

BDSPの自動化したい部分は自動化できたかなと思います。
今回、勉強したこと生かしつつエラーに強くするにはを考えながら
書いてくのはパズルを解いてるみたいで楽しかったです。
正直なところ改善できる箇所は多いような気もするけど…
とりあえずほったらかしで集め終えるまで動き続けてくれるので
ヨシということで!

ここまで見てくださりありがとうございました。


この記事が気に入ったらサポートをしてみませんか?