放置少女 – 育成自動化スクリプト

Category: Game, 放置少女 | Date: 2021年9月25日 | Author: Gappuri4th |

放置少女の育成はあまりにも時間がかかりすぎるので、育成の自動化スクリプトを作ってみました。


入手や使い方の説明などはこちらから。
cover1sea / houchi_auto_ikusei
zipダウンロード(v2.1)

過去バージョン

zipダウンロード(v1.1)
zipダウンロード(v1.2)
zipダウンロード(v1.3)
zipダウンロード(v1.4)
zipダウンロード(v1.5)
zipダウンロード(v1.6)
zipダウンロード(v2.0)

WindowsからNoxを介して動かすことを想定しています。
環境設定が面倒なのでちょっと敷居は高いかも。
機能としては、設定した育成方法(C級もしくはB級)、ステータス重み、育成回数に応じた自動育成と、ステータスの増加量記録機能を実装しています。
クロップだけしてOCRに通しているせいか、たまに数値の誤認識が起きるので完全放置せずときどき様子見たほうが良いです。
追記:OCRに通す前の前処理を加えて精度改善しました。
私の環境では誤認識が起きなくなりましたが環境によるかも?

なお、放置少女の規約は読んでいないのでどうなのか知りませんが、スマホゲームにおいてマクロや自動化ツールなどはアウトなこともあるので使用は自己責任でお願いします。
調べた感じだとこんなQAをみつけました。
「不正な動作」が曖昧な表現ではありますが、鯖に極端な負荷をかけるわけでもなく、他プレイヤーに不利益も与えない育成自動化くらいは許されるとは思います。
ただし、運営の匙加減なのでコッソリ使うくらいにとどめたほうがよいです。

※Lobi終了のため上記QAの運営回答を本文にコピーしておきます。

62件のコメント

  • 匿名
    2021年9月26日 23:48

    便利なツールありがとうございます。
    引数にある重み付けの設定値の意味について教えて下さい。

    • Gappuri4th
      2021年9月27日 00:16

      筋力増加量*重み1+敏捷増加量*重み2+知力増加量*重み3+体力増加量*重み4
      を計算して、結果が正の場合に育成確定する、という感じです。

  • 匿名
    2022年1月1日 17:38

    あけましておめでとうございます。
    うまいこと使えないのですが、質問しても大丈夫ですか?
    ご迷惑になるようでしたら諦めます。

    • Gappuri4th
      2022年1月2日 00:35

      あけましておめでとうございます。
      解決できるかはわからないですが、質問はご自由にどうぞ。

      • 匿名
        2022年1月2日 15:22

        ありがとうございます。

        コマンド起動を掛けた所、画像の状態で育成が走りませんでした。

        一番下のPython -Vはパスを通すのにミスがあったのか心配だったので走らせただけです。

        何かわかりましたらご教授お願いします。

        • 匿名
          2022年1月2日 15:24

          申し訳ないです。
          アップローダーのURL貼り付けてありますので、お手数ですがそちらから画像の確認をお願いします。

        • Gappuri4th
          2022年1月2日 15:33

          画像ありがとうございます。
          ファイルパスに問題がありそうなので、以下をご確認ください。

          ・main.pyがあるディレクトリに、「tmp」という名前のディレクトリはありますか?なければ作成してください。

          ・main.pyまでのファイルパスに日本語が入らないようにしてください。
          H:\文字化け\houchi_~←この文字化け部が駄目そうなので、Hドライブ直下に置くなど。

          • 匿名
            2022年1月2日 17:46

            使用できました!

            2番目作業 文字化け部分が原因だったようです。
            フォルダ名を英語変更で改善しました。

            お手数おかけしてしまい申し訳ありません。
            ありがとうございました。

          • Gappuri4th
            2022年1月2日 19:39

            解決したようでよかったです。

  • KK
    2022年1月8日 15:21

    大変便利なツールありがとうございます。

    一応使った感じを残しておきます。
    1.自分の環境では1回育成4-5秒程度時間がかかりました。
    2.認識ミスは見ている限りありませんでした。
    3.WIFI環境ですが、たまに2~5秒のローディングが入るとOCR認識できないのか、スクリプトが落ちて育成が停止しました。そのため、たまに停止を見る必要があります。

    • Gappuri4th
      2022年1月9日 12:44

      レビューありがとうございます。助かります。

      1.育成確定後のステータス上昇表示の待ち時間がボトルネックとなっています。時間効率が悪いのでどうにかしたいと思うところ。
      3.これはちょっと改善案が思いついたので改善試してみます。

  • 匿名
    2022年2月2日 01:09

    お世話になっております。
    Python初心者であまり理解できていないのですが、実行の仕方に問題があるのでしょうか。

    C:\Program Files (x86)\Nox\bin>python main.py c|b 10000 10000 10000 10000 500
    ‘b’ は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。

    • Gappuri4th
      2022年2月2日 02:16

      オプションの指定の問題ですね。
      c|bはcもしくはbどちらか一方という意味です。
      C級ならc、b級ならbを指定ください。
      あと、重み値が大きすぎるとオーバーフローが怖いので、小さめの方がいいかもです。
      (10000くらいなら大丈夫だとは思いますが)
      提示頂いたコマンド例では全ステータスを均等育成となるので、すべて1で指定しても同様の結果が得られます。

      例:B級の均等育成500回
      python main.py b 1 1 1 1 500

      • 匿名
        2022年2月2日 19:50

        ありがとうございます無事実行できました。

  • 初心者
    2022年2月5日 11:04

    全くPyhonというかプログラミング関連に詳しくなくて悪戦苦闘しながら、どうにか導入までできたのですが、最後の育成バッチがうまく動きません
    エラーで「NotADirectoryError: [WinError 267] ディレクトリ名が無効です。」と出てしまっています
    わからないことだらけなので、ご教示いただけますと幸いです

    • Gappuri4th
      2022年2月5日 15:13

      NotADirectoryErrorなのでディレクトリ設定にミスがあるのだと思います。
      以下ご確認ください。

      1.main.py 13行目「F:\\Nox\bin」が「自身のNoxインストールディレクトリ\bin」になっているか

      2.main.pyがあるディレクトリに「tmp」ディレクトリがあるか(無ければ作成)

      • 初心者
        2022年2月7日 00:25

        お返事遅くなり、申し訳ございません

        ディレクトリ設定については改善したのですが、今度はIndexErrorが発生してしまいました…

        1080p
        b’Physical size: 1080×1920\r\n’
        Traceback (most recent call last):
        File “C:\houchi_auto_ikusei-1.3\main.py”, line 282, in
        main(sys.argv)
        File “C:\houchi_auto_ikusei-1.3\main.py”, line 251, in main
        for i in range(int(args[6])):
        IndexError: list index out of range

        と表示されています
        参照範囲エラーというのは理解できるのですが、どこを直すべきなのかがわかりません…
        お手数をおかけしますが、ご教示いただけますと幸いです

      • Gappuri4th
        2022年2月7日 15:49

        確認してみたところ、githubで改行コードが自動変換されることが原因でbatファイルが正常に動かないようです。
        応急策として、batファイルの一行目(SET STR=)を削除してみてください。

        • 初心者
          2022年2月7日 22:53

          お返事ありがとうございます

          いただいた応急策を実施したのですが、エラー内容に変更ありませんでした…
          申し訳ありません

        • Gappuri4th
          2022年2月7日 23:28

          一行目の改行まで削除されていますか?
          一行目の改行まで削除し「SET /P STR=”育成回数:”」が一行目になるようにすると、
          「育成回数:」で表示が止まって育成回数が指定できるようになるかと思います。
          これで不可能な場合、batファイルの「%STR%」が育成回数の指定なので、ここを任意の数値に直接書き換えて実行するしかないかもしれません…

  • 初心者
    2022年2月9日 12:26

    お返事ありがとうございます

    もう一回、ダウンロードし直して、一番上の行を削除しましたら解決しました!
    ありがとうございました!

  • guone
    2022年2月11日 00:29

    お世話になっております。
    順番通りにやってみた結果、うまく動かないので大変恐縮ではございますが質問させていただきます。

    C:\Users\guone>python main.py c 1 1 1 1 3
    err: ss_dir not exist
    C:\Users\guone\tmp

    上記のような結果になりました。「guone」はユーザー名です。
    なぜそこのtmpを参照しようとするのかわかりません。。
    どうすればうまく動くようになるか、思い当たる節がございましたらご指導のほどをよろしくお願いいたします。

    • guone
      2022年2月11日 10:25

      パソコン再起動したらできるようになっていたようです。お騒がせしましたm(_ _)m

  • Eile
    2022年3月18日 01:05

    こんばんは。こちらに記述された手順に則ってコマンドを使用したのですが、「python: can’t open file ‘main.py’: [Errno 2] No such file or directory」と出てしまい使用できませんでした。お手数をおかけしますが、ご教示いただけますと幸いです。

    • Gappuri4th
      2022年3月18日 09:24

      エラー文通り、ファイルがない
      →main.pyがないディレクトリで実行しています。
      main.pyのあるディレクトリに移動して実行すればよいかと思います。

  • 匿名
    2022年5月4日 17:29

    便利だ、元々クイズ目当てで拝見していましたが、これは礼を言わざるをえない。
    素晴らしいツール有難うございます。

  • 匿名
    2022年5月15日 01:35

    大変便利なツールありがとうございます。

    C:\Users\user\Desktop\houchi_auto_ikusei-1.5>python main.py c 0 0 0 1 11
    Traceback (most recent call last):
    File “main.py”, line 7, in
    import cv2
    ModuleNotFoundError: No module named ‘cv2’

    このエラーはどういう意味でしょうか?

    • 匿名
      2022年5月15日 02:05

      大変失礼しました。
      先ほどのエラーは自己解決できました。

  • G
    2022年5月15日 18:05

    こんばんは。
    以下のようになってしまって動作しません。

    C:\houchi_auto_ikusei-1.5>SET /P STR=”育成回数:”
    育成回数:10000

    C:\houchi_auto_ikusei-1.5>python main.py b 1 0 0.1 1 10000
    Traceback (most recent call last):
    File “C:\houchi_auto_ikusei-1.5\main.py”, line 20, in
    tool = pyocr.get_available_tools()[10000]
    IndexError: list index out of range

    IndexErrorの対処方法を調べてはみたもののわかりませんでした…なにか思いつくものがあればお願いします。上記の%STR%を任意の値にしても変化はありませんでした。

    • Gappuri4th
      2022年5月15日 18:29

      原因不明ですが、プログラムが書き換わってしまっているように見えます。
      main.pyをメモ帳などで開いたとき、20行目のコードはどうなっていますか?
      以下の通りになっていなければ以下に書き換えてください。
      tool = pyocr.get_available_tools()[0]

      • 匿名
        2022年5月17日 22:04

        C:\houchi_auto_ikusei-1.5>SET /P STR=”育成回数:”
        育成回数:20

        C:\houchi_auto_ikusei-1.5>python main.py b 1 0 0 0 20
        Traceback (most recent call last):
        File “C:\houchi_auto_ikusei-1.5\main.py”, line 20, in
        tool = pyocr.get_available_tools()[0]
        IndexError: list index out of range

        C:\houchi_auto_ikusei-1.5>PAUSE

        上記の結果になりました。
        素早い返信してくださっていたのに遅れて申し訳ないです

      • Gappuri4th
        2022年5月17日 22:54

        Tesseract-OCRはインストールされていますか?
        (初期設定の3.)
        インストール済の場合、デフォルトのインストールディレクトリ以外の場所にTesseract-OCRがインストールされているかと思いますので、19行目のファイルパスを自身のインストールディレクトリにあわせて変更してみてください。
        インストール先を変えた覚えがない…という場合は
        C:\Program Files (x86)\Tesseract-OCR\にインストールされている可能性が高いです。
        ↑にtesseract.exeがあれば
        pyocr.tesseract.TESSERACT_CMD = r”C:\\Program Files\\Tesseract-OCR (x86)\\tesseract.exe”
        となります。

        • 匿名
          2022年5月17日 23:25

          Tesseract-OCRのインストール方法が間違っていたようです。アンインストールして再度インストールしたところ問題なく動きました!ありがとうございます!!

  • とん
    2022年5月17日 20:31

    とても便利です。ありがとうございます。
    いくつか質問させてください。
    MAX_OCR_RETRY =
    NUM_ARGS =
    NUM_ARGS_DEV =
    SEC_WAIT_TAP =
    SEC_WAIT_GET_STATUS =
    SEC_RETRY_GET_STATUS_INTERVAL =
    SEC_RETRY_OCR_INTERVAL =
    SEC_WAIT_SIGINT =
    それぞれの意味合いを教えていただけますでしょうか?

    また、ステータスが読み込めない際、再読み込みと時と、次に進んでしまう時があります。
    どのような設定をしたらよろしいでしょうか?

    • Gappuri4th
      2022年5月17日 21:34

      あまりスクリプト内のパラメータを変更することは想定していませんが、一応各パラメータについて説明します。

      MAX_OCR_RETRY:
       OCRで読み込んだ数値が異常に小さい/大きいことを検知した時のリトライ回数上限です。
       上限を超えるとリトライをあきらめて、いったん育成を確定します。

      NUM_ARGS =
       main.pyのデフォルトの引数の数です。

      NUM_ARGS_DEV =
       noxが複数窓の場合のmain.pyの引数の数です。
       IP:portの指定が必要になるためNUM_ARGS+1になります。

      SEC_WAIT_TAP =
       画面タップ後の待機時間(秒)

      SEC_WAIT_GET_STATUS =
       育成画面をキャプチャしたあとの待機時間(秒)
       PCのスペックによってはキャプチャ画像の保存がOCR読み込ませるまでに間に合わなさそうだったためとりあえず用意したパラメータです。
       私の環境では0でも動くためとりあえず0になっています。

      SEC_RETRY_GET_STATUS_INTERVAL =
       OCRで読み込んだステータスがそもそも数値ではない場合の待機時間です。
       これはラグでボタンが押せていない、画面遷移ができていないことが要因であることがほとんどであるため、
       一定時間待機後に「やめる/保存」ボタンが出ているのか「C級育成/B級育成」のボタンが出ているかを判定し、それに応じて状態遷移しています。

      SEC_RETRY_OCR_INTERVAL =
       OCRで読み込んだ数値が異常に小さい/大きいことを検知した時のリトライまでの待機時間です。

      SEC_WAIT_SIGINT =
       スクリプトがSIGINT(Ctrl+C)を受け取ったとき、つまりはユーザがスクリプトを強制終了したときの育成結果画面表示でエラーを起こさないようにするための待機時間です。

      >また、ステータスが読み込めない際、再読み込みと時と、次に進んでしまう時があります。
      想定動作のため特に問題はないかと思います。
      ステータスが読み込めない場合がまず2パターンあり、それぞれで処理が変わります。
      ・読み込んだ数値の大きさがおかしい場合:
       MAX_OCR_RETRYで書いた説明の通りです。

      ・読み込んだものがそもそも数値として認識できなかった場合:
       SEC_RETRY_GET_STATUS_INTERVALで書いた説明の通りです。

      • 匿名
        2022年5月17日 22:12

        丁寧に説明していただき、本当にありがとう御座います!
        お陰様で安定させられるようになりました。

  • 匿名
    2022年6月7日 22:11

    以前から自動育成を使わせていただいています。

    本日使用しようとしたら、以下のように表示されて突然使用できなくなりました。

    err: number of args not matched.

    どのように対処したら良いかご教授お願いします。

    • 匿名
      2022年6月8日 20:01

      お騒がせしてすみません。
      自己解決しました。
      コマンドの指定方法が間違っていたようです。

    • Gappuri4th
      2022年6月9日 21:48

      レス遅れてしまいましたが解決したようで良かったです。

  • 匿名
    2022年6月9日 14:56

    初めて使用させて頂きました
    難しそうだったのですが手順道理でうまく動いているようです。
    ありがとうございます。

    質問ですが敏捷と体力を上げつつ
    筋力+13 敏捷-1 体力-1
    このような場合も保存したいのですが
    無理でしょうか?

    • Gappuri4th
      2022年6月9日 21:47

      コマンドの実行時に指定できます。
      python main.py b A B C D 100
      (~.batファイルを使っている場合、batファイルをメモ帳で開くとこのコマンドの編集ができます。

      このコマンドの時、
      Δ筋力×A + Δ敏捷×B + Δ知力×C + Δ体力×D
      の計算結果がプラスになったときに育成を保存、という動きB級育成で100回行います。
      (Δ~、は変化量の意味)

      コメントの方式であれば、例えば
      A=0.3、B=1、C=0、D=1
      とすると
      13×0.3 + (-1)×1 + 0×0 + (-1)×1 = 1.9
      となり保存されるようになります。

  • 匿名
    2022年6月11日 19:38

    C:\Users\yukir\Desktop\houchi_auto_ikusei-1.5\houchi_auto_ikusei-1.5>SET /P STR=”育成回数:”
    育成回数:10

    C:\Users\yukir\Desktop\houchi_auto_ikusei-1.5\houchi_auto_ikusei-1.5>python main.py b 1 0 0.1 1 10

    C:\Users\yukir\Desktop\houchi_auto_ikusei-1.5\houchi_auto_ikusei-1.5>PAUSE

    上記の結果になりました。
    どこが問題があるのはわかりませんので、どのような対処すればいいでしょうか。

    • Gappuri4th
      2022年6月11日 21:13

      スクリプトが実行されれば何かしらメッセージは出るはずなので、前提からコケているのかなという感じがします。

      コマンドプロンプトを開いて、
      python -V
      を実行したときの表示はどうなっているでしょうか?
      Python 2.×.×というような表記であればPythonのバージョンが古いため更新が必要です。
      (参考までに、動作確認はPython 3.9.7で行っています)

      Pythonのバージョンが問題なさそうであれば原因の見当がつかないです…

      • 匿名
        2022年6月11日 22:27

        Pythonを再インストールして、今は下記の結果になりました。

        C:\houchi_auto_ikusei-1.5>SET /P STR=”育成回数:”
        育成回数:10

        C:\houchi_auto_ikusei-1.5>python main.py b 1 0 0.1 1 10
        Traceback (most recent call last):
        File “C:\houchi_auto_ikusei-1.5\main.py”, line 7, in
        import cv2
        ModuleNotFoundError: No module named ‘cv2’

        C:\houchi_auto_ikusei-1.5>PAUSE

        ちなみにPythonのバージョンは3.10.5です

        • Gappuri4th
          2022年6月11日 23:00

          必要なライブラリが不足しています。
          githubページの初期設定をご参照ください。

          python -m pip install opencv-python
          python -m pip install pyocr

          • 匿名
            2022年6月12日 00:12

            すみません、再インストールの時忘れました。
            今はこうなっています

            C:\houchi_auto_ikusei-1.5>SET /P STR=”育成回数:”
            育成回数:1

            C:\houchi_auto_ikusei-1.5>python main.py b 1 0 0.1 1 1
            Traceback (most recent call last):
            File “C:\houchi_auto_ikusei-1.5\main.py”, line 298, in
            main(sys.argv)
            File “C:\houchi_auto_ikusei-1.5\main.py”, line 64, in main
            init(args)
            File “C:\houchi_auto_ikusei-1.5\main.py”, line 78, in init
            dev_str = subprocess.check_output([“nox_adb”, “devices”])
            File “C:\Python310\lib\subprocess.py”, line 420, in check_output
            return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
            File “C:\Python310\lib\subprocess.py”, line 501, in run
            with Popen(*popenargs, **kwargs) as process:
            File “C:\Python310\lib\subprocess.py”, line 969, in __init__
            self._execute_child(args, executable, preexec_fn, close_fds,
            File “C:\Python310\lib\subprocess.py”, line 1438, in _execute_child
            hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
            FileNotFoundError: [WinError 2] The system cannot find the file specified

            C:\houchi_auto_ikusei-1.5>PAUSE

          • Gappuri4th
            2022年6月12日 00:46

            nox_adbのパスが通っていないと思います。
            (初期設定4.)

          • 匿名
            2022年6月12日 01:21

            成功しました。
            ありがとうございます。

  • galah
    2022年8月1日 07:04

    有益なツールを公開して頂きありがとうございます。面倒なポチポチから解放されて育成が捗ります。

    質問させて頂きます。
    例えば筋力+体力の育成で両パラメータがプラスの場合のみ育成、どちらか一方でもマイナスならキャンセルしたいのですが可能でしょうか。

    • Gappuri4th
      2022年8月2日 23:18

      計算式の関係上、その動作はできませんね。
      ただ、細かい計算は失念しましたが以前試算したときに、どちらかマイナスであればキャンセルの育成方法は育成丹の効率があまり良くなかったと記憶しています。

      自分が求めるパラメータ比に近づける重みを決めかねている場合は、育成シミュレータも用意しているので是非…
      https://cover1sea.net/houchi_sim/

      • galah
        2022年8月4日 00:49

        ありがとうございます。育成シミュレータも活用させて頂きます。

  • Chiron
    2022年8月5日 09:17

    素敵なツールを公開していただき、ありがとうございます。
    コマンドを走らせたところ、pythonと返答が来て終了してしまいます。
    どうすればいいでしょうか?

    • Gappuri4th
      2022年8月5日 13:19

      具体的な情報が不明なので、まずはコマンドプロンプトの画面をコピペしてもらえますか?
      コマンドプロンプトで「python -V」を実行したときの表示も欲しいです。

  • NoName
    2022年8月13日 07:27

    C:\Users\name\Documents\houchi_auto_ikusei-main>SET /P STR=”育成回数:”
    育成回数:1000

    C:\Users\name\Documents\houchi_auto_ikusei-main>python main.py b 1 0 0 0 1000
    Traceback (most recent call last):
    File “C:\Users\name\Documents\houchi_auto_ikusei-main\main.py”, line 20, in
    tool = pyocr.get_available_tools()[0]
    IndexError: list index out of range

    C:\Users\name\Documents\houchi_auto_ikusei-main>PAUSE
    続行するには何かキーを押してください . . .

    となって起動できないです…。

    • Gappuri4th
      2022年8月13日 10:13

      github記載の初期設定3
      tesseract-OCRをインストールしていないか、インストールしたフォルダがデフォルトでないかのどちらかです。
      デフォルトの場所にインストールしていない場合はmain.pyの19行目のパスを編集してください。

  • 匿名
    2022年8月28日 10:25

    神ツール公開ありがとうございます
    ポチポチで腱鞘炎になりかけてたので助かりました

  • Lynx
    2022年9月28日 20:20

    初コメント失礼します!
    以前に二善三福鯖でお世話になっていたことがあり、一方的に存じ上げておりました。

    私もSikulixというRPAツールを用いて育成の自動化をやっており、同士を見つけて嬉しくなりました。
    デスクトップ画面を介さず、NOXの画面に直接アクセスしてスクリーンショットを撮り、OCRに回すことができるんですね。勉強になります!
    しかも、それを一般化して配布できる状態に整えるとは。。。尊敬します。私は自分の環境でしか動くものが作れないので。

    OCRの数値認識についてですが、私も最初精度が悪くて苦労しました。今は、NOXのウィンドウそのものを大きくするという無理矢理な方法でやっています。
    python×Tesseract-OCRも少しやったことがあり、今は大量の願い返しの画像を処理するのに使っています。画像の二極化処理はされていると思いますが、縦横比を少し変えることで精度が良くなったことがありました。(https://twitter.com/lynx_houchi/status/1455501697808158724)ご存知かもしれませんが、一応共有させていただきます。

    バージョンアップ・質問対応等お疲れ様です! 陰ながら応援しております。

    • Gappuri4th
      2022年9月30日 01:44

      コメントありがとうございます。
      画像処理はど素人で手探りでやっているので全然ノウハウを持っておらず、情報助かります!
      初期は無加工&負荷下げるために最低解像度前提、みたいな作りをしていたのでかなり精度ガバガバでした…

      私も最初はデスクトップ画面をキャプチャしてマウス操作、みたいな動作させていたのですが、画面の一部とマウスのコントロールを占有されるのが耐えられなかったので今の方式に落ち着きました。
      結果的に配布時にユーザ間の環境差分もある程度吸収できたので一石二鳥でしたね。

  • 匿名
    2022年10月1日 12:34

    初めまして。
    偶然この記事にたどり着き、便利なスクリプトを公開してくださっていて感激しました!
    自分はブラウザ版でプレイしているのですが、NoxにChromeをインストールして、メニュー→アプリのインストールでインストールを行い、こちらのスクリプトを走らせてみたところ、現状は上手く動作しました!
    取り急ぎご報告まで。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)