· 技術 · NOTE_08

形を替えても、11人が迷子にならない38のフォーメーションと、選手を移す計算

スタメンを11人並べたあとで、「やっぱり 3バックにしたい」と思うことがあります。形を替えるたびに11人を選び直すのでは、気軽に試せません。マイイレブンとペタスタでは、形を替えると選手が近い役割の位置へ自動で移ります。このノートでは、その計算の中身と、うまくいかない場合を紹介します。

38種類の形を、どう持っているか

形は全部で38種類あり、4バックが17、3バックが12、5バックが9です。数字が同じでも別の形として持っています。たとえば 4-4-2 には、中盤が横に並ぶふつうの形と、ひし形のダイヤモンドがあります。4-2-3-1 にも、2列目が中へ絞る形を別に用意しています。実際の試合より遊びの色が濃い 4-6-0 や、古典の WM(3-2-2-3)も入れました。

1つの形は、11人分の次の情報でできています。

一見すると重なる形もあえて両方入れています。3-4-2-1 と 5-4-1 は、数字はまったく違いますが、同じチームの攻めと守りの姿であることが多い形です。ボールを持っているときは2人のシャドーが前に出て、守るときは下がって中盤に並ぶ、という関係です。どちらの姿で見せたいかは作る人によって違うので、別々に選べるようにしました。

形を足すときには、見た目の決まりを2つ機械で確かめます。1つは名前の札が重ならないことで、横の間が17未満で、しかも縦の間が10未満の2人を作りません。もう1つは左右対称であることです。名前の札は選手の下に付くので、数字の上では離れていても、画像にすると札どうしがぶつかることがあります。形の良し悪しを目で見る前に、ここで落とせるようにしています。

38種類すべてを最初から並べると、選ぶのに迷います。そこで画面には、よく使われる形として選んだ8つを先に出し、残りは「ほかの型」を押すと系統別に出るようにしました。いま使っている形がこの8つにないときは、列の先頭に足します。

どの形にも、短い呼び名(id)を付けています。共有リンクにはこの呼び名が入るので、公開したあとは変えません。呼び名が消えたり変わったりすると、自動のテストが失敗する作りです。表示名は直せても、呼び名を変えると過去に送ったリンクの形が変わってしまうためです。

「近さ」を点数にする

形を替えるときに決めるのは、「今の11の位置にいる選手を、新しい11の位置のどこへ移すか」です。そこで、すべての組み合わせに「動く負担」の点数を付けます。点数が小さいほど自然な移動です。

今の役割と、移る先の役割の関係点数例
同じ役割0左サイドバック → 左サイドバック
近い役割1左サイドバック → 左ウイングバック
同じ分類2左サイドバック → 真ん中のセンターバック
別の分類4右サイドバック → 右シャドー
ゴールキーパーと、それ以外の間100ゴールキーパー → センターバック

「近い役割」は、役割ごとにあらかじめ決めた一覧です。ここに位置の離れ具合を少しだけ足します。距離を100で割った値なので、10離れていても 0.1 点です。役割の関係で大筋を決め、同じくらいの候補があるときは近い位置を選ぶ、という重みづけになります。

ゴールキーパーの100点は、事実上の禁止です。他の10人がどう動いても、キーパーが前線へ出ていく組み合わせが選ばれることはありません。

ここで見ているのは、選手を今どこに置いているかだけです。その選手が登録上 DF か FW かは見ません。FW の選手をあえてサイドバックに置いた人なら、その選手は「サイドバックの人」として移ります。使う人が置いた場所を尊重するためです。

1人ずつ決めると、最後の1人が困る

いちばん素直な決め方は、点数の小さい組から順に決めていくことです。ところが、これには落とし穴があります。4-2-3-1 から 3-4-2-1 へ替える例で比べてみます。

小さい順に決めると、左右のセンターバックと2人のボランチ、ゴールキーパー、1トップは同じ役割のまま決まります。真ん中のセンターバックには、同じ DF の左サイドバックが入ります。左右のウイングバックには、近い役割として左右のサイドハーフが入ります。すると最後に、右サイドバックと右シャドーの位置が余ります。右サイドバックが、ピッチの後ろから前へ大移動することになるのです。

全体の合計で考えると、別の答えがあります。

合計の点数は、小さい順に決めたときの約10.6に対して約7.3です。1人が大きく動く代わりに、数人が少しずつずれることで、全体の負担が小さくなります。38種類の形どうしの替え方は1,406通りありますが、調べると、小さい順の決め方では812通りで合計が最小になりませんでした。

全部は試さず、最小の組を見つける

ゴールキーパーを除いた10人の並べ方は、3,628,800通りあります。全部を計算することもできなくはありませんが、むだの多いやり方です。そこで、「割り当て問題」を解く定番の方法である、ハンガリー法を使っています。1950年代に発表された計算方法で、人と仕事の組み合わせで合計の費用を最小にする、といった問題に使われてきました。

仕組みをおおまかに言うと、点数の表の行と列から同じ数を引いていき、0点の組だけで全員を割り当てられる形を探します。表全体を調整するので、全通りを試さなくても、合計が最小の組み合わせにたどり着けます。

この計算はお使いの端末の中だけで行います。11人なら計算量はわずかで、開発用のパソコンで測ると1回1ミリ秒を大きく下回りました。形のボタンを押してすぐに並び替わるのは、このためです。

実際の動きの例

よくある「守りを固める」変更、4-3-3 から 5-4-1 への動きです。

4-3-3 での役割5-4-1 での役割
ゴールキーパーゴールキーパー
左・右サイドバック左・右ウイングバック
左・右センターバック左・右センターバック(そのまま)
アンカー真ん中のセンターバック
左・右インサイドハーフ左・右の中盤(そのまま)
左・右ウイング左・右サイドハーフ
センターフォワードセンターフォワード(そのまま)

アンカーが最終ラインに下りて、ウイングが1列下がる形です。サッカーを見ている人の感覚に近い答えが、点数の計算だけで出てきます。1,406通りを平均すると、11人のうち約5.7人は同じ役割のままで、別の分類へ移るのは約1.5人でした。

自動のテストで確かめていること

38種類から38種類への替え方は、同じ形どうしも含めて1,444通りあります。手で全部を確かめるのは無理なので、次のことを自動のテストで毎回確かめています。

なお、ベンチの選手は形を替えても動きません。

この計算の弱点

点数を最小にすることと、見て納得できることは、いつも同じとは限りません。今わかっている弱点を書いておきます。

点数は表の数字を変えるだけで調整できるので、変な動きが見つかったら、数字か「近い役割」の一覧を見直すつもりです。

小さな問題に、定番の道具を使う

振り返ると、「形を替えても選手が近くへ移る」という小さな機能の中身は、役割の近さを点数にする部分と、割り当て問題を解く部分の2つに分かれました。後半は昔からある解き方をそのまま使えます。工夫のしどころは前半の、サッカーの感覚を数字に置きかえる部分でした。

なお、この計算は端末の中だけで行いますが、ページを表示するためのファイルの取得と、Cookie を使わないアクセス解析の通信は別にあります。サービスに広告を入れるときも、別の通信になります。くわしくは各サービスのプライバシーポリシーをご覧ください。画像を描く部分については「スタメンの画像を、スマホの中で描く」に、それぞれの使い方は「マイイレブン」「ペタスタ」の紹介ページにまとめています。