カテゴリー別アーカイブ: Python

タワーディフェンスゲームを作る(20)

ゲームシステムのエフェクト以外を実装したので、マップの作成を開始した。
具体的には Tiled Map Editor でマップ作成をするために、タイルセットを作成するのと、Tiled Map Editor の保存データをこのゲーム用のデータフォーマットに変換するスクリプトを作ります。

で、できたタイルセットがこれです。

このゲームでは高低差があるマップを表現したかったので、タイルセットに高さを示す数値を書き込んで、それで高低差を実現することにしました。

Tiled Map Editor が出力する tmx ファイルは見ればわかるフォーマットなので、Python スクリプトを作って自分のゲーム用のデータに高さを使うようにした上で変換しました。

あとは、ゲームで使う画像をカラーから白黒にしたかったので、これも Python スクリプトで作成しました。

このスクリプトは下記サイトのものを参考にしました。

https://qiita.com/gigegige/items/aad577f49cf4f203f03d

ここまででマップ作成もエディタでできるようになったので、ゲーム起動からゲームまでの流れとか、ストーリーとかを考えようと思います。

いい感じです。

HotS のリプレイを可視化するツール(1)

Heroes of the Storm のリプレイファイルを可視化したいなと思っている。
X 軸に時間、Y 軸に各ヒーローのマップ上の Y 位置をプロットしたグラフを作ったらリプレイの雰囲気がわからないかな? と思ったので作って試してみる。

最終的には Web ページでグラフを表示できればいいと思うけど、まずは CSV ファイルにデータを出力して、それを外部ツールで表示して雰囲気を確認しようと思う。

Heroes of the Storm のリプレイファイルの解析には
https://github.com/Blizzard/heroprotocol
この heroprotocol という Blizzard 提供の Python ライブラリを利用します。

で、ヒーロー位置のマウスの位置とかから計算しないといけない、気がする。
よくわからない。次は、もう少しデータを読みこむあたりをやろうと思う。

ただ、MinionXP, CreepXP, StructureXP, HeroXP は定期的に出力されているので、これをグラフ化するのは簡単そうだ。

透過メガネっぽいアプリ作り

「すけすけゴーグルくん」アプリの記事を見て「あ、これなら私にも作れるかも」って思ったので作り始めた。 画像処理の勉強も兼ねようと思ったので、「実践コンピュータビジョン」(O’REILLY) を見ながら進めた。

作る前の準備

まず、どう作るか考えた。

透過なしの場合の描画内容

ーーーー  ← メガネのフレーム画像
ーーーー  ← カメラで取得した画像

透過する場合の描画内容

ーーーー  ← レンズ部分に透過画像をはめ込んだ画像
ーーーー  ← メガネのフレーム画像
ーーーー  ← カメラで取得した画像

ここまでで、透過前、透過後、そしてメガネの画像が必要そうなのがわかった。
で、必要な素材を「いらすとや」さんで探してきた。

ushi ushi_naked glasses

いらすとや さん、ありがとう!
次に、適当な Web カメラがないのに気づいたので、最寄りのビックカメラで一番安いやつを買ってきた。

cheap_web_camera

なんだろな、ここまで準備がガバガバだと、「本当に思いつきで始めたんだなー」って自分で客観視できて良いです。

作り始めた

私が勉強していく過程でわかったこととかを説明し直すのは面倒なので、作業途中のスクリーンショットだけ貼っていきます。

ushi_sift_matching
同じ画像で SIFT 特徴量を用いたマッチングをしたはずなのに、対応位置がずれてショックを受けたときのスクリーンショット。

ushi_sift_matched_fixed
ふて寝した後で見なおしたら、あっさり修正できたときのスクリーンショット

ushi_match_matched
ホモグラフィーとか RANSAC を使って、モニタをカメラで撮った画像に対して検出できた画像の枠を青色で描画してみたときのスクリーンショット。 それなりに動作してちょっと嬉しかった。

transparent_niku
最後に、眼鏡内に透過後の画像をはめ込むようにして、実際に動作させたときのスクリーンショット。 縮小してない画像に SIFT を適用して処理が激遅だったり、アフィン変換が RGB 画像だと失敗する理由がわからなくて、透過画像が白黒になったりしている。

とりあえず、動作したことにした!

まとめ

  • 実践コンピュータビジョンの内容に沿って進めたら、それなりに動作して嬉しかった。
  • ちゃんと動くものを作るなら、何かの AR ライブラリを利用して作るのが簡単だと思う。
  • 和牛の垂れ幕が透けても、あまり嬉しくないのがわかった。

今回の記事のソースコードとかは、以下にあります。
https://bitbucket.org/satofumi/transparent_glasses