MacとPoke-Controllerとキャプチャデバイス
Macでポケコン動かそうと色々やっていて前回やっと起動するところまでこぎつけた訳ですが、僕の使っているelgatoのHD60SがMacと相性が悪くてなんやかんやしても結局画像が表示できない問題に直面していました。そこで次に
Basicoloの↑コレを買ってみました。HDMIパススルーもついて4kまで対応(要りませんが)で、一流ブランドのものよりはだいぶお安いやつです。ただなんとこれもうまくいきませんでした。Macでデバイスは認識してOBSなら映るんですが何故かポケコンでは動作せず…多分色々すれば使えると思うんですが、色々する前に次の子が届いたので結局使えずじまいでWindowsパソコン用になっています。Windowsでは問題なく使えますし遅延もそこまで目立ちません。
結局最後におちついたのが実績のあるコレ、1000円キャプボ
やはり信頼と実績のある商品。問題なく使用できました。
ちなみにこちらの商品、おそらく中国のOEM製品を卸してるメーカーのものだと思うんですがAliExpressで似たようなのが500円台とかでも売ってます。(最安で300円台ってのもありましたが消えてました)
この手の似た形のがアマゾンでやたら売られてるやつって大体が同じ中国の製造会社からデザインとブランド名をちょっと変えてもらって仕入れて利益乗せて転売してるだけですからね。
このキャプチャデバイスも元々の仕入れ値は100円とか200円とかなんじゃ無いでしょうか……話がそれましたがMacでポケコンで使えるキャプチャデバイス探してる方は無駄にいいやつ買わない方がいいですよ安いのでいいですよって話でした。
ポケモン対戦アシストツール メモ
欲しい機能
・型判別 + ダメージ計算アシスト →一番欲しい
・素早さ比較調整ツールみたいなのを一目で分かるような情報表示
・イベントログ
・最終的にはPC上で対戦シミュレーターを再現するのが目標→これができれば対戦AIが作れるけど途方も無いので一旦保留
型判別・ダメ計アシスト開発メモ 必要な処理
①ターン開始状態のHP、状態異常の取得
②(自分の選んだ技の認識or自分で選択)
③OCRを使って対戦ログの取得
→最大の難所 今作はメッセージボックス一応あるけど薄くて背景がぐちゃぐちゃなのでOCRが難しい + バグで変な画面が表示されることがある(これマジクソ)
技術的に難しいのでまずはチェックボックス形式で自分でアクションを選択する形で作ってみたい
④ターンの終了
⑤次のターンの開始状態の認識
⑥前のターンとのHPの差から定数ダメなどを除いて技によるダメージを求める
⑦ダメージと予め入力しておいた自分のポケモンの情報から相手の型を型を計算する
前準備として自分の手持ちの情報を入力しておく機能が必要
他に準備として全ポケモンの選出画面アイコンが必要
プログラミング能力は赤ちゃんレベルだけどGoogle先生に助けてもらいながら少しずつ作ってみます
PokeControllerとMacとtkinter
普段WindowsでPokeControllerを使って居ますが出先に持っていくパソコンがMacbookPro(M1)のため、そっちでもPokeControllerの環境構築をしようとしたんですが、問題が発生してかなり時間を取られたので半分愚痴の日記です。
PokeControllerはGUIを表示するのにPythonのtkinterというライブラリを使用しているのですが、これがMacと相性が悪いようで起動はできるけれどマウスクリックをするとフリーズするという状態になりました。
対応としては教えてもらった情報とTwitterや自動化鯖の情報をもとに上の画像の範囲をコメントアウトすると動くようになるとの事だったので試して見ましたが、解決しませんでした。
紆余曲折あって4時間ほど格闘しましたが、結果としてMacに入っていたPythonとtkinterのバージョンを変更したところなんとか動くようになりました。ただし動作はかなり重かったです。参考までにPythonを3.7.10→3.8に、tkinterを8.6.12→8.6.10に変更しました。コレが正しいのかどうかは全くわかりません。結果論です。
今後制作するプログラムもtkinterの使用を想定していましたが、PokeControllerに限らず他の色々のテストプログラムもMac上のVSCではうまく動かない事が多々あり困ってます。wxPythonとかもkindle unlimitedで読める参考書で見てみましたが、解説してるサイトなんかがtkinterに比べるとはるかに少なくて勉強のハードルが高いなあって事で諦めて当分はtkinter勉強して行こうと思います。かわりのGUI用ライブラリのおすすめがあれば教えて下さい。
ちなみにですが、その後キャプチャデバイスのelegato HD60SがMacで使えないという問題にも遭遇しました。elegato純正アプリでは問題なく使用できるのですが、OBSやopenCVでの画像の読み込みが出来ない状態でした。調べるとどうやらelegatoのデバイスのハードウェアエンコードがMacと相性が悪いらしく、ソフトウェアエンコードに切り替えた上で出力解像度も変えると認識するらしいんですが、力尽きて未解決のままです。毎回切り替えるのも面倒くさいんで実績のある1000円キャプボをAmazonでポチりました。こちらも解決できたら備忘録としてまとめます(まとめるとは言っていない
結論:大人しくWindows使っとけ
2023/04/10追記:
最新版のPython + tkinterでは一部Windowsと表示の差異はありますが問題なくGUIが表示出来ることを確認できたので面倒くさいことをしなくてもよくなりました。神。
2023/04/18追記:
やっぱり一部条件下でCombobox(プルダウンメニュー)操作時にフリーズする減少を確認。完全では無い模様。
備忘録
ポケモン対戦における現在の盤面を表す特徴量:
①お互いの手持ち3匹のHP
②お互いのポケモンのタイプ
③実数値
④持ち物
⑤技のPP
⑥場の状況(天候、フィールド、設置技、ルーム系、追い風、重力)
⑦特性
これくらいと思いますが組み合わせ数エグいことになりますね
1秒に100万通り読めるとして入力時間考慮して持ち時間のうち40秒だと4000万手
ポケモンには乱数と命中率があるから同じ技選択でも複数回(できれば30回くらい)の試行が必要だとするとまあ読めて3-4手先とかそれくらいになるんでしょうか
最適なプログラムを書けたとしてですけどね…
終盤はまあまあ強そうだけど序盤は厳しそう
起点作りとか釣り交換とかはかなり評価値作るのが難しそう
まあ一番面倒なのはシミュレーション用の対戦プログラム作るところなんですけどね