『絵馬に願ひを!』の「夜滑バグ」についての解説
新参ローランです。通してください。
◇
『絵馬に願ひを!』という、Sound Horizon(便宜上以下SHとする)が発表している映像作品がある。普通、音楽をメインメディアとする集団が発表する「映像作品」と聞けば、ライブDVDとか、MV集とか、そういうものが想像されると思う。が、これは「Blu-ray Disc(便宜上以下BDとする)」の皮を被った、選択式ノベルゲームとでも言うべき代物である。『絵馬に願ひを!』を一言で表す言葉がないので、まさに今「絵馬っぽい」という言葉が生まれるべき感じなのだけれども、うーん、噛み砕いて言えば「分岐のあるアルバム」という感じだろうか。
通常、音楽アルバムは作り手の意図した順序で曲が再生される。そこにランダム要素はなく、円盤を回せばその通りに進むものである。現在は音楽配信サービスやデータでの聴取が主流なので、そもそも「アルバム」という概念自体が古くさくなりつつあるのかもしれないけれども、とにかく「この順番に何曲も聴け!」というのが「アルバム」の持つ拘束性だ。そんな「拘束性」の一部を取っ払い、聴取者――あるいは視聴者にある程度の「介入」を許し、且つ「楽曲のランダム性」や、「アルバムを何周か聴いたら新しい曲が聴ける」という謎の仕組みを詰め込んだ映像作品が、『絵馬に願ひを!』である。
これを踏まえた上でもう一度簡単に言えば、これは「ゲーム要素のある音楽アルバム」であろう。そんなものがあってたまるか、という気もするが、あるのだから仕方がない。
◇
せっかくなのでお浚いついでにもう少し内容について触れてみると、『絵馬に願ひを!』という映像作品は基本的に「左右どちらかを選択する」という行動により物語、あるいは音楽が進行する構造となっている。
例えばBDを再生してタイトル画面が表示されると、その段階で視聴者は「参詣す」「参詣せり」「参詣す」という3種類の選択を選ばされることになる。誤字ではなく、「参詣す」という選択肢が2つ存在するのだ。これらは視聴者の間では便宜上「左す」「せり」「右す」と呼称される。
さて、初期状態で「せり」を選ぶと、いわゆる「クレジット」が表示される。歌い手なり、制作スタッフなりが表示されるあの「クレジット」だ。この選択肢では音楽が聴けないので、最初の段階で半ば強制的に左右の選択を行うことになる。そして「左す」もしくは「右す」を選ぶと、ようやく音楽が再生される。そうしてしばらく音楽を聴いていると、途中で「石碑」と呼ばれる、文章の書かれた選択肢が2種類画面上に表示され、この選択肢のうち、左右どちらかを選ぶことで、次に流れる曲が決定される、という仕組みなのだ。
基本構造は以上の通りであり、4回の石碑選択をして合計で9曲分の動画を再生すると「1周」となり、タイトル画面に戻される。その後はまた「左す」を選んでもいいし「右す」を選んでもいい。流れる曲は「左右の選択肢」により決定されるが、時折「ランダム」で流れる曲が変わることもある。なので、聴こうと思えば固定した「9曲」を聴けるが、プレイごとに様相が変わったり、ランダム的に想定外の曲が流れたりする「遊び」がある作品なのである。
攻略フローは有志たちにより網羅されており、基本的にはこの『絵馬に願ひを!』という作品は研究され尽くしたと思われる。2023年6月発売の作品であるので、1年半以上経過した現在、集合知によりこれが研究され尽くしているのは自然な流れと言えよう。
◇
そんな研究済みの映像作品ではあるが、主に2種類、謎というか、完全には解説されていない事象が残されている状況であろうと思われる。
ひとつは、作品発売当時にSHのメンバーというかSHそのものというか、とにかく主体となるRevo氏(便宜上以下グラサンとする)がインタビュー記事で発した、「通常視聴では聴き得ないトラックが存在する」という嘘とも誠ともつかぬ言葉により、「誰ひとり聞けていないが、実は謎のトラックが存在するのではないか?」という謎が残されている。
もうひとつは、『夜を滑る二人』という楽曲にまつわる「バグ」である。本BD作品は、選択式を採用する性質上、どうしてもプログラムを利用する必要がある。プログラムを利用すれば、どうしても「バグ」は生まれる。これは仕方のないことだ。だがこの「バグ」らしきものについて、公式では「バグ」との明言はされておらず、「全コンテンツはちゃんと聴けるよ(意訳)」とだけ言及されている。そのおかげで、「実はこれはバグではなく、何らかの仕様なのではないか?」という謎が残っている。
本記事は、後者の『夜を滑る二人』にまつわるバグ、通称「夜滑バグ」について解説するものである。インターネット上には有志の集合知により、この「夜滑バグ」に関する考察や調査が進められていたが、なかなか内部ロジック的な部分にまで踏み込んだ記事はなかったため、そういうなんかバグ解析というか、プログラム調査というか、そういう感じのことを生業としている僕が後世のためにまとめておこうかな、という感じである。
まあなんか、せっかく調べたから書いておこうかなくらいの気持ちだ。
「映像作品の内部構造に触れるなんてマナー違反ですよ!」みたいな風潮はあまり見たことがないので問題ないとは思っているが、何か問題があれば取り下げますので、ご意見・ご感想などありましたらご連絡をお願いいたします。
◇
最初のアナウンスとして、本記事の調査は基本的には「合法」である。なので安心してお読みいただきたい。
SHへの発狂が止められずに「なんかおしゃべりしたい!」という気持ちを詰め込んだ一人喋り動画内で、何故「合法と思うのか」という詭弁については説明しておりますので、気になる方や暇で暇でしょうがない方はお聞きください。
素人が「多分そうやろ!」と理解しているだけなので、もし違法でしたら然るべき機関に謝罪したいと思います。すみません。
◇
さて、解説に移りますか。
バグ解説の前に、そもそも石碑選択画面でどのような処理が行われているかについて解説する必要があります。プログラム的に言えば、特定の変数に再生番号を代入しているだけです。が、全てのローランがプログラミングに精通しているわけではないと思いますので、もう少し噛み砕いて説明していきましょう。
例えば「変数A」という、情報を入れておく箱みたいなものがあり、これは最初空っぽになっているわけですが、石碑画面で左右を選択することにより、「変数A」には「夜を駆ける二人」か「夜を滑る二人」のどちらかの情報が代入されます。数学で言う「x」みたいなものですね。「左」を選べば「x=2」となり、「右」を選べば「x=3」となる、くらいの話です。そして、石碑選択後にその「変数A」の中身を参照して、次に流れる映像を決定しているようなのですね。
代入する値は基本的には数値です。ですので、BD再生時点では「変数A」の値は「0」(初期値と言います)で、左右どちらかを選択することで、「夜を駆ける二人」に該当する(仮に)「2」という値が「変数A」に代入されるか、「夜を滑る二人」に該当する「3」という値が「変数A」に代入されるわけですね。
その後、「変数A」の値が「2」であれば「夜を駆ける二人」を再生する、「変数A」の値が「3」であれば「夜を滑る二人」を再生する、という処理が行われます。
全ての石碑選択画面は基本的にこのような構造をしており、上で示した「変数A」には左右どちらかの番号しか入らないため、石碑選択後の映像再生フェーズでは必ず「左右どちらか」が再生されます。これが基本的な仕組みです。
ここで気をつけなければいけないのは、普通に視聴していると「右を選んだから右のルートに進んで動画が再生された」ように思えますが、プログラム処理的には「左右を選んだあとは、【動画再生】という共通処理に戻る」という考え方をしているところです。上図のように、「動画を再生する」という処理は1個なのですね。左右の選択はあくまでも「変数に値を入れる」処理であり、その後に行われる処理は「変数の値を参照して動画を流す」になります。本当はもうちょっと複雑なのですが、簡略化するとそんな感じです。
さて、本来これではバグは発生しえないのですが、石碑選択画面には「参道の正中(天啓)」を選べるようになるパターンがあります。因子を16個集めた先の話ですね。こちらの処理はフロー図として表すとこんな感じになっています。
ボタンを押すごとに「天啓用変数」が持っている値を増加させ、それが8個になったら専用のEDへ進む、というものです。
天啓選択については既に巷に情報が溢れていましたが、例えば「伊坂那美」選択時に6回押し、「天野宮比」選択時に2回押すことでも、最終的には「8回押された」という認識をしていることは、皆さんもご理解されていることと思います。
この処理をもう少し詳しく考えてみると、「天啓用変数」がBD内のプログラムで共通であるため、「伊坂那美」の選択時に6回押下することで「天啓用変数に6プラスされる」となります。その後「左」を選択、次の「天野宮比」の選択時に2回押下すると「天啓用変数に2プラスされる」ことになり、最終的に「天啓用変数の値が8」となった瞬間に「天野宮比」の専用天啓EDへ進むような処理となっています。この「変数が共通である」という概念が、「夜滑バグ」を理解する上で重要になります。
◇
一旦まとめますと、上記で解説した「通常の石碑選択」と「天啓選択」の処理を合わせると、以下のようなフロー図となります。
左を選べば「変数A」に「夜を駆ける二人」の番号を代入して、次の動画再生へ。右を選べば「変数A」に「夜を滑る二人」の番号を代入して、次の動画再生へ。真ん中を選べば「天啓変数」の値を参照し、8未満であれば数字を1プラス、8であれば「専用天啓ED」を再生する、といった具合です。
これだと普通はバグが起こりそうにありませんが、このバグの引き金となった大きな問題点は「通常石碑画面」と「天啓石碑画面」が「別の処理としてわかれている」ということでした。どういうことかと言うと、以下画像のようなイメージです。
因子数が16個であれば「天啓選択画面」へ移動し、そうでなければ「通常選択画面」へ移動します。これにより、因子を16個獲得した場合に「参道の正中を選べるようになる」という処理を実現しているようです。
図を見て頂ければわかる通り、「プログラムそのもの」がわかれているのですね。
◇
さて、ここまで前提を説明してきましたが、「夜滑バグ」の一番の原因について説明します。原因は結構単純なんですが、「天啓選択画面の右側を選んだ処理で代入する変数が、変数Aではなく変数Bになっている」ということでした。これを視覚的に表すと以下の画像のようになります。
見ていただくとわかるように、左のルートは「青字の変数A」に代入しているのに対し、右のルートは「赤字の変数B」に代入しています。つまり、右のルートを選んだ場合は「青字の変数A」に対する変更が行われず、「過去の情報を引きずったまま変数Aの動画を再生する」という処理が行われることになります。
さて、基本的に変数には「初期値」というものがあり、一般的に数値を扱う変数の場合「0」が初期値として利用されます。『絵馬に願ひを!』の場合、この「0」に対応する動画ファイルは「タイトル画面」であることもわかりました。
また、「天野宮比」の石碑選択画面で利用される、上述してきた「変数A」ですが、これは「猿田犬彦」の石碑選択画面でも流用されます。
このことから、例えば因子を16個集めた状態で「猿田犬彦」の石碑選択画面に行き、「生という名の罪過」を選択。その後「左す」を全て聴き終えたあと、再度「左す」を選択。「天野宮比」の天啓選択画面で「夜を滑る二人」を選択すると、必ず「生という名の罪過」が再生されます。要は、1個前に「変数A」に代入された動画ファイルが再生されてしまいます(その他の方法で初期化されない限り)。
また、BDを入れ直し、全ての変数が「初期化」された状態で「参道の記憶」を選び、因子を16個解放したパスワードを入力。「左す」を選択し、「天野宮比」の天啓選択画面で「夜を滑る二人」を選択すると、「変数A」は初期値の「0」のままになりますので、「タイトル画面へ戻される」という処理が行われます。
このことから、「夜滑バグ」で再生可能な動画は、
・「タイトル画面」
・「夜を駆ける二人」
・「夜を滑る二人」
・「生という名の罪過」
・「死を廻る刻の記憶」
の5種類ということがわかりました。
つまりこのバグは「初期値」か「前に選んだ曲」のどちらかを参照しているということになります。そのため、上記5種類以外の再生はあり得ない、ということなのですね。
この曲一覧は有志ローランがまとめてきた過去の情報と一致しますので、間違いなさそうに思えます。
◇
捕捉というか蛇足というかですが、筆者であり新参ローランである僕はいわゆるIT系の仕事をしており、バグ解析なんかをするのが主な業務なので、このようなバグソースを見る機会もあります。体感的に、これは仕様でも特殊操作の処理でもなく、単なる「バグ」であり、隠しルートにアクセスするための仕掛けというわけではなさそうです。
以降は詳しい人向けですが、「変数A」は実際には「GPR19」という変数名で、「変数B」は「GPR1」という変数名なので、「GPR19」の「9」が作業過程で誤って削除されたことで発生したものではないかと推察されます。ちなみに「GRP1」は「伊咲那美」の石碑選択で使われる変数のようなのですが、これは石碑選択時に必ず上書きされるので、「天野宮比」石碑でバグルートを通った後に「GPR1」をそのまま参照することは出来ませんでした。
デバッグの過程においても、GPR19に「夜を滑る二人」に対応するPL番号「137」が代入された状態で「天啓選択画面で右を選ぶ」という処理をした場合、GPR19とGPR1双方に137が代入される状態となるため、デバッグを西風のように駆け抜けて発見されなかったのかもしれません。そもそも「参道の正中」が選べる状況で「左右を選ぶ」というテストはテストケースとして軽んじられるだろうなという気もするので、仕方ないでしょう。納期がパンパンの状況でバグが1個で収まったのは割と奇跡的と言える気がします。
◇
実はこのバグを利用して、隠しファイルとして存在しているらしい「ジャミングされた音声」を正規に聴く方法がないのかを調べているのですが、プログラム的に無理そうです。また、上記のようにバグ処理を解読しても、隠しファイルを聴けるルートは(今のところ)発見出来ていないので、99%、残された謎である隠しファイルが再生されるルートはないと考えられます。
とにもかくにも、「夜滑バグ」はそのような仕組みで発生しており、それによって重大な問題が発生するわけではない、ということですね。また同時に、特殊な動作を行えるわけでもない、ということです。
なのでこのバグのことは「バグである」と切り捨ててしまって問題ありません。邪推しても意味がありません。特殊な仕様でもありません。邪念を捨て去り、「そういうバグなんだな」くらいに留め、割り切りましょう。
今後のみなさまの『絵馬に願ひを!』ライフが充実したものになることを祈っております。
以上、『夜滑バグ』についての解説でした。