Power Automate for desktop

Power Automate for desktopで最強の防具を手に入れた話

先日RPACommunityさん主催で開催された「RPA勉強会!「自動化ネタ・RPAネタ・ITネタ」ライトニングトーク大会! vol.31」で本記事と同じタイトルで登壇させていただいたのですが、今回はその補足説明です。

なかなかキャッチーなタイトルですが、これは『Power Automate for desktop(PAD)の知識を身に着けて会社で確固たる地位を築いた!』とか、そういった例え話ではなく文字通り“PADでパソコン用ゲームを操作してゲーム内最強の防具を手に入れた話”です。

ただこれは、決してツールを用いてゲームを改造することやチート行為を推奨するものではなく、あくまでもPADのフローの一例としてゲームの操作を行い、それによって得られた知見を伝えようというのが主たる目的です。

ルナティックドーン 前途への道標

今回PADで操作したゲームは「ルナティックドーン 前途への道標」です。

アートディンクから97年に発売されたRPGで、元々はWindows 95やWindows NT 4.0対応でしたが、現在はWindows 10に対応したものがSteamVectorで販売されています。

本作は自由度が高いことが大きな特徴で、たとえば強盗をして捕まって一生を牢屋で過ごすのも、神を倒して新たな神になるのも、世界を滅ぼすのも自由です。

最強の防具「ドラゴンレザーアーマー」

本作には「武術の達人」「魔術の達人」「忍の達人」と、その道を極めた“達人”が登場しますが、その中の魔術の達人が持つ「ドラゴンレザーアーマー」が最強の防具となります。

装備すれば受けるダメージのほとんどが一桁台となり、物理攻撃でやられることはほぼ無くなります。ゲームバランスが崩壊してしまうほどのチートクラスのアイテムですが、入手方法は魔術の達人から盗むしかなく、盗みの成功率は高くありません。

そこで今回は“魔術の達人からドラゴンレザーアーマーを盗めるまで何度もロードを繰り返す”という、非常に手間が掛かる作業をPADで自動化してみました。

フローの実行画面

作成したフロー

フロー全体

1. Loop

作業を繰り返す回数をLoopアクションで指定しています。
“成功するまでループ”として無限ループに陥ることを避けたかったので、とりあえず繰り返す回数を30回としています。

2. プロセスを終了する

終了したはずのプロセス(Ld95.exe)が残ることがあったため、念のためにゲーム実行前にプロセスを終了しています。

3. アプリケーションの実行

ゲームのプロセスを直接実行すると上手くゲームを起動出来なかったため、スタートメニュー内にあるショートカットリンクを実行しています。

4. ウィンドウ コンテンツを待機する

「ファイル」メニューが有効になるまで「ウィンドウ コンテンツを待機する」アクションを使って待機します。

5. ウィンドウ内のメニュー オプションを選択する

「ファイル」メニューから「ロードゲーム」を選択します。

6. Wait

ロード画面が表示されるまで待機します。

7. ウィンドウの UI 要素をクリックする

ロード画面からセーブデータを選択します。

8. ウィンドウの UI 要素をクリックする

「決定」ボタンをクリックします。

9. Wait

セーブデータのロードが終わるまで待機します。

10. ウィンドウ内のメニュー オプションを選択する

「パーティ」メニューから「冒険者に近づく」を選択します。

11. ウィンドウでタブを選択する

「冒険者に近づく」ウィンドウ内の「盗む」タブを選択します。

12. ウィンドウの UI 要素をクリックする

「冒険者」から魔術の達人を選択します。

13. ウィンドウの UI 要素をクリックする

「所持品」から「ドラゴンレザーアーマー」を選択します。

14. ウィンドウの UI 要素をクリックする

「盗む」ボタンをクリックします。

15. 画像が存在する場合

画面上に「盗みに失敗した!」ウィンドウが表示されているかどうかを「画像が存在する場合」アクションを使って判定し、条件分岐を行います。

・画像が存在する場合:存在します
・画像の検索先:画面全体
・検索モード:画面全体またはフォアグラウンド ウィンドウを検索します
・リストにある画像をすべて検索する:オフ
・許容値:4

16. プロセスを終了する

「盗みに失敗した!」ウィンドウが表示されている場合、作業をやり直すためにゲームのプロセスを強制終了します。プロセス IDには「アプリケーションの実行」アクションで取得した「%AppProcessId%」を指定します。

17. Wait

プロセスが完全に終了するまで待機します。

18. Exit loop

「盗みに失敗した!」ウィンドウが表示されない場合 = 盗みが成功した場合はループを抜けます。

フローを作成して気が付いたこと

フローを作るまで、アイテムを盗むまでの工程は

  1. ゲームを起動する。
  2. セーブデータをロードする。
  3. 「冒険者に近づく」メニューから魔術の達人を選択する。
  4. ドラゴンレザーアーマーを盗む。

くらいしかないと考えていました。
ところが実際にフローを組み立ててみると、必要な工程は下記のようになりました。

  1. ゲームを起動する。
  2. 「ファイル」メニューをクリックする。
  3. 「ロードゲーム」をクリックする。
  4. セーブデータを選択する。
  5. 「決定」ボタンをクリックする。
  6. 「パーティー」メニューをクリックする。
  7. 「冒険者に近づく」メニューを選択する。
  8. 「盗む」タブを選択する。
  9. 魔術の達人を選択する。
  10. 所持品からドラゴンレザーアーマーを選択する。
  11. 「盗む」ボタンをクリックする。

ロボットで作業を自動化するためには上記のように手順を細分化する必要があったわけです。

さらに、例えばゲームを起動した後に「ファイル」メニューが有効になるまで待機したり、「ロードゲーム」をクリックした後にロード画面が表示されるまで待機したりと、要所要所で『待ち』を入れないと、処理がどんどん先に進んでしまい上手く実行されませんでした。

手作業で行うときは特に意識することなく“待って”いましたが、ロボットに指示する際は意識的に“待たせる”必要がありました。

手順の細分化や待機の重要性、RPAでは当たり前のことかもしれませんが、実際に手を動かすことで改めて気が付かされることが多くありました。

RPAの初めの一歩としてPADはオススメ

PADは無償で一部の機能を使うことができ、先日リリースされたWindows 11にも標準搭載されています。

Microsoft アカウントがあればすぐに使い始めることができるという手軽さがPADにはあり、実際にRPAに触れてみるという点で、最初の一歩としてPADは非常に適したサービスであると思います。

ただし、無償ライセンスの範囲内だとフローの共有やスケジュール実行さえできないため、組織としてPADを運用する際には有償プランの導入を検討した方が良いでしょう。

登壇資料

Power Automate for desktopで最強の防具を手に入れた話 from kinuasa

最後にLTでは使わなかった動画も載せておきます。

せっかくフローを組み立てたのに盗みが一発成功とか、こんなん自動化する意味ないやん!?…というわけで、RPA的には大失敗ですね。
なお一回で成功したのはこのときだけで、テスト時には50回試しても失敗することがザラにありました。

ルナティックドーン関連リンク

Power Automate for desktop(Power Automate Desktop)へのサインインを制限する方法前のページ

Power Automate for desktopの起動方法次のページ

関連記事

  1. Power Automate for desktop

    [Power Automate Desktop]Google Driveにファイルをアップロードする…

    前々回の記事でGoogle Drive APIの実行に必要なアクセスト…

  2. ポケモン

    【ポケモンソード・シールド】ガラル図鑑が完成しました。

    ポケットモンスター ソード・シールド(通称:剣盾)が発売開始されてから…

  3. Power Automate for desktop

    [Power Automate Desktop]Google APIのアクセストークンを取得するフロ…

    前回の記事でGoogle APIのアクセストークンを取得するPower…

  4. Windows 11

    Power Automate for desktop(Power Automate Desktop)…

    前回の記事でも触れていますが、Windows 11ではPower Au…

  5. アイカツ!

    アイカツオンパレード!が始まりました。

    2019年10月3日(木)、ついにアイカツ!の新シリーズ「アイカツオン…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

Translate

Chinese (Simplified)Chinese (Traditional)EnglishFrenchGermanJapaneseKoreanRussianSpanish

最近の記事

アーカイブ

PAGE TOP