アンドリューの徒然日記

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

DOLにレート戦を実装したいpart⑤~運用と問題編~

はじめに

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

のpart5の記事で最終回となります。

 

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

part2では、どのような仕組みになっているのか

part3では、ボタンで解決するためのマクロの実装

part4では、「DOLレート戦」の使い方

についてお話しました。

 

各パートごとにある程度に話を完結させているので、

見なくても問題はありません。

 

こちらのパートでは、

「DOLレート戦」の運用と問題について

お話したいと思います。

 

 

DOLレート戦の運用

システム構築にマクロの実装も終えたので、

次は運用の段階に入ります。

当初の目的通り、皆に使ってもらい

レートが強さの指標となるのかを確かめていきます。

 

しかし、この段階で問題点が3つ浮き出てきました。

・GASの承認の壁

・性善説に頼った運用方法

・DOL界隈の受け入れ

 

それぞれ見ていきます。

 

GASの承認の壁

ボタンを押すと、登録しているマクロが実行されます。

 

その際、初めてボタンを押すと

次のような表示が出ます。

これについてはpart④でも話していますが、

プラグロムがあなたのGoogle関連の

あなたの情報の一部にアクセスする

というセキュリティの警告になります。

 

大抵の場合は問題にならないのですが、

素人が開発したシステムになりますので、

警戒するのは当然のことでしょう。

 

DOLレート戦を使用するハードルを上げている

ことは間違いないでしょう

 

 

性善説に頼った運用方法

「DOLレート戦」はGoogleスプレッドシート

利用して作成および運用しています。

www.google.com

Googleスプレッドシートは、オンライン上でも

共同で編集できる計算、記録ソフトという認識ですが、

これが運用するにあたって仇となります。

 

共同編集できるということは、

僕が構築したシステムも第三者によって編集ができる

ということになります。

つまり、荒らし行為に対して耐性がない

ということです。

 

現状のDOL界隈はそういった問題行動を起こす人は

いないと認識していますので、

この現状で運用することは問題ないと思っていますが、

 

できるだけ手放しで運用したい以上、

荒らし行為に耐性のないまま公開することは

性善説に頼った運用となり、

別の言葉で言えば無責任になってしまいます。

 

これらの対策として

Googleスプレッドシートには、

閲覧のみ許可する方法

セルまたはページをロックする方法

2種類の第三者に編集させない方法があります。

 

が、共にマクロが使用できなくなるため

解決策にはなりえませんでした。

 

 

DOL界隈の受け入れ

「DOLレート戦」はレートを強さの指標として

表すシステムになります。

これはつまり、

強さが可視化されるということですが、

 

現状のDOL界隈ではこれが

あまり望ましいものではないという考えが

少なくないと感じています。

 

これについて話せば長くなりますが、

一言で表すなら、

過疎化しているゲームで強さを意識して

排他性を帯びたら人口増がさらに困難になるから

ということでしょうか。

 

具体的にそういったことを

言われたわけではないですが、

 

試作段階で直接的に使用を拒否されたり、

コミュニティに設置しても利用されていないことが

現状のDOL界隈で求められていないことを

表していると受け取りました。

 

元々の作成理由が個人的なものであることと、

人口増のために界隈全体で強さ<楽しさを優先すること

言い出したのは自分なので、

 

必要になるまでは公開は控えよう

という考えに至ったわけです。

 

 

まとめ

界隈の受け入れについては

僕はどうすることもできませんし、

仕方のないこととして

受け取っているので良いですが、

 

GAS承認荒らし対策については

考える余地があるのかなと思っています。

 

例えばログインIDを作成し、

Webサービスのような形で公開し管理を

することができればこれらの問題点については

解決しそうな気がしますが、

やるにはまた勉強をしないといけないので

かなり遠い話かなと思っています。

 

 

ということで、長きにわたり

お付き合いありがとうございました。

 

DOLレート戦については

一旦ここで話を区切りたいと思います。

 

 

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

DOLにレート戦を実装したいpart④~使い方編~

はじめに

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

のpart4の記事となります。

 

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

part2では、どのような仕組みになっているのか

part3では、ボタンで解決するためのマクロの実装

についてお話しました。

 

各パートごとにある程度に話を完結させているので、

見なくても問題はありません。

 

こちらのパートでは、

「DOLレート戦」の使い方について

お話したいと思います。

 

 

「DOLレート戦」の使い方

「DOLレート戦」の使い方は次のようになります。

 

・プレイヤー名の登録

・対戦表の使い方

・説明書

・その他(最新情報、フリーシート)

 

 

プレイヤー名の登録

「DOLレート戦」を使用するためにはまず

プレイヤー名を登録する必要があります。

 

まずシートの「プレイヤー表」を開きます。

次にプレイヤー登録のボタンの下にある

注意事項を読んだうえでボタンを押します。

ボタンを押すとマクロが起動するのですが、

初めて起動すると次のような表示がでます。

これはマクロで使用しているGASから

Googleのアプリケーションを操作しようとするときに

承認が必要になるからです。

 

操作については、

登録ボタンの右側で説明しています。

これらの表示は

プラグロムがあなたのGoogle関連の

あなたの情報の一部にアクセスする

というセキュリティの警告になります。

 

普通のやりとりではそこまで重要な問題に

ならないとされています。

best-cloud.jp

心配ある方は調べてから承認してください。

 

対戦表の使い方

まず席登録で対戦するプレイヤー名を

座っている席に対応した数字にそれぞれ登録します。

対戦を開始し、

縦、横、斜めの順番で対戦をおこない、

各試合結果を勝敗記録のボタンで入力します。

試合結果入力後、

試合結果と入力されている内容が

あっているかを確認したのち、

レート適応のボタンを押し、

対戦後のレートをプレイヤー表に適応します。

2周目の試合を行う場合は

対戦開始からレート適応までの操作を

繰り返し行います。

 

試合を終了する場合は、

席登録をクリアして終了します。

 

説明書

左側ではDOLレート戦の使い方が説明しています。

今まで説明した一連の操作や、

DOLレート戦の仕様について説明しています。

右側では対戦レギュレーションについて

まとめています。

 

と言っても、現状「DOLレート戦」では、

対戦者の同意があれば、

どのようなレギュレーションで

行っても良しとしています。

 

なので、大会などで

どのようなレギュレーションで

行えばいいか困ったときに参考にできるよう

設置しています。

 

将来的にはDOLのスタンダードレギュレーションを

決定できればと考えています。

 

その他(最新情報、フリーシート)

「DOLレート戦」にあまり関係ありませんが、

DOL関連コンテンツの最新情報

自由に記述してもよいフリーシートを設置しています。

 

最新情報では

各コンテンツの最新情報を自動で表示しています。

 

フリーシートでは

特に使用用途がきまっていないので、

とりあえずしりとりしています。

 

 

次回予告

ということで「DOLレート戦」の使い方

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

 

次回は最終回、

DOLレート戦の運用と問題点について

話していきます。

 

特になぜDOLレート戦が公開されていないのか

について言及する予定です。

 

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

 

 

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

DOLにレート戦を実装したいpart③~マクロの実装編~

はじめに

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

のpart3の記事となります。

 

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

part2では、どのような仕組みになっているのか

についてお話しました。

 

各パートごとにある程度に話を完結させているので、

見なくても問題はありません。

 

こちらのパートでは、ボタン1つで解決するための

マクロの実装についてお話したいと思います。

 

こちらのお話も前回パートのシステム構築と同様に

知らなくても使う分には特に問題はないため、

それでも良いという方はこのパートを飛ばしてください。

 

 

マクロとは

マクロというのは一連の動作を

自動化するためのツールとなります。

 

Excel内でのデータ処理や書類作成、メール送信などを

自動化できるという優れものです。

 

優れものですが、使うためには

コードをかかなければなりません。

 

こちらに僕が書いた単純なコードがあります。

Sub」は始まり、「End Sub」は終わりを表し、

Range」はセル位置の取得を、

ClearContents」はセルのクリアを表します。

 

つまり、上のコードは

C68のセルに”〇”を書き込み、

 C70のセルをクリア。

 

 L70のセルに”〇”を書き込み、

 L69のセルをクリア。

 L71のセルに”1”を書き込む。

 

 F63とF64のセルに”〇”を書き込み、

 F65とF66のセルをクリアする

 

という意味になります。

 

プログラム初挑戦の僕にとって

コードを書くのは難しいですが、

 

他のセルに干渉できない関数と違い、

セルに文字を入れたり消したりできますし、

それをボタン1つでできるようになるのは

かなり魅力的です。

 

 

作成したマクロ

作成したマクロ(ボタン)は次の通りです。

 

・勝敗記録(1試合~3試合)

・席登録(Ⅰ~Ⅳ)

・プレイヤー登録

・レート適応

・各種クリア

 

各種クリア」はボタン操作をミスしたとき用に

用意したものなので、それ以外の話をしていきます。

 

 

勝敗記録

それぞれの試合の勝利判定を記録するボタンです。

 

試合の結果に応じて勝ったチームのボタンを

押してもらうことで、

各試合の結果をシートに反映させることができます。

具体的には、

記録表シートの各試合ごとの「勝敗記号」に

Aが勝ったら」を、Bが勝ったら」を

記述します。

 

これにより、IF関数Aが勝った場合

またはBが勝った場合にシートに勝利判定の反映が

できるようになっています。

 

 

席登録

席に座っているプレイヤーをシートに登録し、

各プレイヤーのレートを呼び出すボタンです。

ボタンを押すと

まず入力ボックスが表示されます。

 

プレイヤー名を入力すると

プレイヤー表に記載されている

「プレイヤー名」をマクロで自動検索します。

プレイヤー名が見つかれば、

プレイヤー名が対戦表に記入され、

共にレートが呼び出されます

プレイヤー名が見つからない場合は

見つからない旨のダイアログが表示されます。

 

つまり、プレイヤー表に登録しなければ

席登録はできないようになっている

ということです。

 

 

プレイヤー登録

プレイヤー表にプレイヤー名を登録するための

ボタンになります。

ボタンを押すと

まず入力ボックスが表示されます。

プレイヤー名を入力すると、

プレイヤー名が「プレイヤー表」に記入され、

レート1000、階級の振り分けが行われます

DOLで使用している名前を登録してほしいので、

プレイヤー名が3文字以上、7文字以下の場合

ダイアログを表示して、登録を無効にしています。

また、登録するプレイヤー名と一致する

登録済みのプレイヤー名をマクロで自動検索し、

一致する名前があったらダイアログを表示して、

登録を無効にしています。

 

 

レート適応

対戦後に変化したレートを

プレイヤー表のレートに反映させるボタンです。

 

今回のマクロの実装で

最もやることが多い部分になります。

レート適応では、試合数と対戦プレイヤーの

プレイヤー名対戦後レート連勝数勝利数

取得します。

 

取得したプレイヤー名を基に「プレイヤー表」で

検索し、そのプレイヤー名のを取得。

その列に取得した対戦後レートや連勝数を

項目ごとに反映させています。

 

これを4名のプレイヤー全てに行っています。

補足

試合数と勝利数も記録され、

それを基に勝率の計算を裏でしています。

ただ、勝率はプライバシーにかかわる情報だと考えているので、

公開情報として扱っていません。

 

裏話

そちらの方面にお詳しいふぇんりるさんに相談したところ

なんとコードを書いてくれました。

本当にありがとうございます。

 

しかし、ここにきて驚くべき事実ですが、

実は「DOLレート戦」の実装はExcelではなく

皆に使ってもらうためにGoogleスプレッドシート

行いました。

 

相談段階ではExcelで行っていたため、

ExcelのマクロコードのVBA言語で

書いていただきましたが、

 

(Excelで使用されるVBAとGoogleスプレッドシート使用されるGAS)

Googleスプレッドシートのマクロは

VBAではなくGoogle Apps ScriptGAS)で

記述されているため、

頂いたコードをそのまま使うことは

できませんでした。

 

なので、頂いたコードを翻訳し、

それをGASで記述するということで

なんとか実装をすることができたいう裏話でした。

 

ちなみに、実装の後にこの話をふぇんりるさんにしたところ

「言ってくれればやったのに~」と言ってくれました。

やさしい;;

自分的にはふぇんりるさんにお手を煩わせたくなかったので、

脳筋で翻訳しましたが、結果的に勉強になったのでOKです。

 

 

次回予告

ということで「DOLレート戦」のマクロの実装

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

 

次回はついに、DOLレート戦の使い方について

話していきます。

 

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

 

 

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

DOLにレート戦を実装したいpart②~システム構築編~

はじめに

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

のpart2の記事となります。

 

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

の”構想”について話していますが、

各パートごとにある程度に話を完結させているので、

見なくても問題はありません。

 

こちらのパートでは、DOLレート戦の心臓である

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

分かりやすく書いてみたつもりではありますが、

情報量が非常に多く、専門性も伴う内容となってしまったため

・DOLレートのシステムに興味がある方

・DOLレートのシステムに疑問がある方

・DOLレートのシステムを参考にしたい方

 

のみ、このパートの閲覧を推奨させていただきたいと思います。

 

仕組みは分からなくても、使う分には特に問題はないため、

それでも良いという方はこのパートを飛ばしてください。

 

問題点の解決

前回、DOLにレート戦のシステムを導入する際には

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

DOLが2vs2であること」の2つの問題点がある

ということについてお話しました。

 

1つ目は頑張るしかないので、考える必要は特にないですが、

2つ目はシステム面で解決する必要があります。

 

どのように解決したのか。

結論から言えば、「同じチームの人のレートを1つ」にしました。

 

例えば、席にと座っているとして、

で対戦を始めたとき、ⅠとⅡⅢとⅣがペアになります。

そうした時にペアになった者同士のレートを足して

1つにすることによって、疑似的に2vs2を1vs1にした

ということです。

 

これによって、イロレーティングのシステムを

DOL対戦でも使用できるようになりました。

 

 

システムの構築

実際のシステムは以下のように構築しました。

・合計レートの算出

・変動レートの算出

・補正ボーナスの算出

・連勝記録の管理

・レート反映

 

それぞれ見ていきます。

 

 

合計レートの算出

こちらは変動レートの基となる

チームの「合計レート」を算出する項目です。

 

対戦者レートの列で、対戦者の対戦前のレートを表示。

 

1試合目の列での対戦(Ⅰ+Ⅱ、Ⅲ+Ⅳ)

2試合目の列での対戦(Ⅰ+Ⅳ、Ⅱ+Ⅲ)

3試合目の列で斜めの対戦(Ⅰ+Ⅲ、Ⅱ+Ⅳ)

で各試合ごとのチームのレートの合計を算出します。

 

 

変動レートの算出

こちらでは、「合計レート」と勝敗を基に

変動レート」を決定します。

 

変動レートの計算式は次のようになっています。

=(64/(10^((RA-RB)/800)+1))/2

 

RA = Aチームの「合計レート」RB Bチームの「合計レート」

となります。

 

AチームBチームレート差を出し、

なんやかんやして数値を割り出すものです。

 

Aチームが勝った場合は

=(64/(10^((RA-RB)/800)+1))/2」を参照

Bチームが勝った場合は

=(64/(10^((RB-RA)/800)+1))/2」を参照します。

 

なので、

勝敗記号でAが勝ったら「」、Bが勝ったら「」と記録。

それを基に「採用レート」のIF関数で参照する計算式を決定し、

変動レート」を算出します。

補足

補足ですが、元のイロレーティングの計算式は

「K/(10^((RA-RB)/400)+1」(K= 定数)となっており、

実装で採用している「=(64/(10^((RA-RB)/800)+1))/2」と

少し違いますが、

これは合計レートを基に算出しているために

RAとRBの差もプレイヤーレートに比べて倍近い数値が出るため、

他の数字を倍にすることで調整をしているからです。

 

 

補正ボーナスの算出

補正ボーナス」では、勝ったプレイヤーに対して

「変動レート」に加えて与えるボーナスレートを算出します。

 

DOLレート戦では全体のレートが上がりやすくするため

かつ、実力をレートに反映しやすくするため

2つの補正ボーナスを採用しています。

 

1つは「卓内平均ボーナス

もう1つは「連勝ボーナス」です。

 

まず、「卓内平均ボーナス」についてですが、

まず対戦者全員の「平均(Average)レート」を算出します。

その「平均レート」と対戦者レートをそれぞれ比較し、

「補正ボーナス」を算出します。

 

計算式は以下を採用しています。

=(32/(10^(((対戦者レート*3)-(平均レート*3))/800)+1))/((対戦者レート+2000)/1000)

 

=(32/(10^(((対戦者レート*3)-(平均レート*3))/800)+1))の部分で

仮として「平均レート」と対戦者を対戦させ、

対戦者が勝った場合の仮の「変動レート」を算出。

 

/((対戦者レート+2000)/1000)」の部分で

対戦者レートの数値を使用しつつ、

仮の「変動レート」を割っています。

 

つまり、ここではレートが高ければ高いほど、

卓内平均ボーナス」が低くなるように設定しています。

 

次に「連勝ボーナス」についてですが、

次で説明する「連勝記録」を基に算出される「現連勝数」を基に

卓内平均ボーナス」を追加で付与するというものです。

 

詳しく説明しますと、

計算式は以下を採用しています。

=IF( 現連勝数 > 0,( 現連勝数 -1 ) * 卓内平均ボーナス ,0)

 

連勝数が0なら「連勝ボーナス」は0。

連勝数が1以上なら「連勝ボーナス」は

連勝数から1引いた数*「卓内平均ボーナス」となる。

 

ということです。

 

つまり、2連勝目から「卓内平均ボーナス」を基とした

連勝ボーナス」が試合ごとに発生するということです。

 

この2つの「補正ボーナス」としてレートを調整しています。

補足

ちなみに「勝敗記録表」と「試合数」もこの項目に記載していますが、

これはプレイヤー表への記録用なので、

補正ボーナスとは現状関係ありません。

(これに関わるボーナスを実装予定だったのでこの位置にあります)

 

 

連勝数の管理

各プレイヤーの現連勝数をリアルタイムで算出する項目です。

 

勝ったら連勝数に+1

負けたら連勝数を0にリセット

とできれば非常に楽ですが、

 

スプレッドシートでは他のセルに干渉することができないので

かなり複雑な構築になってしまいました。

 

計算式は

=IF(最後の試合=負け,0を表示,IF(最後の試合=まだ,もとの連勝数+勝っている数(まるのかず),IF(1試合目が負け,勝っている数(まるのかず),IF(2試合目が負け,1,それ以外は0))))

となっています。

 

下の段で再構築を試みようとしましたが、

1試合前の連勝数は記録できても、

リアルタイムでの現連勝数を記録できなかったので、

結局残しています。

補足

ちなみに下の段も、プレイヤー表への記録用として残しています。

 

レート反映

これまで算出した数値を基に

対戦者レートへ反映させます。

 

計算式は次のようになっています。

=IF(勝った場合,元レート+変動レート+卓内平均値ボーナス+連勝ボーナス,IF(AND(負けた場合,対戦者レートが変動レートより低い場合),0,IF(AND(負けた場合,対戦者レートが変動レートより高い場合),対戦者レート-変動レート,"")))

 

勝った場合はレートが加算されるので

元々のレートに、「変動レート」の数値と

「補正ボーナス」の2つの数値を足す処理をします。

 

負けた場合は2パターン

1つ目が元々のレートが「変動レート」より低かった場合

これは”0”になるようにしています。

 

2つ目は元々のレートが変動レートより高かった場合

こちらは通常通り元々のレートから

「変動レート」の数値分引く処理をしています。

補足

なぜ、元々のレートが「変動レート」より低かった場合に

”0”になるようにしているかというと

レートにマイナスの数値を出させないようにしているからです。

 

次回予告

ということで「DOLレート戦」のシステム構築

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

 

次回は実装に向けて、ボタン1つで操作できるよう

マクロの実装について話していきます。

 

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

 

 

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

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レート戦の心臓である

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

 

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

 

 

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

アニメーションに初めて挑戦した話

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

 

配信で使用するOPムービー(待機モーション)を作成しました。

(開始~2分まで)

www.youtube.com

アニメーションに初めて挑戦しましたが、

そこそこの出来になったと思います。

 

ということで今回は、

自分用に記録するためということも含めて、

OPムービーの制作過程をまとめていこうと思います。

 

 

コンセプトの決定

さて、0から何かを創る作業は

非常に骨が折れますので、

まずはコンセプトを決めます。

 

結論から言いますが、

コンセプトは「ポケモンのトレーナー戦」です。

決めた理由は

ポケモンに思い入れがあること。

モーションが短いので描く枚数が少ない。

そして良いフリーBGMを見つけたことがあげられます。

 

見つけた良いフリーBGMは

表裏 hyouriさんの「戦闘曲」です。

www.youtube.com

曲の構成がポケモンの戦闘BGMと似ており、

非常に僕好みです。

 

作品制作している間も、制作物の確認も兼ねて

このBGMを何十回も聞きましたが

聞くたびにモチベーションがあがったので、

アニメーションが完成できたのも

この曲のおかげかもしれません。

 

さて、コンセプトと使用曲が決まったところで

早速制作していきましょう。

 

 

制作過程

制作過程は主に5つに分けれます。

・トレーナーモーションの作成

・登場アニメーション

・背景の作成

・VSモーションの作成

・その他調整

 

トレーナーモーションの作成

まずはトレーナーモーションです。

なにも無いところからこの動きを作るのは

さすがに無理だったため、

 

ポケモンBW2のPWTのダイゴ戦モーションを参考に

トレスし、キャラクターを置き換えて作成しました。

 

髪揺れのみも含めて20枚用意しましたが、

この絵の制作は思ったよりは大変ではありませんでした。

 

(クリスタでの作成風景の再現)

 

参考となる元モーションをよく見てみると

右手左手足先で分かれており

大きなアクションをするとき以外は

1枚ずつ描くのではなく、

基本的にそれらのレイヤーをズラして動きを付けていました

 

なので実質描いたのは、最初の立ちポーズと

大きく動いた腕と表情のみで済みました。

 

ただ、気付いたのが少し遅かったので、

パーツごとにレイヤー分けが出来ず、

動いた箇所を投げ縄ツールで選択し

動かすことになってしまいましたが・・・。

 

これはやってみないと気付かなかったことだと思います。

 

 

登場アニメーション

背景アップから定位置にカメラがズレるアニメーションです。

これはかなり強引な方法で作成しました。

 

参考画像を動くフレーム毎にトレースし、

そのトレースに合わせて

トレーナーと背景を動かしました。

 

トレーナーモーションはどう動かしていたかは

分かりましたが、これに関しては

元の参考画像であるゲームの方で

どのように作成していたかがわかりませんでした。

 

今回は無理やりな方法で作成したため、

もっとも荒くなってしまった部分になります。

 

 

背景の作成

 

ただの白い背景でやろうかなとも思いましたが、

明らかに手抜きですし、

せっかく作成したトレーナーモーションが

もったいないので背景画像も作成しました。

 

コンセプトはポケモンですが、

作りたいのはポケモンの画面ではなく、

ポケモン風の僕の画面なので、

メインで活動をしているDOLの対戦画面を元に

背景を作成しました。

 

床は対戦画面を参考画像を基にパースをかけ、

それをトレスし、描写。

  

背景はDOLが使用している素材サイトから素材をDL、

床と壁に見えるように配置し作成しました。

 

 

VSモーションの作成

登場アニメーションの前に表示されるモーションで、

参考にしたのはポケモンBWの四天王戦開始画面です。

 

構図を参考に素材を描こうとしましたが、

この時点で体力が底をつきそうだったので、

元々持っていた画像とフリー素材のアニメーションを組み合わせ、

動画編集ソフトで加工したり、動かしたりして作成しました。

 

個人的に手を抜いたつもりではありましたが、

ここはとてもよくできたと思います。

 

 

その他調整

モーションを音に合わせて動かしたり、

見てて飽きないようにムービーの構成を考えたり、

画面がコンセプト通りに見えるよう

図形や文字を配置したり、

トランジションをエフェクトに利用したり

 

というような感じです。

 

今回はトレーナーモーションから制作に入ったので、

ムービー構成が後まわしになってしまいましたが、

本来、先に決めるべきことだと思います。

(構成によって使用する素材がかなり変わるため)

 

 

僕は「考えること」と「作業」は別にしたい人間なので、

「作業の合間に構成を考えること」はかなり面倒でしたが、

ある程度のストーリになるように心掛けました。

 

文字のフォントも世界観に合うようなものを探したり、

音ハメも鬱陶しくなりすぎないよう心掛けました。

 

これらの調整が最も難しく、

かつ最も地味な作業だったと思います。

 

 

完成

ということで無事完成し、

配信でお披露目することができたわけですが、

 

僕の感想としては、なんとか見せれるものにはなったかなと。

 

ただ、

反省点も多く、とても100点とは言えないのが正直なところです。

 

特に、先ほども言った通り、

登場アニメーションを強引に作成したことによって出た雑さが

作成した本人である自分は見逃せませんでした。

 

あらじめ難しそうなところは分けて

計画的に取り組めば、ある程度は改善するのかなと思います。

(ただ、参考元がどのようにやっているかがわからないですが)

 

 

まとめ

ということで、OPムービーの制作過程をまとめました。

やることを分け、賢く作業したつもりでしたが、

そこそこな出来のものしか作成できませんでした。

 

やはり、世に出回っている作品たちは

えげつないものばかりだということに改めて気づきました。

 

とは言え、作ってみて新しい発見もままありましたし、

楽しかったので良いこととしましょう。

 

 

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

最後までお付き合いいただきありがとうございました。



 

 

 

 

使用素材

[背景画像]

MGS技研 様:Mutation Genes Simulation 技術開発研究所

[使用BGM]

表裏 Hyouri 様:[オリジナルBGM] 戦闘曲 [フリー] - YouTube

[その他素材]

たけふじ 様:ニコニ・コモンズ-カラフルな星のワイプ

VideoBase 様:   VideoBase|VTuberや配信者のための配信素材置場

動画AC 様: 電気ショック(5色)の動画|無料の動画素材サイト「動画AC」

 

キャラの方針が定まらないので、自己紹介をします

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

 

今自分の扱っているコンテンツ整理を行っているのですが、

どうやらYoutubeチャンネルを開設してから5年半経過しているようです。

 

結構経ちましたね。

 

さて、そんなYoutubeでの活動ですが、

ひとつ悩みがあります。

 

それは、キャラの方針が定まっていないことです。

 

やり始めた当初は、そういうものはやっていったら

勝手に形成されていくものだろう。と思っていましたが、

 

5年経っても定まっていないので、

どうやらちゃんと決めないといけないようです。

(もはやキャラが定まらないキャラの可能性)

 

ということで今回は、ブログも一新したことも兼ねて

キャラを定めつつ、自己紹介の記事を書いていこうと思います。

 

 

プロフィール

名前  :アンドリュー

性別  :♂

年齢  :20才くらい

誕生日 :2月14日

 

さて、まずはオーソドックスな項目からです。

 

名前は「アンドリュー」で、性別は「」です。

名前は元々、色々な名義でやっていたのですが、

現実との整合性を兼ねるため、「アンドリュー」に落ち着きました。

 

年齢は「20才くらい」で、誕生日は「2月14日」です。

なんならこの記事の公開日バレンタインデーです。

(Googleにも祝われてました。)

 

キャラ付けをしようとしたから

バレンタインデーという訳ではなく、

普通に本当の誕生日がこれというだけなので、

恐らく僕はこの設定を持て余していますね。

 

 

活動内容

メイン :デュエルオブレジェンドを中心に活動

趣味  :ぷよぷよ、絵を描くこと、動画を編集・配信すること

目標  :DOLプレイヤーの人口を増やすこと!

 

こちらは活動に関係する項目です。

色々なゲームで活動をしようと思いましたが、

結局「デュエルオブレジェンド」に落ち着きました。

(リンク:デュエル・オブ・レジェンド | SDIN無料ゲーム

 

趣味は「ぷよぷよ、絵、動画編集・配信」です。

ぷよぷよ」は、最高15連鎖を組めるくらい。

つまり、ままやってます。

 

」や「動画編集・配信」は基本的に

自分でやっています。技術はまだまだです。

 

(作ったサムネイル)

 

目標は「DOLプレイヤーの人口を増やすこと!

メインで活動しているDOL(デュエルオブレジェンド)

プレイヤー人口を増やし、活気づかせることです。

 

理想は高い方が良いと思っているので、

ゆっくりとやっていきたいと思います。

 

 

キャラ設定

チャーム

ポイント:紫の髪、パッツンヘアー、赤いはちまきと瞳

一人称 :ブログ → 僕、配信 → 俺、真面目 → 私

口癖  :「しまスゥゥゥゥゥ」

 

こちらはキャラ設定です。

詰め切れていない部分もまだありますが、

とりあえず決まっているものをあげましょう。

 

チャームポイントはそれぞれ、

使用しているアバターの特徴になります。

基本的にはこれを抑えれば

何でもいいという気持ちだったのですが、

自分で絵を描くときに絵柄がブレにブレたので、

基準となるキャラ絵を作成しました。

かわいい

 

このキャラ絵を基に絵を描いて

定着させていこうと思います。

 

(キャラ絵を基に描いたアニメーションの一部)

 

一人称も統一したかったので、使いやすいように

文章だと「」、喋りだと「」、真面目だと「」にします。

 

口癖は語尾の「す」がよく「th」になることです。

配信でよく見られます。

 

 

その他

その他:ブログ、動画投稿、配信など不定期でやっています。

 

定期更新・配信は向いていなかったので、

不定期にやろうと思います。

 

配信は、土曜日の20時を中心にやっていくので

暇があれば覗きにきてください。

www.youtube.com

 

 

まとめ

名前  :アンドリュー

性別  :♂

年齢  :20才くらい

誕生日 :2月14日

メイン :デュエルオブレジェンドで活動

趣味  :ぷよぷよ、絵を描くこと、動画を編集・配信すること

目標  :DOLプレイヤーの人口を増やすこと!

チャーム

ポイント:紫の髪、パッツンヘアー、赤いはちまきと瞳

一人称 :ブログ → 僕、配信 → 俺、真面目 → 私

口癖  :「しまスゥゥゥゥゥ」

その他 :ブログ、動画投稿、配信など不定期でやっています。

 

ということで、無事プロフィールが完成しました。

今後はこの設定を基本に活動していこうと思います。

 

決めただけで終わらないように

ゆる~くやっていこうと思いますので、

今後ともよろしくお願いします。

 

 

 

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

 

 

はてなブログに来てから5年が経った、反省会をしよう。

挨拶

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

 

最近、心境の変化があったので、

それに伴ってこのブログも一新しようと思い、デザイン変更やコンテンツの整理を少ししました。

 

心機一転、今後とも不定期更新となりますがよろしくお願いします。

 

 

さて、このはてなブログにきてからどうやら5年弱が経過したらしいです。

僕も年をとったもので、5年の歳月が短く感じてきました。

 

つきましては、良い区切りというわけではないですが、

少しだけここ数年の活動の反省会をしたいと思います。

 

この後、楽しくもない(なんならネガティブな)自分語りが少々続きますが、

よろしければお付き合いください。

 

 

背景

初めにいいますが、ただの反省会なので、

何かの引退とかは特にないです。

 

さて、5年前の自分が何をしていたかは

最早思い出せなくなっていますが、

 

高校を卒業し、大学に入ったはいいものの

将来何をするのかの方針が決まらずにいたことは確かでした。

 

大学も入った理由は、その時に最も信頼をしていた友人がそこに入ったから。

大卒資格を取るため。モラトリアムの期間を延ばすため。

 

と大した理由もなく、あまり大学で学ぶこともないだろうという姿勢でした。

(実際、この姿勢からか学ぶことはなかったのですが)

 

概ねそれまでの人生が”やりたくないことを如何に回避するか”

ということに主軸を置いていたため、

やりたいことも特になく、将来への不安が募るばかり。

 

何時間、何十、何百時間と考えても結論が出なかったので、

判断をするのに必要な情報が足りていないと思い、

 

とりあえず、自分がやりたいこと≒積極的にやってきたこと に

力を入れてみようと思い、

DOLを中心とするブログ、動画、配信が中心のネット活動に

色々な目標を立て、頑張ってみることにしました。

 

目標1つ目

その目標の1つに「DOLの人口を増やすこと」がありました。

 

これはまだ現在進行形でもあるのですが、

自分が最も時間を捧げたDOL(デュエルオブレジェンド)

プレイヤー人口を増やすことによって、少なくとも

自分が定年の歳(具体的には60歳を想定)になっても

遊ぶことができるようにしたい。というものです。

 

頑張った割に成果はまだ薄く感じていますが、

 

目標をなんとなく立てたときに比べると、

色々な人がDOLに戻ってきたりしましたし、

 

jokerさんがDOL研究所を立ち上げ、

プレイヤー自身で作り上げるコンテンツも増えました。

 

ノートさんが(恐らく)自分の配信をきっかけに配信大会運営

精力的に行ってくれているところなども見ると、

 

当然自分の成果ではないですが、

やってきたことは無駄ではなかったのかなと感じています。

(何かのきっかけにはなったのかなと)

 

かなりギリギリな状態のDOLが

このような活気があるのは皆さんのおかげですので、

この場で感謝したいと思います。

そしてまだまだ発展途中のDOLを今後ともよろしくお願いします。

 

 

目標2つ目

目標の2つめとして自分のために「小銭稼ぎになるようなコンテンツを育てよう」というものがあり、

 

ブログや動画投稿、配信などはこれに含まれます。

 

これらの共通点として、視聴者数(PV)を増やすことを目的に
定期更新を行っていたことがあげられます。

 

定期的な更新を行うことで、視聴者を根付かせつつ

DOLをコンテンツとして取り上げることにより、

1つ目の目標である「DOL人口の増加」と

重ねて進められるようにしていました。

これに関しては非常に残念な結果に終わりました。

 

そもそもやる前から、人口の少ないコンテンツを無名の自分が取り上げて

視聴者を増やすことは無謀であるということは分かっていました。

 

なので、フィードバックの数字ではなく、

自分の技術面の方に焦点をあて、

修行のつもりでこれらは行っていましたが、

 

特にブログの定期更新時期に顕著にみられる

クオリティの低下が否めません。

 

自分の大切なものを安売りしていく感覚には

当然モチベーションの低下も避けられないでしょう。

 

それぞれある程度の区切りまで行うことで

自分の中でごまかしていた部分もありますが、

最早誰のためにやっているのかが分からなくなりました。

 

配信に関しては少し例外で

モチベーションの面では同じだったのですが、

自分が想定していたよりもフィードバックを貰える状況になったので、

驚いています。

 

ただ、自分の体力的な問題とクオリティの低下の面から

配信も定期更新はやめることにしました。

 

 

ひとつ学びがあったとすれば、

好きでやっていたことが、責任でやることになった瞬間に

限界が見えてきた。ということでしょうか。

 

前提として自分が何をやりたいのかがよく分かっていないまま

立てた目標を基準に活動を繰り返していたので、

方針がブレにブレているのを今でも感じています。

 

とりあえず、この記事を機に

自分が扱っているコンテンツ(ブログやyoutube)の整理と

気持ちの切り替えを行いたいと思います。

 

 

目標3つ目

3つ目の目標として「現実とネット活動の両立」がありました。

 

現実では先ほども言った通りモラトリアムを延長したはいいものの

社会に出るまで王手がかかっている状態です。

 

今見ると、大事な時期に両立なんて馬鹿だなあ。と思いますが、

やってみないと分からないことも確かですし、

どうやら責任感だけは強かったようで、

自分から始めたネット活動を疎かにする選択肢はありませんでした。

 

必要なら自分を洗脳し鼓舞することで持ちこたえていましたが、

結果としてはこれも残念。

 

特に現実の方は詳しく言いたくないので伏せますが、

全身付け焼刃」という言葉がふさわしいでしょうか。

どれも身につかず、モチベーションは低下、

思考は地を離れていきました。

 

自分の悪いところを考えに考えた結果

精神が軽く不安定になり、さらに自重。

 

結果は目に見えて、ということですね。

 

 

自分が損することは覚悟していたので、ままいいですが、

現実でもこちらでも、色々なことで人に迷惑を掛けた気がします。

 

プレイヤーの皆さんは優しいので、

誰に言われたわけでもないですが、

 

最も高く掲げていた「DOLの人口を増やす」ことに反して

多くのプレイヤーのモチベーションを下げるような発言や言動を

していたことに関して弁解の余地はないと思っています。

 

そこから学び、すぐに活かすことも

僕の現状の実力では厳しいと思っています。

 

なので、今後はゆっくりと良心の呵責も含めて

向き合っていけたらなと考えています。

 

 

今後について

という感じで反省会をして

それなら今後はどうするの?

 

という感じですが、

 

ブログ、動画、配信ともに不定期更新と

現状とあまり変化はありません。

 

変わるのは本当に僕の心境くらいでしょう。

 

 

正直、誰のために何をやっているのかが

自分の中でよく分からなくなっていたので、

 

今年の僕の目標である適当にを中心に

ブラブラやっていこうかな。という感じです。

 

ただ、コンテンツの整理や活動方針をしっかり定めるために

ブログ、動画投稿、配信はDOL中心で

居るかもわからない初心者のためなどではなく、

自分がやりたいことをやる形で考えています。

 

ぷよぷよやFEの攻略、絵関係も裏でやっていたりしますが、

どれもコンテンツにできるほどの実力がないので、

やらない というよりできない感じになるでしょう。

 

 

最近は元気になった自分も自覚しつつあるので、

有り余ったエネルギーでまたイベントや

変なことをやったりするかもしれませんが、

 

今後ともアンドリューをよろしくお願いします。

 

 

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

僕の自分語りにお付き合いいただき、ありがとうございました。

 

配信で元気な僕と会いましょう😉

アディオス~~~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

関係ない話

そういえば、このはてなブログにも流行りのAIが導入されたらしく、

書いた記事のタイトルをSNS向け等に考えてくれるようなので、

試しにこの記事でやってみたところ

 

精度はかなりすごいけど、内容を盛に盛っていてウケる

 

というお話でした

まる