windowsで開発し、プロジェクトをmacに移行してプレイしてみたらwindowsでの動作よりもっさりしており、プレイヤーも移動できませんでした。
macでstat unitで確認しようとしましたがコマンド入力出来なかったためwindowsで確認したところGameが時間経過で徐々に数値が増えていきました。
重くなってしまっている原因としてほとんどのアセットがハード参照となってしまっているものがあげられると思います。このゲームがUE4での初めての開発だったためソフト参照にしないとまずいことを知らずにこんなことになってしまいました。
一部ソフト参照に変更できましたが、まだまだつながっています。
かなり複雑に絡み合っているため、ソフト参照に変更するのが難しい部分もあります。
また、知人に相談したところハード参照が連続でつながっているとある程度で自動的に読み込まれなくなるような仕組みがあると聞いたことがあるそうです。(それもUE4開発者から聞いた話)調べても出てこなかったので知人が勘違いしているのか、私の調べ方が悪いのかわかりませんが、そのことについてもご存じの方がいらっしゃったら教えていただきたいです。
軽くするために試したことはテクスチャのサイズを小さくすることです。
実際軽くなり、プレイヤーも移動できるようになりましたが、諸事情により敵の種類が増え、EnemyBaseを継承しているためそこでもハード参照となってしまっています。
3Dモデルは拾ってきたものなのでローポリにしようとしましたが、いいツールが見つからず、これも教えていただきたいです。
他にゲーム自体が軽くなるような変更点や、こういうアセットは注意したほうがいいなどありましたら教えていただきたいです。
残念ながら、銀の弾丸は存在しません
地道にプロファイリングと最適化を繰り返すしかないでしょう
まずWindowsとMacではハードウェア構成の違いがあり(特にMacはゲーム向けのGPUを載せたモデルがほぼ無いため)当然スペックも変わってきますので、同じように動く保証は全くありません
基本的にWindowsの方が自由度が高く、ゲーム向けの性能の良いハードウェア構成が組めるため、Windowsの方が快適に動作させられるでしょう
ハード参照が重い、というのはどちらかというとロード負荷やメモリ容量の問題です
経験上、ゲームの実行速度そのものにそこまで大きく影響した記憶がありません
諸事情により敵の種類が増え、EnemyBaseを継承しているためそこでもハード参照となってしまっています
同じBaseクラスを継承していても、互いの直接参照が存在しなければロード対象にはなりません
それでもロードされているなら、継承が原因ではなく別のものが原因です(Cast等)
GameThreadが重い、ということは純粋にゲーム中の動作が重いと予想されます
時間経過で負荷が増える部分に関しては、時間経過で敵AIが増えるようなゲームシステムを採用してたりしないでしょうか?
オブジェクトが増えれば当然処理負荷も増えます
敵のAI処理が何をしているかは知りませんが、個々の処理負荷や最大数などを考慮する必要があるでしょう
DrawCall(BasePass)も負荷の原因と思われます
コレもオブジェクト数に関連しています
そのフレームでレンダリングされるオブジェクトが減れば下がります
TextureSizeはGPU負荷の方に分類されます
小さくすれば軽くはなりますが、クオリティもその分落ちるため、バランスは考えたほうが良いでしょう
Meshに関してですが、LODについて調べてみてください
うまく設定できれば負荷の軽減に繋がります
大変助かりました。
とりあえずGPUで調べてみたところLightsが1.96となっており、これが重いのかどうかは今はわかりませんが、これから調べてみようと思います。(他と比べると明らかに大きい数値)
LODはもともとUnityを使っていて、見覚えはあるので何となく想像がつくのですが、UE4でのやり方はわからないため、調べてみようと思います。
URLもわざわざありがとうございます!