TETRIS 99マージンタイマー自動開始装置の導入方法

この記事は、TETRIS 99マージンタイマー自動開始装置の取り扱い説明書です。 テキスト と同じ内容ですが、それには画像がないため、このページでは画像付きで説明します。
目次
動作要件
- Windowsを搭載した配信用パソコン
- HDMIキャプチャボード
 ※カメラなどでNintendo Switchの画面を直撮りしている映像には対応しません
- OBS Studio (配信用ソフトウェア)
 ※表示言語を日本語にしてください。他の言語では動作しません
 ※OBS Studio以外の配信用ソフトウェア (Streamlabs OBS、XSplitなど) は対応していません
- OBS Studioの表示言語が日本語であること
導入手順
TETRIS 99用マージンタイマーの導入
1. マージンタイマーのダウンロード

https://github.com/sshock-tetris/Tetris99MarginTimer/blob/master/timer.html にアクセスする。
Rawの隣の隣の ↓マーク(Download raw file)のアイコンをクリックし、ダウンロードする。
ダウンロードしたファイルtimer.htmlを、適当な場所に保存する。
2. OBSにタイマーを追加
 OBSを起動し、ブラウザソースを追加する。
OBSを起動し、ブラウザソースを追加する。

タイマーの名称を MarginTimer にして、OKをクリックする。 (⚠スペル要注意)

'MarginTimer' のプロパティが表示される。

ローカルファイルにチェックを入れ、ローカルファイルの場所をソースのアドレスに保存したtimer.htmlにする。
幅は600以上を推奨。高さは60あれば十分。変更後、OKをクリックする。
3. タイマーの動作確認

追加したブラウザソースを右クリックし、対話 (操作)メニューを選択すると'MarginTimer' の相互作用ウィンドウが表示される。
このウィンドウがアクティブ状態の時にキー操作を行うとタイマーが動作する。

キー操作一覧
| キー | 動作 | 
|---|---|
| Enter | タイマー開始 | 
| Space | タイマー停止・再開 (*1) | 
| Del | タイマー消去 | 
| 1 | 2秒後にタイマー開始 (*2) | 
| 2 | 3秒後にタイマー開始 (*2) | 
| 3 | 4秒後にタイマー開始 (*2) | 
(*1) タイマーを再開できるのはタイマーを停止したときのみです。タイマーを消去した後は再開できません。
(*2) キーはゲーム開始時のカウントダウンの数値に合わせています。“Go"が表示される1秒間があるため、数字キーと実際の待ち時間が異なります。
自動開始装置は、この対話ウィンドウに擬似的にキー入力をさせて、 タイマー開始とタイマーリセット&消去を自動的に行うことで実現している。
なお、マージンタイマーはマージンに到達すると色が変わり、最終的に赤くなるようにできている。

「マージン」とは
試合の早期決着を目的に導入されているTETRIS 99固有のシステム。
試合開始から10分が経過すると、ライン消去時の相手に送るライン数から上乗せされるようになる。
30秒ごとに1ラインずつ上乗せされる。たとえば、10分なら+1ライン、11分なら+3ライン。
TETRIS 99ではせり上がり予告の最大ライン数が12ラインのため、15分が経過すると最大となる
(1ライン + 11ライン = 12ライン)。相手に送る場合に限定されるため、自陣のせり上がり予告との相殺にはマージンは適用されない。
タイマーの導入ができたら、自動開始装置の準備へ進もう。
自動開始装置の導入
1. 自動開始装置のダウンロード

https://github.com/sshock-tetris/autoStartMarginTimer/releases から、最新バージョンの自動開始装置のzipファイル (※3つあるうち、一番上のautoStartMarginTimer_v○.○○.zip) をダウンロードする。
ウェブブラウザ Google Chrome を使用している場合
ダウンロードが終了した後、
このファイルは一般的にダウンロードされているファイルではなく、危害を及ぼす可能性があります。
と表示される場合がある。


この場合は、保存を押して進めて欲しい。

保存を押したときに上図のような確認メッセージが表示されるが、かまわず続行するを押す。
これは、ダウンロード数が少ないだけで疑われるというChromeのお節介な機能の1つである。
上記URLは自動開始装置の正式な公開場所であり、そこからダウンロードしていれば問題ないはずである。 この圧縮ファイルは公開されたソースコードからGitHubの自動ビルド機能によってできたファイルであり、 危害を加える危険物が含まれないように考慮している。
ダウンロードしたファイルを右クリックしてプロパティを選び、
下のセキュリティ項目の許可するにチェックを入れてファイルのブロック解除を行う。
セキュリティ項目が表示されない場合はブロックが解除されているので、その場合は操作不要である。

圧縮されているので、適当な場所に展開する。展開すると、次の3ファイルがある。

2. OBSの事前準備
ソースに映像キャプチャデバイス(キャプチャボードの映像)がなければ追加する。
キャプチャ映像の上下左右に黒縁がある場合
キャプチャ映像の上下左右が黒く額縁状態になっている場合、そのままではマージンタイマー自動開始装置が場面をうまく認識できないことがある。 以下の要領で額縁状態を解消させる。
- キャプチャボードの映像ソースを右クリックして、フィルタを選ぶ。 
- ウィンドウ左下(エフェクトフィルタ)の+ボタンをクリックし、クロップ/パッドを追加する。 
- フィルタの名前を付ける。
 
- 追加したクロップ/パッドフィルタをクリックし、黒縁が表示されなくなるまで上下左右の数値を増やす。 
導入後の準備
以下の手順を、配信を行う度に実施する。
OBSの準備
‘MarginTimer’ソースを右クリックし、対話 (操作)メニューを選択する。

キャプチャボードの映像ソースを右クリックして、ウィンドウプロジェクター (ソース)メニューを選ぶ。

OBS 31.1.0以上の場合
ウィンドウプロジェクター (ソース)からソースプロジェクターに名称が変わり、メニュー構成が変わっている。
キャプチャボードの映像ソースを右クリックして、ソースプロジェクターを開く (上から2番目) - 新しいウィンドウを選ぶ。

以後、ウィンドウプロジェクター (ソース) - ... という表記をプロジェクター - ソース: ...と置き換えて読んでほしい。
それぞれ、'MarginTimer' の相互作用ウィンドウ、ウィンドウプロジェクター (ソース) - 映像キャプチャデバイスウィンドウが表示されていることを確認する。
自動開始装置の起動
マージンタイマー自動開始装置 (autoStartMarginTimer.exe)を起動する。
自動開始装置の操作方法
マージンタイマー自動開始装置を起動すると、以下のようなウィンドウが表示される。

状態
| 状態 | 説明 | 
|---|---|
| [自動開始できません] | まだ準備ができておらず、タイマーを自動開始できない。 自動開始装置を起動した時、および状態をリセットした時はこの状態となる。 | 
| 準備完了。待機中… | ゲームが始まるのを待っている。タイマーを自動開始できる状態。 タイマーが表示中の場合は、この状態になった時にタイマーを自動的に消去する。 | 
| マッチング/ゲーム開始準備中 | マッチング中、またはゲーム開始準備中を認識した。 | 
| READY | マッチングが終わりREADYを認識した。 | 
| GO | 試合が始まり、タイマーを開始した。 | 
OBSを管理者権限で起動している場合
マージンタイマー自動開始装置も管理者権限で実行する。
Windowsの仕様の問題で、管理者権限でなければOBSが起動していることを認識できない。
OBSを探すボタン
このボタンをクリックすると、自動開始装置がOBSのウィンドウプロジェクター (ソース)ウィンドウと
'MarginTimer' の相互作用ウィンドウを探し、2つのウィンドウが見つかり次第場面認識を開始する。
ウィンドウプロジェクター (ソース)ウィンドウのウィンドウサイズが変化し、
最大化ボタンと最小化ボタンが消え、外枠が黄色になるが、それらは全て正常動作である。準備ができていない場合は、このようなエラーメッセージが表示される。

準備ができていれば、OBSを探すボタンが無効化され、自動的に画像認識により場面を認識するようになる。
場面に応じてタイマーを開始したり消去したりするので、うまく認識できていれば以後操作は不要である。
ウィンドウプロジェクター (ソース)ウィンドウの注意事項
- ウィンドウを画面外に移動してはならない。
 画面外に移動すると映像が更新されず、画像認識が正常に行われなくなる。 ウィンドウが背面に移動するのは問題ない。
- コンテキストメニュー(ウィンドウを右クリックした時に表示されるメニュー)のうち、
ウィンドウをコンテンツに合わせるを選択してはならない。
タイマー手動開始ボタン
OBSとの連携ができている状態でこのボタンを押すと、タイマーを手動で開始することができる。 これはタイマーが自動的に開始しないなどのトラブルが発生してタイマーを手動で開始する必要がある場合や 動作テストのためのボタンで、通常は使用する必要はない。
状態をリセット
試合が始まったのに場面を認識できずにタイマーが始まらない、マッチング中の画面を正しく認識できない などの症状を見かけた時は、マージンタイマー自動開始装置の状態のリセットを試してほしい。

タイトルバーを右クリックすると、状態をリセットメニューがあるので、それを選択する。
マージンタイマー自動開始装置の状態に関係なく起動直後の状態に戻る。
状態をリセットの「状態」とは自動開始装置のことを指し、マージンタイマーのことではない。
つまり、状態をリセットを行っても、表示されているマージンタイマーは表示されたままとなることに注意する。
マージンタイマーの表示を消したい場合は、'MarginTimer' の相互作用ウィンドウをアクティブ状態にしてからDelキーを押す。
Tips
ウィンドウプロジェクター(ソース)について
OBSのキャプチャ映像を判別する条件は「ウィンドウの名前の先頭がウィンドウプロジェクター (ソース)またはプロジェクター - ソース:である」ため、画像の通り"ウィンドウプロジェクター (プレビュー)“など異なる種類のウィンドプロジェクターならそれらが複数存在しても識別できる。

エラーメッセージ
OBSを探すボタンを押したとき

マージンタイマーを自動開始させるために必要なOBSの準備ができていない。特に、以下の点をよく確認する。
- ウィンドウプロジェクター (ソース) を表示しているか? 特に、ソースであることを確認する。
- MarginTimerのスペルが間違っていないか?
- OBSの表示言語が日本語になっているか?
- OBSが管理者権限で動作している場合、自動開始装置も管理者として実行しているか?
タイマー手動開始ボタンを押したとき

先にOBSの準備をする。
※タイマー手動開始ボタンは、OBSの準備ができるまでは無効化されているので、
このメッセージを見ることはまずないだろう。旧バージョンの時の名残である。
Q & A
ゲームが始まっても状態が"準備完了。待機中…“から進みません。
以下、ご確認ください。
- 正しいウィンドウプロジェクター(ソース)を表示していますか?
 オーバーレイが含まれた映像や、カメラで画面を撮影した映像など、キャプチャボードからのゲーム映像でない場合は認識できません。
- ゲーム映像の色が反転、もしくはグレースケールになっていませんか?
 Switchの設定で色設定を変更している場合は認識できません。元の設定に戻してください。
- キャプチャボードの映像の上下左右に黒縁がありませんか?
 額縁状態に縮小されている場合は額縁状態を解消するよう調整してください。
- ウィンドウプロジェクター ウィンドウが画面外に移動していませんか?
 ウィンドウ全体が画面内に収まるように移動してしてください。
- OBSを表示しているディスプレイのHDR機能が有効になっていませんか?
 HDRが有効になっていると色味が変わるため、画像認識が動作しなくなります。HDR機能を無効化してください。
- Nintendo Switch 2のHDR出力が常にONになっていませんか?
 Nintendo Switch 2のHDR出力が常にONになっている場合、色味が変わり画像認識が動作しなくなります。 Nintendo Switch 2の設定-ディスプレイを選択し、テレビのHDR出力をOFF、または対応ソフトのみONにしてください。 なお、設定上側にある本体画面のHDR出力は、有効の場合でも自動開始装置には影響はありません。 
- OBSを探す時にウィンドウプロジェクターのウィンドウサイズが変化しましたか?
 何らかの問題でウィンドウプロジェクターのウィンドウサイズが変化しなかった場合も同様に場面の認識ができません。 この現象が発生した場合は、作者までご連絡ください。
想定外のところでタイマーが動いてしまいます。
マージンタイマー自動開始装置は「マッチング中」または「ゲーム開始準備中」の表示部分を色で判断する仕様です。 実際のゲーム画面でなくても(録画であっても)マッチング中などの画面が映ればタイマーが動きます。
たとえば、Switchのアルバムから静止画や動画を再生した場合、 実際のゲーム画面と区別がつかないのでタイマーが誤動作することがあります。
誤動作した場合は、タイマー状態のリセットを試してください。
ウィンドウプロジェクター (ソース)ウィンドウや対話ウィンドウを閉じてしまった場合はどうする?
ウィンドウを閉じたことを自動開始装置が検知し、状態が[自動開始できません]に戻ります。
この時、無効化されていたOBSを探すボタンが再び有効になります。
ウィンドウプロジェクター (ソース) ウィンドウや対話ウィンドウをもう一度開いて、OBSを探すボタンを押してください。
ゲームの音は場面認識に関係ありますか?
無関係です。映像さえあれば無音でも問題なく使用できます。
マラソンやCPUバトルをやっても大丈夫?
問題ありません。
ホーム画面に戻っても大丈夫?
まだ部屋に入っていなければ問題ありません。 部屋に入ってから試合が始まるまでの間は、誤作動の原因となるため、できる限り避けてください。
前述の通り、マージンタイマー自動開始装置は「マッチング中」または「ゲーム開始準備中」の表示部分を色で判断する仕様です。 そのため、それらの表示中にホーム画面に戻ると、マージンタイマー自動開始装置はマッチングが終わり試合が開始していると誤認識します。 また、部屋に入った直後にホーム画面に戻り、その間に試合が始まっていた場合も、同様の理由でマージンタイマーは動作しません。
終了するときはどうすればいいの?
そのまま自動開始装置のウィンドウを閉じてしまって大丈夫です。 自動開始装置とOBSの閉じる順番は特に決まりがないので、どちらを先に閉じても問題ありません。
対応しているモードは?
| モード | 対応 | 備考 | 
|---|---|---|
| TETRIS 99 | ○ | |
| TETRIS 99 VIP (Invictus) | ○ | |
| チームバトル | ○ | |
| もちよりバトル | ? | 動作未確認。「ゲーム開始準備中」の表示がなければ動作しないと思います | 
| シェアバトル | × | 動作未確認。他のモードとは異なる画面構成のため、動作しない可能性が高い | 
| CPUバトル | × | 「マッチング中」の表示がないため | 
| マラソン | × | 時間が右側に表示されているのでこのタイマーの出番はありませんよね? : ) | 
v1.13以下からv1.14以上にアップデートしましたが、マージンタイマーが動作しなくなりました。
自動開始装置のv1.13のリリース時、およびv1.14のリリース時に、マージンタイマーを更新しました。 マージンタイマーが古いままだと、タイマーが正常に動作しない現象が発生します。 自動開始装置だけでなく、マージンタイマーの更新もお忘れなく。
サポート
マージンタイマーの導入に関して質問、うまく動作できないなどは、 sshock_tetrisにDMやメンションなどで連絡してください。
マージンタイマー自動開始装置のバグ報告は、Issuesまで。
ただし、個人で気ままにやっているため、サポートできる範囲には限界があります。必ずしも対応できるとは限らないことをご理解ください。