jknimo’s blog

JKにもできる!ゲーム開発に挑戦するブログです♪

引き続きUNITY初心者向け情報を検索!

今日も初心者向け情報を検索して流し読み!

超かんたんなスマホゲームアプリ用のチュートリアルを探しながら、Unityで手軽に作れそうな仕組みをざっと把握したいです。ちょっとくらい横道それてもイイや。わら

 

はじめてのUnityゲーム開発でつまずきやすい3つのポイント — Mobage Developers Blog

■■■■抜粋■■■■

Asset Bundleとは、外部サーバーにデータアセットをおいて、アプリ内からダウンロードし利用することができるUnity独自のパッケージフォーマットのこと

 

この処理はメモリのallocateをガッツリやってるので負荷が高く、時間がかかりユーザーにストレスを与えがち

 

サブスレッドで圧縮ファイルの解凍したり、そもそもファイルサイズを分割して小さくしコルーチンで処理を小分けするなどの設計がベター

 

対応方法としてはアセットデータをファイル単位・細かい単位で配置し、必要になったタイミングでダウンロード&ロードできるように設計・実装するということが望ましい

 

一つのアセットバンドルの中になんでもかんでもつめ込まないというのも重要

ファイルサイズが大きいものは、とにかく細かく分ける。データマスタに関連するものは、それを基軸にidでどのAsset Bundleから読み出すかなどして単位分けすることもできます。

 

分割の単位が細かすぎると、バージョン管理の対象数が膨大になり、管理工数が肥大化するため管理をある程度自動化するなどで対応しなければいけません。

 

小規模なプロジェクト、更新を必要としないアプリであれば、データアセットとそれに対応したなんらかの文字列(ファイル名とtimestampのハッシュなど)のtxtファイル、つまりアセットの一覧リストを作成します。

クライアント側からは何らかのフックでAsset Bundleのリストを取得して、使うときはCRCチェックも行ってロードするなどすれば比較的容易に差分ダウンロードが実現できるかと思います。

中規模開発でメンバ習熟度もそれなりにある場合はJenkinsなどCIにインテグレーションしていまい、AssetBundleの作成から配置、そしてその管理リストの更新まで自動で管理してしまうことが本来的には望ましいです。少なくとも中規模以上の開発を行う際には、ヒューマンエラー防止のためにソースアセットからスクリプトでサーバーに自動配置できる仕組みを整えることが望ましいです。

 

AssetのリストもテキストファイルではなくDB内部でマスタデータとしてバージョン管理自体を扱ってしまい、特定の通信のタイミングでマスターデータを取得して必要な部分のみクライアント側で更新できるようにしてしまいましょう。

 

Unityの標準キャッシュ機構が希望のパフォーマンスを出さない場合に独自のキャッシュを組んだほうがいいケースがある

 

シーン遷移ではAwakeの中で必要以上に重い処理をしないほうが諸々の理由で落ちない

 

アセットバンドルではBGM・SEをストリーミング再生できない等で全てオンメモリになってしまうため、独自実装または外部ライブラリを利用すべき

■■■■抜粋■■■■

こ、これは完全にプロ向け情報だった!なんか重要そうだけどサッパリわからない笑

 

優しそうで実用的っぽいのを探してみる!

[超初心者向け]Unityチュートリアル「はじめてのUnity」のブロック崩しと同等をC#で::(1)ステージ配置 - Qiita

新しい「はじめてのUnity」の玉転がしゲームHome · unity3d-jp/FirstTutorial Wiki · GitHub

Stageオブジェクトをは動的に変化するオブジェクトではありませんので、静的なオブジェクトとして登録します。 こうすることでパフォーマンスやビジュアルの向上が見込めます。

 

Unity - Player の動きを作成する(シングルプレイヤー)

Unity - マニュアル: インプットマネージャー

Unity - マニュアル: 一般的なゲーム入力

Unity - マニュアル: モバイル端末の入力

Input.GetAxisとInputManagerの関連設定について - Qiita

Input.GetAxisメソッドは、スマートフォン向けのゲーム開発などでは、使う機会はあまりないかもしれません。

 

C#ではじめるUnityプログラミング入門

初心者のためのC#プログラミング入門