気軽に大会を開いてみようという話 ~StreamControlを添えて~
この記事はBBTAGアドベントカレンダー2023に参加しています。
昨年度はTetsurowさんが似たような話を書いていただきましたが、自分も大会主催を行うことになったのでその話です。
大会を始めたきっかけとしては夏にグラボ付きのがっつりしたノートPCを購入してOBSを利用した配信のためのスペックは十分に満たしていると判断したこと、個人的に「3先大会やりてえなあ」と思ったことがきっかけです。
以前からキャプチャボードが無くても配信できる方法(OBS+PSリモートプレイ)は分かっていたので、そちらを利用して配信準備を整えることとしました。
リモートプレイをPC上で映して操作する
PSリモートプレイは本来「遠隔での操作」が目的ですから、リモートプレイ中に本体に接続したコントローラーの操作を行うとリモートプレイが解除されてしまいます。これでは配信できてもコントロールができませんね。というわけで次の方法を用います。
PSリモートプレイはサブアカウントでログイン・実行し、PC上に表示させる
その後、本体に接続したコントローラー(メインアカウントに紐づけたもの)のPSボタンを押し、PSの操作をメインアカウントに切り替える
本体で操作しながらもリモートプレイが可能な状態になります
この方法はDiscordでの画面共有にも使えて結構便利ですので覚えておくとよいかも?(私はピザマヨ式キャプチャと呼んでいます)
OBSstudioあれこれ
次は配信・録画するためのソフトであるOBSstudioです。ダウンロード・インストール方法は色々ありますが実はSteam版が存在し、これはアップデートなどを自動で行ってくれるので大変便利です。おすすめ。
ソフトを手に入れて、もしhtmlファイルを使ってオーバーレイ等を使う予定のある方は次の操作をしておきましょう。
Steamライブラリの「OBS Studio」のページ右側の歯車マークをクリックし、「プロパティ」を選択する
起動オプションに --remote-debugging-port=(ポート番号を指定:こちらを参照し、1024–49151の間から被らない番号を入れましょう) を入力します
これを行うと、
http://localhost:[上で入力したポート番号]/
でインポートした html(CSS, JavaScript) ファイルがOBS上でどのような振る舞いをするのかを確認できます。見栄えの調整・JavaScriptの挙動確認に非常に便利です。
OBSの操作自体は色んなところで説明されているので割愛しますが、配信のための最大ビットレート(いわゆるデータ送信”密度”)は配信プラットフォームによって異なり、また自宅のインターネット環境にも左右されますので調整はしっかりしましょう。私はYoutubeでは6000に設定しています。またホットキー(OBS用のショートカットキー)の設定で「OBSがアクティブウィンドウであるときに有効」「起動時常に有効」などの設定がありますが、「起動時常に有効」は結構な確率で意図しない押し方になるため注意しましょう…(私はそれで何回かマイクミュートのまましゃべり続けた経験があります)。
StreamControlってなに?
StreamControlはこんな名前をしていますが、機能としては以下の処理を行う非常にシンプルなソフトです。
ユーザーが各々作成したコントロール画面の入力結果をXMLファイルの形で出力する
…実はStreamControl君、単体だと配信ソフトのOBSに何も働きかけません。ただファイルを作ってお仕事を終えるソフトなのです。というわけで必要になってくるのがOBS上のブラウザ機能です。
仕組みとしては以下の形になります。
OBS上でオーバーレイ用のブラウザソース(htmlファイル)を追加してアクティブ化する
htmlファイルに付随して実行されるJavaScriptファイルがStreamControlによって出力されるXMLの変化を非常に小さな時間間隔で監視する
StreamControlによってXMLファイルが更新される
更新を確認したプログラムはXMLファイルの内容を読み取り、その内容を用いてhtmlファイルなどを書き換えたり、変化した内容に合わせた処理を実行する(書き換えるのはJavaScript上のinnerHTMLメソッドなどがありますね)
2番に戻り、再びXMLファイルの更新を待つ
ということで、我々が配信画面で見ている表示に関する処理はJavaScriptがほどんどを担っています。だから確認やデバッグ用にローカルでhtmlを開くための設定が必要だったんですね。
ただStreamControl自体は「簡単な文法(タグ形式)でユーザー自身が入力用のフォームを作成できる」というのがかなり大きいでしょう。ぶっちゃけるとここの優位性が失われる(GUIやノーコードといった、より簡便なフォーム作成など)とStreamControlは使われなくなるんじゃないかなと思っています。というか大きめのeSportsシーンだと独自で作っていると思いますね…。
私のオーバーレイはこちらをベースにBBTAG用に調整しています。以下のリンクも参考になります。
いざ大会運営だ!
配信の準備が整ったら、大会運営のターンです。トーナメント管理のプラットフォームは日本ではTonamelがかなり優勢ですね。Start.ggも有名ですが中~大規模大会では使われる、というイメージが強いのではないでしょうか。
大会運営で一番大事なのは告知です。場所を作っても人が集まらなかったら意味がないんや…。BBTAG勢は「行けそうやし参加するか~」の滑り込みエントリーが多いのですが、まず「大会がある」と認識させる必要があります。告知(特に前日~当日)はしっかり行うようにしましょう。
大会開始時のインストラクションは必要か?
大会開始時のルール説明に関してですが、私は必要だと思っています。「読んだよ!」のアクションが確実性に欠けるからですね。(大会概要自体は細かく記述する必要はあります)参加者視点での立ち位置としてはリファレンスに近いですかね。そのためきちんと大会開始時に主催側から説明を入れることで合意を取るのが良いと思っています。
大会が始まったら、運営と試合ごとの実況に集中します。慣れない間はシングルタスクで良いので間違いのないよう着実に進めましょう。実況に関しては黙らないのが目標(なお私ができていない模様)ですが、なかなか難しいので状況が難しいときはマクロ的な説明(体力ゲージ・クロスゲージなど)を述べるだけでも良いと思っています。
大会が終わったら、大会結果を上げましょう。自分自身と参加者・観戦者に終了を示すためにも大切な締めの作業です。
大会のデータを活用する
ここからはちょっと技術的な話(さっきも散々してきたのでは?)。Tonamelにおいて大会データを分析するのはやや骨が折れる作業になっています。エントリーデータと大会結果はCSV形式で手に入りますが、各々のマッチ結果を捕まえるのが難しい(ブラウザ上で手に入る情報だと識別子がエントリー名のみになるため、回を跨いだ際のIDとの接続処理がやや面倒)。現状コーナーケースを突かれると怪しいので普通にエントリーしてくださいね…
一応TonamelではアカウントID(ちなみに各ユーザーページにて全員が確認可能です)がユニークなものになっていますので、それと上手く結びつけることでデータを構築しています。
HIBANAの大会データについて
#7以降から直接対決時の結果と取得ゲーム数を表示するようにしましたが、これはいわゆる「人相性」を確かめて分析と気づきの結果にしてほしいという意図があります。プレイヤーデータを客観的に見て分析できるという方針のもと、最終的には各プレイヤーのデータも確認できるようにする予定です。キャラ相性は…参加者側に負担をかけることになるので無しでお願いします…。
おわりに
さて、ここまで大会について色々と書いてきましたがBBTAGのことほとんど書いてなくない?(毎年恒例ですが)いずれは大会運営ができる人が増えて知識の共有等ができたらうれしい限りです。これからも大会やロビーでお会いしましょう~!