マリオデAny%にAutoSplitを導入したのでやり方メモ

タイトルの通りです。つらつら書いていきたいと思います。

0. 前提

配信やDiscordの画面共有のためにOBS Studioを利用していて、RTAのタイマーにはLiveSplitを使用したので、そういう環境の人はこの記事を読みやすいと思います。

AutoSplitは、監視対象の映像が、あらかじめ準備しておいた目印としての画像と同じになったのを感知してタイマーを進める(厳密には、タイマーを進めるためのキーを押してくれる)ものです。
なので、監視対象となる映像が必要になります。要はゲーム画面ですね。
そこで、OBSの「ウィンドウプロジェクター(ソース)」という機能を使用します。OBS上でゲーム画面のソースを選択して右クリックすれば出てくると思います。これは簡単にいえば、ゲーム画面だけのウィンドウを、OBS本体とは別に表示できるものです。

ウィンドウプロジェクターはこんな感じ。

なお、仮想カメラ関連の問題があるのか、最新バージョンのOBSではAutoSplitがうまく動作しないらしいです。最新バージョンを使っている人はバージョンを古いものに落として試してみてください。僕は27.2.4から更新していなかったのでうまく動作しました。

1. AutoSplitをダウンロードする

ここから最新版をダウンロードしましょう。ここではバージョン1.6.1のつもりで書いていきます。
Releases · Toufool/Auto-Split (github.com)
ダウンロードしたら適当な場所に展開してAutoSplit.exeを起動します。

2. AutoSplitの設定 ~目印画像の準備~

起動すると上のような画面が出てくると思います。僕のは設定済みなので、一部違うところがあると思いますが気にしないでください。

ざっくりと各項目の説明を書いておきます。読み飛ばして気になったら戻ってきて読む、でいいと思います。
・Split Image Folder…目印となる画像が入ったフォルダの場所。右にある「Browse…」から設定します。
・Capture Region…2つあるでっかい四角形のうちの左側。監視領域。左のSelect RegionやSelect Windowから対象ウィンドウを選択すると、この枠内に監視対象が表示されます。今回はSelect Windowを使って監視対象を設定します。
・Current Split Image…大きな四角形のうち右側。次のラップを取るための目印として指定した画像がここに表示されます。
・Comparison Method…おそらく監視領域と目印との比較の仕組み。とりあえずHistogramsだとうまくいきます。
・Show live similarity…監視領域と目印画像とがどれくらい一致しているかをリアルタイムで表示してくれます。
・Show highest similarity…その区間中、監視領域と目印との類似率が最も高かった瞬間の値を表示してくれます。
・Timer Global Hotkeys…LiveSplitで使用しているホットキーと同じ設定にしましょう。Set Hotkeyを押すと、次に押したキーがホットキーとして設定されます。たとえば、Start / Splitにspaceを指定した場合は、監視領域と目印画像が一致したときにスペースキーが自動的に入力され、LiveSplitが勝手に操作される、という感じです。下の「Group dummy splits when undoing/skipping」にはチェックを入れておきましょう。詳しくは後述。
・Reset / Start Auto Splitter…始めるときにStart Auto Splitterを、リセットするときにResetを押すといいんですが、今回はResetはほぼ使わないと思います(リセットにも目印を設定するので勝手にタイマーもリセットしてくれます)。
今回はタイマースタートは自動化しません。というのも、マリオデAny%ではサマータイムバグを使用するため、走る前に本体時計を変更し、決まった秒数待ちます。そのため、スタートをAutoSplitに任せると少し複雑になります。今回はこの設定はやりません。

さて、まずは目印の画像を準備しましょう。
マリオデAny%では、多くの走者が"国終わりの暗転の瞬間"にラップを取っていると思います。
では目印は暗転、つまり真っ黒な画像ということでよいのか?
とはいってもこのゲーム、たとえば帽子の国のタワーを出入りするときも暗転しますよね。真っ黒な画像を目印として設定すると、わけのわからないタイミングで次の区間に進められることになるわけです。帽子の国はおそらく3秒くらいで終わることになるでしょう。

それではダメ。でも暗転でラップを取りたい。
そこで、AutoSplitは「画像Aを確認したら次の画像Bのタイミングでラップを取る」という仕組みになっています。
たとえば帽子の国では、以下の2枚をそれぞれA、Bとしています。

帽子の国の画像A。
帽子の国の画像B。真っ黒です。

この2枚の画像から、AutoSplitは「タイトルロゴの出るこのシーンの次にくる暗転でラップを取る」という風に動いてくれます。これにより、意図したものと全然違う暗転でラップを取られる、というような事態は避けられます。
このような目印を、すべての区間で用意していきます。
なかなか骨の折れる作業だと思いますが、みなさんはラッキーです。
こんなところに全ステージの目印画像があ!?

https://drive.google.com/drive/folders/1y_alkzVpqKXsPA8QP-o0m0eogMRqZI5x?usp=share_link

ただし、ゲームの言語は中国語(繁体字)であるという前提で作っています。
AutoSplitを導入しようという人ならマリオデは繁体字で走ってると思うので問題なし。日本語で走っていた人は今日を境に繁体字デビューしましょう。
国の分岐は湖→森、雪→海の順で攻略。また、クッパの国のブルーダルズ連戦はトッパー(緑)→ハリエット(女の子)の順に倒す想定で作っています。

このフォルダをまるっとダウンロードし、圧縮されていた場合は解凍してD直下にでも置いてください。その後、AutoSplit上部の「Browse…」ボタンからこのフォルダを選択して、目印画像の設定は終了です。

注意点として、日本語の名前のフォルダの中に置かないようにしましょう。AutoSplit君は半角英数くらいしか読めないので、親フォルダ名が日本語だと画像ファイルを見つけられません。

一応、目印画像のファイル名の意味について説明します。もし設定を微調整したい場合は参考にしてください。
例として「002_Cap_(0.95)_[120]」。
002…目印の通し番号。この数字の順に目印を読み込むので、ここは変えないでください。
Cap…帽子の国、の意。AutoSplitにおける区間名。多分変わっても大丈夫です。
(0.95)…「監視対象と目印が95%一致したらタイマーを進める」という意味。ここの数値を下げれば、それだけ目印の判定が甘くなります。雪の国やホロビアは似たようなシーンが特に多いので、この数値を甘くすると目印判定の誤作動が起きやすいです。
[120]…おそらくPause Timeにあたるもの。この目印でラップを取ってから120秒間はラップを取らない、という意味だと思ってるんですが、そうでもないことがあったのであまり信用してません。気にしなくてもうまくいってるので、放置しときましょう。

ちなみに、上の画像集にはリセット用の目印も入ってます。

リセットの目印。

これをフォルダに入れておくと、この画面を認識したときに自動でリセットしてくれます。この画面は、走るのをやめて再走のために本体時計を変更するとき必ず通る画面ですね。

また、ゴールの瞬間の画像は目印判定のボーダーを1.00、つまり完全一致としていますが、これはまず反応しないと思います。というのも、ゴールの瞬間だけを目印として認識させるのはかなり困難(タイマーストップ直前には似たような見た目のフレームが連続していてAutoSplitを信頼できない)なので、それならあえて絶対反応しないようにしておいて、最後だけは自分でタイマーストップしよう、という考えです。

3. AutoSplitの設定 ~監視領域~

監視対象となるゲーム画面をAutoSplitに認識させましょう。
まずは認識させるゲーム画面を用意します。OBS上でゲーム画面のソースを選択して右クリック。「ウィンドウプロジェクター(ソース)」を選択すると、ゲーム画面だけ別ウィンドウで開けると思います。位置は変えてもいいですがサイズは変えないように。

次に、AutoSplitの左端にある「Select Window」をクリックして、ウィンドウプロジェクターのウィンドウをクリック。これで認識させられたと思います。

ゲーム画面以外の部分(ウィンドウ上部など)が入っていると目印判定に影響するので、これを除外するための設定をします。さっきの「Select Window」ボタンの下に並ぶ4つの項目を使用します。

左端にあるX、Y、Width、Heightをいじる。

Xを8、Yを31、Widthを480、Heightを270にします。
ウィンドウプロジェクターのサイズをいじっていなければ、これできれいにゲーム画面だけの状態にできると思います。もしズレていたら、XとYを変更して合わせてください。
なお、目印画像を自作する場合は、480×270になるよう縮小することで、監視領域のサイズと合わせられます。ゲーム画面を1920×1080でスクショした画像から作るなら、サイズを25%にすれば480×270になりますね。

4. AutoSplitの設定 ~ホットキー~

普段LiveSplitで使っているキーをAutoSplitにも当てていきます。
必ず同じものを設定しましょう。ちなみにAutoSplitはテンキーに対応していないので、僕のようにずっとテンキーを使ってきた人は残念ですが別のキーに乗り換えましょう。
また、一番下にあるチェックボックス「Group dummy splits when undoing/skipping」にもチェックを入れておきましょう。間違えて進んでしまった区間を1つ戻るときや、区間をスキップするときに、目印画像と暗転画像の2枚分戻る/進むために必要な項目です。

それと、LiveSplit側のSettingからGlobal Hotkeysを有効にしておきましょう。

これはダメな例。Global Hotkeysにチェックを入れましょう。

当たり前ですが、LiveSplitが常に反応するようになるので走ってる間はチャットに返信等しづらくなります。我慢。

さて、これで設定が完了しました。AutoSplit右下部の「Start Auto Splitter」をクリックするか、Start/Splitに割り当てたキーを押すことで待機状態となり、目印を感知し次第LiveSplitを勝手に操作してくれます。

目印が誤作動しないか確認するためにも、一度試走してみることをおすすめします。
Show highest similarityをちょこちょこ確認して、意図しない場面でボーダーを越えそうな瞬間がないかを確認しながら走りましょう。
たとえば、雪の国終わりの目印の場面は吹雪いていますが、雪の国の地上にいると割とどこでもsimilarityが高くなってしまいます。もし誤ってラップを取られるようなら、目印として認識するsimilarityのボーダーライン(閾値とかthresholdとかのことですね)を上げたり、もっと特徴的なシーンを目印に使ったりして対策するといいでしょう。

僕の例でいうと、試走時点ではクッパの国のブルーダルズ連戦(区間名でいえばBunnies)のラップを取る目印を、ストーリームーン取得の赤い背景の画面にしていたんですが、これがかなり手前のドンスケ戦後のストーリームーン取得の場面で反応してしまったため、ハリエット撃破シーンに差し替えました。
一応用意した画像を目印にして通してみたところ、特に問題なかったので大丈夫だと思いますが、念のためご自身でも確認してみてください。




この記事が気に入ったらサポートをしてみませんか?