SikuliXによるスマホゲーム自動化

無料のRPAツールを使ってスマホゲームを自動化するためのサイトです

5.オクトラのリセマラを自動化する(1/2)

このページの目的

  • オクトバストラベラーのスマホゲーにサイラスが登場。前作でダントツの強さを見せた魔法使いさながら、まさかの三属性を使いこなす強キャラでの実装と聞くと、引かざるをえず、リセマラしてオクトラをやり直すことを決意。梅原裕一郎ボイスと一緒ならこのゲームやり直せるよ……
  • リセマラは課金を避けて意図したキャラを入手可能なほとんど唯一の手段でありながら、人々の膨大な時間を奪ってく悪しき文化。本記事ではリセマラの自動化の実例を示して、日本人の生産性を高めたい。オクトラに限らず、他のゲームでも同様の手段をとることはできるはず。
  • しかし、現時点で移動だけは自動化できておらず、完全自動化には至っていません。移動だけは手動でやるとして、今回は移動する前までの内容を記載。
  • また、スマホゲームを外部ツールで操作するのは通常規約で禁止されています。あくまでも自己責任でということを理解しつつご参照ください(本サイトの別記事参照

必要な環境

  • オクトラはPCのスペックが高いとBlueStacksで動くという書き込みを見つけられるのですが、私の環境では動かないので、「Android端末をパソコンからリモートコントロール」+「パソコン上の操作をSikulixで自動化」することでリセマラ操作を自動化します。事前準備は以下。
    • PC(Windows or Mac)へのSikulixおよびVysorのインストール
    • Android端末へのVysorおよびオクトラのインストール
  • 環境構築の詳細については以下のページ参照

自動化する手順

今回は前半部分

  • 手順①:ストレージへのアクセスを許可。ダウンロード終わるまで待って利用規約等に合意
  • 手順②:ひたすら三点タップを繰り返す
  • 手順③:歩く

コードの画像

f:id:sikulix:20210321150226p:plain f:id:sikulix:20210321150250p:plain

コードの内容

#手順①
click("1616290393849.png")
click("1616290425223.png")
wait("1616235972492.png",300)
doubleClick(Pattern("1616235972492.png").targetOffset(207,-48))
click("1616236064871.png")
click("1616236085877.png")
click("1616236099285.png")
sleep(2)
click("1616236085877.png")
click("1616236119292.png")
wait("1616236141344.png",30)
click("1616236141344.png")
wait("1616236185327.png",60)
click("1616236185327.png")
#手順②
for i in range(50):    
    for i5 in range(10):
        click(Pattern("1616236244111.png").targetOffset(-3,-123))
        click(Pattern("1616236244111.png").targetOffset(315,-403))
        click(Pattern("1616236244111.png").targetOffset(78,-152))
    if exists("1616236543907.png"):
        break
    sleep(1)
#手順③
for i2 in range(10):
    dragDrop(Pattern("1616236244111.png").targetOffset(-104,-120),Pattern("1616236244111.png").targetOffset(319,-109))

コードのポイント解説

  • 手順①:表示されるボタンをタップしていくのみ。表示まで時間がかかるものはwait()を使って表示されるまで待つか、sleep()で待機秒数を指定。
  • 手順②:ゲーム開始後は画面のどこかをひたすらタップすると進む。ここではfor文を使って画面上の3点を繰り返しタップする動作を指定。画面上固定で表示されるVysorのフッタからの相対位置で画面の場所を指定。3点のうち2点は画面上たまに表示されるメニューの閉じるボタン位置と、OKボタン位置を指定することで可用性を高めています。繰り返し最中にif exists()で繰り返し処理を停止するトリガとなる画面(ここでは歩く処理が要求される場面)が表示されていないかを確認し、繰り返し処理続行を判断
  • 手順③:歩く処理をdragDropで指定。走るのも同じdragDropで出来そうですが、なぜか出来ない。誰かできた人は教えていただきたいです……(マップが表示されれば、マップ上で移動先を指定できるのですが……)

動作する様子


オクトラのリセマラを自動化する(1/2)