2021/12/11

【BDSP×Arduino02】経験値稼ぎ自動化(地下労働)

 ※本記事は、ポケモンBDSPの経験値稼ぎを自動化するプログラムについて解説した記事です。ポケモンBDSPの操作をArduino Leonardoで自動化しております。「Arduinoって何?」って方は剣盾の00回目の記事を、Arduinoの環境構築(ライブラリ含む)は01回目の記事をご覧ください。

  

2022/04/26追記:Ver1.01公開しました。山男で回復するための右移動についてミスがあったので修正(×5と÷5を間違えていました)


本記事では、このプログラム(スケッチ)でできることや原理を解説したうえで、スケッチを配布しています。とにかくスケッチが欲しいという方は下へと読み飛ばしてください。


 

きっかけ、動機

ポケモンBDSPのメニューバグがアプデ1.1.2で改善したので再開しました(といいつつ旧ダイヤモンドやってます)。ストーリー後のやり込みといえば育成、厳選。ですが剣盾のぬるま湯育成環境に慣れた私には、BDSPの育成環境はしんどい。まずはレベル上げ。

旧DPであれば、育て屋に預けて歩き続ければLv100にできましたが、今回はできない。近年の経験アメやハピナス道場、その他育成施設もない。というわけで野生ポケモンとの戦闘によるLv上げを自動化します。 

四天王チャンピオンは強すぎてA連打放置は安定しないかな・・・


これで何ができるの?

地下大洞窟には、旧作と異なりポケモンの隠れ家にて野生ポケモンが出現します。剣盾ワイルドエリアと同様、ストーリー進行と共に野生のレベルが上がり、殿堂入り後はLv60以上が出現します。その辺の草むらで育成するよりは効率が良いかと思います。

また、地下大洞窟には、一部箇所にポケモンを回復してくれる山男が出現します。この回復を利用し、地下にこもったまま半永久的に野生ポケモンとの戦闘を繰り返します。 

なお、殿堂入り後の使用を想定しておりますので、殿堂入りまで進めてから使用してください。


原理、おおまかな流れ

概要

はじめに原理、動作について解説した後、経験値稼ぎを効率化するための育成場所や準備について解説します。

 

原理・動作について

本プログラムでは、

①回復をしてくれる山男のところからスタート、ポケモンの隠れ家(部屋)に入る
②左右の移動を繰り返し、ポケモンとの戦闘や隠れ家の出入りを繰り返す
③しばらくしたら回復山男のところへ戻り、回復してもらう

を繰り返します。後述するように、以上の動作は左右の十字キーによる移動とA,Bボタンの入力のみで完結するため、動作としては簡単なものとなります。


以下では、これらの動作をいかに簡単に、効率よく行うかを考察していきます。


育成場所について

ここからは、上記動作を効率よく行うための場所選びです。

 以下の図は、地下大洞窟のマップとなります(ポケモン徹底攻略 様の図をお借りし、改変させていただいております)。


 赤丸で示したのが、回復山男の場所となります。これら7か所について条件で絞り込んでいきます。

 

まず、移動や戦闘のしやすさについて考えます。

 動作を簡潔にするため、山男から隠れ家までの移動を左右の移動のみで完結させたいと考えました。上下の入力を含む場合、戦闘中に「たたかう」コマンドなどを選択できないことがあり、その対策をするために余計な動作を必要とするためです。

この条件に該当するのが、水色四角で示したA,B,Cの3か所となります。 


続いて、A~Cの山男と隣接する隠れ家について考えます。Aは「吹雪の空洞」、BとCは「広めの空洞」となります。この2つを比較した結果、Aの吹雪の空洞の方が効率が良いと判断しました。

吹雪の空洞を選ぶ利点として、以下が挙げられます。

もらえる経験値の量が多いトドゼルガが出現する(基礎経験値265)。また、同じ水タイプのポケモンがトドゼルガ系統とジュゴン系統(BDのみ)であるため、秘密基地での出現率アップを狙いやすい。
②出現するポケモンの種類が多くないため、1種類のポケモンと技での攻略、対策がしやすい。

対して、吹雪の空洞の欠点(≒広めの洞窟の利点)は以下。

1⃣頑丈を特性にもつポケモンが出現する(コイル、ココドラ、コドラ)。特にココドラはLv60でメタルバーストを覚えるため少し危険。広めの洞窟ではコイル、イシツブテ、ゴローンが出現するが
2⃣静電気をもつモココやエレキッド(BDのみ)がいるので、接触技の使用は非推奨。(+吹雪、広め双方に威嚇ルクシオなど)

 特に①の経験値量を重視し、Aの吹雪の空洞を前提に環境構築します。広めの洞窟が良いという場合は、本プログラムを改変してみてください(左右の方向転換など調整)。

Aの地点までは、キッサキシティから探検セットを使い、右下方向へ進んでください。

 

秘密基地について

次に、出現ポケモンの調整について考えます。

今作の秘密基地では、「家具を置く」「旗を取り合う」などの要素がなくなった代わりに、ポケモンの石像を発掘して置くことができるようになりました。

ポケモンの石像を置くことで、そのタイプに応じたポケモンの出現率が上がるようです。色違いの石像や伝説ポケモンの石像は効果が高いようです。

最も効果の高いタイプについて「○○タイプの出現率が~アップ」と表示されますが、実際は表示されていない2番目、3番目・・・と効果の高いタイプについても量に応じて効果が出るようです。

今回の吹雪の空洞で置くべき/べきでない石像の優先順位は以下の通りです。

岩、鋼、電気タイプの石像を置かない(頑丈もちポケモンを出現させない、電気タイプによる麻痺を防ぐため)。
水タイプの石像を置く(トドゼルガ出現のため)
③氷タイプの石像を置く(同上、ただし氷はウリムーやニューラなども増加し経験値効率が下がる)
④エスパーやフェアリーを置く(バリヤードがそこそこの経験値、気休め程度に)

以上の条件に従い、持っている石像を配置してください。


使用するポケモン、技について

上記「原理・動作について」で解説した通り、左右移動とA、Bボタンのみで動作するため、戦闘時は1番上のポケモンの1番上の技を選択して攻撃します。

ここでは、主に使用する技について考えていきます。

前提として、命中100の非接触技について考えます。命中率は攻撃を外すなどの不確定要素を減らすため、非接触技は特性:静電気を引かないようにするためです。

以下、各タイプの技の考察をします。見なくていい場合は飛ばしてください。

ノーマル〇ばくおんぱ、ハイパーボイス、トライアタックなど
コドラなどに1/4にされる。ただし、確2圏内であればメタバ対策にありかもしれない。バクオングの眼鏡爆音波は1/4でも吹き飛ばす破壊兵器

ほのお▲
仮想敵であるトドゼルガが厚い脂肪により1/2くらいで耐えてくるため非推奨。

みず▲
仮想敵であるトドゼルガが半減で耐えてくるため非推奨。

でんき×
ウリムーに無効化されるため使用不可。

くさ◎エナボ、ギガドレ、くさのちかいなど
コイルとチルット以外に半減されないため有力。使える技やポケモンも多め。

こおり×
仮想敵であるトドゼルガに1/8にされるので使用不可。

かくとう△
チルット半減、バリヤード1/4以外は問題なし。ただし、バリヤードに耐えられるとフラフラダンスをしてくるためイマイチか。

どく×
コドラなど鋼に無効のため使用不可。

じめん×
チルットに無効のため使用不可。

ひこう○(ペリッパーあめふらし暴風、エアスラ+広角など)
コドラやコイルなどに1/4、ルクシオパチリスモココなどに1/2。電気組に麻痺バグされまくると自動化停止しますが基本は問題なし。ただし特殊飛行技に命中安定が少なく、広角レンズをもたせるか5%外しを考慮して動作に余裕をもたせるか。Lvの高いあめふらしペリッパーならメガネ暴風で電気技受けずに済むかな?

エスパー×
ニューラに無効の(ry

むし◎ むしのさざめきなど
半減されるのはコイル、コドラなど鋼、ゴーリキーやバルキーなど格闘、チルットやデリバードの飛行。半減は多いが、貫けるなら最有力メガヤンマなど色眼鏡さざめきならすべてに等倍以上の最適解

いわ◎パワージェムなど
コイル、コドラなど鋼、ゴーリキーやバルキーなど格闘に半減するだけなので有力。ほぼ唯一の選択肢のパワージェムはPP20と優秀ディアパルがBDSPのジェム最高火力なぜルナトーンからパワージェム取り上げた?

 ゴースト×
ゴンベなどノーマルに無効の(ry

ドラゴン×
バリヤードに無効(ry

 あく◎あくのはどうなど
半減はゴーリキーやバルキーなど格闘とニューラのみのため有力。悪の波動ほぼ一択、使えるポケモンは多い。

 はがね〇ラスターカノン
コイルに1/4、その他ルクシオやパチリスなど電気、ダンバル、パウワウ(BDのみ)に半減。コイルくらいなら何とかなるが、電磁砲が怖い。ラスターカノンくらいしか選択肢がない。

 フェアリー◎ムーンフォース、マジカルシャインなど
コイル、コドラなど鋼に半減されるほかは等倍以上のため有力。タイプ一致で使えるのはピクシー、サーナイトがムンフォ、他にバリヤードやトゲキッスなどマジカルシャイン。ただしコドラが頑丈で耐えてアイアンテールなどを撃ってくるので耐久には注意。

 

以上をまとめると、

最適解のポケモンを用意する(Lv100、C特化眼鏡)ならディアルガorパルキア@パワージェム(PP20)

伝説を使わない最適解ならヘルガードンカラスシザリガーetc@あくのはどう、あるいはピクシーやサーナイト@ムーンフォース(PP15)

個体値性格努力値など適当でも手っ取り早く安定ポケモンを作りたいならメガヤンマモルフォンetc@むしのさざめき+いろめがね

その他、持っているポケモンで間に合わせるなら草虫岩悪妖、次点で無飛鋼あたりをタイプ一致で使えるポケモンから選択。1撃で倒せなくなると、回復が間に合わず技を選択できなかったり、敵の攻撃で倒されて止まる可能性があります。


条件に合うポケモンのレベルをある程度上げ、安定する技を先頭に置き、こだわり眼鏡など火力アイテムをもたせてください。PPが増えれば回復の頻度を減らすことができ、経験値効率が上がります。ただしポイントアップは大切に。

また、使用するポケモンは、これ以上レベルアップしても技を覚えない状態まではレベルを上げてください。自動化中に技を覚えた場合は先頭の技が書き換わるため、準備していた技が消されてしまいます。 


手持ちの1番上を上記条件を満たしたポケモン、2~6番目は育成したいポケモン(しあわせタマゴ持ち推奨)にしてください。なお、育成するポケモンの1番上の技はA連打により新しい技へと入れ替わり続けます。そのため、技調整はLvを上げた後に行う(ノモセシティにて)か、1番上の技を消していいものにしてください。

 

回復の頻度について

以上の準備を終えたら、プログラムを書き込む前に設定項目を編集してください。

自動での戦闘における理想の動きは、PPを使い切る直前まで戦闘を繰り返し、なくなったら回復にいくこととなります。ただし、隠れ家でのポケモンの配置次第では戦闘することができなかったり、PPを使い切った後でも避けることができずに戦闘突入したりするため、効率と安定の両方を考慮したうえで設定する必要があります。

本プログラムでは、使用するポケモンや技によって戦闘の安定性が変わるため、設定を変更しやすいようにしました。

設定項目は①左右移動を繰り返す回数、②回復山男まで戻りに走る時間、の2つです。

 ①左右移動を繰り返す回数では、左右の移動20秒ずつを1ループとして、何ループさせるかを設定できます。戦闘時間は1戦あたり30秒程度ですが、戦闘が2ターンなどに長引いた場合は安定しません。 

基本的には、使用するPP数÷2の値を設定してください。そこから様子を見つつ増減させて調整してください。初期値では、PP10の技を使用することを前提として5回に設定しております。

 

回復山男まで戻りに走る時間は、左右移動のループが切れた後に、右方向にいる山男まで戻るために走り続ける時間を設定します。直線状にポケモンがいる場合は戦闘を行いつつ戻るため、その時ごとに戻るまでにかかる時間が変わります。そのため、安定させるにはある程度長めに時間設定する必要があります。一方、山男まで戻った後は、設定した時間が過ぎるまでA連打を繰り返すため時間のロスとなります。

 用意したポケモンなどに応じて、戻るまでにかかる時間が多少変わります。また、時間が最もかかるような状況はめったに起こらないため、最大時間を算出して設定した場合でも99%以上の動作では無駄に時間をかけることとなります。そのため、用意したポケモンの他に、本プログラムを放置し続ける時間に応じて時間を設定してください。効率と安定のトレードオフを判断し、各自に合った設定を見つけてください。初期値では、数時間くらいの放置を想定して120秒を設定しております。

 

準備、必要なもの

本スケッチでは、上記の以下の準備が必要となります。

1.連戦させるポケモンを用意する
 できるだけLvの高く倒されにくいポケモン
  1番上の技は非接触(静電気対策)で命中100、タイプは草虫岩悪妖を推奨。次点で無飛鋼。
  吹雪の空洞に出現するすべてのポケモンを2発以内で倒せるようにする(こだわりメガネなど持たせる)

 2.地下大洞窟内のひみつきちへ行き、石像を置いてトドゼルガ等の出現率を上げる
  吹雪の空洞に水タイプはトドゼルガ系統+BDのみジュゴン系統
  出てきてほしくないのは頑丈もちのコイル。ココドラ、コドラ(特にココドラは頑丈メタバ)
  そのため、置くべき石像の優先度は水(トド)>氷(ユキカブリやウリムー等含まれる)>超妖(バリヤード)。
  避けるべき石像は電鋼岩(頑丈)

 3.使用するポケモンの技や、本プログラムを動作させる状況に応じて、以下のプログラム中設定項目を変更(効率と安定のトレードオフ)

 4.手持ちの先頭を戦わせるポケモン(使う技を上にする)、2~6番目を育てたいポケモンにする

 5.キッサキシティから探検セットを使って地下へ潜り、マップ右下にいる山男(回復)の左となりに移動する

 6.マイコンを挿して自動化スタート、うまくいかないようなら設定項目を再調整。

 

作成したスケッチ

作成したスケッチはこちら。ver1.01。

2022/04/26追記:Ver1.01公開しました。山男で回復するための右移動についてミスがあったので修正(×5と÷5を間違えていました)

本スケッチを実際に使用した動画はこちら↓


 
/**
* BDSP用、地下大洞窟での経験値稼ぎを自動化。
* キッサキシティより入ることのできる洞窟マップのうちの右下にいる回復山男の左隣からスタートする。
* 吹雪の空洞にてトドゼルガ等の野生ポケモンと戦闘を繰り返し、経験値を稼ぐ。
* 空洞での出入り(横方向に1往復)を繰り返し、PPが減ってきたら回復
*
* 初期条件は以下の通り
* 1.連戦させるポケモンを用意する
*  できるだけLvの高く倒されにくいポケモン
*  1番上の技は非接触(静電気対策)で命中100、タイプは草虫岩悪妖を推奨。次点で無飛鋼。
*  吹雪の空洞に出現するすべてのポケモンを2発以内で倒せるようにする(こだわりメガネなど持たせる)
* 2.地下大洞窟内のひみつきちへ行き、石像を置いてトドゼルガ等の出現率を上げる
*  吹雪の空洞に水タイプはトドゼルガ系統+BDのみジュゴン系統
*  出てきてほしくないのは頑丈もちのコイル。ココドラ、コドラ(特にココドラは頑丈メタバ)
*  そのため、置くべき石像の優先度は水(トド)>氷(ユキカブリやウリムー等含まれる)>超妖(バリヤード)。
*  避けるべき石像は電鋼岩(頑丈)
* 3.使用するポケモンの技や、本プログラムを動作させる状況に応じて、以下のプログラム中設定項目を変更(効率と安定のトレードオフ)
* 4.手持ちの先頭を戦わせるポケモン(使う技を上にする)、2~6番目を育てたいポケモンにする
* 5.キッサキシティから探検セットを使って地下へ潜り、マップ右下にいる山男(回復)の左となりに移動する
* 6.マイコンを挿して自動化スタート、うまくいかないようなら設定項目を再調整。
*/

#include <auto_command_util.h>

// 以下、設定項目
// 1回の回復当たりの戦闘回数(≒PP数)と回復のために戻る時間の設定
// 戦闘回数を長く、戻る時間を短くするほど経験値効率が上がる一方、中断してしまう確率も上がる。効率をとるか安定をとるかを設定。
// こまめに目視確認できる状況なら[PP/2, 90]、数時間に1回の目視確認なら[PP/2, 120]、長時間の放置なら[PP/2 -1, 150]が目安。 

// 左右移動のループ回数を設定。1ループは左右に20秒ずつ。PP数に応じて回復するまでの戦闘回数を設定する。
// 使用するPP÷2程度を推奨
const int loopTimes = 5;
// ループ後、回復山男まで戻るための右方向長押し時間を設定。
// 120秒程度を推奨。ただし、極稀に足りないことがあるため、長時間放置するのであれば要延長。
const int backHome = 120;

// 以上、設定項目


// 地下大洞窟、キッサキシティから入ることのできるマップの中の右下にいる回復山男を基準として、左にある吹雪の空洞で戦闘を繰り返す
void moveLateralBattle(){
    // 回復山男の左となりからスタート
    // 空洞入り口までダッシュ6s
    SwitchController().pressHatButton(LEFT);
    SwitchController().pressButton(Button::B);
    delay(1000);
    pushButton(Button::A, 100, 25);
    SwitchController().releaseButton(Button::B);
    SwitchController().releaseHatButton();

    // 空洞内ではポケモンとのエンカウントのために徒歩、設定した回数だけループ
    for(int i=0; i< loopTimes; i++){
      SwitchController().pressHatButton(LEFT);
      pushButton(Button::A, 100, 100);
      SwitchController().pressHatButton(RIGHT);
      pushButton(Button::A, 100, 100);
    }

    // 右へダッシュし、山男まで戻る、設定した時間だけ右移動を続け、回復連打
    SwitchController().pressHatButton(RIGHT);
    SwitchController().pressButton(Button::B);
    pushButton(Button::A, 100, backHome*5);
    SwitchController().releaseButton(Button::B);

    // 移動をやめつつ、山男との会話を終了するためB連打
    SwitchController().releaseHatButton();
    pushButton(Button::B, 100, 50);
}



void setup(){
    //画面起動    
    pushButton(Button::B, 300, 12);
}

void loop(){
    moveLateralBattle();
    
}

 

最後に

本スケッチを使用することで、寝ている間や外出中などに経験値稼ぎが可能となります。YouTubeなど見ていても、「〇十万経験値!(Lv1のみ)」のようなものが多く、Lv100までの育成に役立つ方法があまりなさそうなので、育成後半に本プログラムを使ってみてください。一方でLv1から序盤の経験値稼ぎは「双子ボム」なり「ギャラボム」なり効率的な方法を数戦程度使った方が良いかと思います。

本プログラムの経験値稼ぎは、効率が良いわけではありません。昔でいうところの「育て屋に預けてからスティックを輪ゴムやテープで固定」の代わり程度にお役立てください。


プログラムの不備、改善点などありましたらコメントやお問い合わせからお願いいたします。

Arduino Arduino Leonardo (ピンソケット・ピンヘッダ実装済) 【A000057】
by カエレバ

 

0 件のコメント:

コメントを投稿

【ポケモンSV×arduino06】道具プリンター乱数自動化(藍の円盤)

 ※本記事は、ポケモンSVの藍の円盤(DLC)にて、 道具プリンター を決まった日時に起動することで 特定のアイテム、ボールを狙って量産する操作を自動化 するプログラムについて解説した記事です。ポケモンSVの操作をArduino Leonardoで自動化しております。 本記事の内...