製作物一覧

第1作目:さんもくにゃらべ

unityroom

2ヶ月

自分一人で最初から最後まで制作した初めての作品。内容としては「三目並べ」+「各キャラの小話」という構成。

これまでにゲームを作ったことがなかったので、単純なものでも良いので、まず一つ作ってみようという動機からスタート。

ボタン用クラスに直接ロジックを埋め込んでしまったため、後から処理修正するのが難しくなるという事態に。

これを機にMVPパターンやシングルトンパターンといったデザインパターンを勉強して以降のアプリ開発に取り入れることにしました。

2作目:対局時計Simple

Google Play Store

Apple Store

Unity

1ヶ月

Apple Store と Google Play Store で公開しているモバイル端末用対局時計アプリ。

GUIまわりの「MVPパターン」を試したい+対局時計アプリにしっくり来るものが少ないので自分で作りたいという動機からスタート。

友人に使ってもらったところ、将棋等のボードゲームを競技としてプレイしている人は対局時計の時間が切れそうになっているかどうかを秒読み音のピッチで判別していることが判明したので、秒読み時は残り時間10秒以下と5秒以下でピッチを変更するように修正。

3作目:DeZeroUnity

GitHub

4ヶ月半

GitHubでOSSとして公開している自作の深層学習用フレームワーク。「ゼロから作るDeepLearning」の第3巻で紹介されている「DeZero」というフレームワークを参考に実装。

Unity上にUPMから簡単に導入できて、Pytorchのようにシンプルな記述でニューラルネットワークを組めるようなフレームワークがほぼないので、自分で作ってみようという動機からスタート。

現在も開発途中で、PythonのNumpyでできていたことをC#で再現するのに苦戦中。

※行列計算の部分を自作のMatrixクラスで実装をする作業中。

現在できているのはカートポール制御の学習をニューラルネットのみで行い、安定させるところまで。

4作目:Hit or Stay ?

unityroom

Unity

2日

Unity1Weekゲームジャムのお題「1ボタン」で制作したブラックジャックライクのミニゲーム。

ルールは

・交互にHit、Stayを選ぶ ※Stayしても次のターンはHit可能

・Hitの場合は1~9をランダムに得点に加算

・31点を超えたらその時点で負け

・お互いに相手の合計得点は分からない

・双方Stayを選択時に得点が高い方が勝ち

というもの。

1ボタンというお題を見て、上記のようなゲームがパッと思いついたのでUnity1Weekに初参加してみました。

DOTweenを使ったUIのアニメーションにも挑戦し、前作よりも少しだけUIの動きをリッチにしてみました。

5作目:ねこあつめ

unityroom

3ヶ月

猫の駒を操作して盤上の数字を集め、最終的に合計得点が多かった方が勝ちという対戦ゲーム。

4キャラそれぞれに別々の対戦用AIを用意しています。

用意したAIの種類は

ランダムAI

モンテカルロ木探索AI

AlphaBeta探索AI

深層強化学習AI

の四つで、深層強化学習AIを作成する際はUnity MLAgentsを利用しました。

自作したDeZeroUnityを使ってスクラッチで深層強化学習を実装することも考えましたが、時間が結構かかりそうなのと、フレームワークも扱えるようになった方がエンジニアとしての幅が広がるかなと思い、MLAgentsを使ってみました。

用意されているサンプルや実装してみた系の記事に記載されているものにはターン制対戦ゲームが少なかったため、今回の自作ゲームに合わせて実装するのにかなり時間がかかりましたが、なんとかAIを学習させるところまで実装できました。

6作目:将棋道場

unityroom

GitHub

6ヶ月

大学将棋部の同期と3人で製作した将棋対戦アプリです。

同期と一緒にゲームを作るための練習として、まず将棋のゲームを作ってみようというところからスタート。駒を取る、成る等の動作をした時に破綻のないようなUI実装を行うという部分、および仮組みが出来上がってからのリファクタリングの部分にかなり苦戦しました。

対戦用AIに関しては現在も実装中で、現状だと単純なAlphaBeta探索を用いたAIを実装しているだけのため、レベル的にはぴよ将棋の13~15級程度になっています。