Imaginantia

思ったことを書きます

Vket4のboothの解説 / 謎解きという概念

様々な方、Virtual Market 4のこのブースに来ていただいてありがとうございました。現在はpublic化されているので好きな時に見に行くことができます。

何がしたかったのか、これはだったのか、何が起きたのか、を説明します。これに併せて、暗号という恐怖の公開済みの情報と、アスタリスクの花言葉の表面的なネタバレ(2部屋目)を含みます。

この文章の殆どはAmebientを作る前に書かれたものなので参照関係はありませんが、思想自体は一貫しているのでそういう気持ちで読んでいただいてもいいのかもしれません。

 

 

 

 

 

 

 

謎を解くということ

「謎解き」という行為はこの世界でも現世でも盛んに人気なゲームの一つ、だと思います。ところで謎解きって何なんでしょう。何故謎を解くことがゲームに成り得るのでしょう。

な‐ぞ【謎】 の解説

  1. 「なぞなぞ」に同じ。
  2. 遠回しに言ってそれとなくさとらせようとすること。
  3. 内容・正体などがはっきりわからない事柄。

謎(なぞ) の意味 - goo国語辞書

 

なぞ‐なぞ【謎謎】 の解説

  1. 言葉や文章などの中に、ある意味を隠して問いかけ、その意味を当てさせる遊び。
  2. 遠回しに言うこと。それとなくさとらせること。また、その言葉。

謎謎(なぞなぞ) の意味 - goo国語辞書

一般に「そこにあるはずの未だ見えない情報を明かすこと」が、謎解きにあたるのだと私は思います。重要なのは「そこにある」こと、即ち解答の存在です。

この点で「本質的な謎 (未解決問題)」よりも「人為的な謎 (謎解きゲーム)」にエンターテイメント的優位性があることになります。作問者への信頼によって解の探求という行為が無駄ではないことが保証されるのです。

しかし、その安心があるが故にエンターテイメントで終わることになります。私達は消費されるだけでは終わらない何かを作れるはずです。私はそれが見たい。

 

様々な謎解きが世の中にはあるわけですが、その多くは「閃き」と呼ばれるモノを要求していると語っています。閃く能力というのは頭に在る情報を結びつけて構造化し保存する能力だと思うので、人々が時間を掛けて熟練度を上げていくことになる技能の一つに見えます。

特に創作方面には便利な技能と考えられますが、私はあまりこの能力を有していません。代わりに単純に記憶を引っ張り出して一個一個精査しているだけです。あと天啓。

何かを見てそれとは直接結びつかない何かを唐突に想起する技能よりも、その何かから帰納的に・演繹的に導出される結論への道をつないであげる技能が欲しいのです。建設的でありたいので。

そして、私はそれを使う機会を作りたかったのだと思います。本当の意味で「そこにあるもの」のみを使う謎を。

謎を創るということ

この願いに従うと、そこにないものはないということになります。これが問題なんです。

 

人々が認知している世界は、多分に、文脈を含んでいます。そうでなければモノを認識できないので。

逆に言えば、モノが在るだけでそこに文脈が引きずり込まれるのです。つまり、そこにあることになるのです。

帰納的考察の最中にモノに触れてしまうと、それだけで考察領域が無数に広がることになります。私はそれを望ましくないと考えます。

例えば、言語。無数にある単語へ思考を広げなければなりません。また、物理。厳密なモノの制御の可能性が見えてしまうと試さずには居られません。

何にせよ、徹底して「モノを排除」しなければなりません。一般に謎解きが「単に印刷されたモノ」に近い形で提示されるのはこの結果ではあると思います。

印刷機や表示機の存在はメタとして解釈されるんだと思います。でも純粋な立場としてはそれも文脈ですよね。

そういうメタと現在を分離するという高度な枠組みの中で私達は生きてるんだと思いますよ。

そうやって「他の解釈へ至る可能性」を潰して、正解が正解である理由を正しく定められるようにする、ということが「謎を創る」ということなんだと思うんです。

「そこにないはずのもの」はあってはいけないのです。「想定解以外に辿り着かない」ことを信頼できるべきだと思うんです。

帰納の道を絞り切る

さて、帰納によって「次」へ進むためには「その道が正解である根拠」が必要です。何故ならそれが無い限り始めから辿り直せる可能性があるからです。

その根拠を示す方法の一つが、その道以外を切ることです。正確に言うと、切れたように見せる。

これはアスタリスク花言葉2部屋目がすごく良く出来ていて。「ドアの文字列」「カメラフィルタの要請」「部屋名」という3つの要素で1つの概念を確定させているわけですね。

1つから生まれた推測はまだ確信を持つには弱い。2つでほぼ確証を得て、3つ繋がれば悠々と確定できる、くらいにはなるでしょう。既知の人の話は知らないですよ。

つまり「道を辿っていったら他の道が霞んで見えなくなる」わけです。今の道が輝いているから。

 

さて、ではこれはどこまで削れるかなと思って。先の通り、「モノは排除すべき」という観点からは1つの要素から確定できるならばそれは望ましいわけです。

でも要素1つが持つ能力はそこまで高くない。なので、そこで私は、「その選択を肯定すること」及び「世界が確定させること」を行っていました。

前者はインタラクティブであるという強み、後者はVR空間であるという強みに相当するものだと思います。今考えました。

というか今までの文章は今考えました。生まれてしまったのが先です。

というわけでそろそろ解説を始めます。

あのブースは何だったのか

実は私は別にあそこは謎解きだとは言ってない気がするんですけど、まぁ謎を解いてもらう以上の目的はありました。

エンターテイメントで終わらせない為の一つの解決が、何かを得られることです。特に、普遍的な知識を。

私は「暗号という恐怖」という作品でやりたかったのも同じことで、アレは「素因数分解という現代的なパズルを想起する」「その解を見つけ出す経験を得る」ためのものです。

そしてその本質は今回も変わっていません。素因数分解の性質が暗号方式の一部に使われる本質的な理由は難しいからです。難しいというのは、計算しなきゃいけないモノが多すぎるからです。でも問題を作るのは簡単です。そういう一方向性が重要なのです。

でもアレは解けます。何故なら具体的な問題だから。一般に問題というのは情報がわかればわかるほど解きやすいです。そうですよね。

 

今回のあのブースはライフゲームの一方向性を舞台にしたものです。そしてそれ以上でも以下でもありません。折角のかっこいい名前をそのまま世界として置きたかったんです。そういう小さな願いです。

あの世界はとても面白いとおもうし、私の好きなものの一つなので、それを知ってもらえるだけでも意味はありました。実は一番最初にVRChatで作ったワールドギミックだし (その時はライフゲームを知ってる人は周りに居なかった)。

Inter-action on the Math には代わりに1次元CAの Rule 110 が置いてあります。みんなライフゲーム知ってるだろうからやるなら「強く」したかったのと、Rule 110 の細かい話はなかなか聞かないから。

そしてあまり語られない「システム」としての、純粋な数学的対象としての性質を。またその為の「探索という計算」を。得られるようにしたかったんだと思います。

つまり「本質的な謎」に近いものを提示したかったんです。

さて。

第一段階想定解法

場がまず枠で区切られていること、その中がグリッドで区切られていること、グリッド内にいくつか木が生えていることを認識します。

中央に2つのピックアップが存在し、片方の種袋によって種を落として木が生えられること、それがオレンジ色であること――即ち元々存在していたのは緑色であること――を認識します。

そして、もう片方の林檎である程度の領域の木を消滅させられること、試行錯誤の末に今ある林檎の位置付近の木が消えることがわかります。

最後に中央の4区画には木が生えないことがわかります。ここまで「システム面」の話。

で、「世界観」の話。真ん中には大きな板と小さな紙があって、前者は作者の情報を示すもの。内容は拡張メニューのものと一致します。

後者には謎の不動の文字列「23/3」と動くパターン、そして謎の英字列。さて。

 

動くパターンから「2次元セル・オートマトン」を想起します。この動きはその性質――全体が段階ごとに変化していくこと――と一致しています。

すると「23/3」がライフゲームのルールを示していること、この動くパターンが「銀河」であることが検索等によってわかります。

あと謎の英字列は木を生やしたり消滅させたりすると変化することが観測されます。全て消すと A のみになるわけで、このグリッド内部の木の配置が対応していることがわかります。

即ち、この段階で木の配置がライフゲームの盤面として扱われることがわかります。これはきっと自然だから。

では問題はどの盤面を構成すればいいのか。銀河のパターンは幅が奇数、場の枠は全体で12x12で合いません。合わせるためには恣意性が必要です。

きっと数を数えるときに無意識的に床の色の違いに気づくはず。でもそれは特に解を与えません。

 

…次にワールドに入り直した時に緑色の初期盤面に気づきます。つまり、此処に参考にすべき盤面が在ります。

ライフゲームで起きる出来事は「次盤面に進む」こと。きっとこれが正解かどうかの確証はなくても、想起さえすれば試し、実際に成功する体験を得る結果に至るはずです。

第二段階想定解法

遷移で起きることは、「周りから木が生えてきて」「一面がオレンジ色に染まり」「オレンジ色の大きな木が生え」「緑色になって」「初期盤面に戻る」こと。

そしてその後は「種袋で水を吸い」「林檎で薄緑色の木が出現する」ようになります。注意深く真ん中の銀河を眺めていると時間反転していることもわかります。

これらの要素から「時間の向きが逆転している」可能性を想起すると、それ以外の解釈がなくなるはず。つまり今、確かに時間が逆転していると認知できます。この段階で銀河の反転に気づくことになるかも。

ではどうするか。先程の成功体験は「次盤面を描くと進む」というものだったわけですが、今時間軸が逆転したことで再解釈の余地が生まれます。即ち「時間軸方向に描くと進む」。

つまり、次がこの初期盤面になる盤面を探すということ。未だこの段階だと確証は無いかもしれない。それで大丈夫。

 

探します。手では見つかりません。調べます。調べて。もっと調べるときっと「エデンの園配置」に辿り着くはず。探索プログラムを組んで解が存在しないことに気づいてから調べた人も居るかも。

するといろいろなコトがくっつくはずです。初期盤面の名前。林檎。生け垣である理由。葉の色。意図通り頭に情報が流れ込んだ人が居てたらいいなぁ。

多分これを適切に認知できていたら、これに辿り着くことが正しいことがわかるはず。つまり「作者が時間を逆向きに辿らせようとしていることは間違いじゃない」ことに確証を持てる…はず。

自分の行動を真正面から阻む者が居るんです。何らかの手段で以て、その目的を果たしたい。そう思ってほしかった。

 

ではどうやって回避するか。初期盤面、即ちこの世界の最初の段階については過去に戻れないかもしれない。でも今はそうじゃないわけです。大きな木が生えている。

この初期盤面を確認するとき、きっと上空から見た人がいくらかいるはずです。そしてこの育った木が中央の4区画を丁度埋めることも観測したはず。

つまり、初期盤面はダメでも、その中央4マスを埋めた盤面の過去はあるかもしれない。あとは計算するだけ…と言ってもそれはそんなに自明ではないかもしれませんが。

とは言え、「人力でちょっとやってみてもダメ」「一個前を計算するのはそこそこ大変」なので計算をさせるしかないことは頭のどこかにあるはずです。なので。それに従って。

 

で、計算して、きっと解は見つからないことでしょう。

ここで状況を整理してほしいんです。

 

エデンの園配置である初期盤面。そうではないかもしれない現在の盤面。

エデンの園配置であるというのは、「その長方形区画のパターンが任意の盤面の次盤面に出現しない」ことを指します。即ち。

エデンの園配置でないことを示すには、「その長方形区画を含むパターンになる盤面さえ示せば良い」。つまり定義上、外周は関係ないのです。そしてその解釈が正しいことを床の色の違いが示しています。

後は条件を緩めて計算するだけです。

 

最後におまけコーナーもありますけど、今までに比べればどうということはないと思います。

そうならなかった世界

当然こうはならないと思うので、では、これで済まなかった場合を考えておきます。

想起に失敗したケース

  • セル・オートマトンを知らない
    • 友人もしくはtwitterでの情報収集で見つかると思います
  • 初期盤面に気づかない
    • 一回諦めることは想定済みなのでもう一度入ることがあれば新情報が得られると思う
  • エデンの園配置の概念に辿り着けない

計算系

  • まず計算が出来ない
    • ごめんね
  • 計算が遅くて終わらない
    • 単純に考えると2144通りなので枝刈りの必要性はわかると思う、単純な枝刈りのやり方もわかると思う
      • プログラミングができれば…
    • あと多分SMTSolverが大正解
  • 全領域が生の4x4盤面の一個前が存在しないと思った人
    • 気持ちはわかる (でもそしたらもっと簡単にエデンの園配置が見つかってると思う)
  • 四回対称性に引っかかって解が見つからなかった人
    • 実は二回対称の解までしかない、まぁすぐ気づくでしょう…
  • 解が一意であってほしい気持ち
    • 気持ちはわかる (一意解になる問題を探していたけど綺麗なのが無かった)
    • 「正解」よりも「結果」を重視していた点があった (問題を解けることを目指していた)

解釈問題

  • 生と死を反転したらどうにかなるのでは説
    • 種袋を1、林檎を0のシンボルとして解釈したケース
    • 銀河がそのままだからありえないかなぁ
  • 真ん中の木をカウントしていいのか
    • 元々盤面をどう認識しているかと言えば「上から見たときの有無」だと思うので、自然かなと
    • 特に今まで一切操作できなかった中央4区画に居るので意味を感じて欲しい
  • 真ん中の小さな紙で文字を描きたい派
    • 中央4区画が弄れないのが不自然という気持ち (図形的解釈のほうが適合している)
  • 葉の色は季節に対応するんじゃないか説
    • それでも良いけどそれよりもっと単純な解釈 (時間経過) で十分ならそれに留めるべきな気がする
    • まぁ薄緑→緑→オレンジで伝えようとする方が悪いのかしら (とはいえ時間についての情報はそれ以外で示しているんだけど)

この辺から怪しいやつ (反省込み)

  • なんで遷移時に木が生えてくるの / 最終段階だと木が消えていくの
    • 視線誘導の為に置いたんだけど創り手じゃないとわからないな (はい)
    • 手入れをすると繁茂する / 今に至る前は更地だった みたいな
  • あの木が成長しても桜にはならない
    • 桜という概念みたいなものだと思ってください (いうて結論から逆算しようとした人いないでしょ (即座に詰まるので))
  • 水を吸うのがよくわからない
    • 私もわからん、でも少なくとも種は吸えない (育ち始める前に回収されるので)
    • 妥協点として水色にしたんだけどラベルの絵柄を変えるべきだったのかもしれない
  • その他外部から情報を拾ってこようと思われた系
    • 根本的に「純度の高い謎」にしようという気持ちが伝わっていないらしい
    • 逆問題の困難さという楽しさを伝えられなかった私の失態
  • 何故「次」へ進むのか?の解釈
    • わからん (なんでだろう) (時間が逆転する原因もわかんないですよね)
    • 何故扉が開くのかよりマシでは?と思ったけどコレはその文脈を受け継いでないからダメかも

情報の過不足

解釈領域ではないはずの話

  • 銀河の存在意義
    • 根本的には時間の向きを確定させるためにある (砂時計と同じ役割)
    • ライフゲームのパターンであることは必要だったと思う (でも逆転がもうちょっとわかりやすい方がよかった感)
  • 葉の色
    • 初期盤面と自分の操作を見かけ上分離したかったので意味を持たせた
  • 林檎が欠けること / 回らないこと
    • あれは盤面の大まかな状態をそのまま表しているので欠けるし回らない
  • 地面の市松模様
    • 綺麗に配置するための情報 (生えすぎてると見えないけど)
  • 小さな紙の英数字 (base64)
    • アレは盤面の同期を他者と確認する方法として用意した (No Perfect Syncと意味的に繋がってる)
    • けど、アレを言葉で伝えるのも大変そうなので多分意図通りに使われていない
  • 「鍵」
    • おまけがあるよっていう意味だったけどまずそこまでみんな辿り着いてない
    • というか鍵だと認識されてない (かなしいね)
  • 白枠の緑色の部分は何だったのか
    • おまけに出てきます

総括

「暗号という恐怖」の方が私がミスを修正してから即座に正解が出たので、みんなすごいんだなぁと思って色んなものを混ぜ込んだわけですが、現時点 (2020/07/30) では最後まで行った人は一人だけです。うーむ。

とは言え境界条件だけが問題だと思うのでそのうち出てくるとは思うんですけど。この文章を見て思い出してくださった人とか。もしやる気のある人が居たら。

今回の問題で私が恣意的に設置したのは「真ん中の4マスの制御」だけなので、割と純度の高いパズルになってたと思います。少なくとも私は好きです。

いろいろと大分疲れたので当分はこういうスタイルではやらないと思います。

恐らく最も大変で最も問題だったのは一貫性を作り上げることだったと思います。求める行動に当てはまる解釈を割り当てること。

こういうのは解釈を自分で思いつかないといけないので厳しい。複数人だと色々アイディアをもらう余地があるし解釈が妥当かどうかの検証が出来るのでそう望むべきなのだと思います。

…とはいえ今回で意図通りではない大きな問題は恐らく1点のみで、計算力だと思っています。

だいたい私はこういう探索問題とかは某 (競プロとかCTF) のおかげで書くのに慣れているので、まぁそれくらい…みたいな気持ちがあった。気がします。

あと「暗号という恐怖」のときには逆に簡単すぎて既存のプログラムでぐっと解けてしまったということがあったので、そうならないように複雑にしちゃったんです。

難易度調整難しいですね。いや難易度なんだろうか。常識度とかその辺でしょうか。VRChatのどの界隈にもある程度のプログラマが (わりと) 存在すると私は思っているんですがまぁ測ったことが無いのでわからないですね…。

少なくとも次に何かこういうの作るときには周りの人のテストプレイを前提にやっていきたいところです。はい。

なんであれ来ていただいた方々、遊んでくださってありがとうございました。