製作物一覧
第1作目:さんもくにゃらべ
公開URL
使用技術
Unity
ゲーム木探索(AlphaBeta法)
製作期間
2ヶ月
詳細
自分一人で最初から最後まで制作した初めての作品。内容としては「三目並べ」+「各キャラの小話」という構成。
これまでにゲームを作ったことがなかったので、単純なものでも良いので、まず一つ作ってみようという動機からスタート。
ボタン用クラスに直接ロジックを埋め込んでしまったため、後から処理修正するのが難しくなるという事態に。
これを機にMVPパターンやシングルトンパターンといったデザインパターンを勉強して以降のアプリ開発に取り入れることにしました。
第2作目:対局時計Simple
公開URL
使用技術
Unity
製作期間
1ヶ月
詳細
Apple Store と Google Play Store で公開しているモバイル端末用対局時計アプリ。
GUIまわりの「MVPパターン」を試したい+対局時計アプリにしっくり来るものが少ないので自分で作りたいという動機からスタート。
友人に使ってもらったところ、将棋等のボードゲームを競技としてプレイしている人は対局時計の時間が切れそうになっているかどうかを秒読み音のピッチで判別していることが判明したので、秒読み時は残り時間10秒以下と5秒以下でピッチを変更するように修正。
第3作目:DeZeroUnity
公開URL
使用技術
Unity
MathNet.Numerics
ニューラルネットワーク
製作期間
4ヶ月半
詳細
GitHubでOSSとして公開している自作の深層学習用フレームワーク。「ゼロから作るDeepLearning」の第3巻で紹介されている「DeZero」というフレームワークを参考に実装。
Unity上にUPMから簡単に導入できて、Pytorchのようにシンプルな記述でニューラルネットワークを組めるようなフレームワークがほぼないので、自分で作ってみようという動機からスタート。
現在も開発途中で、PythonのNumpyでできていたことをC#で再現するのに苦戦中。
※行列計算の部分を自作のMatrixクラスで実装をする作業中。
現在できているのはカートポール制御の学習をニューラルネットのみで行い、安定させるところまで。
第4作目:Hit or Stay ?
公開URL
使用技術
Unity
製作期間
2日
詳細
Unity1Weekゲームジャムのお題「1ボタン」で制作したブラックジャックライクのミニゲーム。
ルールは
・交互にHit、Stayを選ぶ ※Stayしても次のターンはHit可能
・Hitの場合は1~9をランダムに得点に加算
・31点を超えたらその時点で負け
・お互いに相手の合計得点は分からない
・双方Stayを選択時に得点が高い方が勝ち
というもの。
1ボタンというお題を見て、上記のようなゲームがパッと思いついたのでUnity1Weekに初参加してみました。
DOTweenを使ったUIのアニメーションにも挑戦し、前作よりも少しだけUIの動きをリッチにしてみました。
第5作目:ねこあつめ
公開URL
使用技術
Unity
ゲーム木探索
AlphaBeta法
モンテカルロ木探索
Unity MLAgents(深層強化学習)
製作期間
3ヶ月
詳細
猫の駒を操作して盤上の数字を集め、最終的に合計得点が多かった方が勝ちという対戦ゲーム。
4キャラそれぞれに別々の対戦用AIを用意しています。
用意したAIの種類は
ランダムAI
モンテカルロ木探索AI
AlphaBeta探索AI
深層強化学習AI
の四つで、深層強化学習AIを作成する際は「Unity MLAgents」を利用しました。
自作したDeZeroUnityを使ってスクラッチで深層強化学習を実装することも考えましたが、時間が結構かかりそうなのと、フレームワークも扱えるようになった方がエンジニアとしての幅が広がるかなと思い、MLAgentsを使ってみました。
用意されているサンプルや実装してみた系の記事に記載されているものにはターン制対戦ゲームが少なかったため、今回の自作ゲームに合わせて実装するのにかなり時間がかかりましたが、なんとかAIを学習させるところまで実装できました。