💨

Clusterでワールド作ってみた

2024/06/17に公開

対象読者

私は5年ほど前からOpenVR SDKを起動し、デスクトップパソコンで年に一度程度VRChatを楽しむ程度にはメタバースに触れてきました。2024年のゴールデンウィークに、ふとVRChatのワールドを作りたいと思い、本屋で物色しメタバースワールド作成入門 clusterで作る仮想世界・イベント空間を購入しました。最初はclusterをVRChatのワールドの開発環境だと思っており、clusterというメタバースプラットフォームであることに驚きましたが、それでもこの本に沿ってワールドを作り始めました。このように、教科書を購入し、ネットで必要な記事を集めつつ、妥協を含めてワールドを形にするまでの経緯に興味がある方が対象読者です。機能の紹介やAPIの使い方については詳しい教科書や記事があるので、そちらをご参考ください。

Hello, cluster!

clusterについて何もわかっていませんでしたが、時間がかかるのでまずはUnityや開発環境を整えようとしました。UnityでUnity Hubをダウンロードしています。教科書の通り、2024年4月ではUnity2021.3.4f1を使うようにしていました。ほかにも開発者ツールやプラットフォーム用のsupportをインストールしていました。教科書にちゃんと従ったので、私はトラブルには会いませんでした。インストールしている間に、clusterでアカウントを作成し、アプリをインストールしたと思います。もう1か月前の記憶が遠のいています。。。
Creator Kitを導入したプロジェクトを用意し、ワールドに必須のコンポーネントである「Spawn Point」と「Despawn Height」をつけてとりあえずワールドをアップロードする経験をしたほうがいいと思いました。Unityで3Dプロジェクトを作成し、Package Managerで「URL: https://registry.npmjs.com」「Scope(s): mu.cluster」と設定しダウンロードしました。UnityとCCKの環境下で育ったので、CCKのないUnityの設定を知りません。。これだけでワールドをアップロードできるのですが、結果論的にアップロードした一般ワールドは削除しています。これは一般ワールドではベータ機能を用いたワールドをアップロードできなかったからです。当時、教科書を用いつつネット記事を調べているとどうやらアイテムからプレイヤーにインパクトを与えるという基本機能はベータ機能のスクリプトを使うしかない(と思い込み)がありました。6月ではもうベータ機能は一般機能になったものがありますが、2024年5月ではスクリプトを使ったワールド作成にはベータ機能が必要でした。
ベータワールドの作り方の通り、Cluster > Settingsにあるベータ機能を有効にすることで、ベータワールドをアップロードできます。ワールドアップロード

始まりのジャンプ台

もともとは全然違うワールドを作ろうとしていたと思うのですが、ネットサーフィンをしている間にTimerはじめてのベータ機能|ジャンプ台をつくる!を読んで、ジャンプでワールドを進むゲームを作ろうとしました。これはすごいワールドを作ろうというより、作れそうなワールドを作ろうという気持ちが大きかったです。また、昔モンスターファーム ジャンプを友達と遊んだことがあり、その面白かった経験からジャンプのメカニクスだけでもそれなりに面白くなるだろうという淡い期待がありました。(最終的にClusterJumpWorldというクソゲーを作ることになります。)
この後の順序の記憶がありません。ジャンプメカニクスを実現した後はPlayerHandleにあるメソッドで自分で動かして失敗しないであろうモノを全部メカニクスに落とし込んだと思います。resetPlayerEffects, SetGravitym, setPosition, setRotationは基本的なプレイヤーの操作にかかわるものです。3Dゲームの黎明期だったらこれらの基本操作を組み合わせただけでも面白いゲームになったと思います。

テンプレートワールド

メカニクスの作成とは別にワールドのゲームシステムの作りこみも始めました。残機入室時メッセージ入室回数ハブワールドという記事を読んで、できそうなシステムを見つけたら自分のワールドにシステムに採用してきました。すごいシステムを作ろうなんて考えは全くありませんでした。
この段階で、ワールド入室時にワールド名が表示される、BGMが流れる、残機があり0になると牢獄に移動する、スタートタイルを踏むとタイマーが発動する、ゴールタイルを踏むとタイマーが止まる、というワールドの基本が出来上がりました。
このシステムだけを組み込んだだけのワールドがClusterJumpWorld#0-1になります。
このワールドにはメカニクスをほとんど配置しておらずつまらないのですが、この入室から退室までのテンプレートを作成したことで、あとはその間にメカニクスを配置するだけのコピペワールドの作りこみに専念できました。

余談ですが、作りこみをしている一方でワールドのクリア率を出したくなり、システムに外部通信機能を使って実現しています。このときdiscordで実現方法について相談させていただきました。

これ作ってどうしよう

ワールドの作りこみを始める前に、一応ワールドの世界観やテーマを決めました。

  1. ワールド1は基本的なジャンプメカニクスだけを配置した初心者コース
  2. ワールド2はプレイヤーの操作性を強く要求させるコース
  3. ワールド3はゲームシステムもクリアするために意識しないといけないコース
  4. ワールド4はメカニクスやゲームシステムから逸脱したコース
    これをおよそ決めてワールド1を作り始めました。しかしワールド#1-4を作っているうちに、このタイルを弾き詰めただけのワールドは面白いんだろうか、これ作ってどうしたいんだっけと一人で悩んでしまいました。#1-4のワールドは当初タイルを直線に敷き詰めたただけでして、自分でプレイしてゴールしたときにそのゴールの達成感ややりがいもなかった記憶が今でも覚えています。どう直そうかかんがえているところで、#0-0という開発用ワールドにメカニクスをコピペして一般ユーザーに感想を聞こうと思いました。#1-4をコピペしたメカニクスは思ったより一般プレイヤーたちは楽しんでもらえていたようでしたが、それはフレンドと一緒にワールド来た人たちがゴールできた・できないといったやり取りが楽しいんだと思いました。そこで改めてこのメタバースというのは友達とつながるコミュニケーションサービスSocial Networking Serviceであり、一人で遊ぶオフライン家庭用ゲームではないと気が付きました。ここから直線的だった#1-4はエントランスかゴールかの2か所でしかゆっくりお話しスペースがないと思い、途中に休憩できる空間を追加しました。

ちゃんとゲームについて勉強してみる

ワールド#2から#3まではSNSのための空間を意識して作ってみました。もちろん素人一人で作っており、SNSとしての面白さがわからないままにアップロードしたワールドがいくつもあります。
面白さについて体系的に身に着けたいと思い、「レベルアップ」のゲームデザインを購入して現在進行形で読み進めていますが、SNSメタバースらしい面白さについてはまだまだ分からないことだらけです。
1か月遊んでみた限りではSNSメタバースの面白さを抽象化できませんでしたが、おそらくリアルではできない体験とそれを気軽に共有したくなる仕掛けが、カギになるのではないかと思っています。
どなたか詳しい人がまとめてくれると嬉しいですね。

妥協で完成させる、期待が膨らんでいるところまではやり切る

世界観やテーマを決めてからワールド作成に取り組んでいましたが、ワールド#4でどのようにメカニクスやゲームシステムから逸脱するかも最初に考えていました。逆に、メカニクスやゲームシステムの逸脱のためにワールド#1から#3をテンプレートワールドに従っており下準備でしかありませんでした。下準備の条件はテンプレートワールドに従っていること、メカニクスの目新しさが表現されていることの2つだけであり、ステージ作りに時間をかけないようにしていました。作りこまれていないステージに後ろめたさもありましたが、ワールド#4のためにワールド#1から#3は妥協していました。

ワールド#4の制作に取り掛かるときには事前に用意していたドキュメントをもとに作っています。

ワールド テーマ
#4-1 スタートタイルからの逸脱
#4-2 ゴール"タイル"からの逸脱
#4-3 Jumpメカニクスからの逸脱
#4-4 ライフ・時間制限・監獄からの逸脱
#4-5 ClusterJumpWorldからの逸脱
私の性格の悪さを形にできるワールド#4の制作はほんとうに楽しかったです。
(おそらくUI・UXでのシステムデザインが好きな人がプレイしたら発狂するようなワールドになっているはずです笑。)

ふりかえり

2024年のゴールデンウィークの暇つぶしに始めたメタバースワールド制作でしたが、自分が考えたことを最後まで形にできたことはとてもよかったと思います。
ゲーム作り込みの観点でまだまだやり残したことしたことはありますが、#4-5まで作成したことで節目としたいです。これからはClusterJumpWorldの魚拓をどこかに置くつもりです。Unity/Javascriptのくそコードではありますが、世界がもっと面白くなる加速材になってくれると嬉しいです。
また、今回の反省を活かして次の製作ができたらいいなぁと思っています。

もしこの記事を読んで興味を持っていただけたらClusterJumpWorld#0-0というハブワールドを用意していますので是非遊んでみてください。

ClusterJumpWorldの製作を通して、応援していただいた方、プレイしてくれた方、一緒に遊んでくれた方、本当にありがとうございました。メタバースでお会いしたらかまってくれると喜びます。

BOOTHにて配布しています。
https://azukisato.booth.pm/items/5851654

Discussion