【TinyUnity】ProjectTiny0.22に遂に2D機能が追加されました! 【2D】

2D Foundational Features for Project Tiny 0.22

https://forum.unity.com/threads/first-batch-of-2d-features-for-project-tiny-0-22-is-now-available.830652/

ついに2D機能が公開されました!

でもまだまだ発展途上ではあります。
とりあえず2Dの機能に対応したよという感じですね。
では早速追加要素を見ていきましょう

今回からの追加要素

2D機能はProjectTiny0.22を対象として作られています。
他のバージョンでは機能しません。

レンダリング

  • Spriteに対応
  • SpriteRenderer が対応
  • Sprites/Default Material に対応
  • Sprite Atlas に対応
  • Runtime 2D rendering pipelineが追加
  • Editor 2D rendering pipelineが追加

物理演算、衝突

  • Primitive colliders に対応
  • Compound collider に対応
  • Rigidbody2D に対応
  • ブロードフェーズの衝突判定に対応
  • ブロードフェーズ のQueryAPIを追加

現在確認されている問題点

  • アスペクト比は16:9に固定
    • Frustum cullingは16:9の錐台で行われている
    • Projection matrix は16:9のアスペクト比でロック
  • エディターでは、Trigger時に音声が再生されない
  • GameViewウィンドウでレンダリングされているものを表示するには、MainCameraSubSceneを常にEditModeで開いたままにする必要がある
  • ビルドパスまでの最大文字列長がある(超えるとビルドできない)
  • SubScenes間のアセットの共有は現在サポート外
  • ランタイムアセンブリ定義にドット(.)を追加すると、Androidのビルドの実行アクションが失敗する
  • ビルド設定ファイル名にスペースを追加すると、ビルドパイプラインがビルドに失敗する
  • プレイモード中のエディターでは、SubSceneがEditModeの場合、SceneViewはSubSceneのコンテンツを正しく描画できない
  • コンバーターをConverterVersion属性で装飾する必要がある
    コンバータを変更するたびにバージョン番号をインクリメントしなければならない
  • Profiler、Entity Debugger、 Frame Debugger はエディター内で使用できるが、Project Tinyビルドには接続できない
  • バッチ処理の結果は、同じ Rendering pipeline を共有しないため、エディタービルドとProject Tinyビルドで異なる

今回の注目要素

もちろん、今回の注目機能は2D機能です。

Editorからも確認できますが、ペラペラです。

公式からは以下の二つのサンプルゲームが提供されています
一度遊んでみると今回の2D機能の性能がざっくりとわかると思います。

  • TinyGems 3マッチパズル
  • TinySpaceship 360度のトップビューシューティング

なお、この二つのゲームはProjectTinyのサンプルリポジトリから入手できます

ProjectTinySamples

https://github.com/Unity-Technologies/ProjectTinySamples

今までは利用できなかったSpriteRendererが利用できるようになりました。
Colorを操作することで色合いを変更することも可能です。

2DColliderも利用できるようになりました。

TinySpaceShipではButton機能をColliderを利用して構築しています。

気になった人は是非チェックしてみてください。

実際にビルドした時のサイズについて

上記二つのサンプルゲームと、公式提供の最小構成の3つのプロジェクトを用いてビルド時のサイズを確認してみました

TinyGems

  • asmJS 26.3MB
  • Wasm 4.5MB

TinySpaceShips

  • asmJS 26.6MB
  • Wasm 4.5MB

最小構成(78byteの六角形を描画するだけ)

  • asmJS 24.4MB
  • Wasm 3.6MB

流石にサイズが大きすぎませんか…

昔のProjectTiny2Dだと大きくても1MB以内に収まっていたので、
最適化がまだまだなのかな?という感じはします。

将来的には軽量化された専用のレンダーパイプラインに変わるようですが、
現在はURPに乗っかる形で構築されている都合上、おそらくレンダリング周りがとにかく膨れ上がり過ぎているのかなと思っています。

今後もっとサイズが小さくなっていくとは思いますが、現状ではまだまだサイズが大きすぎるというのが正直な感想です。

実際の動作はどんな感じ?

今回はWindows10とiOSを用いてチェックしてみました

Windows10

  • Chrome 全体的にもっさりとした動き。遅い。
  • FireFox サクサクと軽快に動作する

iOS:Safari、Chrome、FireFoxのどれも問題なく軽快に動作していました

また、私は持っていないので実際に確認は取れないのですが、Macでも軽快に動作しているようです。

個人的な今回のアップデートの印象

まだまだ2D機能は未完成ではあるものの、それなりに機能はしているように感じました。

もちろん、まだテキスト表示ができなかったり、標準ではボタン機能が存在していなかったりはしますが、一応は自前で用意できないレベルではないのでそのあたりは根気でカバーするしかないのかなと思います。

今後も2D機能はどんどんアップデートされていく筈なので、次のアップデートにも期待したいですね。

ただ、現状ではあまりにもビルド後の実行物のサイズが大きすぎるので、そのあたりを早めにどうにかしてほしいなと思いますね。

78byteの画像一枚表示するだけで25MB、3.6MBは流石に許容できないレベルです…

今回から追加された2つの2Dゲームのプロジェクトに関しては今後少しずつ解析記事を書いていけたらなと思っています。