Imaginantia (original) (raw)

phi16.hatenablog.com

やっと終わりました。なんと2年も経ってしまったようです。

Steam版が出てくれて本当に助かりました。2章3章はDesktopでやりました。VR被るのは大変なので。

特に先延ばしにしていた理由はありませんが、ちょっと最近いろいろゲームを観て調べたりしているので、その流れでやりました。

以下、特にネタバレを書くつもりも前みたいに色々丁寧に書き連ねる気持ちもありません。

少なくとももうこの時点で、ブログに書いた「折角なのでやります」という約束をやっと果たしたことが示せたので、私としては十分です。

が、折角なので前のブログの内容を参照しつつ、数点書いておこうと思います。変わらず概ねネガティブ寄りだと思います。

ちなみに全体のシステム面の雰囲気は特に変わっていませんでした。ただDesktop版だとメンタリングゲーム自体が違うのかな?まぁでも「本質」は特に変わっていませんでした。変わっていないということは、そういうことです。

まぁ、同一システム上で動いていて且つ制作工程も変わってないと思うのでそれはいいです。はい。

前に「主観性」と「企画の解釈」の話を挙げましたが、どうやらディレクターへのインタビューを見てみたところまぁ概ね想定に近い雰囲気を感じ取りました。

主観視点、面白いですよね。難しいということを除いて

結局多分私が不満に思っているのはそこなのだと思います。「丁寧さ」って言うんですかね。それぞれが、面白さを出そうとしているのだけど、協調しきれてないんだと思います。

まぁ、この辺の細い話はもういいです。

結局過去改変についての詳細な説明はどこにもなかった。そういうのって典型的に葛藤とか描かれるもんだと思うんですけど (典型的すぎると言えば、そう)、まぁ、いいや。

唯一書いておかなきゃいけないと思う話があって。

「これはHUDがあれば一瞬で解決する話です。」ってブログに書いた部分があるんですが、HUDがあるのに解決してませんでした。正確には解決はしてるんだけど別の問題が発生していました。

なるほど。そうなるのかと。

具体的には「拡張夢に入れる」ことを示すHUDが「新エリアに入る度に」出てくるので、めっちゃシリアスなシーンであっても右上にひょろっと出てきて没入を削ぐんですね。

そういうところよほんと。

あと「システム上・ストーリー上の都合で存在しているもの」がそこそこあるということが (最後までやってやっと) わかって寂しい気持ちでした。

前に書いたシェルターの広間の4つのドアが同じ理由が多分それ。

あと終盤の終盤で敵ドローンが存在している理由があからさますぎるとか。

そういえば前に私のブログについて長文送ってくれた人が居て、「ロード画面に意味がある」って言ってたので期待してたんですが実際に見て笑っちゃいました。それで長いロードが許されるものではないだろ。

バタフライエフェクトは起きることがありました。が、精密に流れを追おうとすると破綻すると思います。

時計塔は大事でした。しかしその「印象」がやっぱり少ないですね、黒画面・2D音響だからっていうのが結構理由にある気がする…。

そんなところかなあ。

まぁゲーム本体の話はもういいです。

色々レビュー見たり感想見たりして結構納得したことがありました。私に似た感覚の持ち主は少なくともそこそこ居るっぽいのです。

つまり本当に両側のレビューがあるんですよね。で、ポジ側の人は「遊び方がわかってないんだろう」みたいなことを言うんだけど、ネガ側からすると「まずゲームとしてどうなの?」っていう感想になってる。

「遊ぶ側が譲歩するようなゲームは良くないよね」みたいな話題を最近twitterで見た気がするんですけどまぁそれはおいといて。

「推理を自分でやらないと面白くない」って言ってるレビューと「推理できすぎて面白みが少ない」っていうレビューがMeta Storeにあってウケたけどまぁおいといて。

あ、あとバグ無かったって言ってる人居ましたけど私は結構遭遇しました。手持ちを開いた状態から戻れない (進行不能) とか。画角がズレた状態で固定されてUIが見えないとか。まぁいいや。

あと私と似たようなこと言ってる人が居てありがたかったりとかした。

www.youtube.com

note.com

ネガ寄りのものばかり挙げてますが基本的にポジティブのほうが割合は高いです。Steamでさえ。

なので、やっぱり「ゲーム慣れしてる人とそうでない人」みたいな感じで本当に感覚が二分されてるっぽい。すごい興味深いです。

いや、だからこそゲームメディア系のレビューが軒並みポジティブなのが意味がわからないんですけどね。まぁ別にそんな見てないですけども…。

これとかはみんなポジネガ書いててとてもいいですね。中身はあるので最低ラインは越えてるんですよね、わかります。

なんかこの、「プレイヤー層の違いを可視化した」という点では偉大なゲームかもしれません。


最初に書きましたけど、「協調しきれていない」のが全てかなって、私は思いました。

キャラデザ、キャラモデル、シナリオ、背景モデル、グラフィックデザインゲームデザイン、グラフィックエンジニア、メインプログラマサウンド、曲、なんだかみんな各々やれることはやってるんだけど、それらが噛み合わなかったんだと思う。

で、こういうときの原因は…。

まぁ。

…最近はできる限り「まぁ」という言葉を使わないように心がけてるつもりなんですよ。

断片的にいくつか書きましたが、書いておきたいと思ったことはこんなところでしょうか。

「感覚の違いがわかるゲーム」なわけなので個人的には近隣の人の感想を聞いてみたい気持ちになりますね。できれば言語伝達ができる人だと嬉しいです。

まぁ、そんなことをしても何か書いたりしても意味がないことはわかっていますので、私は私のやるべきことをやっています。

このブログは単に約束を守りましたという程度のものです。

終わり。

これは多分反省文に近いものです。ちょっと経ってしまいましたが、Musical Treasure Hunt (以下MTH) 関連の話です。

前にちょっと文章を書きました。少し引用します。

「ハートライトを振って参加して!」というのはいい言葉ですよね。「力を集めて!」とかだと「私たちには何かが出来る」ということを暗示する (ので、それに相応する因果を拾ってこないといけない) わけですが、「参加」だともう純粋に楽しく振っていることだけで成り立ちます。

別に間違ったことを言っているつもりはありませんが、これはこの MTH という「特殊な状況」で成り立っている、という大前提があったのだな、ということを思ったのでした。

全く同じ言葉が、Musical Treasure HuntーSpectral Remix (以下SR) に登場します。しかし、SRでは成り立っていない、ように感じたのです。つまり前述の私の引用だけでは、その十分性を示せていないということになります。

MTHとSRで同じ言葉が使われていることを、例えばもしかしたら私が助長したかもしれないと勝手に責任を感じるのは大変傲慢な話かと思いますが、少なくとも自分の書いた文章の意味の不正確さについては責任があるので、それについて書こうと思います。

MTHでは「精霊さんの音に対して」「キティちゃん達がある程度セッションすることができた」タイミングで、キティちゃんから「おねがい!みんなも一緒に、ハートライトを振って参加して!」と呼びかけられます。どこかに書いた気もしますが、「突然観客に何かを要請する」というのは純粋な鑑賞態度であったところをインタラクティブ環境に呼び戻す行為になるので、ある意味、冷めます。しかし、MTHではうまく「呼び戻しすぎないように」なっています。

これにより、観客は自然にロールを獲得し、鑑賞的態度から離れることなく流れについていくことができます。またこの緊張過程からの劇的な緩和が入ることで、観客を自然に鑑賞的態度に戻すこともできています。

これがもしも「参加して!」ではなく「力を集めて!」だったとしましょう。するとハートライトを振って出てきた音符は「力」だということになりますが、それは「ただ手を振っただけで出てきたもの」なので「音符として出現したこと」とも合わないし、軽微な自身の労力と緊張状況に対する効力が釣り合う実感が持てません。つまり観客に「何かができる」という実感を持たせるには弱い、ということになります。対照的に「参加して!」だと、音符が出ているだけで「参加している」ことは明らか (音符がこれまでにない挙動をする為) なので、そこに違和は発生しません。

そういうことを、元々書いていたのでした。

SRでは「欠片たちが沸き立って」「精霊さんが一緒にセッションしようと言った」タイミングで、キティちゃんから「みんなも一緒に、ハートライトを振って参加して!」と言われます。構造だけ見ると似通っているように見えますが、状況はかなり異なっています。

緊張状態ではないので、観客の興味は比較的自由です。実際空間には興味を惹くものがたくさんあって、話を聞いていないこともあるでしょう。それを許容している空間だと思います。つまり鑑賞的態度からは最初から少し離れている状況です。

その中で、言われた通り「セッションに参加」しようとする人達がいます。観客は比較的能動的に動けているので、そこにインタラクションが入ってくるというのはそこまで不自然には感じないでしょう。ただMTHのように「全力で振る」のは音の感じから違うでしょうから、リズムに合わせようとすると思います。特に指示があるわけではないので、観客は能動的に合わせるリズムを選択しようとします。しかし、合わせるべきリズムがないのではないかと思います。

例えばここは「激しい空間」ではないので、「一拍ごとに前に振る」のでは音の細やかさに合わないでしょう。「二拍ごとに前に振る」あたりが自然とできる範疇かもしれません。しかしキック音は不規則に鳴るので私達の動きとは合いません。キティちゃんと精霊さんたちの掛け合いに合わせようと思っても「掛け合いが始まるタイミング」が不規則ですし、アクションとリアクションが異なっているので合わせることができません。合わせずに自由に振ってよいということなのかもしれませんが、そうするときっと「セッションに参加」しているのとは違うような気がします。

つまり観客は「セッションに参加する方法がある」はず (キティちゃんが言ってることだから) なのに、「セッションに参加できない」状況になります。私はなりました。元々鑑賞自由度の高い空間だったので好きに周りを眺めたり空間の音を聴いていることはできて、暇になったりはしないんですけどね。

結局引用した文章とのズレがどこにあるかというと、「楽しく振っていることだけ」で「参加」できる、とは限らなかった、ということだと思います。勿論「同じ言葉」としてもコンテキストによって意味合いが違ってくる (今回は「参加」の目的意識が違う) ものなわけで、そのまま当てはめられるわけではないのは明らかですが。

さて、以上とりあえず弁明をしました。結局私は何を書けばよかったんでしょうね。作品が成り立っていることに関して丁寧に一個ずつ要点を挙げていくことはできると思いますが、そういうものたちは互いに複雑な連関があるもので、テキストで表現できる気はあんまりしません。いえ、昔の批評家はそういうものをちゃんとやっていたのかもしれませんが。

まぁ言葉というのは結局"そういうもの"で、うまく読み取ってくれる人が居ることを願うことしかできないのだという気がします。

この文章の言葉選びはとても悩みました。

終わり。

最近プログラミング界隈 (?) のついったーが賑やかみたいです。特に関わりたいわけではありませんが、少し関連する話なのかもしれません。

世の中にはいろいろな方法論というものがあります。デザインパターンとかテスト駆動開発とかアジャイルとか、あと言語それ自体、またはフレームワークの設計、なんとか指向、その他。

それによってうまくいくことがあるから使われているんだと思います。そこはいいです。

しかし「それがないとうまくいかないから使っている」という側面もあるはずで。つまり、元々うまくいくなら、もとい、自分が物事をわかっているなら方法論をわざわざ知る必要はなかったという視点も重要な気がしています。

別にこれは「天才になれば世の中の方法論は無視できる」という話ではなく、「私達は凡人だから方法論を使っている」という自覚の話です。

「それが良い」んじゃなくてまず「私達がダメ」なのです。

例えば「数学」も方法論で、こうやると物事がわかりやすくなる、という目的の為に作られ発展してきたもののはずです。色んなツール (群論とか) を作ってわかったことがたくさんあるわけですが、でも証明を展開すればツールを使わないこともできるはず。つまりツール無しでの推論には (人間の) 限界があったから、それに対して人々は方法論を整備することで、物事を知るに至ることができたわけです。

そこには「自分のできなさ」への自覚があると思います。個人ができないのではなく、人類は全体として、そこまでできるようにはなっていない。

なので凡人の「私」には、そういう道具が必要なのです。世界をよく観る為に。

ただ、どうしても「道具の良さ」を語りすぎる傾向は全体的にあるんだろうなって思います。私はそれは「人類が不出来なのは当たり前なので言うまでもないから」と思ってましたが、もしかしたら人々そこまで考えてないのかもと思えてきました。

要は信仰です。うまくいかない状態から良い状態に移った体験が劇的すぎて、それに縋ってしまうという状況。これもまた人類の不出来さかもしれませんが。

しかし物事は全てトレードオフなので、良いことしかないことはありえない。そこには実際には「劇的である為のコンテキスト」があって、それを共有しない人間は共感できない。だからコンテキストごと語る必要があるわけですね。

ただ逆に、「元々できるなら、方法論を選ばなくても良い」というのも真であると思います。

小さいコードを最適化するなら高級言語を使わなくても良い。自分が把握できるサイズのゲームを作るなら役職分けをしなくても良い。

もちろんその対象が複雑になるにつれて「そうしないなんて大層な自信持ってますねえ」みたいな感じにはなっていくでしょうけど、オブジェクト指向特有の問題が別パラダイムの言語では発生しないように、根本的なモノの考え方が違う場合、よく知られた解決法を使わない方が断然やりやすいなんてことはあるわけです。

ただそんなに安々と既存手法を捨てるものではないと思います。

結局は「できないこと」と「できること」の差分に対応してシステムがあるわけなので、どちらかを忘れてしまっては意味が損なわれてしまうだろう、という話でしょうか。

まぁそれはそれとして、方法論を知らないと、「人類は何ができるのか」すらわからないので、そこは学んでおいたほうがいいのだと思います。

知らないことと、知って使わないことは違いますので。体験しないと批判できないように。

これもまた凡人の為の手段かもしれませんね。

おわり。

特に内容がある記事ではありません。メモです。

ゲームを作りたいので、ゲームについて考えようと思いました。

「ゲーム」とは何か、ということを前に書きました。ここでは「状態空間と制御目標である」という話をしています。

が、現代のゲームはそこから離れつつあることも事実です。先の言い方による枠組みには (まぁとても広いので) 収まりはするものの、そこがフォーカスではない、ようなケースが多いと思っています。

既に上げた中でも、Mountain は極端な例だし、Edith Finch もそうですね。一時的な制御目標みたいなものはあるけれど、フォーカスはその外にある。

他にも Minecraft でただ散策するとか、CP2077 の街を走り回るみたいな「ゆるい体験の良さ」を求めて「ゲーム」をする、ケースがちょこちょこある気がします。

そして VRChat でのんびりする、というのもその内の1つなのかもしれません。

「制御」という枠組みは本当に広く、先の「歩き回る」「のんびりする」も解釈に入ります。

が、それは本質的な部分ではない気がします。私はのんびりしたいからのんびりしているだけで、情報を入れない為にやってるわけではありません。それはそう。

結局ゲームも「制御」が主目的だった時代からは段々シフトしてきていて、例えば交流とか、ストーリーとか、空気感とか、そういうものを展開するための媒体として使われることが多くなった、と認識しています。

つまりは「制御」という枠組みは、何かをやるための下地でしかなかったということ、だと思います。

しかしそういう考え方はあらゆるものに適用できますね。ストーリーをやるのは何の為かというと、例えば感動させる為、みたいなことになる。

結局任意の媒体 (小説、動画、etc) は「何か」を体験者に植え付ける為に存在していて、それを行うための手法としてテーマが選択され、それを効率的に行う為に媒体が選択され、それを的確に行う為に表現が選択される、というような枠組みが発生している気がします。制作者の意図とは関係なく。

勿論この序列が常にそうであるわけではなく、言えるのは「目的の為に目的が設定されている」ということでしょうか。なんなら「何かを植え付ける」のもまた何かの為でしょう。

だけど最終目的のことだけ考えてても何かができるわけではありません。

それを適切に崩していくことで自然と「制御世界」が発現する、辺りが望ましい「ゲームの生まれ方」なのかな、と思います。

が、制作過程でそうなることはほぼ稀なので、まぁ、最終的にそういうことにできていたらいいな、くらいですね。

脱線しました。

なんでゲームを作りたいかというと、多分単純に「私の能力が最大限活用できる分野だから」だと思います。正確に言うと他ができないからです。

つまり何かを体験させたい、と考えたときの手段として、私の中では一番最初に出てくるものがゲームである、というだけです。

じゃあなんでこれまでゲーム全然つくってないのかというと、よくわかりません。まぁ体験させたいみたいなものが特になかったという感じはある。

いやあるんだけど、筋がまだ通ってないから具現化できない、というのが事実に近い。

VRChat にはゲームワールドというジャンルがあるわけですが、多分私が作るとそこからは外れたものになるんだろうなと思います。まぁそれで良いし、それによって枠が広がればなお嬉しいことです。

まぁ、単にゲームじゃないのかもしれません。「ゲームのテクニックでできたワールド」になるのかもしれません。

昔から私は「世界」というジャンルの話をしていますが、まぁもうちょっと作ってみないとジャンルとして生きていかないですね。

前に「世界の深さがユークリッド空間に制約されるのが勿体ない」ということを書きました。そういう方向性での具体例をもうすこしどうにか出してみたい気持ちもあります。

単純に遊んでて楽しいみたいなのも作りたいですけどね。まぁもちもちは両方を満たすものとして作れたような気はしていますが。

全然具体的な話してないですね。まぁ今何かその辺を考えているというわけではないからな。

ただ結局私一人だと色々と無理があるなっていつも思います。モデリングもできんしライティングもできんし音もできん。

まぁ必要になり次第お願いするみたいなのもありだなって思うんですけど、その前に多少は組み立てておきたいよね。

毎回色々考えるたびに時間が掛かるなあって思ってメモ書きで止めちゃうの、よくないです、ほんと。

1年くらい掛かる気持ちでそろそろ何か作りたいですね。自主制作で。

来年がそれになったらいいな~。

私は「ゲーム文化の人間」であることは間違いないんですが、ゲームを作ってるかと言うとあんまりそうではないと自覚しています。

なのでもちもちは「私の持つゲーム観」を出せる希少な機会でありました。ちゃんと楽しくなれるものが作れて嬉しかったです。

実はあれは (媒体としては) ゲームではないという気持ちで (色々と言い方は制御してるんですが…)、まぁ、要素としての、というところですね。

そういうの、VR 空間だとかなりやりやすい (と思っている) んですがいわゆる 2D スクリーンだとなかなか大変そうです。実装も。

でも 2D スクリーンから逃げるわけにもいかないんだよな。いつかちゃんと作りたいので。

内容ないので消そうかと思ったんですがまぁ雑記だしいいか、と思ったので残しておきます。

では。

昔々、VRChatにはWebPanelというものがありました。今でも「そんなものがあった」という噂みたいなものだけが語り継がれている気がします。

私が全部を知っているわけではもちろんありませんが、私が喋れることはそこそこある気がするので、ここに記録として残しておこうと思います。

随分昔の話をいろいろ書いているので、もしも一部消してほしいなどの旨があれば、ご連絡ください。

SDK2の時代

現在は2024年9月です。SDK3、即ちUdonがやってきたのは2019年12月なので、もうSDK2が廃れてから随分経ってしまったようです。

Udonがない頃」というのは、Udonがないということなので、今みたいにC#でぬるぬるプログラムを書いたりなどできません。できることは限られていますが、でも何もできないわけではありませんでした。

例えばUnityの機能でアニメーションを再生することができます。オブジェクトにPickupコンポーネントをつけて、持ち上げたりすることができます。これだけでも楽しかったものです。

そしてSDK2の機能として、「VRC_Trigger」がありました。今でも CyanTrigger として精神性が引き継がれているみたいです。

これは「どんなときに」「なにをするか」を指定することで動的なアクションを記述するものでした。キューブをInteractするとアニメーションを再生するとか、別のオブジェクトをOn/Offするとか。

特に同期の機能も付いていて、「Triggerを発火したこと」を記録し、late-joinerに同期させる、ということができました。"AlwaysBufferOne"*1 とか懐かしいですね。

というわけで、多少の基本的な機能はあるんですが、「何でもできそう」ほどの自由度は勿論ありません。

だから、この時代は「できることを全部やる」という感覚でワールド弄りをしている人が多かった、と記憶しています。

いろんな人ができることを模索していました。イワシの話とか、StandardAssets、ToyBoxとか、話題は色々ありますが書いているとキリがないですね。「できること」を知るために、その頃はコミュニティ間の交流も盛んだったような気がします。

SDKのドキュメントみたいなものも満足にはなかったので、コンポーネントが何を意味するかみんなわかってなかったのです。試行錯誤してこういう風に使えるんじゃないか、みたいな感じで新たなテクニックが見つかって、「技術革新」と呼ばれる、という現象が度々ありました。ひどい時期は一日一回くらい。

そんな「不思議なコンポーネントたち」の中の一つとしてあったのが、VRC_WebPanelです。

WebPanelも同じようにいろんな人が使い方を試し、運用し、便利に使われていました。これを使えばできること、みたいなものがたくさんあった。

だけど、2018年8月18日、突然のVRChatのアップデートにより、消えました。

medium.com

よく覚えています。のんびりとバーカウンターみたいなところで雑談していたら何やら騒がしくなって。聞いてみると「今VRChatを再起動すると、アップデートが入って、WebPanelが動かなくなる」と。

大層びっくりしました。ちょうど次の日にちょっとしたイベントがあってWebPanelが使われる予定だったので、無くなったら困ります。状況を確認するために再起動すると、全てのWebPanelを利用していた板が、謎の黄色と黒のストライプのテクスチャ*2になってしまっていました。

即日にお葬式が開かれました。

WebPanelお葬式ワールドを製作しました。
フレンド+で開いているので、ご参列の方は入場して右手のイワシを持ってお並びください。#VRChat pic.twitter.com/f9MsTvP26j

— ちう (@ChiuGameProject) 2018年8月18日

界隈の人たちはみんな来ていた覚えがあります。(結果的に) とても強く愛されていたコンポーネントでした。

何ができたのか

WebPanelとは、名前の通り「Web」を映す「板」です。簡単に言うとWebブラウザです。

昔のVRChat関連の記事を漁るといくつか片鱗を見ることができます。

bibinbaleo.hatenablog.com

例えば、この頃はギミック側で「現在時刻」を知ることすらできませんでした。だからWebPanelを使っていました。

y23586.net

何なら「時計が表示されるWebページ」を直接置くことで時計代わりにしていました。

さらに私が知る頃はまだVideoPlayer類 (VRC_SyncVideoStream?) の使い方がわかっておらず、WebPanelを使って配信を見ていました。ワールドに入るたびにちょっと操作して全画面にしなきゃいけないとか面倒だったな。でもWebPanelを使えば「配信のコメント欄」をワールドにそのまま置くことさえできました。

結局SDK2はよくわからないコンポーネントだらけなので、その正体を頑張ってエンジニアリングするよりも、Web関連の手段を使ったほうが早かったりしました。

qiita.com

そして、ただ表示するだけではなくて。

vrcprog.hatenablog.jp

vrcworld.wiki.fc2.com

WebページからJavaScriptを実行することで、VRChat上でのアクションを実行させることができました。例えばその中に「GoToRoom」というアクションがあって、実行すると「指定したインスタンスへ移動させる」ようなこともできました。

gpsnmeajp.sblo.jp

幾つかのイベントでその仕組みを使ったインスタンス管理を行っていた (もしくは、行おうとしていた) 覚えがあります。

まぁ、つまるところ、インフラだったのです。

私がやっていたこと

2018年の4~5月頃かな。私は「VRChatでニュース番組をやりたい」という話を聞いて、技術関連をやる人間として、色々作っていました。詳しくは調べてください。

僅かに写真が残っていました、「YouTubeのコメントをアレっぽく流すやつ」です*3。まぁ、インターネットに繋がるのであとはなんでもできます。

あとスライドを表示する仕組みも作りました。Web経由なので*4ページ切り替えは (WebSocket経由で) 簡単に同期できます。

あと出演者が喋る為のボイスチャットを自作して運用していたので (フィルタとか掛けられるようになってた)、それを使って「発声するとVRChat内の名札が光る仕組み」を作った覚えがあります。でも本番でうまく動かなかったんだっけな。

また、おそらく並行して、先述の「インスタンス管理」の仕組みを作ったりしていました。

VRChatには一応WebAPIがあって、インスタンス内の人を取得したりできます。今でもできるんですが、公式に提供されている機能ではないので「いつ壊れても文句を言わない」状態です。

あとは先程のGoToRoomを組み合わせると、「人の居るインスタンスをクリックするとそこに移動できる」仕組みができるというわけです。定期的にリストの自動更新もします。

ちなみに見てわかる通り、40人を限界として作っていたみたいですね。この頃は人一人の負荷が今よりも高かったので、30人の時点でinstanceはかなり重かったと記憶しています。だから赤いんだと思う。

非公式APIをこっそり使っていたわけなので、あんまりコレを宣伝しないよう、私からお願いしていたような気がします。だからこういう映り込みとかでしか記録が残っていないです。

あと私の個人ワールドには「天文台ライブカメラのWebページをSkyboxにする機能*5」とか「WebPanelを触るポインタの位置が全員で同期して見えるようになってる板*6」とかありました。やれること・やりたいことはもっといっぱいあって、インスタンス間でゲームできたりとか、こう、いくらでも。

そんなことを考えている中での廃止でした。悲壮感がいくらか伝われば幸いです。

無くなってから

無くなった経緯はこちらにまとまっているかと思います。

WebPanelについて先月からVRChat運営に問い合わせていましたが、やっと返答が来ました。いちおう断っておくと、これは support@vrchat.com に、いちユーザーとして投げた質問です。個人的なツテを使ったものではありません。古参新参関係なく誰でも可能です。

— Kanata (@knt2nd) 2018年9月13日

私の見解も相違なく、まぁ元々「異常な自由度を持つ仕組み」なので、「ヤバいことが起きても仕方ない」感覚がありました。

でも私達は生きていかねばならないので。代用案をどうにか探していきました。

動画や配信については本来のSyncVideoPlayer/SyncVideoStreamを安定して運用することができていたと思います。しかし動的なWebページアクセスを用いていたものは容易には替えが効きません。

そんな中、使われるようになったのが「VRC_Panorama」でした。

vrcworld.wiki.fc2.com

パノラマ画像をWeb上から拾ってくるコンポーネントです。が、パノラマ画像じゃなくても動くので、Web上の画像を拾ってくる方法として使われていました。

例えば時計も動かなくなりましたが、「ロードした瞬間の時刻を画像にして返すWebサーバー」を作れば、後はシェーダの_Time.yを使ってそこそこの精度で時刻を表示できるわけです。

スライドを表示する仕組みとかもPanoramaで対応したかな、でもリアルタイムでコメントを背景に流すことはできなくなりました。動画配信でどうにかしていたんだっけ?

また、インスタンス内の人数表示は動いてるけど飛ぶことができなくなったので、インスタンスリストを動画配信してもらっていました。飛ぶのはフレンド経由。

ちなみにその時期のインスタンス管理の手法について、y23586さんが丁寧に書いております。

y23586.net

まぁ結局WebPanelがなくなって、「できないことはできない」というところに落ち着いたと思います。

その頃無数にあったアイディアメモは半分くらいが消えました。

ちょうどそれがとあるイベントの日だったこともあり、一つの「時代の区切り」を感じていました。

そういえば「1%の仮想」展にも残っていますね…。

SDK3になってからは時刻くらいは簡単に取れるようになりましたね。画像を拾ってくるのは長いことできなかったけど、ImageDownloaderが出てきてやっと「標準的なSDK2の上位互換」になりました。インスタンス管理もGroup機能で簡単にできるようになりました。

でもWebPanelは帰って来ません。

別に帰ってきたところで困りますけどね。もっと自由にWebアクセスさせて欲しかったし、インスタンスを越えるような様々な事柄をやってみたかったけれど、そういうアイディアはもう全部捨てたのです。

まとめ

昔は色んなものが欠けていたので、WebPanelをインフラとして使うことで便利になっていたものがいくつかありました。

それが無くなって、それでも普通のワールドで必要な機能 (時計やVideoPlayer) はなんとか代替が効いたので、必要性は認識されなくなっていきました。

これがもしも存続していたら、色んなものの価値観がだいぶ変わっていたと思います。例えばあの24時間で消えるワールドとかね。ワールド制作でWeb関連を触ることが当たり前になっていた可能性もある。

でも、そうはならなかったのでした。

いい時代になったと思います。

おわり。

こんにちは。最近なんとなく言いたくなってメモしておいたことについて書きます。

「物事に正解はない」

ってよく言いますけど、私はそれは言葉に操られているだけな気がします。悪く言うと思考放棄?

事実として、確かに「(あなたの考える)『物事』に正解はない」のだと思います。だけどだからと言ってそこで止まっては勿体ない。

ここからは2つの方針があって。「正解がないままでどうにかする」のと、「物事を書き換える」というものがあります。

よく居る人間は前者を選択していて (何故なら後者の手段を認識していない為)、結果として人々の認識世界は「閉じる」傾向にあるように見えます。

いわゆる「合理的」という言葉がありますけど、例えば「早起きすることが合理的なので → 早起きをすべきだ」みたいな言明は、言葉に操られているだけに私は見えます。

早起きしないことでそこに利点があって、それは私達人間の「よくわからない性質」に伴っているもので、それを無視する行為は合理的ではありません。

つまり本当に合理的な選択というのは、現時点だけでなく未来過去あらゆる状況を鑑みて決定されるものです。そこには不確定要素も当然含まれます。

これもよく言う話ですが、例えば「健全な環境を作ったら人々は健全になるか?」と言ったらそんなことはなく、「別の方法で掻い潜る」か「別のところに行き、人々は居なくなる」か、みたいなところになるでしょう。

それは「人」を合理的選択に取り込まなかったからで、即ちその選択は結局合理的ではないだろう、と私は思います。

中途半端に「キレイ」な人間がそういうことをやろうとする傾向が往々にしてあって (逆に真っ黒な人間がやろうとするという話も聞きますが)、なので私は「キレイ」にならないように、そしてキレイな人間を「気をつけて」見るようにしています。

脱線しました。つまりは「人を計算に入れずに決定しようとする人々」即ち「正解にたどり着けないからといって粗雑な決断を下す人々」がいて、そして私はそこで努力を怠ること自体を否定はしませんが、努力を怠っていないと主張する人には否定的になります。

あなたは頑張っているのかもしれないけど、最初から間違っていたらそれはどうしようもないので。

そして、私は「物事に正解があるようにする」即ち「正解が生まれるように問題を縮め、それを積み重ねていく」というのが善い解決だと思っています。

「正解がない」のは観点が無いのが原因なので。前にどこかで書いた気がします。

ただそのためには「言葉」に惑わされないようにする訓練が、技術が必要で。なかなか簡単にはできません。

でも、できていない状況を反省し、できるべきであるという信念で在るだけでも人々は「善」に近づいていくような気がします。

「嘘」について

よく「嘘」という言葉の意味合いに、科学系の人間とそれ以外の人間で齟齬が生じるという話を見かけます。

私は前者側の人間の意味合いで嘘という言葉を使っており、意味は「事実と異なる命題を述べること」です。

ちなみに後者の人間の言う嘘というのは上に加えて「人を騙す意図がある」あたりでしょうか。

ただ科学的コンテキストにおいては「騙す」という行為は存在しなくて (どんな意図があろうとなかろうと客観性が全てなので)、結局は同じ意味合いになります。

では「間違い」という言葉を使わないのはなんでだろう、と考えましたが、普通に使いますね。だからどっちも同じ意味の言葉として認識していて、片方に一般と齟齬があるというだけなのかもしれません。

ちなみにこの意味の違いのせいで喧嘩になるみたいな話題も見ますが、それは根本的に「相手が同じ意味で言葉を使ってないかもしれない」という思慮がないという話なので、この言葉自体とは関係ないような気が私はします。

更に言うと、こういうときってお互いが悪いとよく言われる気がするんですが、こういう「自分の思考外に関する思慮」がないのは大体非科学的コンテキストの人間という傾向がある気がします。経験則ですが。

ところで科学的コンテキストだと、頻繁に「前提を置く」ということが行われます。真偽はさておき「これが正しかったとする。」というやり方です。

その中で言葉を喋っていると「正しい」という言葉が揺れます。それは「事実と合致する」という意味ではなく、「今のところ話の筋が通っている」という意味です。

特に「事実」という言葉は、なんか簡単に手元にあるように人々はきっと感じているのでしょうけど、そうでないことを科学的コンテキストの人間は知っています。

だから軽々しく「事実と合致する」という意味で「正しい」なんて言いません。事実がわからないから。

つまり「正しさ」とは「整合性」であり、「嘘」とは「不整合」のことなのです。

なので、私は例えば事実と異なることであっても、相手の言ってることに矛盾が無いと思えばそれを受け入れます。そこに「嘘」はない。相手が何を思っていたとしても。

逆に、もしもそれが事実であっても、何らかの自分の認識と整合しないのであれば、それを指摘します。そして精査し、何らかの結論を出してから、話を戻します。

出す結論には「今言ったことが間違い」「私の認識が間違い」というものの他に、「これからの話には影響が出ないので放って置く」というものがあります。これもまた合理的な選択。

空想上の世界の話をするときに「気になる部分」というのはこういう経験によってだいぶ異なってくるんだろうなと思います。

まぁ (論理をちゃんと通ってない) 科学的コンテキストの人間は実際硬いこと言うケースは多いと思いますし。

最終的にどこに着地させたいかによって「合理性」が異なってくるという点もあります。「面白ければいい」のなら、別にどれだけ破綻していても非難されません。本当にそれで面白いなら。

何の話でしたっけ。

ああそう、私は「間違っていることを言うこと」自体には強い抵抗は無いけど (そうなら何も喋れなくなりませんか?)、「言ってることが整合すること」は気に掛けたい、ということが言いたかったのでした。

そして逆に…観測可能な事実 (= 私の認識の一部) と異なることを気軽に発言するような人は、丁寧に疑いながら聞きます。

私みたいな人間が希少というわけでもないので、そういう人たちは「そういう層」をターゲットにしてないというだけなのだと思いますが、まぁ、そういうものを見ると悲しくなりますね。

「考え方」を知らない人

意外と…ものを考えるって難しいです。これを実感したことない人いますか?わかりませんが。

なので「ものを考える方法」それ自体が学問になっています。そうですよね。それくらい複雑なものです。

そう考えてみると、逆に言えば「ものを考える方法を知らない人が居る」ということなんですけど。

じゃあ「ものの考え方を知らない人が、ものを考えられるのか?」って。

できないよね

ちなみにこれは文字通りの意味で、「学問をやってないとものを考えられない」という主張ではありません。

でも実際、大体の人は「考え方」を知らないはずなのです。世界は回っておりますが。

それは単に「ちゃんと考えて結論を出さなくても物事はそれなりに回る」というだけで、別にそれはそれで良いことだとは思いますが。

私が気になったのは、「『自分の考え方が間違っているのかもしれない』という懸念を持ったことがある人がどれだけ居るのだろう」、です。

考え方をうっかりすると容易に間違った結論を出すことを私はよく知っています (ので、数式を使って精査するわけです) が、まぁ、人ってそうじゃないよね。

いや、これはなんというか、今更の気づきの話なんです。

人々は「考え方」を知らないので、「正しい考え」を聞いてもその正しさを理解できないのですね。

そうだね。そうだわ。

人に優しくするって難しいですね。

でもこれによって前よりももうちょっとだけ優しくなれるようになったかもしれません。

「おもしろいもの」

ここまでは言語と認知の話だったんですが、あとはコンテンツの話題が2つありました。

あんまり丁寧に書いてもしょうがないのでたらたら書きます。

私は好き勝手やっている (= どこにも属していない) 人間なので、自分が面白いと思ったものしか作っていません。

というか作る気になりません。

が、まぁ仕事で何か、という話になったときは当然それ以外をやる必要にもなるんでしょう。

私はそういうときは原則「面白いということにする」即ち「自分の興味を広げる」ことで対応していますが、それだけで済むわけでもないでしょう。

で、そういうときに「面白くないのでやらない」と主張できるべきだったりするのかなあ、って思ったのでした。

世の中を「面白くなくさせる」方法というのは世の技術者は無限に持っているはずで、まぁ頼まれてやる人も居るのかもしれません。

が、それを止めるのもある種の技術者倫理なのではないかと。「面白くない」と。

「面白い」という言葉は多義なのでご想像にお任せしますが。どれであれ意味が通るように読めれば良いので。

まぁ小さな「面白い」コンテンツが誰でも「面白い」かというとそんなわけはないので、「面白いコンテンツが増えるように」という話題ではないんですが。

でも「面白くないコンテンツが増えないように」というのは、世の中的には大事なことな気が、少しだけしました。

そして、まぁそれと一切関係ないんですが、人間は…面白いです。ほっとくと無限にコンテンツが湧いてくるし。

でも逆に言うとそういうものは「人間」に依存したコンテンツで、そしてその分野それ自体は枯れた領域だと思っています。確かに普遍的に面白いんだけどね。

だから「新しいコンテンツ」を求めてる人に対して「人間」を出してくるのは何か違うのではないか、って思った。

創作というのは人間が持つ何かを抽出し濃縮してできた結晶のことで、その綺麗になった結晶を見たくてコンテンツを追い求めている、ような気がする。私は。

人が「人でない姿をして顕現する」というのが好きなのかな。いや、人じゃなくてもいい。概念が顕現するのでもいい。

寧ろ人じゃない…その「何か」そのものが最終的に立っていると嬉しいのかな。

まぁこれは私が「人間」が苦手という話と絡んでいるので一般的な人がどう考えているかは知りませんけれども。

面白いものがみたいですね。

おわり

なんだか最近「言葉が苦手」なタイプ (ダブルミーニング) の人をよく見かけます。前に書いたブログもそうだったし。

こういうのを年齢とか経験とかで雑にくくるのは好きじゃないんですが、昔から周りに居る人にはあんまりそういうことないから不思議だなぁと思ったのでした。

そうすると界隈の違いでしかないのか、と思ったりして。即ち「そういう人たちではそういう言葉が平常である」のかもしれなくて。自分が間違っているのかもしれない。

まぁ自分が間違っているのかもしれないと私はよく考えるけど、相手はそういうことがあんまりないように見えるので、こういうときって大抵ずれてるのは向こうなような気がするんですけど、不安にはなりますね。

どうしたらいいのかは未だによくわかっておりません。最近は「話を始めない」のが良さそうな気がしています。つまりまず創れってことですね。

それは本当にそう。

自然言語は引き続き使いものにならないと思うので、それ以外でどうにか物事を語れるように努力します。

では。

に「UE/BP の Sequence の挙動が気に食わない」ということを書きました。

それは「直観」に基づくものなのですけど、そういう話をなんとなく書いておこうと思いました。

Get

変数の Get/Set ノードがあります。x は 0 です。

0 と 1 が順に出力されます。違和感はないですね。本当に?

これは? 挙動は変わりません。0 と 1 が順に出力されます。

これは? もちろん変わりません。 0 と 1 が順に出力されます。

ではこれは何ですか?

0 でも 1 でもない。強いて言うなら…「x」そのものでしょうか?つまり変数参照であると。

ならこれは?

1 と 2 が出力されます。ならばあの「線」は何でしょうか? 「参照」ではないですね。

つまり、これまで値が流れているように見えていたものは、実際にはそうではないと。

つまり「線」を正確に解釈することを考えると、ただ「数字が流れる」程度の理解では足りないのです。

実際には「いつか行われる計算そのものが流れていて、実行ピンから参照されたときに初めて計算が実行される、という「解釈」が必要なわけです。

こういう状況、つまり「直観と意味が一致しない状況」を、私はよくないと考えます。

思ってるのと違う挙動ということは、そのままうっかりバグに繋がる可能性があるわけですね。参照セマンティクスがそうであるように。

で、何故今回「直観と意味が一致しなかった」のかというと、Getが純粋なフリをしているからだと考えます。

即ち、副作用によって結果が変化するものが、純粋な演算であるとみなされていることがおかしいのではないか、ということです。

Sequence

順番に実行する、という Sequence ノードがあります。

0, 1, 2 と順に表示されます。なんだか直観的な感じがします。本当ですか?

これは? 0, 0, 1 と表示されます。そうですね。

こうすると 0, 1, 2 と表示されます。

でもよく考えてみると、結構すごいことが起きてるはずで。

Print して Set した後、実行ピンの行き先がなくなった時、最後に分岐した Sequence に戻るわけですけど。

そのためには「これまでの Sequence をいくつ、どこまで実行したか」を覚えている必要があります。つまりリターンスタックがあるはず。

だから「線が無くなったら実行終了」ではなく、「線が無くなったら"戻るべき場所"に制御を戻す」なのですね。

無を示すちっちゃな三角形には重要な意味が含まれてるのです。C言語の return と同じですね。

で?

言いたいことは「ノードベースというのは、見た目と意味が一致しているはずじゃなかったのか」、ってこと…だと思います。

厳密にはノードグラフの代数系を作ってプログラム意味論を考えるという話になると思いますが。

「意味論がシンプルに記述できる」ということがそのまま「見た目から素直に挙動を推測できる」即ち「わかりやすい」ことのように思っています。

とはいえ、これは数学…というか「値が自由に扱える世界」から見た話なので、そういう世界を基準にした「わかりやすさ」という観念にはなっています。

例えばC言語みたいなやつは値が自由に扱える世界ではない (コピーやポインタが非自明) わけで、最終的にそういうところで動くものを記述する以上、現実的には「"わかりやすく"ないほうが良い」ということもあると思います。

でも私は値が自然に扱えるほうが好きですね。Houdini みたいに。

おわり。