unity1weekで実装出来た機能について振り返ってみた 実装内容編
機能について大雑把にまとめると、実は初心者であっても熟練者であっても実装出来る機能に大差はないんじゃないかと思ってしまった赤兎です。
そんなわけで、今まで学習してきた技術はこんな風に今回のゲームに生かされているんだという一覧を書いていきます。また、当然今回の制作で初挑戦したものも含みます。
およそ前半は用意された機能を使い倒したものについて、後半は自身で設計した内容について記述しています。
1. AIによる街モデル生成
Medieval Fantasy City Generator を使うことにより都市マップjsonファイルの作成を行いました。更に同開発者様の City Viewer によって3D化してobjファイルを作成しました。
2. Blenderによるモデルバグ修正
City Viewerによって作成したobjファイルをUnityにインポートしたところ明らかに表示に不具合がありました。blenderにインポートし、法線の反転バグを修正したうえでfbxエクスポートを行いました。
また、後述のNavMesh作成の際に一部メッシュが張られていない箇所がありましたので、重複頂点の削除や三角ポリゴンを意識したメッシュ張りを行いました。
3. NavMeshによる移動範囲の制限及び敵の生成位置の制限
NavMeshを作成することでColliderを利用することなく移動制限を実装しました。
また、壁の中にはエネミーが生成されないようにNavMesh.SamplePositionを利用して生成位置を制御しました。
4. URPにおけるPost-Processの実装
URPとビルトインレンダリングパイプラインではPostProcessの実装の仕方が少しだけ異なります。
また、URPAssetにおいてShadowDistanceを調整しました。
5. Cinemachineによるカメラワーク
Dampingを意識しました。また、ImpluseSourceによって振動を実装しました。
6. Animatorの作成
BrendTreeとSubStateを利用し汎用的なコントローラを実装し流用しています。
7. InputSystemの利用
古いInputManagerではなくInputSystemを利用しています。加えて、汎用性を保ったInputActionAssetを作成できましたので流用しています。
8. DoTweenアニメーション
DoTweenを利用して簡易アニメーションを実装しています。Sequenceの利用と各種オプションも利用しています。
9. Recorderを利用した撮影
アイコンやサムネイル作成にRecorderを利用しています。
10. ProjectSettingsにおける各種設定
オリジナルカーソルの実装、スプラッシュイメージロゴの実装などのコンテンツ実装からRendering周りのColorSpaceやAPI設定を行いました。
また、DataCashの無効化を行いました。
11. Microsoft PlayFabを利用したランキングの実装
12. Amazon S3を利用したVideoPlayerストリーミング
WebGLビルド及びunityroomにおいてVideoPlayerの再生はClip経由で行えないためAmazonS3を利用しました。
13. マウスホバー時のUIアニメーションや自作スライダーの実装
IPointerEnterHandlerやIDragHandlerを利用して各種UI部品を制作しました。
14. デザインパターンを意識した設計
SingletonやFactory等の基本的なパターンからMVPパターンのようなフレームワークまで意識して取り入れつつ自身で作成したインターフェースを元に実装を行っています。
また、この実装に向けてGenerics制約やSystem.Typeクラスを利用しています。
15. JetBrains Rider の FileTemplate機能を利用したnamespace運用
FileTempleteを利用し、region,namespaceをスムーズに実装しました。
その他にもPhotoshopやIllustratorでこんなことして素材作ったとかサウンド回りのスケールの仕方や可聴領域についての意識等様々な知識を動員しています。が、今回作成したアプリケーション内に留まらず制作しているライブラリの話になってきてしまうので割愛します。
感想編はこちらです。