作成したもの
Project Tinyでシンプルなランゲームを作成しました。
Chromeのイースターエッグの"T-Rex dinosaur game"(chrome://dino/)を真似て作りました。
プロジェクトデータはGitHubにて公開しています。
ライセンスはMITです。
https://github.com/chocolate-ice-cream/TinyRun
開発環境
- Windows 10 Home
- Unity2019.2.0b10
- Project Tiny 0.16.1 preview
あそびかた
リポジトリのREADME.mdを参照してください。
https://github.com/chocolate-ice-cream/TinyRun/blob/master/README.md
この記事について
Project Tinyでミニゲームを作成時に使用した機能やトラブルをいくつかに分けて説明していきます。
今回はプロジェクト作成とDOTSモードについてです。
Project Tinyのプロジェクト作成手順
Project Tinyのインストール
Project TinyはUnityのPackage Managerからインストールします。
Project Tinyをインストール後、Burstのパッケージでエラーが出ます。
その場合はBurstのパッケージを1.1.2にアップデートします。
Prject Tiny用プロジェクトデータ作成
メニューから[DOTS] -> [New Projet...]を選択します。
ダイアログが表示されるので、任意のフォルダに任意のファイル名をつけて保存してください。
プロジェクト作成が終了すると、エディタが"DOTSモード"という今までとは少し違った表示に変わります。
これでPrject Tiny用プロジェクトデータ作成は完了です。
あとはこのプロジェクトにアセット、コンポーネント、システムを作成しゲームを作っていきます。
DOTSモード
DOTSモードとは?
Project TinyはGameObjct,MonoBehaviourを使用した開発環境とは違い
DOTS環境で構築されており、エディタも"DOTSモード"という専用の表示に変わっています。
詳細についてはこちらの0.15.3リリース時のフォーラムのアナウンスを確認してください。
操作方法
Entityを作成しそこにコンポーネントを追加、プロパティの値や参照を設定するという、
シーンを作成する基本的な部分はそんなに変わらなかったりします。
なので、"DOTSモード"といっても実際は今までと同じような感覚で作業ができます。
DOTSモードで戸惑った・不便だった点
Entityのアクティブ、非アクティブの扱い
Entityは非アクティブにするとDisabledコンポーネントが追加され、
アクティブにするとDisabledコンポーネントが削除されます。
EntityはGameObejctのように自身のアクティブの状態を保持するプロパティを持っていないため、
Disabledコンポーネントの有無でアクティブ状態を判別しています。
最初これを知らなかったため、自分は少し戸惑ってしまいました。
一部のコンポーネント以外のプリセットのEntityが作成出来ない
プレビュー版なので仕方ない部分だとは思いますが、メニューから作成できるのが
"Audio Source","Camera","Sprite","Canvas"のみなのはやはり不便でした。
特にUI用のテキストについては"RectTransform""Text2DStyleBitmapFont","Text2DRenderer",
"Text2Dstyle","TextString"といくつものコンポーネントが必要なためなかなか手間でした。
実行時にSceneビュー、Gameビューでの確認が出来ない
通常のエディタでPlayボタンを押すとGameビューで確認できますが、
DOTSモードではビルドを行い実際に作成されたものを実行します。
なので、HierarchyでEntityを選択しコンポーネントの値を確認しながらといったようなことが出来ず
調整やデバッグに苦労しました。
感想
Project Tinyが0.15.3からC#の使用が可能になり、ECSの勉強も兼ねてミニゲームを作ってみました。
わかってはいたことですが、プレビュー版のため使用できる機能が少ないので
Project Tinyでゲーム開発を行うのはまだ時期尚早かなというのが率直な意見です。
開発に関するネット上の情報が全くないため、開発中に詰まった場合の情報源は
ドキュメントとUnity Forumしかないのもなかなかつらいところでした。
反省点としてECSでの開発が初めてだっため、コンポーネントや処理がとっちらかってる感じが否めません。
特にマウス・キーボードの入力周りで場当たり的な実装をしてしまっている箇所が多く、
今後の開発では改善していきたい部分です。
前述したように情報が全く無いので、今後Project Tinyを使ってゲーム開発をする人の参考になるよう
使用した機能の説明やハマったポイントを記事にして公開したいと思います。