エンジニアが振り返る2020年のメルクストーリア

## はじめに
この記事はHappy Elements Advent Calendar 2020 13日目の記事になります。

## 背景
メルクストーリアチームでエンジニアリーダーをしている上田と申します。
（昨年度生放送で出演した上田とは別の上田です）

本アドベントカレンダーは個別の技術情報が多いですが、視点を変えて、運用エンジニア観点で今年のメルクストーリアについて振り返ってみたいと思います。

カカリアンズやチャチャからも紹介してもらえるとのことで、普段なかなか発信する機会がない**メルストユーザー様に向けた情報**の記事となっています。

※ 内容はメルクストーリアの動作や仕様、過去に開催されたイベントに関するある程度の知識が前提となっています。

## 1月
### 妖怪くじ
初めてのくじ形式のイベントでしたが、お楽しみいただけましたでしょうか。
大量のくじの中から当たりを抽選し、くじ結果をユーザー様毎に保存する処理の負荷については相当気を使いました。

今後も開催されるようなので、ユーザー様に愛されるイベントとなってもらえたら幸いです。

### 名鑑の一度の移動数を200体に制限
ご不便をおかけして申し訳ございません。

名鑑からの出し入れの際、内部では多くの処理をする必要があるのですが、それに時間がかかり、「なかなか終わらない」というお問い合わせをしばしば頂く状況になっていたため、一括での出し入れの制限をさせていただきました。

ただ、一気に出し入れしたい場面でのUX低下という副作用には課題を認識していて、今後も対策を考えて参ります。

## 2月
### 不正及びセキュリティ対策の強化
2019年11月度のトーナメントにおける不正行為をはじめ、サービスに対する様々な攻撃に対処するため、運営チームでは継続的にセキュリティを高める対応を行っているのですが、2020年2月に強力な大型対策をリリースできる目処が立ちました。

このセキュリティ対策を行った結果、2020年5月度と11月度のトーナメントにおいては不正行為は見受けられず、運営一同ほっとしております。

ただ、アプリの負荷が高くなり祈りが重いなどのお問い合わせを多数いただくこととなりました。
その後、継続的に負荷対策に取り組み、現在は、以前より体感として動作は軽くなっているのではないかと思います。

とはいえ依然として、トーナメント時などは負荷が高い傾向にあるため、抜本的な対応を行えないか検討しております。

## 3月
### 「転生したらスライムだった件」とのコラボイベント
専用ミッションや多層マップといった楽しい仕様に加え、時差開放・フリークエスト・イベント効率アイテムといった概念が賑やかに盛り付けられた意欲作でした。

そんな中、担当のエンジニアとアニメーターが、イベントマップ画面でタップしたらオブジェクトがぴょんぴょんと動く機能を追加してくれたりしていました。

ちょっとしたことですが、こういう遊び心は大切にしたいと思っています。

## 4月
### ダイヤ購入特典ユニットスタイル
ダイヤを購入すると着せ替えアイテムがついてくるという対応をこの月から行いました。

レアメダルアイテムではなくお金を払って購入していただく商品に付くおまけなので、少しでも豪華に、また魅力を伝えたいということで、お試しクエストを作りました。

実際にクエストに出撃してユニットモーションをみていただくことでユニットの魅力が伝わっていれば幸いです。

### エイプリルフール
毎年何かが起こる・・・！
今年は8bit的な懐かしい感じの仕上がりでした。

一度読んだストーリーもスキップなどできず、このめんどうな感じも昔のゲーム風でした。

一日限りのイベントでしたが、選択肢を選べるようにするなど既存のシナリオ機能にも改修を加え、エイプリルフールの開発としては過去最大の対応工数となりました。

### Happy Elements＜カカリアスタジオ＞設立10周年記念キャンペーン
設立から10年も経つとは驚きですが、Happy Elements＜カカリアスタジオ＞の各タイトルにおいて、ゲーム内のイベントを通じて記念日をお祝いするという取り組みがありました。

ダイヤ購入特典ユニットスタイルやコラボ開発、エイプリルフール対応などで大変なときにディレクターから急に「全社あげての対応だからよろしく」「なおユニークなミッションを数種類置きたい」と言われたのがなつかしいです。
(なんとか対応間に合ってほっとしました)

### パーティ画面・パーティセット
このタイミングで、パーティ関連に大きな機能追加をリリースすることが出来ました。

名鑑からもユニットが選択できるようになったり、パーティを**装備等の状態まるごと**記憶しておける「パーティセット」機能の実装により、パーティを組むのが楽になりました。
以前が大変すぎたのですが、ようやくこういう部分も改修できてきました。

この頃はまだ「ルーン一括装備」の機能が実装されておらず、パーティセットを応用して救援も含めたユニット一覧再現に活用頂いていたりして、有難かったり申し訳なかったりという思いから、その後の機能開発に繋がって行きます。

### ギルドバトルの更新機能を追加
ギルドトップ画面左上に「更新」ボタンを置きました。

画面下のフッターの「ギルド」タブを押して状態を更新するというアクションは認識していたのですが、この方法だとギルバト関連以外の情報もサーバーから取得するため動作が重いという性質がありました。

「更新」ボタンはギルバトに必要な情報のみ取得するようにしたので動作が軽いです。

## 5月
### トーナメント
トーナメントの対応は毎回ミスしないかドキドキします。
トーナメントの組み合わせから勝ち上がりの仕組みまで、何か失敗すると開催できなくなってしまうのでトーナメントがある月は他の作業が少し上の空です。

### クエスト開始アニメーション変更
クエストに関するアニメーション(時計なども)を少しずつ修正していってます。
こちらは演出の向上というよりは負荷軽減の意味合いが強いです。

ゲームアプリは新たな機能追加やOS・ミドルウェア等の事情から、内部の動作負荷が高くなっていく傾向にあるため、安定的に長時間軽快な動作ができるように、新規開発の裏側で、今後も継続的にメンテナンスをしていく予定です。

## 6月
### 「七つの大罪 神々の逆鱗」とのコラボイベント
ホークの原作中のイメージをシステム面でも演出したいということで、コラボ先様とも調整のうえ、トランスポーク（変身）に着想を得たという「ホークサポート」の機能を実装しました。

この「修練の魔石」を使って出撃するパーティを強化できるという試みいかがだったでしょうか。
（ホークサポート画面で強化を連打すると、画面乱れが発生してしまっていました。申し訳ありません。）

この中で、超古参のメルストユーザーの方はご存知かもしれませんが、以前短期間だけギルバトでガッツを40にあげられたのですが、イベントクエストでガッツを40にあげるという対応を入れてみました。

なお、暴走イベントでSP増加や特効効果が発動する仕様が好評だったので、次回以降の暴走イベントからも対応をいれることが決まりました。

## 7月
### 「バック操作の変更」機能の追加
iPhoneX以降で、バック操作をしようとするとホームインディケーターが反応してしまうという問題があり、何とかできないかと考えていました。

また、クエスト中に頻繁に行うアクションがスワイプ操作というのも地味に大変だったため、タップすることでバック操作、上にスワイプすることでガッツアップを行えるようにしました。（自分は未だに操作に慣れずに混乱しますが）

### ルーン総数に含める対象ルーンの変更
新しいルーンが色々と実装されている状況もあり、「育成素材である強化用ルーンをルーンの所持上限から除外する」という対応に切り込みました。

言葉にすると一言ですが、所持溢れ時の対処などの面で入手機会の多いルーンの取り扱いは影響範囲が大きく、デリケートな改修となりました。

これができたことで、プレゼントボックスからずっと受け取れないユーザー様がおられましたが、この対応で受け取れるようになったのではないかと思われます。

## 8月
### ギルドバトルの武器種別特攻のサイクル
もう何年も前ですが、暴走モンスターイベントでギルバトがスキップされるため武器の特攻カレンダーがズレていました。
そのころは爆走イベントがなく8日間の開催だったためです。

当時、ユーザー様から「次は強いユニットを持っている特攻の日でギルバトで活躍できるのを楽しみにしていたのでズレたので悲しいです」というお問い合わせをいただき、なるほど、それはいけないという思いから、ギルバト非開催時は特攻カレンダーをズラす処理をいれた、という経緯がありました。

一方で、昨今はギルバトカレンダーに影響するイベントもコラボなどの絡みで色々な形で開催するようになり、多くのユーザー様から「なぜズラすの？わかりにくいよ？」と言われ、ズラすルールやズラす数が都度複雑且つ見える化しづらいなどの理由から、ズラしたほうがわかりにくくなっていると感じズラす処理をやめました。

その結果、しばらく急襲イベントの特攻武器が同じになってしまうという悲劇が・・・。

### 主人公名の設定機能の追加
「誤って変な名前を設定してしまって、そのせいでストーリーに集中できない」であったり「三人称視点でストーリーを読みたい」というご意見から対応を決めました。

ストーリーでメルクに好きな呼び方で呼んでもらってください。

### DASHボタンの動作の変更
メルストでは、普段からにUXについて見直したり振り返ったりしているのですが、その会話の中で、「ダブルタップでDASHボタン固定とか判るわけないでしょう」という他のエンジニアの方からの意見により動作を変えました。

今から変えて大丈夫だろうかと不安もあったのですが、慣れたらこちらのほうが楽なので変えて良かったと思います。

## 9月
### ギルドバトル調整
ゲートの祈り値の状況に応じて、ゲートの祈り値（防衛体力・攻撃力）の上昇に、係数がかかるという仕様変更を行いました。

ギルドバトルのルールやバランスは常に「仕様の複雑さ」と「各レートの戦力差」の綱引きにより、解決がとても難しい課題です。

* 朝からがんばって祈ったギルドが夜バトでごっそりGPを奪われて4位になる（なりやすい）のはいかがなものだろう？
* ただ、祈ったギルドが絶対に勝つという仕組みだと朝の時点で勝負がついてしまったりして、全く面白くない。
* しかし祈ったギルドが損をする（しやすい）というのもよろしくない。
* ルールというよりバランスの問題とも言えるが、そもそもレート帯によって動きが違うため調整が厳しい。

これまでロスタイムを5分にしたり、タイムボーナスに手を入れたりして、攻略成績の比重を上げると同時に、祈ったギルドが少しは有利になるようにしてきましたが、突破有利な状況は変わりませんでした。

この状況に対して、複雑ですが、ゲートの祈りに対し自分のギルドの祈り量を全体に対する割合でとらえて相応に戦いやすくすることで、たくさん祈ったところがゲートを巻き込んでのタイムボーナスで勝ちやすくなってほしいという思いで仕様変更に踏み切りました。

仕様が複雑すぎて解説動画を作ることになってしまいましたが、仕様をご理解していただけていたら幸いです。

また、トーナメントの祈りがとんでもないことになっており、このままではリトラクトパーティ以外は突破すらできないだろうという判断のもと、祈りの上限を抑えるようにしました。

リトラクトパーティと言えば、少し昔話になるのですが、リトラクトルーン開発当時、エグザントとフィクセイトの仕様の方向性はすんなり決まったのですが、リトラクトはどういう仕様にすれば良いかを、チームは悩んでいました。

武器ソウルを考慮した結果「魔法職のパートナーとしてノックバックを補助するような仕様」に決まったのですが、押し出しゴールの懸念は一応検討課題に挙がりました。
たださすがに押し出してゴールする前に攻撃を受けてやられるので、押し出しをメインとして攻略にはならないと判断したのですが、、、ユーザー様の攻略が進み、リトラクトパーティが生み出されました。

その有無を言わせぬ圧倒的な制圧力故にギルバトのゴールを伸ばされたり、ゼフィロダイの押し出し距離を引き継ぐ不具合などを修正したものの、まだまだ現役で活躍しつづけるリトラクトパーティ。

リトラクトパーティだけが選ばれるという状況を回避するためにゴールの距離をもっと長くすることも検討されましたが、リトラクトパーティを完成させるためにスカウトをされたり、長い時間をかけて研究されたユーザー様のことを考えると、それはできないという結論でした。

このリトラクトパーティをどうするかという話は後衛上位ルーンに続きます。

### 「ラストピリオド–終わりなき螺旋の物語–」とのコラボイベント
「あんガルやマジョマジョやあんスタとはコラボしたのに、なぜラスピリとはコラボしないの？仲悪いの？」と言われていましたが、ようやく念願叶ってコラボすることができました。(仲悪くないですよ)

両方のユーザー様から温かい声をいただきましてうれしく思いました。

メルストとラスピリは絵柄も独特に違っていて、メルスト側だけでなくラスピリ側も含めて、コラボするとどうなるんだろうという素直な感想（コラボの意義のようなもの）に答えが出せたことは良かったと思います。

### ギルドバトルのゲートサイズ仕様変更
土日以外はゲートの中サイズ、小サイズが出現しやすくなる調整です。

大昔の運営としては冷戦という挙動は想定外でしたが、今はすっかりと定着した戦況です。

毎日祈るのが辛いという気持ちもわかりますし、冷戦には冷戦の深い考察があり、冷戦対策も一つの大事な戦略として捉えています。

よって全体的に熱量の高い土日やトーナメントはそのままに、平日は小さいゲートが出やすくして戦況を選びやすくするというのも当面は遊びやすくなるのかなと考えています。

### ギルドバトル画面のウィンドウ表示位置
ギルドバトル調整で動作確認しているときに、ギルドバトルの状況が見えなかったため、ウィンドウをズラして確認していたのですがプランナーさんに見つかって「そんなことできるの？便利！アプリもそうしよう」とリリースされることとなりました。

### クエスト結果の演出速度を変更
DASHボタンの動作の変更によって「リザルトカット」と呼ばれていた動作ができなくなったという意見をみて、周回時などはリザルト速いほうがうれしいよねということで速くしました。

### ユニットのレベルリセット機能
従来からチームにはこの機能を追加するかという議論がありましたが、運営上のポリシーとして、「レベルを上げて育ててもらうというルールを敷いておきながら、それに逆行する機能は混乱の元になるのでいれないでおこう」となってました。

ただ、「特定の攻略手法を実現するために一部の回復ユニットのレベルを上げてはいけない」という意見が初心者ルーム等で見受けられるようになり、初心者ユーザー様が「あげてしまった、どうしよう」となっていることを受けて、苦慮の結果、入れることとなりました。
「ユニットを一度名鑑に入れて、再度引くことでレベルリセットする」というような行為が普及している状況も、ユーザー様にまったく優しくないということも決め手でした。

リリースしたときは、「この機能の意味は？？」とユーザー様から言われ、葛藤もありましたが、この機能を歓迎する声も多く寄せられ、長く攻略が育っていく中で、ルールもまた柔軟に捉えなければということに思い至った改修になりました。

## 10月
### 新ルーンの実装
後衛攻撃ユニットを輝かせる3つの上位ルーンを実装しました。

メルストの世界は、多くのユニットが活躍できるようにという思いから、何度か環境変化を起こしてきました。

不遇な立ち位置のユニットをパーティボーナスやルーンなどで救済してきたのですが、昨今は、「中衛ボーナスが強すぎて後衛が必要ない」と言われる時代が長くつづいてきました。

そしてギルバトの高祈りではリトラクトパーティ一択という環境も好ましくないという思いがありました。
リトラクトパーティには難度相応の技術介入要素があり、苦労してスタイルを確立させてきたというユーザー様の歴史がありますが、「リトラクトパーティがなければトーナメントに勝てない、他に選択肢がない」という状況を何とかしたいと思っていました。

9月の改修でゲートの上限想定も約200万程度となり、トーナメントではコンティニュー回数も考慮しないといけないため、リトラクトパーティでいくか後衛上位ルーンパーティでいくか、選択できるような環境を目指したつもりです。

そこで後衛上位ルーンの実装にとりかかったのですが、リリース時期がトーナメント直前となり多くのユーザー様に混乱を招いたことを申し訳なく思います。

### にゃんこ大戦争とのコラボイベント
毎年恒例のにゃんこ大戦争とのコラボイベントです。
ポノス様が快く許諾していただけるので、毎回はっちゃけたストーリーを展開することができています。ありがとうございます。

社長対決で、うちの社長が酷い目に会うのも楽しみです。

### 爆走イベントで属性を限定
爆走イベントは暴走モンスターがアラカルトで出てくるイベントなのですが、気が付けばモンスター数も増え、狙ったモンスターが出るまで湧かせる作業（厳選）の負担が、抽選と言うシンプルな仕様の期待を超えてしまっている課題がありました。

そこで、暴走イベントが属性を固定しているので、近接する爆走も暴走の準備の労力に報いる形で遊びやすくしてはどうかということで、この仕様変更を実施しました。

## 11月
### ルーン一括装備機能
トーナメントで救援作るのが大変なので作って欲しいと他のエンジニアに依頼したら急襲イベントに間に合わせてくれました。
これで火力救援も組みやすくなったのではないでしょうか。

### 裏クエスト追加
裏クエストにおいて蜂は人を選び、今なおユニルスが癒され続けていることは把握しており、ユーザー様が馬刺しなどと仰っていることに密かに心を痛めていました。

そして今回登場したアグラムは、ユーザー様にあっという間に攻略法を見つけられてしまい、癒され続けることとなりました。

チームとしては、裏クエストのボスクエストは特定のプレイのありかたを前提としてバランスを決めているわけではないのですが、個人的には「そろそろユニルスが更新されても良いのではないだろうか、第一部のメインクエストを進めてもらいたい」という思いがあったので、アグラムが楽しく攻略される形で世に出たことは良かったと思っています。

一方で、Bpの回復量が多かったことから、裏半額だけでなくトーナメントでもアグラムは癒され続けるという事態になってしまいました。

### ギルドバトルトーナメント
様々な調整が行われた後のトーナメント。
決勝戦のゲートが200万を超えたとのことで、祈り上限設定してなかったらどうなっていたのだろうと震えました。

トーナメントで祈りを連打しすぎてとても指と手首が痛いです。今後、何とかしたいです。

## まとめ
### 今後について
メルストチームエンジニア岸本が別の日に書いているリアルタイム通信の記事です。

MagicOnionから始めるリアルタイム通信 (前編)
https://qiita.com/naoya-kishimoto/items/0d913a4b65ec0c4088a6

MagicOnionから始めるリアルタイム通信 (後編)
https://qiita.com/naoya-kishimoto/items/8a9a5db30717865d867e

リアルタイム通信に取り組んでいるということは・・・？
来年には何かしら発表できると思います。

## メンバー募集
Happy Elements株式会社 カカリアスタジオでは、
いっしょに【熱狂的に愛されるコンテンツ】をつくっていただけるメンバーを大募集中です！

もし弊社にご興味持っていただけましたら、是非一度
下記採用サイトをご覧ください。
[Happy Elements株式会社 採用特設サイト]
(https://recruit.happyelements.co.jp/)