時代に翻弄されるエンジニアのブログ

ゲームプログラマをやっています。仕事やゲームや趣味に関してつらつら書きたいと思います。

ゲームからバグが 亡くならない理由 メモリ編

f:id:tkymx83:20190123223003p:plain

こんにちは、今日はゲームからバグが亡くならない理由について解説していきたいと思います。

バグにもいろいろな種類がありますが今日はその中でも「メモリ限界」について触れたいと思います。

バグってなに?

バグはいろいろな種類がありますが、ひとえに想定外の動作を行うことを言います。アクションゲームでは攻撃を放ったのにあたらない、攻撃力が想定よりも低い等が挙げられます。ソーシャルゲームでよくあるのは、シーン遷移にかなりの時間がかかる。デッキを編集してたらクラッシュしたなどがあります。

多くのソーシャルゲームでは問い合わせホームがあり、そこでバグの報告をすることができます。ですが、調査しますとだけ返事が来てなかなか解決してくれません。

ユーザとしてはかなりイライラしますが、これには深い理由があります。

メモリが限界を超えてしまう

多くのスマホゲームは開発期間が終了すると長い運用期間に入ると思います。運用中は様々なイベントや新しいキャラクタを追加して、ユーザーを楽しませてくれます。そして、マンネリ化を防ぐために、バトルやミッションクリア時の演出などどんどん豪華になっていきます。

このように豪華になっていくことで、ある日とつぜん、端末のクラッシュが発生します。それはひとえに、端末のメモリの限界を超えてしまったからです。

ゲームを開発した当初はある程度運用を見越して演出などの物量を決めます。しかし、年月が経つことでその想定を知る人も少なくなり、いつの間にかメモリをガバガバ使うものを作り出すようになります。そして、クラッシュが多発することでその重要性に気づくのです。

メモリ限界の修正は長期化する

メモリ不足の対応は通常はとても長期化します。理由は単純で、無駄な部分の調査に時間がかかるからです。

バトル開始時に無駄なデータを読み込んでいないか?
演出は派手すぎないか?
派手な場合はどのように下げることができるのか?
演出のクオリティとメモリどちらを優先するのか?
などなど考えることがたくさんあります。

特に、演出の豪華さなどはエンジニアだけでは解決できず、他職種を巻き込んで大掛かりに動いていかないといけないため、かなりの日数を必要とします。このように、調査から実施そして、今後の対策と考えるとやらなければいけないことがたくさんあります。

メモリ限界はゲーム開発時に対策が必要

メモリ不足はどの運用タイトルも通る道です。

簡単な解決方法としては、メモリ量を常に可視化することが重要です。デバッグメニューでも良いので、今使用している量がスクリーンに映し出されており、チーム内でこのサイズは超えないようにしようというルールが決まっていることで、メモリ限界を超えないゲームを作ることができます。

最後に

メモリ限界はゲーム開発者の誰もが通る道です。しかし、それを適切に定量化して対策ができている人はあまりいないのではないでしょうか?

それには原因があります。スマホ端末の種類の多様化です。iOSは比較的わかりやすいのですが、Androidに関しては多種多様な端末が存在します。そしてそれぞれメモリ容量も異なるのです。

実際開発時にはいろいろな端末でテストはしますが、すべてを網羅することはできません。そのため、全てに通用するメモリ容量基準を作ることができないのです。だからといって、メモリ基準を低くすると今度はグラフィックのクオリティが大きく下がることになります。そうなっては本末転倒です。そのため、適切なラインを引くこともゲームエンジニア腕の一つだと思います。