Flappy Bird風ゲームを作ってGoogle Playに公開した話

先日、Google Playに自作ゲームが公開されました

ゲームの内容

Flappy Bird風ゲームで、鳥を操作して火の玉の列を潜り抜けるゲーム。

名前は「YakiTori」です🐓🔥。

play.google.com

ちなみにスコアは[秒数*100]のスケールです。

開発について

Unityで開発しました。試験勉強とレポートの時間を削って開発時間を生成。

内容が内容なので作るのに時間はかからないと思ってましたが、複数解像度対応とそれで発生したバグに開発時間の大半をかけています。(バグは自分の実機でしか発生しなかったから本当に悩んだ)

qiita.com

初のスマホゲーム開発でしたが解像度の違いをどうするかで苦労しました。というか今もどうするのが正解なのかわかってない。

終わりに

今後のアップデート予定です

f:id:sh00t:20191218154446p:plain

左に物騒な文字が見えますね..

この記事見た人全員ダウンロードしないとソースコードに全角スペースが混じる呪いかけない

OpenAI Gymの自作環境を作って学習させた

お久しぶりです、今回はOpenAI Gymの自作の環境を作って強化学習を用いて学習させたのでまとめておきます

 

OpenAI Gymとは

強化学習アルゴリズムなどの開発と評価のためのツールキットで、人工知能を研究する非営利団体のOpenAIが提供しています。OpenAI Gymにおける環境はエージェントからの行動を受け取って変化して次の状態と報酬を返す共通のインターフェースを持っています。

作った環境

弾避けゲームの環境を作りました。

f:id:sh00t:20190526001521p:plainf:id:sh00t:20190526001532p:plain

描写とキー入力以外は冬に作った弾幕シューティングゲームのコードを多く流用できましたが描写とキー入力でゲーム画面のRGB値を状態とする都合上Pyxelを使わずにPygameを使用しました。

現時点で環境は(弾幕の違い2種類)*(アクションの違い2種類)の4種類があります。上図の左は直進する弾幕で、右は発射された後に軌道を変えます。アクションは左右にしか移動できない環境と8方向に移動できる環境の2種類を用意しました。

下は環境のリポジトリです。

github.com

学習結果

自作環境で強化学習を使って学習させた結果は下のレポジトリにあります(ここにgifファイル貼ろうとしたらアップロードに失敗するのでリポジトリ参照)。

github.com

直進する弾幕のタスクの8方向に動ける弾幕では、下で避けたほうがいいはずなのに毎回上で避けて結局3方向に動けるときよりも早く被弾しています。状態から自機の位置をみて下に行くほど報酬に補正を掛けるなどを行えば下で避けるように学習するかもしれません。

弾の軌道が変化する弾幕では直進弾幕より早く被弾しています。心なしか自分でプレイしてよく被弾する状況と同じような状況で被弾している気がします。

おわりに

自機の移動だけの弾避け環境を作りましたがショットを実装して敵を撃破する環境を作っみたくなってきました。

弾幕シューティングゲームはいいぞ。