普段ゲームをしない私にはコメ欄で頂く情報が非常に役に立つことが有ります。
先日からやっているFGOに関して、もう少し突っ込んでやってみました。
今回はAndroid OS上とiOS上でやってみた違いを中心に書いていきます。
ええ、AndroidでのFGOがクソでiOSでのFGOが快適。
当初はそういう記事の積りでした。
しかし結果は必ずしもそうでは有りませんでした。
見えてきたのはFGOの開発ベースであるUnityの問題です。
本日やっと少し時間が取れたのとiOS11.3のウオーミングアップがてらやってみました。
あ。
今まで黙っていましたが、実は私はこっそりとiPhone 5sを持っていました。
勿論SIM入りです。
何時からかは伏せておきますが・・・(笑)
バッテリー問題ではパフォーマンスを落とされるグループからははみごにされ、
色々話題に乗れなくてアレだったのですが、今回Unityのことも有り、実は持っていたのを
カミングアウトしようかなと。
ただし最近は余り5sは持ち歩いていませんし、持っているだけで普段から余り使っていませんでした。
でもiOS11.3が降ってきたことも有り、FGOの話題もちょうどいい塩梅になってきたのでiOSのバージョン
後からまたプレイをしてみました。
そこで思ったのは・・・「なんかiOS上のFGO重くね?」
以前5sでFGOをちょろちょろっとした表面だけプレイした時は、そこまで重さは感じなかったのですけど、
本日Xperia XCのプレイした部分まで追いつかせてみたら、5sのFGOがとんでもなく重い時が有ることに
気付きました。
シングルスレッドがどうとか、そういう問題では有りません。
動作状況を見るとどう見てもガーベージコレクションっぽい重さでした。
ちょっと調べてみると・・・Unity自体がGCを内包しており、UnityがGCを発生する可能性が有るではないですか。
Androidの場合はAndroid OS上のGCが気になることが有ります。
これは今主にゲームで使われているハードだとメモリが大抵3GB以上積まれていることがほとんどであり、
Unityがメモリ不足になることはまず有り得ません。
よってUnityのGCは余り動作せず、Android OS側のGCだけが目立ちます。
先日の記事ではAndroidのGCに関してとOreoでそれが結構解決していることに触れました。
本日のメインイベントはiOS上でのGCについて。
恐らくUnity上でのGCはメモリが少ない時しか問題になることはないと思います。
そうです、5sのRAMは1GBです。
恐らくそのせいで、5sでFGOをすると、とんでもなく不快なことが有ります。
5sとXCなら確実にXCでFGOをプレイする方が快適です。
その理由は5sはRAMが1GBで、XCはRAM 3GBを搭載しているからです。
5sでプレイしていると、場合によっては10分以上GCでFGOが完全停止し、ゲームがハングアウトした
ようにしか見えない時が有ります。
私のように二つをどうにに動かしてちょろちょろ程度にしかしないから、それも笑ってみていられますが、
一台の端末でそれなりに楽しもうとやりこもうとすると、間違いなく切れてしまうレベルで待たされます。
10分~20分に一回は1分程度止まる時が有るような印象です。
頻度や時間はあくまでも感覚であり、厳密に測ったわけでは有りませんけどね。
でも5sでFGOをするとGCだらけで不快なのは間違いないです。
あー、2013年9月発売の5sと、2016年11月発売のXCを同列に並べて比較するなと言われそうですけど、
XCは発売時には既にハイエンドのモデルではないということで勘弁してください。
Snapdragon 650ですからね。Cortex-A72×2 + Cortex-A53×4で28nm HPm ルールでの製造です。
5sの28 nm HKMGでプロセッサの能力的には端末の発売時期の違いと比べてそんな極端な違いはないと思います。
むしろSnapdragon 650はRAMやGPUの違いを考えると、比較するにはいい線いってるんじゃないのって
思う所も有ったりします。
結果としてですが、Snapdragon 810やSnapdragon 820の端末にOreoが載れば、まあまあ快適に
FGOが出来そうな予感すらします。完全に想像ですけど、XCでも待たされる時は有るけど、
そこそこ快適に遊べるので、そんな気がします。
で、5sでのFGO。
遊べるには普通に遊べますし、時々とんでもなく待たされる事さえ覚悟できるならば遊べます。
しかし基本的には非常に不快です。
間違いなくXCで遊ぶ方が快適です。
どちらも待つ感覚が有るのはロード画面の時だけです。
速さ的にはXCが速い時がやや多く、5sが速い時も有ります。
ほぼ同時で終わる時も有ります。
たまに5sでGCが発生し、その時は壊滅的に遅いです。
多くの人がゲームがバグってハングしたと思って再起動すると思われるレベルで長時間固まります。
数分レベルの停止は当たり前で、下手したら数十分止まることも有ります。
5sでiOS11.3で最新バージョンのFGOを遊ぶのは地獄です。
恐らくRAM 1GBのiPhone 6/6Plusでも同じだと思います。
iPhoneでFGOを快適に遊びたいなら、恐らくRAM 2GB以上の6s/6sPlus以降が必要です。
まあ今更だと7でも旧端末で安く手に入るので、別に5sや6シリーズで遅いからと言って問題になる
ような話でもないですが、しかしながら5sや6シリーズレベルでもiOS11が動くから最新OSを使えて
エライなたいな話しが今でもまかり通っている所も有りますので、Android叩きにUnityで開発されて
いるFGOが利用されている側面も一部では有るようなので、この辺りはしっかりと検証した結果を
書いておきたいと思います。
アップルはiOS12の対応では、6s以降だけの対応にして、5sと同時に6シリーズも切ったらどうかなと
思うんですけどね。今回FGOを動かしてみてすごくそう思いました。
やっぱりプロセッサの能力以上にRAM容量は大事ですよ。
私が
6/6Plus発売時にRAM 2GBに拘ったように。
発売前から2GB、2GBって書いてた気がする。
2GBにしてりゃ長生きしたのに・・・あ、そうか。
この世代に長生きされたらアップルは困りますもんね:-p
5sでどうもGCっぽい動作がやたら目立つので気になって色々調べて色々納得したのが以下のページ。
UnityのGCはどんな実装になっているのか ~ Developper Blog
結論としては、UnityのGCは、皆が期待していたほど高性能ではなく、現状では僕達が書くC#が発生させるGCのインパクトは無視できない大きさになります。
そこで、GCのインパクトの少ないコードベースにしていく必要があるわけですが、コードを書く際、内部の実装をある程度理解していると適切な判断がしやすくなります。
今日は、そんなUnityのGCがどんな実装になっているのか、主に3つの方法で調べた結果を解説してみます。
Unite2016 参加レポート ~ハードウェア性能を引き出して60fpsを実現するプログラミング・テクニック~ ~ @tempura
Unityはシングルスレッドで動作する。そのためコアがたくさんあっても使いこなせていない。
ほとんどの場合 Main Thread が問題になる。
これらの記事はなかなか興味深い。
GCはUnityというよりはC#の問題なんだけど、やっぱり開発者の間では問題視されてたのねと
いうことがよく分かりました。
まあそらそやな。
プレイしてXCでまずAndroid 7.x以前のGCが気になり、5sでUnityのGCが気になり・・・。
ゴリゴリにプログラムを書いたことが有る人間なら「うわ、GCやんけ!」って誰でも思うような
分かりやすい動作していました。でも二段階にGC問題が発生するとまではさすがに
5sできっちり遊ぶまでは分かりませんでしたけどね。
そんなわけで、Unityで開発されたFGOをプレイする時のまとめ。
●AndroidならOreo以降のOSを搭載した端末で。
プロセッサはSnapdragon 650も有ればそれほど困らない。
●iOSならRAM 2GB以上を搭載した端末で。
具体的には6s/6s Plus以降の端末で。
これさえ満たしていれば、恐らくAndroid/iPhone共に、そんなに極端に遅いと感じることもなく
まずまず以上でプレイできると思います。
何時間も遊んだわけでは有りませんが、取り敢えず比べて検証してみた結果はこんな感じでした。
あ、4月1日になってる・・・でもこの記事の検証は本当ですよ(-_-;)
- 関連記事
-
- 2018/04/01(日) 02:32:16|
- 携帯
-
| トラックバック:0
-
| コメント:4
新旧比較だとXperiaXZで1回起動する間にiPhone8で3回起動出来たのでVMへの展開自体も重いのかなぁ。
パズドラみたいな古いゲームでもAndroidはランキングダンジョンで人権無しとか言われてしまうので、
やはり設計思想の違いなんだろうか…。
- URL |
- 2018/04/01(日) 04:12:02 |
- らむだ #-
- [ 編集]
>らむださん
まああくまで私のところでの検証は5sベースですからね。
CPUが高速化してRAMが増えたものに関しては検証できていません。
ただAndroidのものはVMがどうとかは、ARTでは実際のところあまり関係ないかも。
VM、VMって、未だにVMにとらわれて何も見えなくなっている人が多すぎだと思っています。
ちなみに私は以前から記事ではARTはARTと呼び、ART VMとは敢えて呼んでいません。
私はARTをあまりVMとは思っていないのでそうしています。
私が見えてたGCでの遅さに関して、騒いでいた人はあまりに少ないですし、
GCで遅い分ですらもVMのせいにしていた人は今ですらも多いのではと思います。
立ち上げに関しては、VMよりもUnityの起動のほうが問題ではないでしょうか。
ARTの立ち上げよりもUnityやゲーム自体の初期化周りのほうが重そうな気がします。
大きめのアプリでも、初期化が軽いものは瞬殺で立ち上がりますよ。
私はVMが重い時代はとっくに終わっていると思っています。
- URL |
- 2018/04/01(日) 04:40:31 |
- 鈴 #GpEwlVdw
- [ 編集]
>むさん
810と820を比べると、演算性能的には断然810の方が高いと私は感じています。
810が過熱するのはCPUが最高クロックで連続稼働した時です。(勿論GPUも影響していますけど)
そんなわけで、810のクロックを最高に入れないようにして、820より演算性能を
少し高いレベルを維持出来る程度に収めれば、810は全然実用になると思いますよ。
820より少し速いか同等レベルでいいと割り切った使い方も出来ると思います。
最高クロックで連続して動かそうとするから810は過熱するのであり、
そこそこの性能でいいと割り切ったクロック供給をすれば、発熱が問題になるほどは過熱しないと思います。
過熱するというプロセッサであっても上手くコントロールすれば、それなりに使い物になると思いますよ。
810は過熱するだけのプロセッサという思い込みしか出来ないから、先入観に縛られた発想しか出来ないのだと思います。
ベースの演算性能が結構あるプロセッサということを忘れていると、そういう発想になるのでしょう。
- URL |
- 2018/04/07(土) 02:25:54 |
- 鈴 #GpEwlVdw
- [ 編集]