見出し画像

【BuzzWords 夏休み自由研究】プログラミング自動機銃ドローンの力で、ゾンビの恐怖から世界を救ってみた(かった)

どうも、BuzzWordsマネージャーです。
今日は自己紹介で予告していた夏休みの自由研究成果発表です。
(以下、自己紹介のリンク)

内容はタイトル&自己紹介での予告の通り、自動化ツールを使って、「The Typing Of The Dead」をクリアしようとする記事です。

以下、アジェンダです。

・The Typing Of The Deadとは?

まず、今回の題材となる「The Typing Of The Dead」(以下、TODとする部分あり)の紹介を。

元々は、「The House Of The Dead」という、ゲームセンターで遊べるガンコントローラーシューティング系アーケードゲームです。


それをタイピング練習用として作り直したものがこの「The Typing Of The Dead」です。


(下の写真は、世界の危機だというのに、のんきにゾンビの着ぐるみを着る主人公の図)

昔は、ゲームセンターにキーボード付きの筐体が置いてあったとか。
色んな人がタイピングしていて汚れてそう(下衆の勘繰り)

上記の画像のような、背中に背負った(ドリームキャストという)ゲーム機とキーボードがセットになった武器を使用して、ゾンビが持ってくるワードをタイピングすることによって敵を倒していくゲームです。

(ちなみにゲーム中のワード曰く、「映画化しようとハリウッドに持ちかけたところ、タイピングでゾンビを倒すという概念が伝わらなかった」そうです。笑笑)

2019/08/17段階で販売されているTODシリーズとしては、

・The Typing Of The Dead
(The House Of The Dead 2がベース。今回の題材)

・THE TYPING OF THE DEAD 2
(THE HOUSE OF THE DEAD 3がベース。BuzzWordsは持ってない。)

・The Typing of The Dead: Overkill
(PS3等のThe House of The Dead: Overkillがベース。販売に関してトラブルがあるらしいがこのチャンネルでは触れない。)

の3作品ですかね。

次回作が出るとすれば、マシンガンぶちかましゲーの「The House of The Dead 4」がベースになるはずなので、めちゃくちゃ楽しみにしてます
(´∀`*)SEGAさん...✨

・マジシャンとは?

続いて、今回のターゲットであるボス「マジシャン」について紹介したいと思います。

ネタバレにならない程度に彼の生態を説明すると、
自然界のピラミッドで人間の上に立つものとして作られ、シリーズが変わるごとに所有者が変わり、改造が施される最強のゾンビです(ゾンビなのか?!)。
そして、BGMが神。
詳しくは、ググってください(泣)

以下、初代(The House of The Dead)ではラスボスのマジシャン。

初代HOD、HOD2、HOD4SPとおおよそ半分の作品に出ていますが、
弱点は共通して、「分からない」という名の「装甲がはがれ、筋肉がむき出しになっている箇所」です(が、TODでは関係のないことです。)

ちなみに、ラスボスの弱点が不明と記されている割には、「ここ撃ってください」感が出てしまっているのはHODシリーズでは毎度のことです。

・マジシャン攻略情報

さて、作品背景の紹介ばかりでつまらないと思うので、そろそろ実際の攻略関係の話に入りたいと思います。

(以下、実際にツールなしで戦っている動画です。
後述のOpenCVを使って撮影したのですが、若干秒数通りに動いてませんので、もっと私のタイプは速いです(言い訳))

上記の動画から分かる通りに(?)、彼の攻撃パターンは2種類です。

火炎殴り
マジシャンが火炎を腕にまといながら突進してくる。
攻撃は「長文ワードを一文字目のタイプ以降、ミスタイプをすることなくタイピングを成功させる」ことによって停止させ、ダメージを与えることができます。

火炎弾
両手から10発ほど発射されるそうだが、実際に当たるのはワードを含んだもののみ。
具体的には、中程度の長さのワード×3 ⇒ 長文ワード×1の1セットをタイプすることで初めてダメージになります。
注意点として、ミスタイプは許される代わりに、「かなり高速でタイプしなければダメージを受けてしまう」ことです。
結構シビアな速度感です。。。

(攻撃名は以下参照)

このマジシャン攻略のためには、
長文をある程度の速度かつノーミスでタイプすることができる。
・複数の文字や長文をミスタイプがあってでも、かなり高速でタイプすることができる。
・上記の心持ちを瞬時に切り替えることができる。

といった資質が必要となる。さすがはHOD版初代ラスボス……

ちなみに、BuzzWordsにはボスモードのレベル3(最大5)をライフ5で突破が限度でした。
(それ以前のボスは同条件でレベル5までクリア、ラスボスはレベル4までクリア済みです。ミスりまくったら手加減してくれて、最後の最後は最弱と化すラスボスの方が簡単かもしれない…)

100回に1回くらい(?)火炎弾パートに行けるが、緊張してタイプがもつれてしまいクリアできません。。。
(´・ω・`)

というわけに、下記の自動化ツールを使って、マジシャン討伐用のオート照準機銃搭載ドローンを作成しましょう。

・OpenCVとは?

上記のリンクが今回参考にした本です。詳細はこちらに丸投げします(外道)

概要を説明すると、
色々なプログラミング言語で使用できる画像処理ライブラリといったところですね。

今回は、ゾンビが持ってくるワードの位置を検出するために使います。

OpenCVを使用すれば上記のように、ワードの英語部分が書かれている部分を検知(して、緑色の四角形を描画した証拠画像を作成)することができます。
ちなみに、動画撮影にも使いました。

どうやって検出しているか、実はかなりガバガバなロジックで行いました(恥)
がちょっと解説。

キーワードは、「しきい値処理」と「テンプレートマッチング」です。
このnote記事では、用語だけ覚えていただければいいのではないでしょうかね。

まず、「しきい値処理」というものを紹介します。

以下の画像は、
画面の三原色(RGB(赤・緑・青))がそれぞれある程度の濃さである場合には真っ白に、薄い場合は真っ黒にした各画像に対して、
RGBのすべてで真っ白であれば真っ白のまま。どれかで真っ黒の場合は真っ黒に。
といった処理で作成しました。

このように、「ある程度」よりも○○だったら××するという処理をしきい値処理と呼びます。

そして、上記の白黒画像に対して、

のような探索したい画像を用意して、
その場所の情報を得るテンプレートマッチングを行うことによって、上の方のゲーム画像のように、ワードの英語部分を取得することができます。

・OCRとは?

OCRは、Optical Character Readerの略で、日本語で言うと光学文字認識となります。
これが何かというと、手書きの文字や印刷された文字を読み込み、
正しい「文字データ」としてデータ化する技術のことを言います。

OCRの失敗例を示すと分かりやすいかもしれないですね。
例1:手書きの「d」を読み込む⇒「cI」と読まれてしまう。
例2:手書きの「B」を読み込む⇒「|g」と読まれてしまう。

というような、字が汚かったり、上手く読めなかった場合以外ではいい感じに文字を検出することができます。

導入手順などは、他の人の焼きまわしになってしまうので割愛です。

実際に動かしてみた結果などは最後の章で。

・PyAutoGUIとは?

こちらを参考にしました~。
辛島さんのPythonシリーズ2冊買いましたが、個人的には手軽にそのフレームワークの概要・美味しい所をさらえるので好きです。

今回使用したPyAutoGUIとは、クリック操作やキーボード操作を事前に指定して、任意のタイミングで実行できるフレームワークです。

何かの記事で上記のOpenCVと組み合わせて、自動でInstagramの記事にファボをするようなプログラム(押されていないファボアイコンの画像をテンプレートマッチングしてクリックする的なもの)があったりしましたね。

むかーしに殲滅されたTwitterの「いいね」を販売する業者もこういうツールを使ったりしてたんかなぁ~(下衆の勘繰り)

さて、上記3つを組み込んで作成した自動機銃付きドローンでマジシャンを倒すことができるのか……?!

・効かない……だと……?!

以下の動画が結果です。

2, 3ヶ所突っ込ませろやぁぁぁ……!!!!

Q.なんでめっちゃスロー&飛び飛びなんですか?(怒り)

A.1フレームごとに画像認識して、文字認識して、キーボード操作して、さらに録画という負荷にPCが耐え切れず、FPS(フレームパーセカンド)が0以下になってるからだと思います。


Q.そこはまあ分かりました。
な ん で 一 方 的 に フ ル ボ ッ コ に さ れ て る ん で す か ぁ ?(イカリング(にしたのはわざとです))

A.調べた限りでは、このゲーム、PyAutoGUIの仮想キーボードが効かないみたいですぅぅ
(´;ω;`)

と、フリの通りに「マジシャンを倒せない」という結果になってしまいました。。。

ちなみに、出力しているログ的には、

OOGATANSYUMENKYOII\aS«Sah
OOGATANISYUMENKYOBkSgilli
1OOGATANISYUMENKYOIIIBkSgl
__HORBAKWASUJIEMONI
_HORBARWASUJIEMONI
_HORBARWASUJIEMONI
HONEKAWASUJIEMON,
HONEKAWASUJIEMONee

ee
yt*
NAKANAKANOTURAGAMAEliaetee\
;sytEe
_NAKANAKANOTURAGAMAE3aI
isah’,
___—NAKANAKANOTURAGAMAE33MI
NAKANAKANOTURAGAMAE5
NAKANAKANOTURAGAMAE5
JlKKENMAGAI
JlKKENNAGAI
JlKKENMAGAI
JINTAIJIKKENMAGAI—T,
JINTAIJIKKENMAGAIeT,
JINTAIJIKKENMAGAIeT,
NWONATUYOU
NWONATUYOU
NWONATUYOU
JIKOMUJUNWONAIHOUII\I¥a
1JIKOMUJUNWONAIHOUoP)LABR
1SIKOMUJUNWONATHOUof)IBB

といった通り、がばついているのを除けば、正確に打てている部分もあるのでは?!
って、「ノーミス」じゃないとダメだからねぇぇぇ!!!!

ということで、

【結論】
・マジシャンの剥がれた装甲は、外部ツールによる予想不可能な角度からの攻撃から身を守るために使われている?!?!(嘘です)

・自動機銃付きドローンでは射撃の手元が安定しないため、やはり手練れが直接射撃する必要がある。

(いや、それよりも、ツールのキーボード機能が使えるかどうかくらい一番最初に調べろよ!!(正論))

Win10のタッチキーボードでは動いたので、そこをPyAutoGUIを使ってクリックさせればできる?!(超絶面倒臭いのでやらない!キリッ)

ということで、BuzzWordsの夏はぬるりと終わったのでした…/(^_^)/
まあ、別の何かに応用したいと思いますぅぅ。。。

ちなみに、今回はWindows10でTODを動かしていたのですが、Win10での動作保証はないようなので、買って久々にやってみよう!という方はお気をつけてください。

#自己紹介 #RPA #AI #ゲーム #夏休み #夏 #自由研究 #LabLife

この記事が参加している募集

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