ミコト番付(別名:Mikoto Rating System)開発について



ごあいさつ

初めまして、あるいはお久しぶりです。
主に神奈川・東京を中心に活動しているミコトです。
こうして文字の媒体で情報発信をするのは片手で数えるほどですが、しばしお時間をいただけたらと思います。

さて、TLの諸兄の中にはYouTubeラジオ「サクラオールナイト」を聞いてくださっていた方もいるかもしれません。
2020年3月、コロナ禍が深刻になり巫鏡杯の開催が延期となりました。その際にこのふるよにが盛り下がってしまうことのないようにと始めたラジオで、 約一年半ほどの期間やや不定期気味に放送しておりました。
しかし、個人的な仕事の環境の変化や対戦環境の停滞、巫鏡杯本線の度重なる延期、根本的なネタ切れなどの理由により継続が難しくなって更新が止まってしまいました。 この辺りはまぁ「配信者ってすごいな」という話なのですが、また改めて挑戦してみたいと思います。


事の発端

で、そんなYouTubeの話はいいとして。やはりふるよにを盛り上げていきたい! という当初の気持ちは未だ残っているわけです。その中で一つ引っかかっていたのが電源版の存在でした。
惨否両論の電源版ですが、大きな問題点の一つに「事あるごとにフリーズする」現象があります。どちらかが降参するまで盤面が硬直する(あるいは降参すら選択できない)ような状況になってしまって ただ無為に待たされる時間はあまりに苦痛です。私は即降参をして次の決闘に移るようにしていますが、それをしていては一向に段位が上がらないのでそれはそれでモチベーションにマイナスの影響は出てしまいます。
そう、やはり良くも悪くも段位やレーティング、ランキングといった順位付けは人間にモチベーションを与えてくれるのです。人は争うことから逃れられない。 事実、最近ではますたーさんの主催した期間を区切ってオンライン大会を複数回行い、総合成績を競う縁杯が盛り上がっていましたし。電源版以前ではのんのんびよりさんがExcelフォーマットで参加者の勝敗とレーティング管理をしてくださってたこともありました。

人間は人間と争うことが大好きなのです。

さて、ちらっと上で「仕事の環境が変化した」と書きましたが。その影響で私はWEBサービスの開発を勉強し始めました。
そこで思いつくのです。ふるよにのレーティング戦をサポートするツールを作れないだろうか? と。
レート戦があれば大会以外にも対戦のモチベーションが上がるかもしれない、ボードシミュレーターによる対戦がもっと活発になるかもしれない。という事で開発が始まります。


開発がはじまる

ではまずレーティングシステムとは何ぞや? ということから始まります。私はレーティングシステムで戦ったことはありますがレーティングシステムと戦ったことはなかったのです。調べてすぐ、単純なものからややこしいものまでいろいろあるが、 だいたい単純なものの方が問題が多い。というどこでも聞くような話にたどり着きます。
問題はいくつかありますが、その中でも大きなのがレートのインフレ/デフレです。経済の話が始まると思ったあなた、ブラウザバックをしないでください。ご安心ください、経済の話です。
話は単純です。例えばレートインフレであれば、10人のプレイヤーがレート2000からゲームを始めたとしましょう。この時、世界のレート合計は20000です。では何試合か経過後、レート1500のプレイヤーが5人、2500のプレイヤーが5人になったとしましょう。 この時にレート1500のプレイヤー5人が「勝てないから引退するわ」といって引退したとしましょう。一方で新たに5人のプレイヤーが「面白そうやんけ」とゲームに参加しました。すると、今現在ゲームに参加しているのはレート2500のプレイヤーが5人とレート2000のプレイヤーが5人になります。 そうなると世界のレート合計は実質22500になっているのです。これが繰り返されると残った人間のレートがゴリゴリ上がっていき、新規で入った時に既存プレイヤーとのレート差がめちゃくちゃ大きくて萎える。ということになります。
レートデフレの場合は逆で、高レートの人間がゲームを離れることによって世界のレート合計が減り、強力なプレイヤーのレートが高くないゆえに新規で入ったプレイヤーはレートをゴリゴリ吸われて萎える。ということになります。
簡潔に言えば、平均レートと開始レートがズレてしまう危険性があるのです。
ちなみに稼働者平均レートを開始レートにすると、「新規の方が俺よりレート高いんだが」となって萎えます。
(萎える分にはいいんですけどレートレンダリングをされると上記のインフレに直結します。)

そもそもレートとはなんでしょう? レートとは力です。
さすがに簡潔すぎるので仕組みを説明しますと、「レートを比較したとき、その差によって勝率が決まる」仕組みのことです。
レート差が0の時、勝率はもちろん50%ですね? そこから100差がつけば勝率が1割落ちる、という風に設定した場合、200差がつけば2割、300差がつけば3割落ちるわけです。これを自分の勝率と対戦相手のレートから逆算して決めていくのがレーティングの仕組みです。
レート差と勝率の割合や一度の試合の変動量などは初期の設定によって変化しますが、全体の構造は変わりません。
そんなものどうやって計算するのだ。と言いたくもなりますが、幸いにもインターネットの世界にはそれを書いてくれている人がちらほらいます。私がお世話になったのはこちらの「イロレーティング完全に理解した」 というページでした。


機能追加を画策する

要はふるよにを盛り上げたい、レート戦でオンライン対戦増えろ! ってことなのですが、しかしレート記録だけではさすがにつまらないぞ? と思い始めます。
これがいろいろ作業が増える要因でありなかなか公開に至らない原因にもなるのですが、ともあれ思ってしまったのだから考えます。
レートを記録してランキングを作るだけなら非常に構造は簡単です。しかし、そんなものを作るだけでは物足りません、勉強にならない。などと適当な言い訳を並べて新たな機能を考えます。そして思い至ったのは対戦に使用したメガミの記録でした。
実際、このアイデアは画期的な気がしました。TLを見れば、月ごとに使用メガミや対戦相手のメガミ、勝敗を記録しているミコトは少なくありません。一方で私は結構忘れがちで、あー残しときゃよかったなぁ、などと思ったりするのです。
しかし! レートを記録するときに一緒に登録すれば、忘れることはありません。しかも上位プレイヤーがどんなメガミを使っているのか、どんな組み合わせが人気で、勝率が高いかまで記録の方法次第で算出できるかもしれないではありませんか。 ただ一方で問題もあります。大規模大会が近づいてくると、自分の選出を隠したいプレイヤーが出てくるのです。
研究量の差が勝敗に繋がるこのゲームにおいて、自分の研究しているメガミの組み合わせがバレるのは大きなリスクです。そのため、選出を隠して結果のみを記録するモードの用意は必須です。 また、選出について考えるとき、レギュレーションを無視することはできません。完全戦なのか、起源戦なのか。これもできることなら分岐して記録したいはずです。
このあたりの調整にむやみに手を出してしまって少し時間がかかってしまいました。そして、機能が増えると増えるものがあります。そう、ボタンです。新たにデザインしなくてはならないボタンが増えてしまいました。
こうして要件定義のないシステム開発は際限なく膨らんでいくのでありました。いや、そうなっては一生かかっても完成しないので、とりあえず公開をするのを目的に動くことにしよう。と考えたわけです。
ただ、考えたのはもうシステム側は作り終えた後なので、とりあえずこのあたりまではちゃんと実装して公開する予定です。今のところ、年内の公開を目標に開発を進めています。


おわりに

いや、本当のことを言うと、このアドカレ公開までにはミコト番付を公開したかったのです。ていうかこの記事の公開も予定より送れてしまっております。申し訳ない。
何ですけど意外と各種デザインを決めて作って並べて……ってなると時間がかかりましてね……。そういうわけで今しばらくお時間頂きます。しかし、開発は着実に進んでおります。皆様のふるよにレートライフをサポートできるよう頑張ります。
作っていて改めてザッカーバーグ氏の「とりあえず作って発表しろ」の大事さを実感しました。デッキ構築と一緒です、やりたいことを追いかけすぎると何がしたいかわからなくなってしまいます。
皆様も是非、思いついたらまず世に出すというのを心のどこかに置いておいてください。サンプルデッキ記事が増えると検討がしやすいんです。


さいごに

ここまでふるよに本編に関係ない記事を読んでいただいてありがとうございます。ささやかなお礼として、最近ぶいぶい言わせている忍剣に対抗できそうな組み合わせについてサンプルデッキをお伝えします。
そのデッキとは、扇鎚です。
梳流しでライフを取りつつ、詩舞、雅打ち、久遠の花、メガロベルでライフを守って禁忌敗北を待つ構築です。

【 通常札 】
梳流し
雅打ち
跳ね兎
詩舞
風舞台
超反動
砂風塵
【 切札 】
久遠の花
常世の月
大破鐘メガロベル


さてキーポイントは久遠の花です。とにかく、暁よりも先に久遠を使わなくてはいけません。というか、暁よりも先にメガロベルを使わなくてはいけません。(一敗)
なので、絶対に先に常世の月を使ったりしてはいけません。強化紅刃でも阡でもいいので、痛めの攻撃をしっかり止めましょう。
常世の月は大抵オーラが薄くなったタイミングをしっかり凌ぐために使います。可能ならそのタイミングでメガロまで吐いて、待ちの姿勢を固めます。
風舞台で前に行ってしゃがみつつ、砂風塵でハンドを落とせばかなりの生存力になります。
また、オーラを削ることはほぼないので、後半は唐突に後ろでレンジロック気味に動くのも効果的でしょう。
最大の敵はタイムアップです。(一敗)なるべく回数を試して、動きに慣れていきましょう。