画面のない身体に目を持たせる
Day9 では、Robo が自分の視界を画像として残せるようになりました。文字のログだけでは、床のずれ、道の向き、建物の圧迫感は分かりません。世界を直すには、見た結果を扱う仕組みが必要です。
実体は「Mineflayer で世界に入る身体」と「ブラウザで描画する目」の組み合わせです。Robo の身体に Minecraft 描画用のビューアをつなぎ、ヘッドレスブラウザで WebGL の画面を開き、canvas をスクリーンショットにします。
ヘッドレスブラウザは、画面を出さずに描画するブラウザ
ヘッドレスブラウザとは、ウィンドウを画面に表示せずに動くブラウザです。Robo は画面の前に座っている人間ではないので、そのままでは「何が見えているか」を人間のようには確認できません。
そこで、ブラウザの中で Minecraft の一人称画面を描画し、必要なときに画像として取り出します。画面を持たない身体に、あとから確認できる目を足す発想です。
身体は Mineflayer、描画は prismarine-viewer、3D 表示は three.js/WebGL、撮影は Puppeteer で動かした Chromium の screenshot。Robo はゲームサーバへ入り、別プロセスのブラウザがその視界を描きます。
視点は、位置と向きと高さの組み合わせです。同じ建築でも、入口から見たときと上から見たときでは、受ける印象が変わります。
スクリーンショットは、視界を残すログ
スクリーンショットは、Robo が見た景色をあとで確認するための記録です。文字ログが出来事の順番を残すなら、画像は見え方を残します。
暗すぎる、遠すぎる、道が曲がって見える。こうした問題は、画像があると話し合いや修正がしやすくなります。
画像を記録として残す考え方です。文章だけでは説明しにくい状態を、あとから見直す材料にできます。
到着ゲートは、最初の数秒を設計する場所
到着ゲートは、新しく来た人が最初に見る場所です。ここで迷うと、その先の世界がどれだけ面白くても届きません。
Robo の視界で到着ゲートを見ると、設計図では分からない問題が出てきます。目線の低さ、ロゴとの距離、足元の明るさ。入口の品質は、実際に立って確かめる必要があります。
人が自然に進めるかを確かめる作業です。道があるだけでは足りず、次に何をすればよいかが見える必要があります。
現地確認は、設計を身体で読み直すこと
設計は頭の中では整って見えます。けれど、現地で立つと違って見えることがあります。Robo の視界は、その差を見つけるための道具です。
これにより、世界づくりは「作って終わり」ではなく、「立って見て直す」作業になります。
古い世界を保存する作業と、今の世界を案内する作業は分けて考えます。混ぜると、守る対象と見せる対象が曖昧になります。
Robo の画像だけでは分からない違和感もあります。人間が見て、Robo が直す。視点を重ねることで、入口は良くなります。