2016年2月12日金曜日

実機をマクロでボット化する方法

前回までに

Vysorを使ってスマホ端末をPC画面上に表示してGUIベースでBOT化したり
ADB接続を使ってCUIベースでのBOT化をしました。


Vysorを使ってBOT化した場合、ラグや画像の乱れなどがありちょっと難がありました。

ADB接続をつかったBOTの場合はもラグがあり、それらをクリアするためには
スマホ端末側にイベント受け口になるコマンドの配置が必要でした。



えと、今日はTeamViewerというツールを使っての操作です。
けっこう有名なソフトだと思いますが、なんとスマホの遠隔操作に対応していました。


やり方は
まず、PCに「TeamViewer」をインストールします。(無料版でOK)
次にスマホに
「QuickSupport」をインストールします。

これで準備完了。

あとは、PC側のTeamViewerから、スマホのQuickSupportに接続すれば
スマホを遠隔操作できます。
(※追記:2016/03/09 iphoneだと遠隔操作できません。Vennyなどを使ってスマホにVNCサーバを導入してください。)


PCにスマホの画面を表示して、操作する方法としては

これが一番簡単だと思いました。

USBケーブルもいらないし
ADBもJAVAもいらない
ROOT化もいらない

ADBを内部で使ってるツールによるリモート操作だとキックするレイヤがいまいち謎だったけどTeamViewerでの操作の場合、スマホ側からみるとハードウェアマクロになるのかな。

画面タップがハードウェア的に操作できるってことは
運営側からしたらBOTなのか人なのか見分けがつかないですよね。


ということで、実機をBOT化する場合はTeamViewerを使うことにしました。


仮想端末も実機端末もBOTマクロは同じソースでできるので、ほぼほぼ完結です。
あとは設定をしやすいように、BOTマクロ生成ツールを作っていきます。

マクロの雛形作成は完了で
次は、マクロ生成ツールの設計です。


追記:3月16日
TeamViewerのSDKについて、質問を投げてみたところ返信がもらえたので追記します。

このSDKを使って開発すればiphoneのリモート操作できますかという問いに対する返答は

「SDKを使えばTeamViewerからiPhoneのアプリ内(SDKをご利用して開発したアプリ)の遠隔操作が可能です。
完全なiPhoneの遠隔操作ではなく、そのアプリ内のみの遠隔操作になります。」

ということでした。アプリ内のみの遠隔操作だそうです・・、工夫できそうなのかな。
開発者の方ためしてみてください。

2016年2月10日水曜日

白猫 自動化の時短ツールを作ってみた

UWSCのツールはなんとなくできたので

次はADBのバッチ処理書きはじめたのですが

書くのがめんどくさくなってきたのでツールを作りました。



M1_1 で1秒上に向かう
S1 でスキル1を使う

とか、簡易的に記述できるようにツールです。

テキストに指示を保存して読み込んでスタートで指定回数実行します。


白猫だけじゃなくて何でも使えるけど
ぷにこんの操作に特化した仕様になってます。
命令数が少ないので直観的に扱えるかと思います。

①のタップ位置はデフォルトのままで大丈夫です。
②の指示は、命令を改行しながら書きます。

移動・・・M[1~20]-秒数:M1=上, M2=真上のM1よりちょっと右, M3= M2よりちょっと右・・・・略
スキル・・・S[1~3]:スキル使用
タップ・・・T-回数:タップ(攻撃とか、ボタン押下とか)
待機・・・W-秒数:時間調整用の待機

キャラの移動は運だけど、クリア確率の高いコースを歩かせれば良いと思います。
壁にあてたりしてキャラの位置補正のできるコース選びが重要になります。


最初は、プレゼントクエストの銀狸BOSSマップで
再挑戦LOOP作って慣れてから違うマップで使っていく感じです。

ロリポップ!レンタルサーバ


余談ですが
スマホ端末の中にあるinputをcatで開いて中身を見てみました。
うーん、スマホ側にコマンド作れそうですね。

/system/bin
このフォルダにあって、adb shell できっくできるのは
ls /system/bin | grep shell で調べられます。
けっこうたくさんありました。何ができるんだろう?

迷走しはじめたので、明日は山登りに行ってきます。


追記:2/11
http://blog.kotemaru.org/2014/04/02/android-ndk-setup.html
Androidで実行可能なバイナリの作り方の参考URL
http://techblog.qoncept.jp/?p=397
ラグが気になるのでスマホ側にコマンドを突っ込むのがベストぽいですね。


という事で、今回のツールは端末にコマンド配置してもいいよって人しか使えなくなりました。

ちなみにsendeventをcatしてしまい、久しぶりに冷や汗が出ました。
バイナリなのでcatしないように気を付けて下さいね^^;

水曜日 ルーン集めボット

水曜日のクエストマップを追加しました。


コッペリアで1週140秒くらいです。

水槽の水替えをしてる間、稼働させてたら15週できました。

ロリポップ!レンタルサーバ

2016年2月9日火曜日

白猫プロジェクト 実機をUSB経由でPCから操作

ロリポップ!レンタルサーバ 

USB経由で実機を操作するには以下が必要になります。

javaSDK → http://www.oracle.com/technetwork/java/javase/downloads/index.html
AndroidSDK → http://developer.android.com/sdk/index.html

が必要で、パスを通したりしないといけません。
パスを通すというのは
PCに対して「ファイルはここにあるよ」って事を、環境変数に書くことです。

http://andmem.blogspot.jp/2014/04/installjdkandroidsdkadb.html
ここがわかりやすかったです。


JavaSDKとAndroidSDKの準備ができましたか?


次は、

スマホ操作して、USBデバッグができるようにします。
http://andmem.blogspot.jp/2012/10/androiddebugmode.html



PCとスマホをUSBケーブルでつなぎます。

PCのコマンドプロンプトを開いて

java -versionを入力してエンタ→バージョン情報が表示されればOK
adb devicesを入力してエンタ→ successfullyが表示されればOK

出ない場合はパスが通ってない可能性があります。
PATHを入力してエンタ→表示されているパス中にJAVAのフォルダとAndroidのフォルダが正しく書いてあるか確認し、違う場合は直して下さい。


--------------
やっと、実機にコマンドを送れます!

参考URLです。
http://techblog.qoncept.jp/?p=356


-------------
初めて作る時は

銀狸BOSSが出てくるやつ、あれの再挑戦ループを作ると簡単だと思います。
友情覚醒したいキャラを連れて何回かLOOPするやつ。

工夫できる点としては
どの端末でも使えるように
画面サイズを取得してタップする座標位置を計算する仕様にすればOKです。

工夫する点の実装方法
 adb shell getprop
 このコマンドで端末情報が大量にとれます。
 パイプ知ってます?私はパイプ大好きです(笑)
 adb shell getprop | findstr display
 (getpropで取れた文字列のなかから、displayという文字列を含む行を出力。)
 これだと3行でるので必要な物をさらに絞る

処理概要

INIT:画面サイズ取得、タップ基準位置決定
①銀狸まで一直線に進む
②タップして攻撃(数秒間)
③再挑戦ボタン位置をタップ(数秒間)
④再挑戦しますか→はいボタンの位置をタップ(数秒間)
⑤40秒待機
①へ戻る

ロリポップ!レンタルサーバ 

実機をPCに表示して操作してみました。

Vysorでトライしたのですがうまくできなかったので、他のを探してみました。

DOCOMOのMobizen (2016/3月末でサービス終了)
http://android.f-tools.net/Mobizen/mobizen-Tukaikata.html

ドコモのなので性能よさそうだなーと思いましたが、来月で終わってしまうので、微妙かな。



ロリポップ!レンタルサーバ 

探していたら、MirrorGoというのがありました。

有料だとWifiで接続できるみたいですね
でもUSB接続でやる予定なので無料版でやります。

無料版だと毎週30分だけしかできない・・・(汗)


まぁいっか!!!ゲームにお金かけたくないので無料版を使います!


えと、

仮想1台とMirrorGo1台の計2台を立ち上げて

MirrorGoではメイン垢、仮想ではサブ垢

①サブ垢(仮想)で助っ人募集
②メイン垢(MirrorGo)は協力→③MirrorGo切断→④クエ時にMirrorGo接続→①へ

操作が必要な時だけMirrorGoに接続するパターン。このループなら週30分で十分かな?


う~ん、このLOOPなら画面をわざわざ表示しなくてもよさそう。

という事で、さよなら実機画面、USB経由でコマンド送ります。
やり方はバッチファイル作って現状のツールからキックです。

とりあえず、ゲーム起動時に、コマンド受け付けてくれるか実験してみます。


ロリポップ!レンタルサーバ 

火曜日のルーン集め ボット

火曜日のルーン集めを追加しました。


ロリポップ!レンタルサーバ 


たまたまコッペリアを引き当てたのですが
コッペリアほどボット向きのキャラは居ないな~と思いました。
運がよかったです^^


えと、アンドロイドの白ロムが手に入ったので
「Vysor」を使ってボットのテストも並行して行ってこうと思います。
ロリポップ!レンタルサーバ 

2016年2月8日月曜日

月曜日 ルーン集め ボット 試作

前回のブログで書いたような構成でソースを作りなおしました。


クエスト用のテンプレートソースがあるので新規追加が楽ちんです。

なので、根気があれば全マップ、2人協力、4人協力、どれも作れます。



今日は「月曜日のルーン集め」のソースを作りました。

ロリポップ!レンタルサーバ 

①プレイして、マップを確認

②キャラ位置がなるべく保てる方法 → 助っ人に倒してもらう
③キャラをどの壁にぶつけるか考える

出来上がったソースで動かした動画は以下になります。



動画は、2週目まで撮ったものです。


「Vysor」というのでPCに実機画面を表示してキャラ操作も可能ですが
白ロムもってないので、手に入れたらそちらでも実行確認をしてみようと思います。