第1回:clusterでゲームワールドをつくろう!

同時プレイのオンラインゲームがすぐに作れる!

Unityで制作活動をしていたら、一度は「複数人が同時プレイできるオンラインゲーム」を作りたいと思ったことありませんか?



clusterのゲームワールドの例。

でも多人数プレイヤーの同期、プレイヤーのキャラクターデザイン、さらには操作入力やサーバ上でのセーブとか、考えれば考えるほど大変ですよね……
ましてVRにも対応、なんて考えていたら気が遠くなりそうです。

ところがclusterなら、そこは全部カバーしてくれます!
スマホ・PC・VR・Quest2対応、同時プレイ可能なオンラインゲームがすぐに作れるんです!(clusterではつくった3D空間のことを「ワールド」と呼びます。ゲーム要素があるワールドは「ゲームワールド」と呼ばれています。)

できることとできないこと

ただし……もちろん「できないこと」もあります。

最大の違いは、Unityなら普通は使えるC#スクリプトが使えないことです。

clusterでは、用意されているClustor Creator Kit(以下、CCK)のコンポーネント、そしてコライダーやAnimatorなどUnityに標準で入っているコンポーネントを使うことができます。

そのため、パラメータが大量に絡むゲームはちょっと作りづらいところがあります。他にも、引っかかりやすい「クセ」がそれなりにあります。

とはいえがんばればRPGなんかも作れるのですが。

cluster側に任せられるところも多い!

ただ、多人数の同期、アバター対応、サーバーへの簡易データ保存、こうしたものをすべて任せられるのは大きな魅力です!

また、ワールドを公開すれば色々なユーザーさんが写真を撮ってSNSに上げてくれることも多いです! 作ったゲームにユーザーさんからの反応が欲しい、という方には特にオススメですね!

このように、clusterでのゲームワールドづくりには普通のUnityでのゲーム制作と異なるメリットがあります。本連載では、ゲームワールドをひとつつくることをゴールとして、clusterでのゲームワールド制作の基本を学ぶことができます。

Unityに親しんでいて新しいものをつくってみたかったという方は、ぜひ本連載を通してゲームワールド制作に挑戦してみてください!

サンプルもしっかり用意しています

この連載では、「トリガー」「ギミック」「ロジック」などゲームワールドを作る上で重要な考え方を、できるだけ具体例を交えて見せていきます。

また、各回の完成形をサンプルとして丸ごと公開します。中に入っているモノは、cluster用のワールドなら自由に使って頂いて構いません! サンプルに使ったもの以外にもシンプルなイスやパーティクルなど使いやすいアイテム・マテリアルなどが入っていますし、改変も当然OKです!

さて、前置きが長くなりました。そろそろ実際の中身に入っていきましょう。

下準備

Unity経験者の方なら、すでにUnityはインストールされていますよね。
ただUnityのバージョンなどには注意が必要なので、以下の記事・動画などで確認・準備を済ませておいてください。(clusterのUnity対応verは「Unity 2019.4.22(2022年2月現在)」)

こちらの記事ではワールド制作につまづきそうなポイントをまとめているので、まずは眺めてみるといいかもしれません。

1.既に完成したゲームワールドと各種アセットが入っている「テンプレートワールド」

2.「メインスクリーン」や「コメントボード」などワールド・イベントに置くと便利なcluster独自のアイテムPrefabが入った「サンプルプロジェクト」

ワールドに配置していく

それでは、それでは、サンプルプロジェクトのMinimal/Scenesに入っているMinimal Sampleを開いてみましょう。(テンプレートワールドとは別の「サンプルプロジェクト」というUnityプロジェクトに入っています。ややこしいですが、こちらの記事を参考に導入してください。)

このサンプルはただ床が置いてあるだけのワールドですが、clusterのワールドに必要不可欠なコンポーネントの設置・プロジェクト設定が済ませてあってとても使いやすいです!

さらにテンプレートワールドプロジェクトの中身をUnityに読み込んで、Playground/Prefabs/Prefabs/GimmicksにあるRollStickというPrefabを置いてみます。

再生してみる

Unityの再生ボタンを押すと……
クルクル回る棒があり、近くに行くと自分が押し出されるのが分かりますね!

テンプレートワールドはサンプルシーンも充実!

このように、テンプレートのフォルダの中にあるものを配置していくだけでも結構面白いワールドを作れます(しかもマルチプレイとVR対応!)。

ですがUnity経験者の方たちは、もっと複雑なゲームワールドを作っていきたいとお考えでしょう。そのためにはCCKのコンポーネントの基本的な分類である「トリガー」「ギミック」「ロジック」を理解していくことが大事です。

トリガーとギミック

まずはトリガーとギミックから解説します。

C#スクリプトなら、「何かにぶつかった」はMonoBehaviourに付けたOnCollisionEnterとかでチェックしますね。「モノがクリックされた」とかはIPointerClickHandlerを実装してみるとかでしょうか。

Unity経験者の方ならこんなコードを書いてきましたよね

しかし、CCKでは「ぶつかった」「クリックされた」とかを「トリガー」のコンポーネントをつけることで検知します! C#で言えば「イベントの発生」ですかね。

そして、「トリガー」に応じて何か起こすのが「ギミック」のコンポーネント。音を鳴らしたり、何かを移動させたり、モノを生成したり……とかです。

クリックのトリガー、弾を撃つギミックの組み合わせ例

クリックすると飛んでいく箱

実際にコンポーネントをつけてみましょう。

Cubeを生成して、床の上に置いてください(RollStickはもう削除しておきましょう)。

そしてCubeにInteract Item Triggerを付けます。さらに、Add Instant Force Item Gimmickを付けます(*1)。

ItemRigidbodyMovableItemは自動で付けられます

パラメータは画像のように設定してください。Keyに、どちらも「OnInteract」という文字列が入っているのが重要なところです。
(大文字・小文字は区別します!)

(*1) そんなコンポーネント出てこないよ? という方はテンプレートワールドプロジェクトの導入に失敗している可能性が高いです! 確認してみてください。

Cubeが飛ぶ!

さて、再生ボタンを押して、ゲーム内でCubeをクリックしてみると……
Cubeが飛んでいきました!

飛んでいったCube

ちなみに床から落ちて、Despawn Heightというオブジェクトより下になると自動で元の位置に再生成されます。それをクリックすると、当然また飛んでいきます。

せっかくなのでCubeを複製して3つくらいにしても良いですね。どれをクリックしても、ちゃんと飛んでいきますよ!

メッセージ

このように、「トリガー」で何かを検知して「ギミック」で何かを起こすのがCCKの基本です。
そしてこの仕組みを、「メッセージを送る」と言います。メッセージには必ずKeyがあります(*2)。さっきの例で言えば「OnInteract」という文字列ですね。Keyの文字列はC#で言えば関数名のようなものなので、名前を自由に決められます。

再確認しましょう。何かが起きるとトリガーが「OnInteract」などのメッセージを送り、それを受信してモノを飛ばすetcのギミックが発動。 CCKではこの流れが基本となります!

(*2) なおメッセージにはType(種類)もあります。今回はSignalという種類でした。ギミックを起動させるときは、Signalを使うことが多いです。しかしモノによっては数字を送信することで起動するギミックなどもありますし、「ロジック」に入ると頻繁に数字のメッセージを送ることになります。これは今後の回で説明していきましょう。

さらに複雑なものをつくる時に必要な「ロジック」

(「ロジック」とはこのツイート内の「オペレーション」の一種です)

まだ紹介していなかった「ロジック」というものもあります。
このTweetにあるようにトリガー・ギミックの間に挟んで使うものです。数字の計算や条件チェックなどもでき、より複雑なワールドを作っていくときは必要不可欠です。プログラミング経験がある方なら理解しやすいと思うので、ぜひ積極的に使っていってください!第2・3回でも軽く扱いますが、第4回で本格的に登場します。

実際にアップロードしてみよう

さて、Unity上ではCubeがちゃんと吹っ飛んでいきましたが、本当にこれがclusterで動くのでしょうか? 実際にアップロードして確かめてみましょう!

アップロードについての詳しい情報は

の記事・動画などにあります。ちなみにワールドアップロードはかなり時間がかかるので、その点はご注意を。

サムネや説明書きはこんなのでも十分!

ちゃんと動いたでしょうか? アバター姿の3人称視点でプレイすると、かなり雰囲気も違ってきますよね!

cluster上でもちゃんと動いています

もちろん、2人以上でプレイすることもできます。また色々なデバイスからプレイすることもできるので、「パソコン」と「スマートフォン」の両方でログインしてプレイしてみましょう!(*3)

(*3) ちなみに同期のことを考えると、物理シミュレーションに大きく頼ったゲームはなかなか難しいところもあります。2人以上でプレイすると、2人目以降のプレイヤーは物理の動きが不自然になってしまうこともあります。

サンプルプロジェクト

今回はまだ簡単な内容ですが、サンプルプロジェクトを用意してあります。(サンプルシーンは「cue_01」です)

ただ、本当にそのままではちょっと面白くないので、見た目だけ変えました! cluster、実はシェーダーに関する制限は少ないのです。あとPost Processingもかけています(*4)
(clusterでPost Processingを使う場合はレイヤーの設定が必要です。詳しくはこちらをご覧ください)。

中身は床とCubeだけで同じですが、ずいぶん雰囲気が変わりますよね!
(Cubeっぽくないように見えるかもしれませんが、ただの箱ですよ!)

(*4) Quest2単体でプレイするとPost Processingの見え方が変わり、非常に効果が弱くなる点には注意しておいてください。これはQuest2の仕様のようです……ただし、工夫すれば2つのPost Processingをユーザーごとにボタンで切り替えるようなテクニックを使うこともできます。

第2回:トリガー・ギミックで色々してみる!

clusterのギミック制作に必要なのが「トリガー」「ギミック」「ロジック」です。
ここからは連載を通して、的当てゲームワールドを完成させることを目指して、ひとつひとつ順を追って解説します。
第2回では「ハコを押すと弾が飛ぶ」「弾が的に当たると音が鳴り、的が一瞬消える」など基本的なギミックのつくり方の紹介を通して「トリガー」「ギミック」の基本を解説します。