CubeArtWorld とは?
2020年12月頃に公開された3Dサンドボックスオンラインゲームのこと
simplestar-game.itch.io
VRoidHub 連携で自分のアバターで始めることができ、ゲーム内で購入できるワールド編集チケットさえあれば、世界の一区画のキューブを左クリックで破壊、右クリックで配置できる。
有名な他のサンドボックス系ゲームと比べると、配置する際にキューブの形を変えられること、回転を与えられることが大きな違いとして挙げられる。
ほかにもゲーム内で購入できるキャンバス編集権があれば、自分だけのキューブに金属、プラスチック、ライト、空色など様々な絵の具で好きに絵を描いて、日々コピーして数を増やしつつ、これにも形・回転を与えて配置でき、独自の世界表現が可能になっています。
クリエイティブ要素のほかにも、坂道を転がる鉄球や乗って滑るスケートボード、過去の世界へ飛べるタイムゲートなど、動きをつけた絵が撮れる、けど世界に配置し続けられないインスタントなアイテムがいくつか存在しています。
ギミックが登場するまでは、世界はスタティックで、鑑賞するのがメインのキューブアートな世界でした。
ギミックキューブへの切り替え方
キャンバス所有者のみ Edit ボタンを押して、この Type のドロップダウンから Gimmick を選んで保存できます。
ギミックはこれまでのスタティックな世界をダイナミックに変えるアクセント
これを理解できる最小限の解説を以下に続けます
ギミックの再生・発動
ギミックを再生するためには、キャンバスパネルを開いてから Play ボタンを押します。
そのほかにも Trigger アクションの条件を満たすか、他のギミックキューブから SendKeys を受け取る、Combine で結合される範囲に配置されていることで発動します。
ギミックの作成
ギミックはアクションと呼ばれる行要素のタイプを選んで、サブタイプ・パラメータを決め、これをリスト形式でつなぎながら、全体の動きをつけていきます。
タイプが多いので、まずは例を示してみます。
城門が開くギミック
何かスイッチのようなキューブを踏むと、「カチッ」と音が鳴り「ゴゴゴゴゴゴゴ」と音を鳴らして遠くの城門がゆっくりと開くギミック
しばらくすると勢いよく門が落下してピタリと門が閉じます
ギミックとはこうやって使い、遊ぶのです
— シンプルスター(Simplestar)@Unity個人ゲーム開発 (@lpcwstr) January 23, 2022
動画リンクからぜひ遊んでみてね#CubeArtWorld #gamedev #Unity pic.twitter.com/5IMRm7zCFc
使用されているギミックキューブは足もとのスイッチと、門の二つ、まずは足もとのスイッチ動作をしているギミックアクションを以下に示します。
上から順番にタイプと動作を説明しましょう
Trigger
近づいたり、上に乗ったり、下を潜ったりしたときにギミックを発動させるトリガーの役割を果たします。Sub に GetOn が指定されているので、これは上に乗ったら発動するギミックをこの一行で定義しています。Trigger は一番最初の行にしか設置できない制約があります。
Sleep
指定したフレームの数または秒数を待機します。この行は値に 0 を指定しているので待たずに次のアクションへ進みます
Sound
音を鳴らすアクションです。Sub の Switch が「カチッ」の音を意味します。Value は音の高低を指定する値です
ここまでで、上に乗ると「カチッ」と音が鳴る というギミックの完成です。
SendKeys
周囲に Key を送るアクションです。Sub には形状を指定でき、Plane は高さ 1, 幅と奥行きが今回は 8 という形ですね。キューブの配置における回転の影響を受けるので、このスイッチは門扉のもう一つのギミックキューブに届くように SendKeys をしています。
ここまでのアクションで、「カチッ」と音を鳴らした後、遠くのもう一つのギミックを発動させるという意味になります。
Sleep
ここで入れているのは、カチカチ鳴らしすぎないように少し待ちを作っています。
Return
元のギミックキューブに戻る動作となります。Return 後は最初の Trigger で待ち受けている状態になるので、上に乗ればまた「カチッ」と音が鳴ります。
スイッチで起動する側の門のギミックをここで確かめましょう
Combine
結合を意味していて、柵の形で一つのオブジェクトになるように PhysicalPlane を Sub に選んでいます。Plane は先ほどの SendKeys と同じ形のイメージで、高さ 1 幅と奥行きが今回は 4 の結合範囲でまとめています。こちらもギミックキューブの回転に依存しているため、うまく回転させて縦方向の板の形状で周囲を結合し、門の形をとります。
Physical と 無印の形状がありますが、形で物理挙動をしたいときに Physical を指定し、物理挙動をあきらめるが、結合した形状の内側にプレイヤーが入りたい場合は無印の形状を利用します。
Sound
音を鳴らすアクションです。Explosion という「ドカーン」という音を 0.5 の速度で再生して、ゆっくりの「ゴゴゴゴゴゴゴ」という音を作っています。
Translate
移動するアクションです。LocalX は今回は回転の兼ね合いで、門を上方向に動かす軸を示しています。-5 は上方向に 5キューブ移動という指定となります。
Sub に Speed を指定すると、直前の移動の速度を変化させることができます。3と大きな数字を指定すると速く動かすことができます。
Sub に Finish を指定すると、直前の Translate の移動が完了するまで待機するアクションとなります。
ここまでのアクションで、門の形で結合して「ゴゴゴゴゴゴゴ」という音をたてながら上へ 5キューブ移動する を実現できるようになりました。
Sleep
上に移動した門が 20秒経過するまで固定されます
Physics
Subに指定した物理制約を与えることができます。SliderY の場合上下方向の軸だけ移動できるエレベータのような動作制約で動くことになります。
このタイプは回転の影響をうけません。
Sleep
門が落下する様子を見せるための待機時間です
Return
もう一度門を開かせられるように、すべてのアクションを取り消して元の状態に戻ります。
ギミックタイプ一覧
アクションを組合わせることで、奥深いギミックが作れるようになると思います。
以下に現在提供されているアクションタイプ一覧を示して説明を終えたいと思います。
タイプ | 説明 |
---|---|
Trigger | 乗る、近づくとギミックが発動する |
Sound | 音を鳴らす |
Material | 光ったり、透明になったり、色変化や周囲キューブのマテリアルを指定して見た目を変えます |
Logic | Keyの値を足したり、引いたり、掛けたりします |
Sleep | 指定した時間だけ次のアクションの実行を遅らせます |
Lock | 直前のKeyがここで指定した値と一致しないとReturnします |
SkipTo | 指定したラベルへアクションをスキップします。条件分岐や繰り返し処理を作れます。 |
Label | ジャンプ先を定義するラベルです |
Combine | 周囲のキューブをギミックキューブを核にして結合します |
Rotate | ギミックキューブを中心に回ります。プロペラやスクリューなどの表現に使えるでしょう |
Translate | ギミックキューブが移動します。すごい勢いで動かすとプレイヤーやボールを打ち出す発射装置になったりします |
InstantItem | すべてのインスタントアイテムに変化します。過去に行く装置になったり、地雷などが作れるでしょう |
Disappear | 周囲のキューブを巻き込んで消滅します。突然開く扉や、床が消える落とし穴などになります |
Key | SendKeys に乗せる情報になります。受け取ったキューブは Key の値を処理できます。Lock に差し込んで錠を鍵で開くイメージです |
SendKeys | 加工したKeyセットを周囲のギミックキューブへ送信し、ギミックを発動させます |
Load | ギミックアクションリストは必要なときにロードするのでタイミングがずれることがあります。事前に周囲のギミックキューブのロードを完了させるためのアクションです |
Return | すべてのアクションを取り消して、元の状態に戻します |
Physics | 物理挙動をギミックキューブに与えます。制約をつけるとスライダーや回転する歯車、レールに沿って動く、などの動きを作れます |
HingeJoint | 蝶番のような扉の表現が可能になります。角度をつけなければ回転する車軸としても表現できるでしょう。単体では表現できないので周囲にアンカーを刺す設定をします。 |
SpringJoint | ばねのような弾性のある動きをつけられます。アンカーを刺す向きを指定します。 |
FixedJoint | 複数の結合したギミックをさらに組み合わせて複雑な形状を作るときに、固定ジョイントを活用します |