メリークリスマス!
アザリままみです。
今日はほんの一言になりますが、
ポケットモンスタースカーレットバイオレットの自動化シリーズの一連として、
不具合について、です。
キー入力の不具合について
わたしはポケットモンスタースカーレットバイオレットの発売日当日にプレイしはじめ、
1週間でクリアし、
いつもどおり自動化のためのコードを書く作業に移りました。
実は11月中にはいくつかの作業を自動化するコードを書いてテストで動かしながら調整をする段階にはいました。
しかし、どうも安定しないのです。
特に危険なのが指定ボックス分のポケモンを逃がすコードです。
危険なことに逃がしたくないポケモンを逃がしてしまうことがありました。
また、未だに解決しきれておりませんが、たまに、ポケモンにアイテムを持たせたり、と期待していない動作になってしまいます。
概ね「にがす」の上にスライドしてマークを付けるところをループしてますけれど。
結論から言えばスカーレットバイオレット特有の、キー入力の受付が不安定な事に起因しているようです。
入力テストについて
次のスケッチでボックス内操作および、ボックス内ポケモンを選択後のメニュー操作をテストしました。
void test(){
svopenbox();
pushHatButton(Hat::DOWN, 300, 1);
pushButton(Button::A, 300, 1);
pushHatButton(Hat::DOWN, 300, 1);
for(int i = 0; i < 10000; i ++){
pushHatButton(Hat::DOWN, 300, 1);
//tiltJoystick(0, 100, 0, 0, 200);//下
delay(100);
pushHatButton(Hat::UP, 300, 1);
//tiltJoystick(0, -100, 0, 0, 200);//上
delay(100);
}
//iltJoystick(-100, 0, -100, 0, 10000);
}
これはメニューからボックスを開き、ポケモンを選択した先のメニューにおいて上下のキー入力を一万回繰り返すものです。
これを目で見ながら何度かテストしたのですが、
大体1万回の入力で6~10回くらいキー入力がドリフトしてしまいます。
1回の入力が2回分受け付けられてしまう感じです。
上キーが多いようです。
スケッチのとおり、ジョイスティックに変えても同じ現象がおこります。
ここはもうなるべく入力回数を減らしていくほかになさそうです。
今までのシリーズ、ソードシールド、ダイヤモンドパールリメイクも、様々な自動化をしてきましたが、
この現象は今作で初ですので、今作特有のものと思われます。
これの他にも処理がもたついたり、と不具合見られますので、その一貫かもしれませんね。
追記:左右テストのサンプルです。
void test2(){
for(int i = 0; i < 10000; i ++){
pushHatButton(Hat::RIGHT, 300, 3);
pushHatButton(Hat::LEFT, 300, 3);
}
//iltJoystick(-100, 0, -100, 0, 10000);
}
おわりに
この記事ではキー入力の受付ミスについて述べました。
これは自動化していくのに障害となっています。
何か対策があったら知りたいです・・・
ポケモン自動化の一連の投稿は、タグやカテゴリか、
各記事へのリンクを貼っている、
をご参照ください。