スマホゲームの不思議

スマホゲームは、ほとんどが2D由来のゲームシステムなのにもかかわらず、意外と60fps出ない。


60fps出ない理由は概ね二つある。

  1. ハードウェアに起因する問題では、画面がHDやFHDと広すぎる癖に、メモリチップが(基本的に)一つしか載ってないから、メモリ帯域が足りてない。
  2. ソフトウェアに起因する問題では、3DベースのFPSゲーム同然の考え方で完全に画面の描画が完了するまで待ってること。ここで描画処理が重たくて処理落ちが発生するとフレーム落ちになる。


3DのGPUハードウェアってのは、いわゆる洋物FPSゲーム〜3Dモデルで構築された戦場を駆け巡ってバンバン撃ちまくる〜を中心に発展したハードウェアなのよ。
それらのゲームシステムは、描画システムのGPUから液晶の画面だけではなくて、内部のゲームシステムそもそもがxyzの三次元で構築される。
そういうゲームの場合は、バックプレーンに全描画が完了するまでflipできないのはしょうがないよね。
敵や味方、弾のモデルがどこにいるかを見て判断してキーインするわけだし。
ということで描画が間に合わなかった場合の処理落ちも許容されてきた。


しかし、日本製の大半のスマホゲームは、どういうわけかそういう洋物の文化が入ってない。
明らかにファミコンやメガトライブやゲームセンターのピコピコゲームの流れの中にある、xyだけで考える二次元のゲームシステムで構築されてる。
ならば、xy座標だけで構築される2Dの画面だけでも、安定した60fps出してゲーム画面を構築するのが筋ってもんではないのか?
であるのにもかかわらず、上述みたいな描画コード書いてるから、画面がすぐにカクカクになる。



具体的にどうすりゃいいのかというと、必ず60FPS出さねばならない2Dのゲーム画面(メインレイヤー)と、処理落ちしてもいい賑やかしの背景になってる(3Dの場合もある)画面(バックレイヤー)で処理を分けちゃえばいいんだよね。


先に、メインレイヤーを1/60秒以内にきっちりと内部バッファに描画完了させといて、その後のあまった時間でバックレイヤーの描画を行う。
バックレイヤーの描画が完了しない場合は、前に表示したフレームのバックレイヤーの画面と、上記のメインレイヤーの画面を重ね合わせて表示する。
そうすれば、2Dのゲーム画面のメインレイヤーは60fpsはきっちりでていながら、3Dの背景になってるバックレイヤーは処理落ちしてカクカクしてるみたいな感じの画面になる。
背景がカクカクしてても、その上のゲーム画面がスムースに動いていりゃ、ゲームとしては破たんしない。
破たんしないからユーザにとってもストレスにならない。



こういうふうに作れば、どうなるか?
たとえば、デレステやミリシタの場合、高画質モードでゲームをプレイすると、とにかく重すぎてゲームにならないのが現状。
それが上記のように作り直せば背景で踊ってるアイドルの画面は結構カクカクしてるけど、上から降ってくるノーツは60fpsでめちゃくちゃスムースみたいな感じが実現できるんじゃないかと思うのよ。
背景が結構カクついててもノーツがスムースなら、2Dベースのゲームとして問題にならない。そうでしょう?


別にデレステやミリシタに限らない。
他の音ゲーでも結構重たいしフレームバンバン飛ぶのあるよね。sb69とか。
完全に2Dだけど縦シューのごま乙も、背景レイヤーで3Dポリゴンつかった重ね合わせ処理をしてるから滅茶苦茶重いが、2Dシステムを回路でもてば、DSP的な回路で重ね合わせるからそもそも遅延なんぞ発生しない。


などと思いましたとさ。

一番いいのはこれから作るSoCのGPU回路に、和式ゲームに最適な2Dの描画回路を追加してもらうようにソフトウェアメーカが働きかけていくこと

上でも書いたけどスマホゲームってほぼ2Dゲームなんだよね。
デレステやミリシタみたいな3Dバリバリ使ってるゲームでも、肝心の音ゲー部分は2Dそのものだし。
ということは、3Dの画面の上にハードウェア的にオーバーレイできる2Dベースの画面を追加してもらうのが一番手っ取り早い方法だと思うんだわ。


2DベースのVDPってのは、チップ内に用意したラインバッファで実現できるから追加のメモリ(および3DGPUほどのメモリ帯域)は必要ない。
拡大縮小や回転なんて、ゲームで使う程度のものならば整数演算回路で実現できる。
つまり追加してもたいしてトランジスタ数は増大しない。
デレステやミリシタみたいな高度なゲームではなく、3DSの2Dゲームをスマホに持ってきたようなゲームならば、3DGPUを動かさず、追加の2Dベースの回路だけでゲームを走らせられるから電池の消耗も少なくなる。


スマホや現在の携帯ゲーム機は、従来のものと違って1チップのSoCで製造される。
新チップの開発製造ペースも半年から一年スパン。
そういう製品ならば、それをチップレベルで追加するくらいごく普通にやれることだと思うんだわ。

ということで頑張って60FPS出そうぜ

いまの携帯はゲームプレイには最適とはちょっといいがたいですもん。

そもそも論としてスマホアーケードゲーム同然のゲームを動かす方が頭イカレてるという意見もなきにしもあらず

私は正直デレステもミリシタもPS4の速い奴で遊びたい!!
そう思うのだけど、スマホ以外のゲーム機はクレジットカードと紐つけされてないから課金ガンガンかけられないよねw
当分スマホがメインゲーム機の時代は続くと思うし。