Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

オーバーウォッチのマッチング通知

オーバーウォッチのマッチング長すぎん....?

Overwatchというゲームが僕は大好きですが,ここ最近異様にマッチングが長いです
10分越えなんてざらです
マッチング長いし洗濯でもしてるか...
なんてことすると,いつの間にか強制退出くらってます

ということでマッチングしたらスマホに通知をもらおう

まず,おおまかな仕組みはこんな感じです
Untitled Diagram (4).png
ミソはマッチの検出とお知らせ方法です

マッチ検出

おばっちはマッチが始まるとかっこいいBGMと相手味方のメンバーが表示されます
おばっちから直接データをいただくことはできないので(カプセル化させているので)
このBGMか画面の違いを取得することでマッチ検出を行おうと思います

BGM

音声認識使おうか?
でもcloud speechは無料で一時間までしか使えんしなぁ
やめた

画面遷移

マッチ後の画面学習させてYOLOかなんかで認識しようかなぁ
でも学習させるのめんどいし(マッチング画面はマップによって異なる)
認識率が心配....
ん?
マップによらず共通なのはマッチ前の画面の文字だけだよな?

[検索中....]←これ

これ認識させて検出できなかったらマッチ始まったってことでいいんじゃね?

マッチ検出実装

文字の認識にはOCRを使いました
画像から文字を取り出してくれます
C# OCRとググれば先人たちが輝かしいソースを残してくれているのでこれを使いましょう

Microsoft.VisualBasic.Interaction.AppActivate("Overwatch");
SendKeys.SendWait("{PRTSC}");

#ここに先人のコードを入れる→pageという名の変数で帰ってくる

if(page.GetText().Contains("検索中")) {
   処理
}

追記

microsoft OCRなるものを最近知りましたので
そちらを使ったものに近日中に編集します

お知らせ方法

IFTTTです
iPhoneで受け取ろうと思います
1.スマホでiftttのアプリを入れましょう
2.Webhooksからurlで送信できるトリガーを取得しましょう
3.スマホの通知を選択しましょう
4.取得したurlを使ってプログラムを編集しましょう

DateTime dt = DateTime.Now;
string result = dt.ToString("yyyy/MM/dd HH:mm:ss");
string lnk = "https://maker.ifttt.com/trigger/match/with/key/#########/?value1=" + result;
System.Diagnostics.Process.Start(lnk);

こんな感じです
日時を含めているのはtwitterでもつぶやこうと思ったので
同じ内容の送信をブロックする機能の対策として追加してます

でげだ!

ツイッターでつぶやかせました
aaaa.png

今のところ
検出の誤作動は,ないです
100発100中です
おかげさまでお風呂に入りながらでも,ダッシュで駆けつけることができるようになりました

おしまい

追記

なんかぐぐったらDiscordの機能かなんかで同じようなのあって草
ちなみにコードは大事なとこ以外かなり端折ってます

追記2

端折った内容の1部を説明しておきます(半年以上前の制作物なので記憶違いがある場合があるので悪しからず)
開発環境はvisual studio 2017 expressで
wpfアプリケーションとなっております
適当なボタンイベントを登録して
イベントの動作として上記のプログラムが実装されています
tessarct-ocrは学習データが必要です
このアプリケーションの場合は実行ファイルと同じ階層に学習データを配置する必要があります。
itfffに関してはurlを持ってくるだけなのでそこまで難しくは無いです。また参考にできる記事も多々あります
以上。

kensaki
情報工学生 大した知識もなく 適当にやって動いて喜んでる人 一銭にもならん記事書いてて悲しくなったりしてます 最近はC++を勉強してたりしてなかったり
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away