【TinyUnity】ProjectTiny0.28がリリースされました!

0.25、0.26はバグ修正や細かな仕様変更が主でしたが、0.28では幾つかの大きな機能追加が行われました!

Project Tiny 0.28 preview is available

https://forum.unity.com/threads/project-tiny-0-28-preview-is-available.939876/

Unity 2020.1.0f1以上が必要です

今回からの追加要素および機能改善

・基本的なゲーム内テキストレンダリング

・CPU / GPUメッシュスキニング

・モバイル端末上での画面方向変更に対応

・ビルド時または実行時にレンダーグラフプロパティが選択可能になりました

・動的にライトを扱えるようになりました

・WebP画像の非可逆/可逆符号化が可能になりました

・Webビルドでのオーディオアセットの解凍が改善されました

・単一のHTMLファイルとしてビルドが可能になりました

・.NET Coreを使用してWindowsおよびMacOSで
il2cppの実行が可能になりました

・IL2CPPコード生成を改善、出力コードサイズが小さくなりました

・プロファイラーのマルチスレッドのサポート

・PlayerConnectionのマルチスレッドのサポート

・AndroidおよびiOSの詳細なビルド設定のサポート

・Android ARM64およびFATサポート

・ビルド設定コンポーネントに画面の向きの設定が追加

今バージョンでの注意点

Play-in-Editorゲームビューはサポートされなくなりました。

ProjectTiny0.28以降、Play-in-Editor(DOTSハイブリッドモードを介したゲームビュー)はサポートされなくなりました。

将来、組み込みのDOTSランタイムプレーヤーがゲームビューを引き継ぎ、置き換えられることが予定されていますが、現時点でこれは実装されていません。

そのため、現時点ではテスト実行ですらWindows / Mac DotNetBuld構成で
「Build and Run」を使用する他有りません。

テスト実行のたびに毎回ビルドするの!?と驚くかと思いますが、
多少変更を加えた程度であれば前回のビルド結果を利用してリビルドを行うためそれなりに高速にビルドされ、実行が可能です。

いくら早いからって毎回ビルドするのは….って思う気持ちもわかりますが、こればっかりは仕方有りません。
必要な機能が結構無い、これがDOTS関連のPreview機能です。
受け入れましょう。

今バージョンでの注目ポイント

・基本的なゲーム内テキストレンダリング
ついに来ました、テキストレンダリングです。
今まで、ProjectTinyではテキストは各自で使用したい数字やアルファベット、文字毎に画像を作成し、Quadにマテリアルとして貼り付けてマテリアルの動的差し替えを行うことでテキストの描画を代用させる手法を取るしか有りませんでした。
この手法はとにかく前準備が面倒であり、差し替えるためのマテリアルの準備や、
差し替えを行うSystemの定義、及び制御等、考慮すべき点や手順が多く大変な作業でした。
しかし、その悩みからついに開放されることになります。
高度な描画システムではないため、テキストアニメーション等の演出を織り交ぜる事は困難かと思われますが、得点表示、操作説明くらいには十分使える機能だと思います。
カスタムフォントにしっかり対応しているのか、日本語(2Byte文字)に対応しているのかは後日改めて調査して記事を書く予定です。

・単一のHTMLファイルとしてビルドが可能になりました
今まで、Web向けのビルド形式はWasmかAsmjでした。
今回のバージョンからは更に単一のHTMLファイルとして出力が可能になりました。
今バージョンのリリーススレッドを見る限り、HTML広告を意識して実装されたようです。
実際にビルドしてみると、本当に使用リソースから何から、全て一つのHTMLに内包されて出力されます。凄い。

・IL2CPPコード生成を改善、出力コードサイズが小さくなりました
ProjectTinyは通常のUnityと比べれば圧倒的に出力されたゲームデータの容量は小さいのですが、同規模のゲームと比較した際には容量はまだまだ大きいと言えるくらいの容量でした。
今回のアップデートではビルド時のIL2CPPコードの生成が改善されたことで出力サイズが削減されています。(正直それでもまだ大きいですけどね)

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

さて、単一HTML出力がWebビルドの方法に加えられたProjectTiny0.28ですが、
肝心のビルドサイズはどのように変化したのでしょうか?
今回はWasmビルドと単一HTMLビルドを行い、
ProjectTiny0.24でのビルドサイズと比較してみます。

TinyRacing

ProjectTiny0.24

  • Wasm 10MB

ProjectTiny0.28

  • Wasm 10MB
  • 単一HTML 13.8MB

Wasm出力では前回と差は有りませんでしたが、
単一HTMLで出力するほうがデータサイズは増加するようです。

最小構成(リソースは316KBのモデルのみ)

ProjectTiny0.24

  • Wasm 2.7MB

ProjectTiny0.28

  • Wasm 4.6MB
  • 単一HTML 5.85MB

最小構成で結果を見てみると、前回よりもむしろデータサイズが増加していました。
前回よりも機能が増えたため、その分基礎システム分のデータサイズが増加したと推測できます。
(実際どうなのかは正直良くわかりません。今後軽量化されるのかも。)

実際に端末で動作させた際のパフォーマンス

動作確認に使用した端末はiPhoneXRとWindows10です。
ブラウザごとに確認していきます。
今回はWasm出力、単一HTML出力されたビルドデータで確認してみます。

Windows10(Wasm)

  • GoogleChrome
    正常に動作。
    非常に軽快に動作しており、常にほぼ60FPSをキープしていた。
  • FireFox
    少々もっさりとした印象を受けるが正常に動作する。
    平均50FPS
    大きくFPSが落ちるということはないため、安定しているとは言える。

iOS(Wasm)

  • GoogleChrome
    非常に軽快に動作。
    常に60FPSをキープ。
  • Safari
    非常に軽快に動作。
    常に60FPSをキープ。
  • FireFox
    非常に軽快に動作。
    常に60FPSをキープ。

Windows10(HTML)

  • GoogleChrome
    正常に動作。
    非常に軽快に動作しており、常にほぼ60FPSをキープしていた。
  • FireFox
    少々もっさりとした印象を受けるが正常に動作する。
    平均40~50FPS。時々30FPS前後まで低下する。
    安定した動作は現状期待できない。

iOS(HTML)

  • GoogleChrome
    非常に軽快に動作。
    常に60FPSをキープ。
    しかしながら、途中で必ずページがクラッシュする。
    正常動作とは言えない。
  • Safari
    非常に軽快に動作。
    常に60FPSをキープ。
    しかしながらこちらも同様、途中で必ずページがクラッシュする。
    正常動作とは言えず。
  • FireFox
    非常に軽快に動作。
    常に60FPSをキープ。
    FireFoxでは最後まで正常に遊ぶことが出来た。
    この3つの中では一番安定している印象を受ける。

Wasm出力では今までとほぼ同様のパフォーマンスが見られましたが、
HTML出力はまだまだ不安定さが見られる結果となりました。
次回アップデートでこのあたりの修正がされることを願うばかりです。