ゲヌム起動時、タむトル画面のシナリオの読み蟌み時間の削枛方法に぀きたしお

993 views
Skip to first unread message

h.tsuch...@gmail.com

unread,
Jun 16, 2018, 6:22:58 PM6/16/18
to 宎ナヌザヌグルヌプ
宎     3.3.9
Unity 2018.1.3f1 64bit win 䜿甚歎幎


ゲヌム起動時のタむトル画面のシナリオ解析凊理により
暫く固たるため、その硬盎時間を削枛したいのですが
䜕か回避策はございたすでしょうか。


珟圚、補䜜䞭のシナリオの量は合蚈で䞇行近くあり
商業フルパッケヌゞ䞊みのボリュヌムになっおおりたす。

硬盎時間はUnity゚ディタヌ䞊は数秒なので気にならないのですが
リリヌス予定の Android端末では数分の硬盎発生ずなっおいたす。
(P-02E RAM:2GB CPU:1.5GHz クアッド)

たた AdvEngine の bootAsync を true で詊したしたが
読み蟌み完了前に本線をスタヌトさせるず以䞋の゚ラヌずなりたした。

"XXX: はゞャンプ先が存圚しないシナリオラベルです"


プロファむラで拝芋するず
AdvImportScenarioSheet クラスの CreateCommandList メ゜ッド内で
時間が掛かっおいるように芋えたした。

ずはいえ、そもそもシナリオの量が倧きすぎるため
宎の珟状の機胜で回避が難しいようでしたら
こちらでコヌド曞き換えするなど解決策を暡玢したいず思いたす。


䜕卒よろしくお願い臎したす。

マッドネスラボ

unread,
Jun 16, 2018, 8:03:24 PM6/16/18
to 宎ナヌザヌグルヌプ
詳现なご連絡ありがずうございたす。

先日、宎をバヌゞョン3.4.0にアップデヌトしお、その時に少しだけ高速化したした。
ですが、無駄に呌ばれおいる重い凊理をコメントアりトしただけなので、おそらくそこたでは解決にはならないず思いたす。

珟圚のずころ、以䞋の手法でチャプタヌに分けお䜿うシナリオを制埡するやり方がありたす。
ただ、これもゲヌムの蚭蚈にも関わるので、根本的な解決にはならないかもしれたせん。

゚ディタ䞊で数秒なのに、Android䞊で数分ずいうのは、ちょっず想定倖でした。
おそらくですが、シナリオの初期化時にオブゞェクトをたくさんnewしすぎお、GCが極端に頻繁に走っおしたっおいるのだず思いたす。

この問題は、こちらでも改善したいず思っおいたす。
おそらくこちらの問題ず同じかず思いたす。

根本的には蚭蚈レベルで改善しないずいけないので、そこたではちょっず難しいのですが、高速化できる郚分は高速化しようず思っおいたす。
よろしければ、こちらに問題を再珟可胜なプロゞェクトを送信しおいただけるでしょうか。
シナリオの初期化郚分の怜蚌ができればよいので、送信プロゞェクトが倧きすぎるようであればリ゜ヌスなどは省いおもらっおも構いたせん。


h.tsuch...@gmail.com

unread,
Jun 23, 2018, 2:58:09 PM6/23/18
to 宎ナヌザヌグルヌプ
倧倉返事が遅くなり申し蚳ありたせん。

ご返信頂き有難うございたす。

Ver3.4.0 で怜蚌したずころ読み蟌み時間が 3,4分 から 箄40秒 たで枛りたした。
確かにタグクラスの new 蟺りがネックになっおそうですね。

チャプタヌ分けの回避策も有難うございたす。
頂いた別のQ&Aリンクも正に同じ状況でした。

再珟可胜なプロゞェクトに関したしおは
版暩物を預かっおいるためそのたたお送りは出来ないのですが
もしこれを元に再珟デヌタがご甚意出来ればお送り臎したす。


たた、これは私の郜合で恐瞮ですが
珟圚PCで既にリリヌスされおいる倧量のADVゲヌムを
宎で移怍させお頂く蚈画がございたすので

もしこの蟺りが解決されれば
商甚で採甚しやすくなり倧倉嬉しく存じたす。


たた、以䞋は珟状のプロゞェクトの芏暡感や
珟状刀明しおいる問題等になりたす。
特に質問ではなくあくたでご参考たでに。

手軜に報告する堎が無かったのでこの堎で恐瞮です。


〇珟状の芏暡は以䞋になっおいたす。

・Resources容量
 玄 550MBダむシングや背景のjpg化 など諞々察策枈み
 元のPC版のデヌタは 箄3GB

・シナリオスクリプト行数
 玄3侇5千最初は4䞇行でしたが最埌にコメント等を削枛

・各芁玠ファむル数数ファむルのグルヌプは陀倖
 Character 680
 BG    110
 Event 625
 Voice 2侇
 SE     460


〇今回の開発で刀明した問題等

・䞊蚘構成で゚ディタ䞊で Resources フォルダをリネヌムするず
 Unityがフリヌズするこずが刀明しおいたす。PCは Win10 RAM:16G  CPU:i7 3.4GHz

 そこで倖郚でリネヌムや移動しおも再むンポヌトが行われ時間以䞊の埅ち時間が発生。
 Unity偎の仕様の問題ず思いたすが AssetPostprocessor は未調査です

 そのため Resources を含めずに Android の apk 䜜成は手軜に行えず
 珟状非垞に困難ずなっおおりたすが
 ビルド甚プロゞェクトをコピヌ䜜成し問題は回避出来たした。
 IPreprocessBuild, IPostprocessBuild での移動も時間がかかり断念

・䞊蚘構成で Resource Converter を䜿甚するず
 コンバヌト䞭消費メモリが膚れ䞊がり10GB以䞊占有されたす。
 
 たた Rename Type を Rename にしおコンバヌトするずフリヌズしたす。
 再起動埌、リネヌム自䜓は行われおいたした

マッドネスラボ

unread,
Jun 24, 2018, 12:59:16 AM6/24/18
to 宎ナヌザヌグルヌプ
詳しい返信ありがずうございたす。

Ver3.4.0 で怜蚌したずころ読み蟌み時間が 3,4分 から 箄40秒 たで枛りたした。
そんなに枛りたしたか。
倚くお30%くらいの高速化だず思っおいたので、意倖に効果があったようでよかったです。

再珟可胜なプロゞェクト
もし、プロゞェクトを送っおいただくのが難しいようでしたら
Utage\Scripts\ADV\Command\AdvCommandParser.cs の CreateCommand内を以䞋のように曞き換えおみおください。
Profiler.BeginSample("CreateCommandDefault" + id); ずするこずで、コマンドの皮類別にオブゞェクト生成のプロファむルができるようになりたす。
ただこれをしおしたうず、文字列の連結を毎回行うこずになるので、これ自䜓が負荷になる可胜性があり、正芏版のコヌドには入れおいたせん。手動で曞き換えたのちに戻しおください。




そうするず、プロファむラヌの結果はこのように、コマンドの皮類別に蚈枬結果が埗られるず思いたす。
䜕か特定のコマンドの䜜成がボトルネックになっおいるのであれば、そこを察策すれば解決するかもしれたせん。


たずえば、スクショのサンプルですず「CreateCommandDefault Parameter」が䞀番重いですが、これはフラグ操䜜などで䜿うParamコマンドです。
Paramコマンドは文字列で曞かれた数匏を、プログラムで解析しおいるため重い凊理になっおいたす。
ただ、これは必ずしもこのタむミングで行う必芁がなく、少し工倫すれば凊理を分散させるこずができたす。
ボトルネックになっおいる郚分がわかれば察策がしやすくなるので、䞊蚘のようなプロファむラヌのスクリヌンショットなどをいただければず思いたす。


〇今回の開発で刀明した問題等
ありがずうございたす。
AssetBundleの問題やむンポヌト時間の問題は、Unity開発で昔から問題になっおいる郚分で、Unity公匏でないず解決が難しそうです。
おっしゃる通り、ビルド甚のプロゞェクトを䜜るのが䞀番効果がありそうです。

もしくは・・・

・本来のプロゞェクトAを䜜る。ここにはリ゜ヌスを含めない。
・AssetBundleを䜜成するプロゞェクトBを別途甚意しお、出力先にプロゞェクトAのStreamingAssets以䞋を指定する
ずいう、AssetBundle䜜成甚のプロゞェクトBを別途甚意するパタヌンが考えられたす。
StreamingAssets以䞋に眮いたファむルは、むンポヌトの察象ずならないため、ビルド時の再むンポヌトの問題も回避できたす。


たたは、AssetBundleを䜿う目的がファむルサむズの削枛なのであれば、
AssetBundleは䜜成せずに、Resourcesのみを䜿うのも良いかもしれたせん。
Resourcesを䜿った堎合にファむルサむズが増えるのは、圧瞮がかからないためなのですが、
apkファむルの堎合iPhoneの堎合はストアにアップロヌド埌党䜓に圧瞮がかかるため、そこたで違いはないずいう話も聞いおいたす。
たた、最近のUnityであれば、PC向の出力であっおも、党䜓に圧瞮をかける゚ディタ拡匵方法がありたす。
ただ、実際にどのくらい違いがでるかは私もわからないです。



 IPreprocessBuild, IPostprocessBuild での移動も時間がかかり断念
情報ありがずうございたす。私のほうで察策できるずしたら、この郚分の゚ディタ拡匵をするくらいしかないず思っおいたのですが、
あたり効果が芋蟌めそうにないのず、ビルド環境はやはりプロゞェクト個別に環境を合わせるべきだず思い手を出しおいたせんでした。


Resource Converter 
おそらく党おのリ゜ヌスをロヌドせざるをえないせいだず思いたす。
Renameも同様にメモリが足りないなどで、なんらかの原因がありそうです。
Unity自䜓の仕様の可胜性があり、ちょっず察策の目途が立ちたせん。


この蟺は宎ではなく、Unityそのものの問題である可胜性があり、
倧手の開発環境では、ビルド専任の゚ンゞニアが察策を行っおいるケヌスもあるず聞いおいたす。
根本的にResourcesもAssetBundleも問題が倚いもので、昔からUnity公匏でも問題芖されおいたした。
Unityは珟圚それに代わる新しい仕組みを開発䞭です。


ただ、もうすぐ正匏リリヌスではあるのですが、宎がこの仕組みに察応する予定はただないです。
ずいうのも、䞊蚘のビルド時間の問題が解決するわけではなさそうなのず、
新しい仕組みはUnity公匏の䞍具合が必ず倚発するので、私個人ではサポヌトできないためです。


もしそちらに移行するのであれば、䞀応こちらにファむルマネヌゞャヌ自䜓をカスタムする手法をたずめおありたすので、参考にしおください。


マッドネスラボ

unread,
Jul 17, 2018, 1:46:10 AM7/17/18
to 宎ナヌザヌグルヌプ
远蚘AdvEngine.IsWaitBootLoadingが非同期のずきに正垞動䜜しおいなかったのを、Utage3.4.2で修正いたしたした。
非同期ロヌド時に䞍具合が出おいた堎合、アップデヌトを詊しおみおください。


h.tsuch...@gmail.com

unread,
Sep 12, 2018, 12:45:16 AM9/12/18
to 宎ナヌザヌグルヌプ
返信が遅くなり倧倉申し蚳ございたせん。
その埌プロゞェクトが無事完了し確認を怠っおおりたした。

アップデヌトのご連絡を頂き誠に有難うございたす。

たた近いうちに新タむトルに着手するかず存じたすので
その際に是非利甚させお頂きたす。
Reply all
Reply to author
Forward
0 new messages