(´・ω・`)彼らが苦々しく思っているのは「常識で考えれば答えが出るはずのルール未記載事項の『確認』」
■スイスドローってなんだよ
①同じ勝ち点を持つプレイヤー同士をマッチングさせる形式
②同じ勝ち点であれば、どの相手と当たるかはランダム
③勝ち点Xを持つプレイヤーが奇数人である場合、勝ち点Xのプレイヤーのうち一人は勝ち点X-1のプレイヤーとマッチングする
④すでに当たったプレイヤーと再び当たることは原則としてない
※会場内のすべてのプレイヤーと既に当たっている場合にのみ、再度同じ相手とマッチングする
あたりがざっくり要件かな。
稀に「マッチングは勝ち点のみならずオポ参照でもやるべき!」つー人がいるが、この話がどこ由来なのかわからん。話自体はVGで見たが、VGもそんな実装にはなってないはず。
武士は確かブロ時代から社内で内製したツールを使ってマッチングしてるはずだから、実はそういう実装になってるのかもしれんけどそこまでは知らん。
ちなみに何も考えず勝ち点&オポ参照で実装しようとすると、めんどくさい。
(実際にDMでも一度要望があり、チャレンジした)
やってやれんことはないんだろうが、そんな仕様にしてる公式はないと思うしオポ参照にする意味もないので結局実装してない。
一応、オポも参照してマッチングするとオポ落ちで激怒する人が減る(オポが高い相手と当たるようになるので、階段引いて死亡みたいなパターンが減る)らしいんだが、なんせそんなルールの大会を見たことがないので…実際はどうなんだろう。
この辺突っ込んで調べてる人種がほとんどいないので未解決。
と言うかみんな、もうちょっと突っ込んだイベ技術の話書いてくれよー。普通にCSやる分には困らんしいいやってことでみんな書いてないんだろうけど、過去に例のないイベをやろうとするとその辺を整理しなおす必要があってさ、自分で一からやるのスゲェしんどい(しんどかった)んだよー。頼むよー。
この辺、俺は個人ブログに適当に下書きしてブラッシュアップ→数記事をまとめてどっかに置く、と言う流れが一番いいんじゃないかと最近思えてきた。最初っから清書するのは難易度高いわ。
■実装
①→
1.各プレイヤーに勝ち点情報を紐づけ、ラウンドごとに更新する
2.勝ち点順にプレイヤーをソートし、A番目とA+1番目のプレイヤーをマッチングさせる
②→
1.①-2においてソートを行う前に、プレイヤーの位置情報をランダムに並べ替える
(本当は単純な乱数を使って実装するのは良くないんだが、TCGでそこまでの精度が求められることはないしまあいいかってことで俺は乱数に任せている)
③→
これは①-2の実装をすると自然に満たされるので、問題なし。
④→
1.各プレイヤーに、過去の対戦相手の情報を紐づける
2.マッチングを行い、その後作成したマッチング表内で「過去のマッチングと同じマッチングが生成されていないか」を探索
3.過去のマッチングと同じマッチングが生成されなくなるまで④-2を繰り返す
で、いいんじゃない?
■④-3について
要するに力押し。
マジで言ってんの!?とよく言われるが、意外にもこの実装は有効。「40チーム、スイス14回戦イベの終盤」とかいう結構過酷な状況でも、④-2を数回繰り返すだけで有効なマッチング表が得られる。
結局、既に対戦した選手同士が同じ勝ち点になった上に再びマッチングする…つーこと自体が思われてるより起こらないわけよ。特にDMなんて全勝者が1人になるぐらいまでしかスイスドローやんないからね。
(全勝者が一人になっても大会が終わらないDM甲子園が一番過酷)
ロジック自体はそんなに大したものじゃないんだけど、俺が組んだときはいかんせん先行事例が全くなくて、手探りで組んでたから数日かかっちゃった。④-2の実装でいいや、という割り切りが出来るまで時間かかったのが良くなかったな。
しかも最初に組んだロジックは実はこれじゃなくて、途中で1回作り直してるんだよなー。メジャーVerが2になってるのはそのせい。
今もう1回更地から組みなおすかと言われると多分やらない。若気の至り感が強い。
■スイスドローってなんだよ
①同じ勝ち点を持つプレイヤー同士をマッチングさせる形式
②同じ勝ち点であれば、どの相手と当たるかはランダム
③勝ち点Xを持つプレイヤーが奇数人である場合、勝ち点Xのプレイヤーのうち一人は勝ち点X-1のプレイヤーとマッチングする
④すでに当たったプレイヤーと再び当たることは原則としてない
※会場内のすべてのプレイヤーと既に当たっている場合にのみ、再度同じ相手とマッチングする
あたりがざっくり要件かな。
稀に「マッチングは勝ち点のみならずオポ参照でもやるべき!」つー人がいるが、この話がどこ由来なのかわからん。話自体はVGで見たが、VGもそんな実装にはなってないはず。
武士は確かブロ時代から社内で内製したツールを使ってマッチングしてるはずだから、実はそういう実装になってるのかもしれんけどそこまでは知らん。
ちなみに何も考えず勝ち点&オポ参照で実装しようとすると、めんどくさい。
(実際にDMでも一度要望があり、チャレンジした)
やってやれんことはないんだろうが、そんな仕様にしてる公式はないと思うしオポ参照にする意味もないので結局実装してない。
一応、オポも参照してマッチングするとオポ落ちで激怒する人が減る(オポが高い相手と当たるようになるので、階段引いて死亡みたいなパターンが減る)らしいんだが、なんせそんなルールの大会を見たことがないので…実際はどうなんだろう。
この辺突っ込んで調べてる人種がほとんどいないので未解決。
と言うかみんな、もうちょっと突っ込んだイベ技術の話書いてくれよー。普通にCSやる分には困らんしいいやってことでみんな書いてないんだろうけど、過去に例のないイベをやろうとするとその辺を整理しなおす必要があってさ、自分で一からやるのスゲェしんどい(しんどかった)んだよー。頼むよー。
この辺、俺は個人ブログに適当に下書きしてブラッシュアップ→数記事をまとめてどっかに置く、と言う流れが一番いいんじゃないかと最近思えてきた。最初っから清書するのは難易度高いわ。
■実装
①→
1.各プレイヤーに勝ち点情報を紐づけ、ラウンドごとに更新する
2.勝ち点順にプレイヤーをソートし、A番目とA+1番目のプレイヤーをマッチングさせる
②→
1.①-2においてソートを行う前に、プレイヤーの位置情報をランダムに並べ替える
(本当は単純な乱数を使って実装するのは良くないんだが、TCGでそこまでの精度が求められることはないしまあいいかってことで俺は乱数に任せている)
③→
これは①-2の実装をすると自然に満たされるので、問題なし。
④→
1.各プレイヤーに、過去の対戦相手の情報を紐づける
2.マッチングを行い、その後作成したマッチング表内で「過去のマッチングと同じマッチングが生成されていないか」を探索
3.過去のマッチングと同じマッチングが生成されなくなるまで④-2を繰り返す
で、いいんじゃない?
■④-3について
要するに力押し。
マジで言ってんの!?とよく言われるが、意外にもこの実装は有効。「40チーム、スイス14回戦イベの終盤」とかいう結構過酷な状況でも、④-2を数回繰り返すだけで有効なマッチング表が得られる。
結局、既に対戦した選手同士が同じ勝ち点になった上に再びマッチングする…つーこと自体が思われてるより起こらないわけよ。特にDMなんて全勝者が1人になるぐらいまでしかスイスドローやんないからね。
(全勝者が一人になっても大会が終わらないDM甲子園が一番過酷)
ロジック自体はそんなに大したものじゃないんだけど、俺が組んだときはいかんせん先行事例が全くなくて、手探りで組んでたから数日かかっちゃった。④-2の実装でいいや、という割り切りが出来るまで時間かかったのが良くなかったな。
しかも最初に組んだロジックは実はこれじゃなくて、途中で1回作り直してるんだよなー。メジャーVerが2になってるのはそのせい。
今もう1回更地から組みなおすかと言われると多分やらない。若気の至り感が強い。
スポンサードリンク
コメント