青い肌の整備士が最新鋭の飛行機械を披露する様子が描かれている、《つむじ風の巨匠》のカードアート。

まずは自己紹介させてください。私はベン・エリオット、MTGアリーナの機能チームで働くソフトウェアエンジニアです。もしあなたが私みたいな人だったら、1つのことだけをしてると少々退屈するタイプのプレイヤーなのではないでしょうか。フォーマットを行ったり来たりするのを好んだり、目まぐるしい状況だと頭がごちゃごちゃになったり、あるいは………創造性を発揮して、スパーキーをいたぶるデッキを次から次へと構築するのではないでしょうか。

言い換えれば、あなたは多くの目標を持つことに喜びをおぼえるタイプのプレイヤーなのかもしません。

MTGアリーナでは、探索しがいのあるような仕掛けが待ち望まれてきました。ゲームのいくつかのシステムも、まさしくそのために設計されています。中でも真っ先に挙がるのは、新規プレイヤー体験です。MTGアリーナでは、1色からなる1つのデッキから始まり、人間相手に不自由なくゲームを遊べるようになるまで、マジック:ザ・ギャザリングという巨大なゲーム世界に徐々に慣れさせるという試みがなされています。ここで、人より少しだけ経験を積んだあなたに、デイリークエストを通じて探索を後押しします。毎日同じデッキを使用して、デイリークエストを悠々と達成するのは恐らく無理でしょう(私のようなタイプの人であれば、ひとつのデッキだけで大半のデイリークエストを達成できるように楽しく工夫するかもしませんが)。だからこそ、普段なら試そうとは考えなかったテクニック、戦略、カードにいつの間にか手を伸ばすようになるわけです。

もちろん、新規プレイヤー体験やデイリークエストでできることには限界があります(話がどこに向かうのかも予想がつくかもしれません)。MTGアリーナが誕生して以来ほとんどずっと、プレイヤーたちは本格的な実績システムを求め続けてきました。探索しがいがあり、新しい挑戦につながり、創造性を発揮する余地があり、達成したあかつきにはその証としてぴかぴかのバッジを獲得する。そんな実績を求めていたのです。実をいうと、MTGアリーナのデザイナーや開発陣も同程度の期間、実績について考えてきました。利点や欠点、技術的課題について考えるのはもちろんのこと、難易度が高くて挑戦しがいのある、一度きりの堂々たる実績とはどういうものかについて、アイディア出しをしていました。そして『霊気走破』のリリースにあたり、実績機能がようやく立ち上がったことを嬉しく思います!

しかしながら、そこまでに至る道は決して平坦なものではありませんでした。

私たちがどのようにして完成へ漕ぎつけたのかを、ごくわずかですがご覧いただけたら幸いです。では、前置きはこのくらいにして、一部始終をお話ししましょう。…

基盤づくりとプロトタイピング

何年にもわたり実績についてああだこうだ話したり考えたりしてきた私たちですが、2024年春より、MTGアリーナの機能チームが「実績」づくりを本格的に始動させました。

私たちのチームは初期デザイン段階において、実績機能のような高次目標を設定しました。それと同時に、私たちが求める実績の初期リストを作成しました(なんとリストには当初、126もの実績項目が)。初期段階で浮上したデザインには、以下のような重要な側面が含まれていました。

  • エンゲージメント:実績とは楽しく追い求めるものであり、プレイヤーのマジックの旅路を後押しするものであるべき。
  • ダイバーシティ:実績とは、様々なプレイヤータイプに対応しつつ、MTGアリーナのあらゆる要素にまたがって幅広い種類を用意するべき。
  • フレキシビリティ:無関係な実績に左右されることなく実績を追加・調整・排除できる状態にし、責任者デザイナーが一手に管理できるような体制。

大事なことですが、デザイナーはこの機能が扱う範囲をきわめて慎重に設定しました。少しでも手に負えないものになったら、この機能は到底実現できるものではなかったでしょう。

これと並行して、プレイヤーに実績をどう見せるかについても、様々な形でプロトタイピングが行われました。UIを試作し、トレードオフについてじっくり論じ合い、これまであまり用いられなかったかたちでゲームクライアントを実験しました。

ここで例をひとつ挙げましょう。実績を達成するたびに、ポップアップ通知を表示する必要があります。私たちは、どの画面でも邪魔にならない程度に通知を表示しつつ、プレイヤーが大きなことを成し遂げたときにはちゃんと気付けるようにしなければなりませんでした。UXデザイナーは通知の見せ方をいくつかプロトタイプ化し、そして、おそらくそれ以上に重要なのですが、画面上の配置を決定する必要がありました。(画面右上にするということで落ち着きましたが、同時に長々と表示させない仕様にしました。)

画面右上に表示される、実績「First Favorites」の達成通知

実績をテーマごとにグループ化し、果てしなく長いリストの中から見つけやすくすることに決めたのはこのプロトタイピングの途中でした。これにより、どうグループにするかをデザインする必要が生じたのです。グループの見せ方はプロトタイピングと開発の過程で幾度となく進化し、繰り返すたびに初期案が磨かれていきました。ホームページのデイリークエストトラッカーに、「お気に入り」に追加した進行中の実績を表示することを話し合い、有用であるとの意見に達したのも、こうしたプロセスを何度も繰り返す中でのことでした。当初の計画になかったことですが、それこそがチームでプロトタイピングを重ねることの利点の1つです。それによって、私たちが気付かなかった望みを見つけだすとともに、すでに存在する新機能の中にさらなる新機能をどのように無理なく実装するかを試されたわけですから。

報酬トラック進行状況の画面にお気に入りにした実績が表示されている、MTGアリーナのホーム画面のスクリーンショット。

エンジニアたちはまた、既存のシステムに実績機能をシームレスに織り込む方法についても考え始めました。新規プレイヤー体験を改善する際に開発された技術の一部を流用し、「実績」づくりの一貫した方法を提供するとともに、一部の実績に伴なう新しい要件を満たすためのサポートも追加しました。また、MTGアリーナのようなゲームにおいて、機能がスケールしても動作するかを確認したかったという名目もあります。これは特に、小規模だったり独立したプロジェクトに慣れているとしばしば見落とされがちな制約です。世界中から様々なデバイスやソフトウェアを介して何千人ものプレイヤーがゲームに参加する中で実績機能をオンにすると、パフォーマンスにどのような影響があるのか。サーバーやゲームプレイのパフォーマンスにできるだけ悪影響を与えないよう、初期段階からきわめて慎重に設計しなければならなかったもののひとつです。

最後に、実績は機能チームを中心に進められましたが、チーム間で大々的に協力作業する必要性を理解していました。大半の実績はマジックのゲームプレイ中に達成されますので、カードの個別効果のみならず、マジックのルールに則って実績をつくれるようになりたいと考えていました。

ゲームプレイに関する実績が、ゲームプレイ外の実績とは根本的に異なる技術的要件を持つため、カードセットチームと協力しながら実績に関するアーキテクチャの計画に着手しました。また、新たに追加される実績をもれなく持続可能なものにするために、コンテンツチームとタッグを組みました。それには、機能と組み合わせる新しいコスメティックタイプ(称号など)も含まれます。実績システムを構築したことがある人なら、それがゲームの隅々にまで関与することを理解しています。MTGアリーナの場合、対戦中のやりとりからブースターパックの開封、デッキ構築、さまざまなフォーマットでのプレイまでのありとあらゆる要素を意味し、…リストは長くなっていく一方です。

すべての複雑なピースが他の複雑なピースを気にする必要がないなら、ソフトウェアはこの上なく簡単に製作・維持できます。「実績」のような機能はこの理想を嘲笑うものであり、隅から隅まで配慮を行き届かせる必要があります。

この段階は2024年夏までかかり、終わりを迎える頃にはパズルのピースが個別に機能するようになっていました。私たちはごく簡単な実績ページを用意していました(ただし、実際の実績データではなくプレースホルダーを使用)。また、一部の実績はサーバー上で実装されていました(ただし、クライアントに見せれる状態ではまだない)。さらには、それらを統合するために必要な、やりかけの細々とした作業だったり、つなぎのためのピースが大量に存在していました(称号を閲覧・選択するページなど)。

真夏のオデッセイ

夏の訪れとともに、機能チームのほとんどのメンバーが「実績」づくりから少し離れることになりました。

これには少し説明が必要かもしれません…。あなたは憶えているでしょうか。昨年2024年は、MTGアリーナにとってかつてない年でした。『モダンホライゾン3』のように、高度に複雑で、多くの注目を集めるセットが続々登場したからです。これにより、このようなセットとの組み合わせで機能を構築するまたとない機会が得られました。同時に、一部の「実績」づくりに関わる作業が、ゲームプレイ内実績の効果的かつ持続可能な開発を妨げていることにも気が付きました(ゲームプレイ外の実績よりも本質的に難しい課題です)。私たちがとった解決策はこうでした。

  • チームから数人を抜き出し、ゲームプレイ内実績の本当に厄介な部分にじっくり取り込んでもらう。そして、
  • 残りの機能チームは、実績以外の機能に時間をかける。

実績以外の作業に取り組んでいた機能チームの一部メンバーは、素晴らしい機能をいくつか生み出すことに成功しました。ストアで構築済みデッキを販売する能力を追加しました。そして、市場(旧称:超能力蛙の隠れ家)が登場しました。機能チームのおよそ半数は、ちょっとした機能の追加、QOLを向上させる改善、バグ修正に四六時中取り組んでいます。ご安心を、彼らは時間を有効活用していましたよ!

一方、ゲームプレイ内実績の実装はというと、実現に向けて本格的に動き出していました。チームは、ゲームプレイ内実績をマジック:ザ・ギャザリングの能力そのままの言語で実装することに決定しました。プレイヤーがゲームを開始すると、そのゲーム内でどんな実績が関与しうるかをまず確認し、その実績を能力の類似としてルールエンジンに読み込むよう指示します。(注意:これは能力そのものではありません。ゲームプレイ中、実績自体が能力を考慮する他の効果と干渉することを避けるためのものです。これこそまさしく、システムをこのように実装する上で考慮しなければならなかった点なのです。)その実績が発動したり、実績が発動しうる状況が発生した際に、ゲームはその事実を記録します。実績シグナルは、デイリークエストの指標がそうであるように、プレイヤーの実績達成状況を更新します。デザイナーが同じ実績シグナルを再利用し、より容易に達成をつくれるように、実績トリガーにパラメーター(トリガーをテンプレート化できるように、差し替え可能にしてあるルールテキストの一部)も導入しました。

「Growth and Strength」という実績を例に挙げるなら、「複数のゲームにわたってエルフやハイドラである呪文を250回唱える」という条件を達成する必要があります。この実績の発動条件のルールテキストは次のように記載されています:

あなたが{SubtypeParameter 1}・呪文1つや{SubtypeParameter 2}・呪文1つを唱えるたび、{UpdateAchievement}。

例として、SubtypeParameters #をそれぞれエルフとハイドラのサブタイプに置き換えてみましょう。新たなるホットなキーワード、SubtypeParameter #UpdateAchievementは、実のところマジック:ザ・ギャザリングの言語の一部ではありませんが、それらがゲームエンジンが理解可能なものとして存在している点が重要です。ゲームエンジンはこれらの実績トリガーを適切にロードし、通常通り他のすべてのゲームトリガーや状態と共にチェックできるようになりました。この方法だと、ルールに基づきパラメーターが満たされたカードによるトリガーも、ルールエンジンがカウントしてくれることに利点があります。たとえば、多相の戦士は「Growth and Strength」の実績達成に寄与します。なぜなら、多相の戦士はすべてのクリーチャー・タイプ(エルフやハイドラを含む)であるためです。

夏の終わりまでにゲームプレイ内実績の技術をモノにし、『モダンホライゾン3』はリリースされると、あらためて「実績」づくりを意欲的に行うための準備が整っていました。

ゴールまであと少し

晩夏から秋にかけ、私たちはバラバラだった機能を統合する作業や、残りの実績の実装、機能のUI/UXのブラッシュアップに全力で取り組みました。私たちは実績を2種類の「セット」に分けることにしました。一般的な使い方を想定した基礎的な実績からなるセットと、マジックの各色に関連した実績からなるセットです。数多く存在する実績のために用意された、アート、アイコン、テキストの最終版を受け取り始めました。すべての画面が、モバイル端末やレイアウトで機能することを確認しました。特定の実績をより簡単にテストできるようにするためのQAツールも導入しました。当時、私たちは『マジック:ザ・ギャザリング ファウンデーションズ』の発売とともにこの機能を世に送り出したいと考えていて、残りの作業量だけで判断すれば、それは実現可能に思えました。

エンジニアたちはそれとなく楽観的な様子でしたが、その機能が多数のプレイヤーと同時接続しても問題なく動作するかを確認する必要がありました。そこで私たちはシミュレーションを実施します。自動化された「プレイヤー」をいくつか生成して、実際のプレイヤーと概ね同じように行動するように設定し、実績をオンにして、事の次第を見守りました。有り難いことに、結果は大成功でした!サーバーも想定どおりに立ち上がりました。

ですが、開発とテストを経るごとにだんだんと、何かが欠けているような気がしてなりませんでした。私たちからすると、その機能の出来は「優れている」というよりも「十分良い」程度の印象だったのです。機能のどの部分を見ても、ただ改善するだけでは物足りず、もっと磨きをかけたいという思いがひしひしと伝わってきました。システムの粗削りな部分のせいでスムーズに動作しないかもしれない。それだけの理由で、計画していたクリエイティブな実績をいくらか削ぎ落とすことには反対でした。先ほど言及した「クエストトラッカーでお気に入りの実績をトラックする」コンポーネントをはずしてリリースするなんてもってのほか!なにせ、本当に素晴らしいアイディアなのだから!その後も私たちは、大きな障害とまではいえないものの、少し後ろ髪を引かれるようなバグを発見しました。QAに十分な時間をかけて、徹底的にテストしたい!ここで、MTGアリーナチームが重んじる最も重要な価値観のひとつ、ノークランチ(働き詰めは禁物)も浮上してきます。

『マジック:ザ・ギャザリング ファウンデーションズ』の締め切りが近づく中、私たちは実行するか否かの決断を迫られました。その機能を『マジック:ザ・ギャザリング ファウンデーションズ』込みでリリースすることは可能だという認識で一致しましたが、最後はその機能にしかるべき愛情を注ぐことを決めました。そのため、当初の予定よりも遅れてリリースすることになりました。ホリデーシーズンやリリーススケジュールが近づいてることを鑑みて、私たちはこの機能を後続のメジャーリリースである『霊気走破』に照準を合わせ、そちらに移すことにしました。幸運なことに、私たちがいままで手掛けたすべての機能と同様に、この機能も後続リリースに簡単に移せるようにデザインしました(ソフトウェア業界ではいつでも賢明な判断です)。そして、移すために必要なおまじないを実行しました。

次の数週間、私たちは正しい決断を下したという自信をますます深めました。その後も私たちは、バグ、エッジケース、そして使いにくいユーザー体験を発見し続けたのです。実績機能を早期に公開することは技術的には可能でしたが、それだと私たちが設定する水準にも、プレイヤーの求める水準にも達することはなかったでしょう。追加で時間をもらえたおかげで、バグを潰したり、必要としていたブラッシュアップを実施することができました。クライアント内の実績そのものもより読みやすく変更され、さらにはあのクールなフリッピングアニメーションまで追加されました。私たちは、実績通知がもっと華やかになるよう工夫しました。機能はただ芽吹くだけでなく、チームが目論見どおり、見事に花開いたのです。

2つの達成された実績「First Favorites」と「Stylish Spellslinger」が表示されているスクリーンショット

実績、達成!

『霊気走破』で初登場した実績は、合計63項目の「コア」実績と、マジックの色に関連した実績が50項目(各色につき10項目)、合わせて113項目があります。たしかに、当初予定された126項目よりもやや少ないのですが、私たちは開発途中でいくつかの実績を削除するに至りました。理由としては、プレイヤーの問題行動を助長する可能性があったり、達成したところで嬉しくもないと感じたためです。決して実装が間に合わなかったわけじゃないですからね!コンセプト段階から手を加えられたものも僅かながらありましたが、計画当初からの実績はほぼすべて、最終版の機能に実装されました。実績の項目数、種類ともに私たちは満足しています。難易度、色のバランス、プレイスタイル。どれをとっても幅広いバリエーションがあります。

私たちはまた、達成した実績に対して数多くの報酬を用意しました。その中には、新しいアバターやエモート、カードスリーブ、さらには新しい装飾アイテム「称号」も含まれています。称号は、あなたが強敵であることを相手に知らしめる新しい方法です。

タイトル選択画面のスクリーンショット

私たちは、実績を世に送りだすために注ぎ込んだありとあらゆる努力について非常に誇りに思っております。私たちのすべての仕事に言えますが、このチームは責任を持ち、持続可能で、注意深く取り組むことに大変な努力を注ぎました。ここにあるのはただのありふれたチェックリストではありません。丹精を込めてつくった、職人技のような実績なのです!

例によって、MTGアリーナチームはこの機能に関するコミュニティのフィードバックを注視しつつ、粗削りな部分を見つけ次第、調整を行っていきます。ご意見がありましたら、遠慮なく私たちまでどうぞ——いつでもお待ちしております!

最後まで読んでいただきありがとうございます。それでは、素敵な実績狩りを!