FC2ブログ

鈴の音情報局blog

携帯関連の将来や最新の技術情報や業界の行く末などを適当に綴るblogです。 内容の信憑性は?余り信じない方がいいと思います。
本家の鈴の音情報局はこちら→http://suzusuzu.dip.jp:8800/
スマホ・携帯端末アクセス[ランキング][アクセスシェア(グラフ)] (毎年10/1にログをクリア)

「重いゲーム」として紹介してもらったFGOをプレイしてぶった切る、何このわざと遅くしている感・・・OreoでFGOが高速化した理由も含めて色々考える

先日XCにOreoが降ってきたことと、XCで(というかXperiaシリーズで)起こっているGPSとFelicaの
問題に関しての記事
の続きというか関連した記事です。


先に頂いた情報の整理だけしておきます。
肝心のFGOに関してはその後で。



コメ欄で様々な意見、有り難うございます。
取り敢えず報告の内容をまとめておきます。

●長時間稼働GPS死
  Z3[SO-01G]
  Xperia XP[SOV33]
  XC[SO-02J]

●GPSの掴みが弱い、精度が低い(今回の記事とは無関係?)
  Z5C[SO-02H]
  XC[SO-02J]

GPSが3~5m狂うという意見が有りましたが、GPSの精度は10m程度なので、
それは当たり前のことです。それ以上の精度が出ているという人はたまたまです。
WiFi等の補助を得たり、みちびきを利用して精度を上げている場合が有りますので、
それをGPSの精度と混同していると思われることも有りますが、GPSは10m以内の
レベルの精度ですのでお間違えなく。


●モバイルSuicaで一瞬エラーが出る問題
  XZ1C [SO-02K] (ICOCA圏で多発、Suica/Pasmo圏では一度も経験無し)
  Z5C[SO-02H] (JR東の改札よりも営団地下鉄もとい東京メトロの開札の方がエラーの頻度は多い)
  AQUOS PHONE ZETA SH-01F(JR東の改札よりも営団地下鉄もとい東京メトロの開札の方がエラーの頻度は多い)
  XC[SO-02J] (ICOCA圏で多発:JR西で多発、大阪地下鉄・阪神・阪急・近鉄・南海であまり起こらず)



ではそろそろ本題に入っていきましょうか。
Android 7のメモリ管理の下手さについてです。
それはFGOのゲームで如実に感じることが出来ました。

カード型のバトルゲームです。
これが重いといういことでコメ欄で紹介して頂きました。

教えて頂いてすぐに試していました。
めちゃくちゃ重い・・・という言葉の意味が良く分かるとともに、「なんだこんなものか」という感想が大きかったです。

理由は「重い場所が限られている」ということ。
結局は場面転換のロード場所が重いだけの話で、他は完全に普通。
3D(?)背景等を重ねたバトル画面など、他は一切問題なし。
データロードで待たされる以外は全く普通にゲームが進められます。

つまりはロード部分の作りがアホ過ぎるクソゲームということが明らかになっただけの話です。
ゲームのプログラムがクソなのと、AndroidのOSがクソなのはまた別の話です。
いや確かに(手抜きして?)問題を避けようとするとこうなりがちということは有ります。
そういう所に関しては確かにAndroid OSはタコです。
Oreoでその周辺に手が入ったのは確かで、Oreo化したXCで確実にFGOのロード部分が高速化しました。
まあまだOS側にもゲーム側にも詰められるところは有りますけど。


iPhoneの方はロード部が速いということで、iPhoneでFGOを試しましたところ、普通に進められました。
「普通に作ればこうなります」って感じの動きです。
AndroidのFGOはロード時に、意図的にガーベージコレクション(GC)を起こさせて、戦闘中などに
GCで動作が止まることがないようにしているのだと思われます。
その保険だけの為にロード中などにクソみたいなGCを起こしたりして死ぬほど遅くしているのは
明らかにゲーム側のプログラムの作りが悪いとしか言いようが有りません。

展開自体が遅いのか、それとも展開する一要素ごとにGCを噛ましているから死ぬほど遅いのか、
その辺りまでは分かりませんが、そこだけきちんと作り込めばAndroid上でもFGOは普通の
ゲームになると思います。それ以外に何の問題も有りませんから。

FGOが重いのはAndroid OS側の作りの問題をどうしても解決できなかったのか、それとも
単にゲームのプログラムの作りがタコなだけなのか、それともアップルファンが好きではない
OSのアプリに意図的に問題を注入したものなのか、その辺りは不明ですが、
Android向けのFGOの問題解決は出来るのではないかなと私は思っています。

もし解決できないのなら、それをGoogleに報告してメモリの扱いとGCの改善をしてもらうのが
一番でしょう。Googleもゲームは課金の割合が高く、集金システムに大きく貢献するアプリだと
いう認識は有るでしょうし、iOSに大きく負けている部分と指摘されれば動かざるを得ません。

いや、ここまで長期間GCの問題を放置している方がどうかしているのですけどね。
少なくともOreoで現実的な解決をし始めているので、FGOはOreo向けに最適化すれば、
iPhone並みに「普通に動く、普通のゲームになる」可能性はあると私は考えます。

Oreoで解決しなくても、Googleがゲーム用のスタックメモリなりヒープメモリなり、GCに影響
されないようなアプリづくりが出来るような仕組みが取り入れられれば、恐らくこんな
部分的にクソ重いゲームが作られることも無くなると思われます。

そうなればもしかするとRAM 4GBもあれば十分となり、6GBなんてハイエンドスマホが無用の
長物になってしまうので・・・あわわ・・・。
それも解像度など色んなバランスが有るので何とも言えませんが。


確定では有りませんよ、あくまで私が試した感触でです。AndroidのFGOはデータのロード
部分が重いだけで、他は全くの普通です。ロード部分でGCをわざと起こさせていると思われ、
バトル中などにGCが起こさせないための対策にそうしていると思われます。
厳密に言えばバトルアニメ直前にもGCの処理が入っているように思います。
Nougatでは瞬間的にGCと思われるプチフリが有りOreoではそれもなくなっています。
もしかしてFGOはそこら中にGCを起こす処理が入れられているのかな・・・?

OreoではGCの問題がほぼ感じなくなっているので、今のままでもかなりロードが速くなりました。
GC関連の処理を入れなくても今後は問題なくなる可能性も考えられます。
Oreo向けにGCの処理なしのFGOが出てくればiOS向け並みに快適になる可能性も・・・?
色々全部予想ですけど、そんな気がします。

少なくともGoogleは今後FGOのような「クソ対策」で明らかにiOSに劣る作りのゲームが
出てこないようにする必要があると思います。




以前の記事のコメ欄で「Android 7.xはメモリ管理が下手過ぎる」とのご意見いただきました。
同じ意見の方が居てとても嬉しいです。

私はNexus 9(Android 7.1.1)を使っていて、アプリの切り替えが死ぬほど遅いのを
ずっと「メモリ不足のせい」と考えていました。

しかしXCのOreoを触ってから、「Android 7.x以前のOSのGCのシステム」が悪いと考えを改めました。
恐らくNexus 9にOreoを入れたら完全に息を吹き返してRAM 2GBでもものすごく快適な端末に
なるはずです。Googleが旧端末に対してOreoの対応を一気に辞めた理由はこれだと思っています。

Oreoを入れると旧端末が快適過ぎて、ユーザーが買い換えなくなるのを恐れたのかも。
恐らく私がメモリ不足で遅いと認識していたRAM 2GB端末が一気に息を吹き返すはずです。

Z3CもRAM 2GBでアプリの切り替えが遅いと感じるところが有りましたが、これも大方の部分で
色々解決する可能性が高いと思います。


Oreoでそこそこメモリの扱いに改善が入ってしまっているので、メモリの扱いについて私の理想が
既にOreoで実現している可能性が有ります。しかし現状旧バージョンのAndroid向けにわざとGCを
起こさせてメモリの整理をさせたり、そういったクソな作りのアプリが、ゲームのようなリアルタイム系の
アプリの中に幾らかあると思われます。

FGOはそれをじっくり考える機会を私に与えてくれました。
紹介して下さった方有り難うございます。

関連記事
  1. 2018/03/29(木) 21:04:23|
  2. 携帯
  3. | トラックバック:0
  4. | コメント:4
<<FGOのAndroidとiOSの差が見えてきた・・・iOSでもGCが発生する時がある等一筋縄ではいかない問題勃発 | ホーム | Xperia XCにOreoが降ってきて悩んで速攻アップデート・・・XCのGPSとFelica問題などと共に考える>>

コメント

FGOの例とか見るとやっぱ実際のゲームアプリとガチガチに最適化されたベンチは違うんだなぁと実感します。
iPhone6の1GBメモリで落ちまくってたFGOがiOS11では落ちずに動かせるようになった事と、
Oreoで改善が見られると言う話から考えるに、最新世代OSではライブラリレベルでなんか変更入ったんですかねー。
↓で出てくるUnity周りとか。
AndroidスマホでFGOの動作が遅い理由 - fyama's diary
http://fyama.hatenablog.com/entry/2017/07/08/223623

Android7端末Oreo化したい…保証とか要らんから、自己責任でiOS並の期間更新だけは出来るようにしてほしい…。
  1. URL |
  2. 2018/03/29(木) 22:20:11 |
  3. らむだ #-
  4. [ 編集]

>らむださん
なるほどUnityかぁ・・・、これで全ての謎が氷解しました。
このFGOのわざととしか思えない嫌がらせのようなGC山盛り保険の裏にはUnityの存在が有ったのですか。

「32bit(互換モード)でのみ動作する」なのは速度に関してはあまり関係ないでしょう。
こんなレベルのコードしか吐かないUnityが64bitモードで動作しても、それを生かすコードにはなっていないと思われるからです。
人が書いても64bitならではのコードで高速化というと、そこそこハードルの高い仕事です。
32bit互換モードだから大きく差がつくようなことは余りないと思われます。
これは私の過去の体験からです。

更に、ほぼシングルスレッド動作というのはアニメーションやらその他の部分の動作を見ている限りはそれほど
大きな影響は感じられませんが、シーンチェンジ時のダウンロードしたデータの解凍処理の遅さには直撃を食らわせている印象です。

Unityの最適化を進めるなら、まずは嫌がらせのような山盛りのGC処理の大半を取り除くことで大きく印象が変わりそうに思います。
恐らくOreoは強制GCが無くても問題なく動くような気がします。
Nougat以下のバージョンでどう変化が出るかは未知数なので、保険GCを省くことに対する最適化は必要かもしれませんが。

後はダウンロードデータ解凍部にマルチコアを生かす処理を入れるだけで、
ほぼ今の遅さの問題点が大きく解決するのではないでしょうかね。


それにしても・・・

>iOSアプリはOS上で直接実行されるのにたいして、AndroidアプリはVM*1という仮想マシン上でアプリを動かすことも動作の遅さの一因となっています。

>*1:Dalvik仮想マシン - Wikipedia

幾らなんでも、2017年7月の記事で、これは駄目でしょう。
記事全体がこのレベルの信頼性に落ちるとまでは言いませんが、さすがにDalvikVMを今更
現役レベルと記事にしてしまうのでは、もうちょっとAndroidの事を勉強してもらいたいと思ってしまいますね。

ちなみに2017年7月時点では、ARTで動作するLollopop(5.x)以降は73.4%、
DalvikVMで動作するKitKat(4.4)以前は26.6%でした。
2018年2月の時点ではlollipop以降は82.3%です。
DalvikVMで動作している端末を持っているのは恐らくゲームなんかしない層レベルと考えてももはや問題ないレベルですよね。


それにしてもこのブログ、記事は3つしかなく、2017年の当該記事の前は2013年に何の注釈もないコード三行だけの記事が一つ、
次は2018年に一つと、ほぼ開店休業状態なのも何か気になるところです。
  1. URL |
  2. 2018/03/30(金) 16:42:16 |
  3. 鈴 #GpEwlVdw
  4. [ 編集]

やはりUnityのメモリ管理の違いがデカい差なんですかねー。
少ないメモリでのARCが優秀なのか、多いメモリでのGCの限界なのか…。

DalvikもARTもまぁVMでくくる分には合ってますからご愛嬌ですかねw
7からVM周り変わってるようなのでその辺も影響してるのかなー?
『Androidを支える技術』(I, II) の内容に興奮した
https://gfx.hatenablog.com/entry/2017/04/16/133924

※FGOネタお付き合い頂きありがとうございます。
Android5の頃はストレス無いくらいには動いてたんですよ、このアプリw
  1. URL |
  2. 2018/03/30(金) 21:03:25 |
  3. らむだ #-
  4. [ 編集]

アッ○ルに対して忖度して、あえてロード時間が長くなるように設計してるって可能性があるんじゃないかと邪推してみたり

  1. URL |
  2. 2018/03/30(金) 22:46:01 |
  3. あき #-
  4. [ 編集]

コメントの投稿(投稿時には必ず何らかの名前を付けてください)


管理者にだけ表示を許可する

(名前を入れないとクリックできません)

トラックバック

トラックバックURLはこちら
http://suzunonejh.blog15.fc2.com/tb.php/7437-e03ca417
この記事にトラックバックする(FC2ブログユーザー)

最近の記事

機能リンク

最近のコメント

カテゴリー

ブログ内検索

ブログリンク

RSSフィード

QRコード

QR

月別アーカイブ



メールフォーム

お問い合わせ・ご質問はこちらから。

名前:
メール:
件名:
本文:

suzunone.m(あっと)gmail.com に
直メでもOKです。