推しアイデア
ランダムで部屋を作るアルゴリズムが実装されてたりするところ! 協力してボスを倒しにいくところ!
ランダムで部屋を作るアルゴリズムが実装されてたりするところ! 協力してボスを倒しにいくところ!
ローグライクゲームが好きなんです! それ以上ない!
UniRx - イベント DOTween - アニメーション Photon - 通信
GitBreakers
ローグライク通信協力ゲーム 毎回バグって形が変わる迷宮を最大4人の仲間とGitをぶっ壊してなんとかするゲーム さて何"メガ"バイト壊せるか!?
Assets ├── DownLoadAssets │ ├── DOTween │ ├── Photon │ └── UniRx └── MyAssets ├── Commmons │ ├── Animation │ ├── アニメーション入れるとこ │ ├── Fonts │ ├── フォント入れるとこ │ ├── Musics │ │ ├── SEs │ │ ├── 効果音を入れるとこ │ │ ├── BGMs │ │ └── 音楽入れるところ │ ├── 曲入れるとこ │ ├── Prefabs │ ├── プレファブ入れるとこ │ ├── Scripts │ ├── コード入れるとこ │ ├── Sprites │ ├── 画像入れるとこ │ └── 同階層の他のフォルダの中身も大体こんな感じです ├── Develops │ └── 個人の開発シーンの置き場 ├── Field ├── Result └── Title
今回シーンごとにScriptやPrefabを管理しています。 DownLoadAssetsにはDoTweenやUniRxなどの導入するだけで使えるもの、大量の画像ファイルなどがあるものを置いています。 MyAssetsには実際に開発するときにいじるものを置いています。
タイトル&マッチング画面
Fieldシーン
こんなところにくそでかフローチャートが!!!! 迷路作るノリでマップを自動生成するアルゴリズムです。 移動していきながら、部屋や通路を作ります。
イベント管理を行うことのできるライブラリです。 クラスの変数が変更された場合、その変更の通知を受け取ってなんらかの処理を行うことができます。簡単に言えば依存性の逆転が行えたりします。
例えば、変数を変更するクラスAとその変更されたことによって処理を行うクラスBがあったとします。
クラスAは自身の変数を変更したときにクラスBを参照して、クラスBのメソッドを発火する必要があります。 この時クラスBはクラスAのことを知る必要はありません。
クラスAが自身の変数を変更したという通知をクラスBが受け取ることでクラスBが自身の処理を発火させます。 この時クラスAはクラスBのことを知る必要はありません。
例の場合、変更を行う、変更から処理を行うの関係が1 : 1の関係なので、いまいちピンと来ないかも知れませんが、変更から処理を行うクラスがもしも複数個あった場合、変更を行うクラスはそれだけたくさんのクラスを参照することになります。
依存性の逆転を行うことで、それぞれの変更から処理を行うクラスは変更を行うクラス1つを参照すれば良いため、擬似的に1 : 1の関係を生み出すことができます。
高品質なアニメーションを行うことのできるライブラリです。 例えば三角形を上に移動させたい時は以下のコードを1行書くだけで動画のように動きます。
this.gameObject.transform.DOMove(Vector3.up * 2, 3);
動きながら回転は以下のように
this.gameObject.transform.DOMove(Vector3.up * 2, 3); this.gameObject.transform.DORotate(new Vector3(0, 0, 360), 3, RotateMode.FastBeyond360);
ちょっと力を貯めて
this.gameObject.transform.DOMove(Vector3.up * 2, 3).SetEase(Ease.InBack); this.gameObject.transform.DORotate(new Vector3(0, 0, 360), 3, RotateMode.FastBeyond360).SetEase(Ease.InBack);
といった具合に簡単にアニメーションを行うことができます。
マルチゲームを作る時に便利なライブラリです。 通信が死ぬほど楽になります。 マッチング処理も非常に簡単で
PhotonNetwork.JoinOrCreateRoom("Room", new RoomOptions(), TypedLobby.Default);
上記コードを実行すると"Room"と言う部屋に参加する、存在しなければ作る、という処理が行えます。 これだけでUnity上では通信を行うことができます。
インゲームの部分はふんわりクラス図書いて設計もどきをしたことで開発がかなりスムーズに行きました。 クラス同士の関係が見えやすいのはいいですね。
中村 - 企画、UI、デザイン 倉地 - マップランダム生成アルゴリズムの作成 林 - フィールドシーンの機能実装