マガジンのカバー画像

しゃんぐりらマガジン(Unity)

90
普段は主にUnity初心者・未経験者に向けての情報を発信しています。発信していく中でUnityに関連する情報をまとめたマガジンになります。
運営しているクリエイター

#indiedev

キラキラ楽しいハロウィンのAndroid用タップゲーム[Crazy Tap Helloween]をリリースしました!

ゲームのベース部分は、いたのくまんぼう様の黄色い和尚本[Unityの寺小屋]で作り方を学んで作ったクリッカーゲームです。現在は英語版のみです。 Googleプレイのダウンロードページはこちらです。 asanaで二週間のソロプロジェクトを作り、タスクを追加したり期日を決めてアレンジを進めていきました。 googleプレイストアが11月2日に大幅に改定されるタイミングだったらしく、非常にタイミングが良かった?ので、半日ほどで審査が通り無事にリリースすることができました。 A

Unity2021.3LTSに変更したらWebGLのビルドサイズが激減したか気になって調べたらWebGLコンパイラツールのemscriptenがUnity2021.2でバージョンアップしてversion2.0.19になった事の影響が大きく、サイズ、時間、メモリ効率に改善が見られる

ビルド画面でCode Optimizationのパラメーターの初期値はSpeedとなっているが、Sizeに変更すると、サイズの縮小を目的としたビルドを行うことが出来るので、モバイル用で読み込みを拒否した場合の大規模ビルドに適しているらしいので、デフォルトのまま出力が重たい人試して

2019から2021.3LTSに変更したらWebGLのビルドサイズが激減したのか気になって調べたら、WebGLコンパイラツールのemscriptenがUnity2021.2でバージョンアップしversion2.0.19になった事の影響が大きいみたい。サイズ、時間、メモリ効率改善。

UnityのWebGLビルドというウェブブラウザで遊べるようにゲームを出力できる設定があるのだけれど、そのパラメーター指定ではテクスチャ圧縮タイプは3種類あって、DXTとETC2とASTCがあり、ビルド設定画面で指定する形になります。ETC2よりもASTCの方が新しい形式の様子。

スマホでも1分かからないくらいで読み込めるようになったみたいなので、今度はモバイル操作が出来るように修正を加えていく。壁張り付きやダッシュはモバイルとの相性が悪そうなので廃止を検討したい。

webGLについて調べていたら、webGL1.0と2.0の違いも分かっていなかった事が分かったのだけれど、どのブラウザバージョンがWebGL2.0に対応しているのか超絶分かりやすい記事を見つけたので全力でお知らせ。大抵は既にwebGL2.0 caniuse.com/webgl2

webGL2.0が使えると何が良いかというと、ドローコール回数を押さえて、同じメッシュオブジェクトの座標計算や拡大縮小などの指示をマルチタスクで処理できるので複数の処理が早いようだ。ジオメトリなんだっけ…使える機能が増えた事によって表現技術もwebGL1.0の頃よりも充実している

webGL2.0の機能について今更ながら調べてみた

WebGL2.0からはGeometry InstancingとMultiple Render Targetsという機能によって、一度の描画命令で、複数のオブジェクトやテクスチャに対して描画する事が従来のWebGL1.0と比べて高速に出来るようになったので、大量のオブジェクトを描画をしてもフレームレートを維持しやすくなったらしい。機能を使うには対応しているGPUは必須のようだ。

シーン中のUI CameraオブジェクトのInput Managerコンポーネントの設定にMobileかDesktopかの判定を自動で行うパラメータがあり、そこでforcedで強制的にモバイル指定を行うと、webgl出力でもUIカメラ配下のジョイスティックやボタンを活性化できます

webGLでモバイルの負荷が高まる理由としてはドローコール回数が大きく影響していて、処理速度や消費電力量にも影響する。ドローコール回数を減らすためには、シーン内のオブジェクト数を減らすこととオブジェクトを構成するマテリアル数も減らすのが良いらしい。1オブジェクトにつき1マテリアル

パーティクルシステムは小さな2D画像からそれらをアニメーションさせることで様々な表現をすることができる、(流体、雲、炎など)しかも大量のオブジェクトに見えて1つの塊扱いなのでWebGLのドローコールが少なくリッチな表現をするのに都合の良い仕組みだった様子(知らなかったよ…)

Unityのスプライトアトラスというアセットを使って複数のテクスチャを1つのテクスチャに統合することが出来るため、この統合されたテクスチャを参照することでUnityのドローコールを抑える事ができ、プロジェクトのパフォーマンスの改善に有効かも知れません。

OpenGLやDirectXはグラフィックスAPIというソフトウェアに描画命令を行うアプリケーション・プログラミング・インタフェースの名称で、描画命令はCPU→グラフィックスAPIに指示が行われている。ドローコールが重たい時=CPUに負荷がかかる。ではドローコール表示はどうするか