メルクストーリアの急襲イベントの負荷についての話

cacalia
1310
1
0

メルクストーリアの急襲イベントの負荷についての話

Published at December 9, 2019 6:35 p.m.
Edited at December 9, 2019 6:30 p.m.

この記事は、Happy Elementsカカリアスタジオ Advent Calendar 2019 12日目の記事です。
本記事では、メルクストーリア(以下、メルスト)の急襲イベントの負荷問題について、開発時および、リリース後に対応した話をさせていただこうと思います。

はじめに

メルクストーリアとは

Happy Elements株式会社カカリアスタジオが配信しているスマホ向けゲームアプリです。
魅力あふれるキャラクターが織りなす笑いあり涙ありで、心温まり幸せな気持ちになれるストーリーが特徴のラインストラテジーRPGです。
公式サイト

急襲イベントとは

4ギルドのメンバーで協力して、フィールドに出現するモンスターを癒やす(メルストでは、モンスターは倒すのではなく癒やす)イベントです。
モンスターの出現位置や与ダメージアップ状態などをメンバー間で共有し考えながら、より多くのダメージを与えることを目指します。

上のゲーム画像を見ていただいて感じていただけていれば幸いなのですが、みんなで協力してゲームをしているというわちゃわちゃ感を提供するのが開発の目標でした。

負荷問題

早速ですが、本題に当たる負荷問題についてです。
以下画像が実際の移動シーンです。

このようにフィールド上に多くのユニットとモンスターが出現し、それぞれが移動と攻撃アニメーションなどを行っています。多い場合だとフィールド上に、120体を超えるユニットとモンスターが出現します。
ユニット・モンスター数が一定数を超えると、かなり負荷が高い状態のためできる限りの軽減策を講じました。

軽減策①

【表示オブジェクトの抑制】
OnBecameInvisibleメソッドを利用して、画面外のユニットやモンスターを表示させないようにしました。
フィールドの表示は全体表示と拡大表示を切り替えられるようになっているのですが、拡大表示にした場合、フィールド上の半数程度のユニットやモンスターを非表示にできるので、かなり軽減できました。

void OnBecameInvisible()
 {
    foreach (var _v in GetComponentsInChildren<GameObject>()) {
      _v.SetActive(false);
    }
}

併せて、ユニット移動の際には、画面を強制的に拡大表示にさせることで表示対象を減らして、ユニットが滑らかに動くようにしました。

軽減策②

【通信頻度・通信データ量の調整】
ユニットやモンスターの再描画のタイミングを通信後に限定し、通信頻度を可能な限り少なくすることで、再描画に関する負荷を低減しています。
表示周りの負荷とは直接関係ありませんが、通信データ量についても削減を進めWi-Fi環境でなくても通信量を気にせず遊べるように気を付けました。

テストプレイを経て、一定の端末で動いているし負荷も大丈夫じゃないかと判断しリリースに至りました。


そして、イベント初日を迎えたのですが、アプリが重すぎて正常に遊ぶことができないという多くのご意見をいただくことになりました。(完全に見通しが甘かったです)

最終手段(事後対応)

【メンバーユニット表示OFF機能】
ユーザー様からのアプリが重すぎて正常に遊ぶことができないという意見を受け止めた結果、メンバーユニットを表示しない軽減モードを急遽リリースしました。
急襲イベントは土日2日間の連続開催なのですが、なんとか2日目の日曜日までには対応を間に合わせることができました。

■軽減モードOFF■

■軽減モードON■

すっきりしてますねw
軽減モードをOFFにした場合、画面上の表示が少なくなり動作は軽快になったんですが、フィールド上があまりに寂しくなります。。。
当初の目的のわちゃわちゃ感が表現できなくなりますが、遊べないという最悪の状態は回避しなければいけないので、苦肉の策でしたが実装に踏み切りました。
開発時に軽減モードが必要なのではないかという議論自体はあったのですが、イベントの狙いと外れてしまうため、実装しなかったのですが案の定必要になりました。
必要かなと思ったものは作っておいたほうが良さそうです。

まとめ

急襲イベントのフィールド表示に対する負荷軽減として実施した内容をいくつか紹介させていただきました。
【メンバーユニット表示OFF機能】>【表示オブジェクトの抑制】>【通信頻度・通信データ量の調整】の順番で効果がありました。
イメージ通りだと思いますが、動作が重い場合は不要なオブジェクトを思い切って非表示or削除しましょう!!

メルストは約6年前にリリースしたアプリですが、最近のアプリに負けないUIやゲーム性を提供していけるように開発メンバー全員で頑張っています。
幅広いOSやスペックの端末に対応する必要があるため、見通しが甘いこともありユーザー様にはご迷惑をお掛けすることもありますが、2020年も新しい取り組みに挑戦し続けていきたいと思います。

最後に

ここまで読んでいただき、ありがとうございます!
カカリアスタジオのアドベントカレンダー はまだまだ続くので、よろしくおねがいします〜!

乱筆乱文にて失礼しました。