アンドリューの徒然日記

SDIN-デュエルオブレジェンドの記事をメインに書いています

DOLにレート戦を実装したいpart①~構想編~

はじめに

皆さんこんにちは、アンドリューです。

 

こちらの記事は「DOLにレート戦を実装したい

のpart1の記事となります。

全部書こうとしたら、1万字くらいいきそうだったので、

ある程度の区切りでパート分けしたいと思います。

ご了承ください。

 

こちらのパートでは

「DOLレート戦」をなぜ作りたいのか

構想についてお話をさせていただきます。

 

「DOLレート戦」を作成するにあたって

(DOL配信風景)
DOLで配信をしたり、動画を作るときに

いつも思っていることがありました。

 

DOL界隈での自分の立ち位置が微妙すぎる」と。

 

なぜ立場を気にするかというと、

 

ここ数年はDOLを知らない人向けにも

ターゲットを向けていましたので、

自分がDOL界隈でどういう立ち位置にいるか

わかりやすく伝えた方が話が早くなるからです。

 

しかし、実績を作る場があまりなかったので、

結局「DOL歴10年~」という

当たり障りのない形になっていました。

 

近頃では、jokerさんやノートさんにより

大会がある程度の頻度で開催されるようになりましたので、

実績を作ることができる場」というのは

用意されるようにはなってきましたが、

(大会の主目的はそうではないかもしれませんが)

 

他の対戦ゲームでは勝率ランクレートによって

強さの指標を計ることができますが、

DOLにはそういうものはありません。

補足

補足ですが、DOLでも勝率は記録されています。

しかし、他者のデータを移行する際に勝率も共に移行されることや

訓練デッキを使用することで勝率に影響されない試合を意図的に行うことができるので、

明確な強さの指標をしめすものとしては使用することができませんでした。

 

なので、そういった明確な強さを示すシステムが欲しいなと

常々思っていました。

 

そこで、チェスやサッカー、ポケモンやぷよぷよで

使用されてきたイロレーティングのシステムを

DOL用に構築してみよう。

 

というのが今回の話の発端となります。

 

イロレーティングの仕組み

イロレーティングとは、簡単に言えば

強さを数値で表したものになります。

レートの数値が高ければ高い程強いプレイヤーですし、

低ければその反対という風になります。

 

どのようにして数値として表すかといえば、

 

はじめに各プレイヤーに数字 = n を振り分けます。

ここでは 「n = 1000」としましょう。

 

例えばこの時にプレイヤーAとプレイヤーBが対戦を始めたら

A(レート1000) vs B(レート1000)となり、

この時のそれぞれの勝率は50%になるはずです。

 

なので、プレイヤーAかBのどちらが勝っても

「変動する数値」は同じになります。

ここではプレイヤーAが勝ったとします。

A(レート1000 + 16 ) vs B(レート1000 - 16

 

すると、レートで勝ったプレイヤーは数値がプラスされ、

負けたプレイヤーは数値がマイナスされます。

 

これを繰り返していけば、

強さを表せるようになると一瞬思いますが、

「変動する数値」が固定(ずっと±16)ですと

レートが高くなるほど有利なだけのシステムになります。

 

 

なので、レートの差によって「勝率」を割り出し、

それをもとに「変動する数値」を算出する必要があります。

 

例えば、プレイヤーAのレートが1200

プレイヤーBのレートが1000だった時、

 

Aの方がレートが高いですので、

AはBに対しての勝率は高く、逆にBの勝率は低くなるはずです。

 

なので、Aが勝った時の「変動レート」を低くし、

Bが勝った時の「変動レート」を高くすることによって、

勝率をレートに反映させることができます

 

Aが勝った場合

A(レート1200 + 8 ) vs B(レート1000 - 8

Bが勝った場合

A(レート1200 - 24 ) vs B(レート1000 + 24

 

こうすれば、レートが高くなるほど上げるのが難しくなり、

レートが低くなるほど上げるのが易くなります。

 

これがイロレーティングの主な仕組みとなります。

 

これにより、ある程度の対戦数を繰り返し、

特定のレート帯に落ち着くことで、

レートを「強さの指標」として扱うことができる

ようになります。

補足

ちなみに、勝率を反映した変動レートを算出するための計算式は

K/(10^((RA-RB)/400)+1」(K= 定数、RA=Aのレート、RB=Bのレート)となり、

K= 32、RA=1200、RB=1000 を代入すると、Aが勝った場合の変動数「8」が、

RAとRBを入れ替えた「K/(10^((RB-RA)/400)+1」の式で計算すると

Bが勝った場合の変動数「24」が求められます。これに関しては次回の記事で主に扱います。

 

 

実装にむけての問題点

チェスやサッカーなどでも

使用されているレーティングシステムですが、

DOLレート戦を実装するに向けて

いくつか問題点があります。

 

 

1つは「プログラムをある程度組まなければいけないこと

もう1つは「DOLが2vs2であること」です。

 

 

プログラムをある程度組まなければいけないこと

(Excelで色々試している風景)

システムの構築自体は、実はExcelの関数だけでできます。

(というかできました)

 

ただ、自分が使うだけでなく

実装のためには皆に使ってもらう必要があるため

わかりやすく、ボタン1つで出来るように

マクロのコードを書かなければなりません。

 

他にもシステムの管理や維持をするために

それらの経験や知識も必要になります。

 

僕はそのような経験がないので、

1から学ぶ必要がありました。

 

 

DOLが2vs2であること

(2vs2で遊ぶDOLプレイヤーたち)

実はイロレーティングは1vs1のためのシステムなので、

3人以上の対戦ゲームには使えないという問題点がありました。

 

2vs2の対戦がメインで行われているDOLでは

当然そのままイロレーティングを採用することはできません。

 

システム面で工夫する必要があります。

 

 

次回予告

ということでここまで「DOLレート戦」をなぜ作りたいのか

について話していきました。

 

次回は今回あげた問題点も解決しつつ、

DOLレート戦の心臓である

システム構築について話していきます。

 

ここまでお付き合いくださりありがとうございました。

 

 

という感じで今回はこの辺で!