Rise of Kingdoms なぜ公式で用意しないのかランキング圧倒的No1のKvK戦績収集を自動化するスクリプト。
個人戦力ランキングから各プレイヤーの情報をキャプチャします。
- Windows 10以降
- Python 3.10(Microsoft Store版)
- BlueStacks 5
PythonはMicrosoft Storeからインストールするのが手軽です。
コマンドプロンプトやPowerShellで以下のコマンドを入力し、動作に必要なモジュールをインストールしてください。
pip install android-auto-play-opencv
pip install pyperclip
pip install portalocker
pip install fasteners
画像解析に失敗するため、rok-scan-statsディレクトリのパスには日本語やスペース等が含まれないようにしてください。
OK → C:¥rok-scan-stats
NG → C:¥ライキン¥rok-scan-stats¥
- パフォーマンス
- CPUの割り当て: 高(4コア)
- メモリの割り当て: 改良済み(4GB)
- パフォーマンスモード: バランス
- フレームレート: 60
- ディスプレイ
- 画面解像度: 1600 x 900
- 画素密度: 240 DPI(中)
- 上位設定
- Android Debug Bridge(ADB): 有効
- 言語: 日本語
- 画質: 中
- フレームレート: 60
- 画面フラッシュ効果オフ: 有効
- 王国称号の通知: 無効
※ 同盟通知が読み取り対象に重なってしまうため、同盟から脱退し無所属の状態で実行してください。
RoKを起動し、戦力ランキングを表示した状態で実行します。
RoKを起動してから時間が経つとRoKの動作が重くなってくるため、画面遷移時の待機時間が不足しキャプチャに失敗することがあります。その際は、autocap.py
のaapo.sleep(sec)
のsec
部分を調整するか、--delay
オプションを使用してください。
python autocap.py 127.0.0.1:5745
127.0.0.1:5745
の部分は環境によって異なります。
BlueStacksインスタンスの上位設定のAndroid Debug Bridge(ADB)
に記載されているものに置き換えてください。
オプション | デフォルト値 | 説明 |
---|---|---|
-d, --dir | 実行時の日付 (YYYY-MM-DD) |
キャプチャの保存先ディレクトリ名 |
-s, --start-rank | 1 | キャプチャ開始順位 ※ 4位以降から撮影開始する場合は、指定した順位が戦力ランキングの上から4番目に位置するよう表示してください |
-e, --end-rank | 1000 | キャプチャ終了順位 |
--delay | 1 | 各画面遷移時の待機時間調整倍率 例えば2を渡すと本来0.5秒待機するところが1秒待機となります |
# 「data/abc/」に100-200位のスクリーンショットを保存
python autocap.py 127.0.0.1:5745 -d abc -s 100 -e 200
複数のBlueStacksとPowerShellを起動することで、並列に処理させることが可能です。
※ 複数のBlueStacksでそれぞれランキングを表示する際、時間差による順位ズレが発生しキャプチャ漏れするプレイヤーが出る可能性があります。BlueStacksの同期操作機能を使用し同時にランキングを表示することで防止できます。
※ 2並列で4コア8スレッドCPU・メモリ16GB、3並列で8コア16スレッドCPU・メモリ24GB搭載のPC推奨します。性能が不足すると表示遅延が発生し、正しくキャプチャできない場合があります。
# PowerShell 1
# 1-150位を処理
python autocap.py 127.0.0.1:5745 -e 150
# PowerShell 2
# 151-300位を処理
python autocap.py 127.0.0.1:5755 -s 151 -e 300
autocap.pyで収集したスクリーンショットから、プレイヤー名、ID、同盟タグ、戦力、過去最大戦力、T1〜T5撃破数、戦死数、資源援助数を抽出し、TSV(タブ区切りのCSV)で出力します。
- Windows 10以降
- Python 3.10
- Tesseract OCR 5.x
WindowsはGitHubから64bit版のTesseract v5.xをダウンロードしてインストールしてください。
※ インストール後、tesseract.exeまでのPathを通さないと動作しません。
macOSはHomebrewからインストールできます。
コマンドプロンプトやPowerShellで以下のコマンドを入力し、動作に必要なモジュールをインストールしてください。
pip install portalocker
pip install pillow
pip install joblib
pip install pyocr
python ocr.py {キャプチャの保存ディレクトリ名 }
オプション | デフォルト値 | 説明 |
---|---|---|
-j, --jobs | 論理CPU数 - 1 | 並列処理数 |
-t, --targets | id alliance power hpower t1kill t2kill t3kill t4kill t5kill ranged dead rss | OCR対象 |
--killtest | テストしない | 撃破数が正しくOCRされているか撃破ポイントの数値と比較テストする(処理時間増) |
# シングルプロセスでID,戦力,T4-T5撃破,戦死をOCR
python ocr.py dirname -j 1 -t id power t4kill t5kill dead
# T1-T5全ての撃破を対象にする場合は、'kill'で一括指定可
python ocr.py dirname -t id power kill dead --killtest