Breach の開発に取りかかるとき、検討していた幅広いアビリティを表現できる、複数のシステムから成る高度なツールボックスを用意できるかどうかが成功の鍵を握るだろうとわかっていました。初期の議論やプロトタイプでも、思い描いていたアビリティやキャラクター クラスは多様であったため、それらを実現するには、データに基づいて柔軟にアビリティを作成できる方法の確立が求められました。
燃え上がれ!アルティメット アビリティ「Inferno」
そこで生まれたのが、連携する複数のシステムのスイートでした。これにより、QC Games のデザイナーとアーティストは、シンプルなメレー (近接) 攻撃から、クラスごとのアルティメット アビリティまで、アビリティを創作できるようになりました。未発表のクラスのアルティメット アビリティである「Inferno」を使うと、プレイヤーは、ほとばしる炎を注いで不運な敵を燃やすことができます。これは壮大で印象的なアルティメット アビリティですが、基本的な構成要素は Breach のほかのアビリティと同じで、アビリティ データ アセットがベースになっています。

あらゆる状況に対応する Gameline
アビリティのデータでは、Breach 内でアビリティが「何であるか」を定義するだけでなく、それを「どのように」使用するかも示します。Inferno の説明に戻れば、「注ぐ」という言葉が、アビリティをオーサリングするための Breach のコア システムのひとつ、「Gameline」を示唆しています。Gameline は、アニメーションの再生、キャラクターのマテリアルの変更、ダメージやスポーンのエフェクトなど、あらゆるゲーム イベントのタイムラインです。

エディタ以外にも、Gameline には、Breach でのマルチプレイヤーでの高速な戦闘を可能にする重要なトリックが用意されています。マルチプレイヤー戦でアビリティが使用されると、対応する Gameline が、ゲームのサーバーとクライアントの間で同期されます。このとき、アビリティを機能させるかどうかをゲーム サーバーが検証する前に、アビリティが有効であることをクライアントが予測し、Gameline の再生を開始できます。万が一、サーバーが同意しなかった場合は、クライアントがその状態をサーバーの正式な見解に合わせて訂正します。ただし、ほとんどの場合、プレイヤーはすぐに反応を得ることができ、デザイナーはネットワークについて心配することなくアビリティをオーサリングできます。Gameline を使用することで、Breach のマルチプレイは、大半のプレイヤーにとって驚くほどシームレスでラグがほとんどないエクスペリエンスとなっています。
適切な問いかけ
Inferno は、空中でも地上でも使用できる多数のアビリティのひとつです。どちらの場合も概ね同じではありますが、その描写には違いがあります。プレイヤーが着地した状態からスタートするのか、落下していくのかに合わせて、アニメーションを調整する必要があります。また機能面では、炎を発している間はキャラクターが空中に浮いている必要があります。空中と地上でアビリティを分けることもできましたが、キャラクターのヘルス値や (内部では Modifier と呼んでいる)「バフ」がアクティブかどうかについて、ほかのアビリティによる確認が必要になる可能性があると考えました。

炎の感覚
Gameline のツールにより、アビリティを実行するための処理の順序を決める基盤が確立されました。そして Condition により、適切なアニメーションやエフェクトを再生する方法が確立されました。それでは、Inferno アビリティの「炎」の部分はどうするのでしょうか。これについては、Breach の戦闘システムに別のツールを開発しました。それが AOE (Area of Effect、エフェクトの範囲、の略) アクタです。エフェクトの範囲に関する機能はアクション RPG に一般的に見られるもので、Breach もその例外ではありません。AOE アクタ (Unreal の用語では、レベルに配置できるものはすべてアクタと呼ぶ) は、エフェクトの範囲に関連する機能を実装できるように、いくつもの手段をサポートします。AOE の領域を定義するために (ボックスなどの基本的なものから、インポートしたメッシュなどカスタムのものまで) 複数の形状を使用でき、どのキャラクターを AOE の対象とするかを Condition を利用してデザイナーが決定でき、AOE がエフェクトを適用するために「ティック」できるかどうかおよびその方法と速度を定義でき、時間の経過とともに AOE の形状を変更できます。

Breach のシステム デザイナーがよく操作するのはゲームプレイ システムのデータですが、領域によっては、データで効果的にモデル化できるよりも高度な制御と高い柔軟性が求められると思われました。
ダメージの計算については、デザイナーはネイティブ コードを使うという挑戦に取り組みました。その後、Delegate と呼ぶシステムを利用して、本来はシンプルな値に機能を加えました。Delegate は、デザイナーがオーサリングしたネイティブ コードの呼び出しです。Delegate を使用すると、小さな関数を使用して、シンプルな整数や浮動小数点の値をゲームプレイ システム全体で置換できます。Delegate は、増え続ける特殊なケースをコア システムのコードで正式に記述せずに、フレームワークの構造の柔軟性を維持するために不可欠です。Inferno のようなアビリティの持続時間から、投射物が動く速度、火傷のデバフが最終的にもたらすダメージまで、あらゆることが考慮されます。
