見出し画像

Autoplay DOAX3 V4

Windows PC用の PS4 リモートプレイを使い、PCから PS4 を操作することで、コーエーテクモゲームスの PS4用ゲーム DOAX3 を完全に自動的にプレイするための手法を説明します。

What is This ?

女の子全員を順番に選択し、パートナーと一緒にぴょんぴょんゲーム、またはどんけつゲームを毎日繰り返し、バカンスを終了します。そしてまた次の女の子を選択し、同じようにバカンスを過ごすことを繰り返します。そういう操作を PC から自動的に行い、DOAX3 の自動プレイ、自動周回、いわゆる放置プレイを実現するPython スクリプトです。

より具体的に言えば、Python に画像処理ライブラリである OpenCV を導入し、簡単な画像認識を用いて PS4 画面を分析し、ゲームの進行に同期してキー入力イベントを発生させます。

What is Merit ?

外出時や就寝時などの空き時間に、本スクリプトによって DOAX3 の自動プレイ、自動周回、いわゆる放置プレイを行い、オーナーレベルを上げたり、女の子のわくわくレベルを上げたり、オーナーザック、女の子ザックを稼いだり、女の子固有のコスチュームを開放したりすることが出来ます。

使用上の注意

本スクリプトは、 [Enter]キーやカーソルキーを叩くような操作を内部で発生させています。他のアプリケーション、例えばWebブラウザなどが、誤って操作されてしまう危険性があります。Webブラウザなどのアプリケーションは全て終了させたうえで本スクリプトを実行させてください。もし何か間違い、不都合がありましても当方は責任を負いかねます。自己責任にて本スクリプトを使用してください。

特徴、オリジナル版との相違

DOAX3 の自動周回スクリプトのオリジナルはここに公開されており、本作は、これを様々に改造したものです。コードはほとんど別物です。
その相違点は

・ Fortune と Scarlet の両方に対応。将来的なキャラ追加にも対応。
 オリジナルはみさきとレイファンを選択できません。
 本作はキャラ選択を名前で判定せず、単純に、選択画面において
 右へ右へと巡回していく方式の為、名前や人数に依存しません。

・適応的スケーリングを実装し、誰でも簡単に実行可能。
 オリジナルは PS4 リモートプレイ画面の大きさに影響されやすく、
 理想的な大きさから少しでもズレると画像認識に失敗します。
 オリジナルを試したけどうまく出来なかった人は、たいてい、
 これが原因です。
 本作は、 PS4 リモートプレイ画面の大きさを判定して、画像認識に
 最適なように内部で拡大縮小を行っており、誰でも簡単に、安定して
 DOAX3 の自動周回を実行することが出来ます。

・PS4 リモートプレイ画面の大きさを正確に 960x540 にすれば高速処理
 PS4 リモートプレイは、インストール直後で初期設定のままの状態だと、
 その表示解像度は 960x540 になっています。本作はこの解像度に最適化
 されており、画像認識の為のテンプレートも新たに作成しています。
 リモートプレイ画面の大きさが 960x540 のままであれば、上記の
 スケーリング処理が省かれる為、少しだけ処理が軽減されます。
 非力なCPU環境にも向いています。

・パートナーキャラが EASY であるか否かを判定し、どんけつゲームもする
 オリジナルはぴょんぴょんゲームのみを選択し、負け続けることを繰り
 返します。バカンスを最短時間で終えるには適した手法ですが、女の子の
 ザック稼ぎ、アクティビティの勝利数で開放される固有コスチュームを
 得るには不適です。
 本作は、パートナーキャラが EASY であるか否かを判定し、
 EASY なら、どんけつゲームを選択し、〇ボタン連打で勝ちに行きます。
 NORMAL, HARD ならぴょんぴょんゲームを選択し、〇ボタン連打で
 すぐに負けます。プレイヤーキャラ、パートナーキャラの満足度、
 プレイヤーキャラのザック稼ぎ、固有コスチュームの開放、バカンスを
 終えるのに要する時間、全てついてバランスが良い手法です。

V3版以降の特徴・使用

・画像マッチング処理においてラプラシアンフィルタ処理を導入し、
 画像認識精度を向上。これにより、オープニング、女の子登場、
 エンディングをほぼ確実に素早くスキップ可能。

・画像マッチング処理に用いるテンプレート画像を最初に読み込み、
 以降のファイルアクセスを省くことで高速化
 ラプラシアンフィルタ処理で重くなった分を相殺し、
 体感的には V2 版と変わらない。

・上記の改善に合わせて全体のシーケンス処理をチューニング。

・セミオートモードを導入。
 スクリプトの実行を停止させることなく、セミオートモードから、
 オーナーモードに手動で切り替え可能
 夜のホテルから、オーナーショップでの購入、プレゼントが可能。

・オーナーモードでの日中の自動プレイに対応。
 プールでぴょんぴょんゲーム、ニキビーチでビーチフラッグを交互。

ザックからのプレゼントだけを自動的に捨てる機能を導入

V4版(2019/4/24時点の最新版)以降の特徴・仕様

・1920x1080 以外のモニタ解像度に対応。
 ただし、そのアスペクト比が正確に 16:9 でない場合、
 (1366x768 はOK、1360x768 はNG、とシビアです。)
 PS4リモートプレイの表示解像度を正確に 960x540 にする必要
 あります。同梱の setPS4REMOTE.py を使ってサイズを初期化
 してください。詳しくは 12. c) を参照。
 また、マルチモニタ環境ではうまく動作しません
 これらは PS4 リモートプレイの動作仕様に起因します。

・"のんびり高速周回"を実装。
 「プールサイドでのんびりする」ことだけを繰り返します。
 のんびり過ごしているシーンは自動的に即スキップされます。
 いわゆる"のんびり高速周回"として知られる、最も短時間に
 バカンスを終えて周回ボーナスによってオーナーザックを稼ぐ
 手法です。オーナーレベルが 110、女の子わくわくレベルが全員
 100、固有コスチュームも開放済み、という上級者向けです。
 ソースコードを書き換えなくても実行できるように、あらかじめ、
 3種のスクリプトを作成しました。

・ autoV4.py ... ぴょんぴょんゲーム、どんけつゲームをする。
       夜のホテルからセミオートモードに入り、
       (詳しくは、"11. セミオートモードの使い方")
       ザックのプレゼントが自動的に捨てられた後、
       オーナーモードに切り替えることが可能。

・ autoV4HS.py ... "のんびり高速周回"専用。
       夜のホテルからセミオートモードに入れる。
       上記に比べ、タイムアウトまでの秒数が3秒と短い。

・ autoV4HSNS.py ... "のんびり高速周回"専用。
       セミオートモードに入れない。
       四角ボタンを押すために待ち時間が無いので、
       最も高速にバカンスを周回出来る。

動作モードを切り替える変数の設定(22行目、23行目)が異なるだけで
ソースコードの中身としては同じものです。
このどれか1つを実行してください、。


導入手順(V2版と全く同じ)

1. WindowsPC と PS4 を有線で家庭内 LAN に
 接続する。

PC と PS4 を直接有線で接続するのではありません。
家庭内にあるルーター、スイッチングハブに有線で接続してください。
よく分からなければ、その家のネット環境に詳しい人に聞いてください。
それ以外の接続手法だと、通信料金が高額になるなど危険があります。
自分で確認し、自己責任でお願いします。

2. WindowsPC の表示スケールを100%にする

本作は PC のスクリーンショットを取り、画像認識処理しています。
大きさは 1920x1080、表示スケールは 100% を前提にしています。
V4版から 1920x1080 以外の解像度にも対応していますが、アスペクト比が正確に 16:9 でないと誤動作します。出来ることなら 1920x1080 に設定してください。
また、「テキスト、アプリ、、、」の表示スケールは 100% が必須です。

3. WindowsPCに PS4 リモートプレイを
 インストールし、設定する。

公式ページからアプリケーションをダウンロードし、そこに書いてある通りに設定を行ってください。Windows7 以前は対応していません。
 PS4リモートプレイを一番最初に起動したときは、家庭内 LAN 接続であっても、一旦(グローバル)インターネットに出て、PSN 経由で相互認証を行う仕組みになっているようです。

PS4リモートプレイを終了させ、起動しなおすと、

このように、家庭内 LAN 環境にある PS4 を探して接続してくれます。
ここでインターネット上に探しに行ってしまうとダメです。その場合は接続環境を見直して下さい。

このように PS4 の画面が表示されれば成功です。
初期設定のままであれば、PS4リモートプレイ画面の大きさは 960x540 で
1920x1080 の PC 画面の大きさに対し、4分の1の大きさとなります。
なるべく、この大きさを維持してください。場所は移動してもいいです。
python インストールの為、ここでPS4リモートプレイは終了させます。

4. Windows 用 Python 2.7 をインストールする。

公式ページから Windows 用 Python を入手します。
Python はバージョン2系とバージョン3系があり、本作はバージョン2系に基づいて作成されています。

バージョン2系の最新版を探して Download リンクをつついてください。

続いて表示されるファイル選択において、上図のような Windows 用インストーラーを選択します。今どきのスペックで Windows10 が標準インストールされているPCは、たいてい、64 bit 版です。上図のように 64bit 版を選択してください。AMDとか書いてありますが、IntelのプロセサでもこれでOKです。32bit 版か 64bit 版か確信が持てない場合は自分で調べてください。

インストールは他のアプリケーションと同じようにします。
インストーラーを起動したら、上記の画面では [Next]をつつきます。

インストール場所を指定します。
特にこだわりが無ければこのままにして [Next] をつつきます。

ここが注意すべきポイントです。
初期設定では "Add python.exe to Path" が無効にされています。
×マークをつついて、上図のように "Will be installed on ..." を選択し、有効に変更します。
そして[Next] をつつけば python がインストールされます。

既に python 環境を WindowsPC に構築されている人は上記説明の限りではありません。既に Python に関する知識をお持ちでしょうから、インストール場所、Path への追加は自分の判断で適切に行ってください。

5. Windows 拡張 pywin32 をインストールする

公式ページから、pywin32 を入手します。

本作は Build221 を使って作成・動作検証をしています。
Build222 でも使えるでしょうけれども、ここでは Build221 を選択します。

バージョン2系の最新版を選択します。64bit 版なら上図のものです。

インストーラーを入手したら普通にインストールします。

先ほどインストールした Python の場所を自動的に見つけて確認画面が出ます。問題なければ[次へ]と進めて、順当にインストールします。

6. Windows で Python 環境を整える

上図のように Windows メニューから "コマンドプロンプト" を起動します。

こんな感じにコマンドプロンプトが表示されたら

python -m pip install --upgrade pip

python -m pip install numpy

python -m pip install pillow

python -m pip install opencv-python

と4つのコマンドを実行してください。
上記の文字を [Ctrl]+[C] でコピーして、コマンドプロンプト画面に [Ctrl]+[V]でペーストすると楽で確実です。

上記のコマンドによって、本作が必要とする画像認識のためのライブラリがネットからダウンロードされ自動的にインストールされます。

7. 本作、DOAX3 自動周回スクリプトを入手する

上記ファイルをダウンロードして、その zip ファイルを展開してください。

展開されたフォルダの中身をみると上図のようになっています。
4. でインストールした python が正しく関連付けされていれば、上図のようなアイコン付きで表示されているはずです。この様な状態になっていれば、コマンドプロンプトを立ち上げることなく、ダブルクリックでスクリプトを実行できます。

8. PS4リモートプレイを起動

PS4 ではあらかじめ DOAX3 を起動しておきます。
そして、PC で PS4リモートプレイを起動します。解像度・フレームレートの設定は「標準」にしてください。
また、本スクリプト(autoV4.py)のあるフォルダも表示させておきます。
そうすると上図のような感じになります。

9. 本スクリプト(autoV4.py)を実行

本スクリプトは、 [Enter]キーやカーソルキーを叩くような操作を内部で行っています。他のアプリケーション、例えばWebブラウザなどが、誤って操作されてしまう危険性があります。Webブラウザなどのアプリケーションは全て終了させたうえで本スクリプトを実行させてください。

同じPCでこの文章を読んでいる人は、以降の手順を読んでよく覚えた上で、Webブラウザを閉じてください。

スクリーンセーバーは無効にしてください。

そしていよいよ、

これのどれかをダブルクリックして実行します。
・ autoV4.py ... ぴょんぴょんゲーム、どんけつゲームをする。
       セミオートモード有り。
・ autoV4HS.py ... "のんびり高速周回"専用。
         
セミオートモード有り。
・ autoV4HSNS.py ... "のんびり高速周回"専用。
          
セミオートモード無し。です。

そうすると上図のようにコマンドプロンプト画面が表示されます。
3秒以内に、PS4リモートプレイの画面をマウスでクリックして、
上図のように一番手前に表示させます。
PS4リモートプレイの画面が全部見えていればOKです。

あとは、DOAX3 が自動的にプレイされます。

・この状態をずっと保ってください。
・バックグラウンドでの実行は出来ません。
・キーボード、マウスには手を触れないでください。
 間違って他のウィンドウをアクティブにしてしまったら、すぐに、
 PS4リモートプレイのウィンドウをクリックしてください。
 場合によっては、何事も無かったように自動プレイが継続されます。
・何か挙動が変だなと思ったら、本スクリプトを終了させてください。

10. 本スクリプトの終了のしかた

ゲーム中、どのような場面でも構いません。

本スクリプトが実行されているコマンドプロンプトのウィンドウの右上にあるクローズボタンをつついて終了させてください。

その後、速やかに、PS4リモートプレイも同様に終了させてください。
DOAX3 のゲームそのものは PS4 で実行中です。
PS4のコントローラーを使って引き続きゲームをお楽しみください。

11. セミオートモードの使い方

夜、ホテルにて、まずプレゼントの受け取りが(自動的に)行われ、それが終わると、上記のようなメッセージが表示されます。ここで10秒以内に PC に接続してある PS コントローラーの四角ボタンを押すと、セミオートモードに入ります。押さなければ「ベッドで寝る」が選択され、そのまま自動プレイが継続されます。

セミオートモードに入ると、まず最初に、プレイヤーキャラの女の子が所持している Presents タブが開かれ、未開封状態にあるザックからのプレゼントだけを捨てる処理が開始されます。これは強制的に行われます。ザックからのプレゼントを捨てたくない人はセミオートモードを使わないで下さい。また、当環境にて十分テストされていますが、絶対に誤動作しないという保証はありません。誤動作しても問題のない状況で試した上で使ってください。

ザックからのプレゼントを全て捨て終わると、PC に接続してある PS4 コントローラーを使ってオーナーモードへ手動で切り替えることが出来ます。オーナーショップで水着、アイテムを買い、プレゼントを贈ることが出来ます。ただし、プレイヤーキャラにはプレゼントをしないでください。また、女の子モードからプレゼントをすることも可能です。

そうしてプレゼント攻勢を済ませた後、「寝る」を手動で選択してください。女の子モード、オーナーモードどちらでも可能です。女の子モードで「寝る」を選択すれば通常の自動プレイに戻ります。オーナーモードで「寝る」を選択しても自動処理となり、日中はぴょんぴょんゲーム、ビーチフラッグが交互に選択されます。

そして、オーナーモードのまま夜になると、

というメッセージが表示されます。ゲーム画面は

というオーナーモードのメニューが表示された状態となり、プレイヤーの入力待ちになります。タイムアウト処理は行っていないので、何もしなければずっとこのままです。女の子モードに戻って「寝る」を選んで自動プレイに戻っても良いし、オーナーモードで「寝る」を選んでもOKです。

12. 本スクリプトの使い方のコツ

a) スクリプトを開始することが出来るゲーム場面

ゲーム起動後、PRESS ANY BUTTON と表示されている場面

バカンス開始のメニューが表示されている場面

朝、昼、夕方の開始場面で、アクティビティメニューが表示されていない状態。

本スクリプトを安全・確実に実行させるにはゲームが上記の場面にある時に本スクリプトを開始してください。上記にあるように、バカンスの途中の朝、昼、夕方からでも自動プレイを開始させることが出来ます。


この様な、アクティビティメニューが表示されている状態はNGです。
PCに接続されているPSコントローラーの×を押してアクティビティメニューを消してください。

b) PS4リモートプレイのウィンドウの大きさは
 少し大きめにする

本スクリプトは PS4 リモートプレイのウィンドウの大きさが 960x540 であることを前提として最適化されています。これは、PS4リモートプレイをインストールし、初期設定のまま起動した直後の状態の大きさです。この大きさを正確に維持できている限り、このウィンドウを大きくする必要はありません。

ところがしかし、何かの手違いで PS4 リモートプレイのウィンドウの大きさを変えてしまうことがあります。本スクリプトには適応的にスケーリングする機能が備わっているので、多少、その大きさが変動しても安定・確実に自動プレイをすることが出来ます。

本スクリプトをより安定・確実に実行するには、上図のように、上下左右に黒い余白が多少出来ても構わないので、画面(1920x1080)の4分の1程度の大きさを基準にして少し大きめに調整してください。

上図のように PS4 リモートプレイを最小サイズ(640x480)にしても自動プレイが問題なく継続できる場合はあります。しかし、情報量が減っているのでときたま画像認識に失敗する可能性があります。最小サイズにしてもCPU負荷が軽くなりことはありません。CPU 負荷を軽くするには次の手法を試してください。

c) PS4リモートプレイのウィンドウの大きさを
 960x540 に戻して処理を軽くする

PS4 リモートプレイは、通常の手段では、表示画面の大きさを初期化することが出来ません。下記のスクリプトは Windows のレジストリを書き換えて、強制的にその大きさを初期化するものです。十分にテストをしていますが、レジストリ操作には危険が伴います。それをあらかじめ理解した上で自己責任で実行して下さい。

本スクリプトに同梱されている
  setPS4REMOTE.py
を、PS4 リモートプレイを起動していない状態でダブルクリックして実行してください。一瞬、コマンドプロンプトが表示されてすぐに消えますが、それは正常な動作です。その後、PS4リモートプレイを起動してください。
PS4 リモートプレイの大きさが 960x540 の初期状態に戻っています。
位置は初期化しないので、適宜、自分で調整してください。

PS4 リモートプレイの大きさが 960x540である場合、画像の拡大縮小処理が省かれる為にCPU負荷が若干軽減されます。

d) スクリプトの改造

本スクリプトは、誰でも簡単に DOAX3 の自動プレイ、自動周回が出来るように作成されており、基本的には無改造のまま使えます。

しかし、少しパラメータを変更するだけで自動プレイの挙動を簡単に制御することが出来ます。

d1) プレイヤーキャラの女の子を1人に固定したい

無改造の状態では、全員の女の子を順番に選びバカンスを開始します。
Fortune ではマリーが、Scarlet ではカスミが最初に選択され、右へ右へと一人ずつ巡回して選択されます。
スクリプトの14行目の
 start_girl = 0
のゼロを、1とか2とか3とかに変更することで最初に選択される女の子を変えることが出来ます。女の子選択画面において、Fortune ではマリー、Scarlet ではカスミから右方向に数えていった数値になります。
さらに、スクリプトの15行目の
 girl_rotation = 1
の1を0(ゼロ)に変更することで、女の子の選択をローテーションするのをやめて、1人に固定することが出来ます。

d2)アクティビティの種類を固定したい

本スクリプトは、パートナーの状態が EASY であるか否かを判断して、
・ EASYなら、どんけつゲームを選択し、〇ボタン連打で勝ちに行く。
・ NORMAL, HARD なら、ぴょんぴょんゲームを選択し、
  〇ボタン連打ですぐに負ける。
という処理をします。
スクリプトの17行目の
 activity_sel = 0
のゼロを1か2に変更すると、EASYかどうかに関係なく
・ 1にすると、ぴょんぴょんゲームだけをする。
・ 2にすると、どんけつゲームだけをする。
ように出来ます。
オーナーザックを周回ボーナスで稼ぎたい場合は1、
女の子ザックを稼ぎたい場合は2が適しています。

d3) セミオートモードを無効にしたい

スクリプトの22行目の
 no_semiauto = 0
のゼロを1に変更すると、セミオートモードが無効になり、V2版と同じ動作となります。

e) 女の子に「大好き」な水着を着せる

DOAX3 では、女の子が「大好き」な水着を着ていると朝、昼、夕、夜の時間経過でバカンス満足度が少し上昇します。14日間の累積ではかなりの大きさになります。本スクリプトでは女の子を着替えさせることが出来ません。本スクリプトを実行する前に、女の子全員について手持ちの水着をハートマークのついた「大好き」のものだけにし、そうでないものについては全てクローゼットにしまっておきましょう。

この記事が気に入ったらサポートをしてみませんか?