見出し画像

Excelとファイアーエムブレム

目的

大好きなゲームのひとつ、ファイアーエムブレム。このゲームの特徴のひとつである支援効果は、特定のキャラクターの組み合わせで出撃すると発生し、プレイヤーにとって有用な効果を様々発揮します。各ステージの出撃人数には上限があって全員を連れて出撃することはできません。では、どういうメンバーで出撃すれば最大の支援効果が得られるのか、それを最適化するツール(マクロ、VBA)を作ります。

要件

  • ファイアーエムブレムエンゲージを対象とする

  • 支援効果最大とは支援発生数が最大であると仮定する

  • ステージ毎の出撃人数は変更できるものとする

ユーザインタフェース

  1. 1列目と2列目に支援効果が発生するキャラクターの組み合わせを記入

  2. 3列目は6列目で支援が発生するキャラクターの両方が出撃した(1が立った)支援が発生する(1が立つ)よう計算式を自動で埋める

  3. 4列目のセルは支援発生合計数で目的関数となる

  4. 5列目はキャラクター名を記入

  5. 6列目はそのキャラクターが出撃するかどうかでバイナリー決定変数

  6. 7列目のセルは出撃数合計で制約条件となる

  7. 8列目は今回出撃するステージの出撃人数を記入

  8. ボタンを押して出撃メンバー最適化を実行

出撃メンバー最適化画面

結果

例えば出撃数14人のステージでは、アイビー、ヴェイル、エーティエ、オルテンシア、クラン、スタルーク、セリーヌ、パンドロ、フォガート、モーヴ、ラピス、リュール、ルイ、ロサードが支援発生合計数を最大化するメンバーとして選ばれます。リュールは全員と支援効果があるので基本的に選ばれます。支援効果の合計数は50です。もちろんこのメンバーが実際に強いかどうかは別問題です。笑
強さも考慮したい場合は支援数だけではなく目的関数に強さの要素も合計するなどの工夫をする必要があります。

最後に

以下はプログラムソースとファイルを添付していますが、再利用目的の意味合いが強いのでカギをかけておきます。笑

ここから先は

3,883字 / 1ファイル

¥ 300

この記事が気に入ったらチップで応援してみませんか?