clusterでワールドをつくる時に意外とつまづいてしまうポイントをclusterクリエイター・vinsさんにまとめていただきました。ワールドづくりで困ったらまずはこの記事を読んでみてください!
この記事では、「Unity結構できるよ!」と思っている人でもつまずきやすいポイントを解説します!

UnityのバージョンとCCKの入れ方!
clusterでワールドを作るためには当然Unityが必要ですね。そして「Cluster Creator Kit(CCK)」も入れないといけません。これには、
↑の2つの記事が良くまとまっているので、この通りに進めてください!
こちらの動画の通りにやるのもオススメです!
このとき、特に注意すべきはUnityのバージョン!
「2022年7月18日」に「Unity 2021.3.4f1」にアップデートされました! 意外と間違えてしまうので注意しておきましょう!
サンプルプロジェクトを使って!
さて、Aの記事では「サンプルプロジェクトを使用」「自分のプロジェクト」の2パターンが紹介されていますが……

結論:「サンプルプロジェクト」のほうが絶対にいいです!!
ワールド作成を始めるときの最強サンプル「Minimal Sample」が付いているからです。

Minimal Sampleは、ただ床があるだけのワールド。でもこれをアップロードすれば、立派なclusterのワールドになります!
「ワールド内に配置が義務のアイテムは何だっけ??」とか考えなくていいんです!だから「サンプルプロジェクト」を使いましょう!
速攻でアップロードを!
そしてBの記事の真ん中くらいまでやって、「Minimal Sample」が開けたら……

いきなり、ワールドをclusterにアップロードしてしまいましょう!
「えっ、何もないワールドを!?」と思うかもしれませんが、それでいいんです!
細かい手順はこちらの記事に書かれております。


ここで、もしワールドアップロード中にエラーが出ちゃったら、Aの記事とBの記事のやり方をちゃんとできていなかったことが分かります!
「色々モノを配置してから初アップロード!」だと、最初のほうでミスっていたか、それとも配置中にミスったか分からなくなります。
なので、「Minimal Sample」を開いてまずアップロード! これは習慣にしちゃってください。初ワールドじゃなくて、2番目3番目のワールドでもやったほうがいいです!
時間はかかるけれど、後で早くなる
ワールドアップロードは結構時間がかかります。なので、その間はご飯でも食べてましょう。
ただ、一度アップロードしておくと……次からはちょっと早く終わるようになります。それもあって、最初のほうに一度アップロードしておいたほうがいいんです!
最初は非公開なので安心

clusterではUnityからアップロードしたワールドは最初「非公開」になっています。
「意図せずワールドが新着に出ちゃって恥ずかしい……」なんてことは心配する必要がありません!
アセットをclusterに入れるときのつまずきポイント!
Unityの魅力に、公式アセットストアがありますね。
便利なアセット、美麗なアセット、面白いアセット……色々あります。
導入の仕方は、Bの記事の後半にわかりやすく説明されています!
C#スクリプトは使えない!
ただ、clusterでアセットを使う時に注意しないといけない点。それは「C# スクリプトは使えない」ということです!

Unityは2Dや3Dのオブジェクトを配置して、「C#」というスクリプト(プログラム)を書いてゲームにしていくのが基本ですよね。
でもclusterでは、「C#」に当たる部分がオリジナルの「Cluster Creator Kit(CCK)」なので、「C#」は使えないんです!(*1)

なので、基本的には「家とか武器とかモンスターとかの3Dオブジェクト」「花火や斬撃や炎とかのパーティクル(エフェクト)」「BGMや効果音」「ウィンドウやアイコンなど2DのUI用パーツ」辺りを使っていくことになります。
例えば無料AssetのLow poly tree packなんかは大丈夫な奴ですね。

でも「敵がAIで追いかけてくる」「会話シーンを上手く管理してくれる」みたいな独自C#スクリプトをガンガン使っているアセットは、残念ながらclusterにアップロードすると動きません……
(実はUnity上では動いちゃうのが罠! ここは気をつけてください! 新しいアセットを導入したら、毎回clusterにアップロードして動作確認するのがオススメです!)
(*1)ちなみに「エディタ拡張」は使えます。上級者の方は「エディタ拡張」だけ使い、clusterにアップロードするものにはC#スクリプトを含めない……とかできるかもしれません
独自スクリプトが付いていたら外す
なお、パーティクルなどにも、独自のC#スクリプトが付いていることがあります。例えば無料の人気パーティクルアセットCartoon FX Freeですが……


「CFX_Auto Destruct Shuriken」という独自C#スクリプトがついています。
なので画像の赤丸にあるボタンをクリックして、Remove Componentで外しちゃいましょう(*2)。そうしないと、Unity上とcluster上で動作が変わってしまいますし、最悪エラーが出ることもあります。
(*2) 独自スクリプトを外すと「この爆発、自動で消えていたのに消えなくなった!」とか「ファイアボールのアセット、自動で前に飛んでいたのに飛ばなくなった!」とかの問題が出る可能性もありますが……CCKに慣れてくれば「ギミック」などを使って自分で修正することが可能です!
大量のアセットはアップロードの時間が……
Unityのアセットは高画質な「テクスチャ」がたくさん入っていることがあります。人気アセットFantasy Skybox FREEとかもその1つです。

これは普通にUnityでゲームを作るときには助かるのですが……clusterだとテクスチャがたくさん入っている場合、「ワールド内で使っていなくても」アップロードの時間がものすごく長くなってしまうのです!
「とは言ってもうちのパソコンは速いから!」と思っている方は、時間があるときにテクスチャ大量のアセットを入れてワールドをアップロードしてみてください。かかる時間が実感できると思います……

なので、ワールド作成が進み、「このアセットは全部使わないな」「このアセットのこのテクスチャ(音)は使わないな」といったことが分かってきたら(*3)、削除してしまいましょう。ワールドアップロードにかかる時間がグッと短くなります!
ただし、間違ってワールド内で使っているアセットを削除しないようにしましょう! 事前にバックアップを取っておくのも有効ですね……
(*3) 余分なアセットを削除するツールもUnity Asset Storeにはあります! Asset Hunter PROなどは便利です。 ただし有料で、使うのに少し知識が要ります……
マテリアル・シェーダーは割といける! でも……
モノの見た目を変えてくれる「マテリアル・シェーダー」はUnityの基本ですね。(自信がない方はこちらの記事やこちらの記事を!)
制限は少ない、ただcluster上で実際に確認を!
さてclusterはC#スクリプトについては厳しい制限がありますが、「マテリアル・シェーダー」はほとんど制限がないです!(*4)
ただ、「Unity上では動くけどclusterにアップロードするとピンク1色(エラー)」になるシェーダーとかもあります! できるだけこまめにアップロードして確認しましょう。

また、iPhoneやiPadだけダメ……みたいなシェーダーもあるようです。とにかく無難にいくなら「Standard」「Mobile」「Unlit」系のシェーダーだけにしておくのがいいかもしれません。
(*4) ジオメトリシェーダーだけはダメですが、ものすごく複雑なことをするとき以外使わなくて大丈夫な奴ですね。
影はベイクがおすすめ?
「パソコンとスマホ・Quest2で見た目が違う」といったパターンもあります。例えばパソコンではほどほどの暗さの部分が、スマホやQuest2では真っ黒になっていることがよくあります。


これについては、影を「ベイク(リアルタイムではなく、事前に計算しておくこと)」すれば問題ないようです。
ベイク(ライトマップ)は奥が深いので今回は説明しきれませんが……
まず、動かないオブジェクトのStaticをONに。

つづけてライトの設定。Minimal Sampleの場合、EnvironmentのLightingsの中にライト(Directional Light)が入っています。
そのModeを「Mixed」に。Shadow Typeを「Soft Shadows」に。


メニューのWindow -> Rendering -> Lighting Settingsを選択。
「Lighting」のウィンドウを開き、Generate Lighting ボタンを押します。


これで影をベイクできます!(かなり時間がかかります……最初は単純なワールドで!)

とにかく多くの環境でチェックするのがベスト!
これはマテリアル・シェーダーに限った話ではありませんが、「パソコン・Android・iPhone・Quest2」などできるだけ多くの環境でチェックするのがベストではあります。
1人ではなかなか難しいかもしれませんが、友人・知人に協力してもらったり、テストプレイヤーを募集するなどして頑張ってみましょう!
Itemの子にItemはNG!
段々と複雑なワールドを作れるようになってくると、Itemの子にItemを配置したくなります。例えば乗り物Itemの子にボタンItemを付ける、とかですね。




しかし、これはclusterではNGなのです! Unity上では動きますが、アップロードしようとするとエラーが出てしまいます!

これに気づかず制作を進めるとワールドの根本が破綻することもあります……
なので、Itemの子にItemは絶対付けないようにしましょう。
なお、中級者向けテクニックとして「Parent Constraint」を使うことでItemに別のItemを付いてこさせるというものもあります。詳しくは「cluster Parent Constraint」などでネット検索してみてください。
同期とOwnerのディープな世界
この項目はちょっと難しいので、初心者の方は飛ばしてもいいです!
clusterというのはマルチプレイを前提にしたアプリです。そしてマルチプレイということは、どうしても「同期」の問題が出てきます。

アクション系のネットゲームをやったことがある方は分かると思いますが、どうしても他のプレイヤーと位置がズレたりカクカクしたりする「同期」「ラグ」の問題がありますよね。これはclusterでも避けられません。
ただ、ネットゲームの種類にもよりますが……
他のプレイヤーがカクカクしていることはあっても、自分(や自分が撃った弾)がカクカクしていることは少ないはずです。
clusterでもこれは同じで、自分や「自分がOwnerであるアイテム」は同期ズレが発生しません。このOwnerというのは難しいのですが、
- アイテムを持つ
- Interact Item Triggerが付いているアイテムをクリックする(スマホならタップ、VRならグリップ)
- 自分がOwnerのアイテムからCreate Item Gimmickで新しいアイテムを作る
基本、この3つでアイテムのOwnerになれます!
例えば、「何もしなくても弾を飛ばし続ける大砲」というアイテムがあったとします。1人プレイならいいのですが、2人プレイの場合はOwnerではない人視点だと弾がカクカクしてしまいます。

でも、「クリックすると(Interactすると)弾が飛ぶ大砲」ならどうでしょうか? 2.の条件から、クリックした人が大砲のOwnerになれます。そしてOwnerである大砲からCreateされた弾も自分がOwnerなので、カクカクしません!
(もちろん、もう1人のプレイヤーから見ればカクカクしてます。でも、大砲を撃つボタンを押した人視点でカクカクしていないというのが一番ですよね)
その他、細かい点……
ヘンな名前のオブジェクトが残る現象
Unityエディタ上でテストプレイしていると、再生終了後にもPreview OnlyやEventSystemといった名前のオブジェクトが時々残ってしまうことがあります。
これは単純に削除してください! そのままアップロードしようとすると、「EventSystemは配置できません」などのエラーが出ることがあります。
モノがチラつくZ-Fighting

モノとモノをぴったり重ねてしまうと、↑の画像のようなZ-Fightingという現象が起きます。モノが変な感じに重なる上に、チラついて見づらいです。
なので、こういうときはほんの少しだけモノ同士を離す必要があります。デバイスによって見え方が異なることもあるので、Z-Fightingが起きているかどうかはスマホやQuest2でテストプレイして確認しましょう!