カワリモノ息子の技術メモ的な~

カワリモノ息子とその母の技術メモ的な〜

学校が苦手な息子くんの作品とその母の作品、はたまた日常などいろいろを在宅エンジニア母が綴る

Cluster GAMEJAM 2022 in AUTUMN に参加しました

Cluster GAMEJAM 2022 in AUTUMN

 今回も参加してみました。

www.contest.cluster.mu

 こんなイベント時にしかClusterの開発は触らないのでまったく賞が狙えるようなレベルでもないのですが、イベントごとが好きなのと、逆にこんな機会でもないと触ることがないので参加してる感じです。

 前回は春だったのでおよそ半年ぶりのCluster開発に触ってみる経験でした。

 ↓ 前回とその前の参加記事
siroitori.hatenablog.com
siroitori.hatenablog.com


今回のエントリー特典

 毎度エントリー特典があるのもCluster GAMEJAMの特徴です。

 Tシャツゲット〜♪

今回はスマホアプリでも作れる「ワールドクラフト」に挑戦

 Clusterの開発がGAMEJAMの時にしかやらないと書きましたが、それはUnityについても同様です。
 普段まったくUnityを使っていないのですがClusterの開発のときだけちょっと触っています。

 しかし今までの2回の参加経験上、ちょっと問題がありました。

 「Unity(というより3Dゲーム)酔う・・・」

 GAMEJAMはいつも金曜の夜から日曜の夜までの2日間で完成させるのですが、ちょっと酔う開発をぎっちぎちにやってしまうと終わった頃には結構具合悪くなりますw

 なので今回はUnityを使わないワールドクラフトを使って、しかも他の用事も立て込んでたのもあり、そこまで時間をかけずにやろうと決めました。
 ただし「Unityを使わない」と思ったものの結局少しは使うことになりました。これについては後述します。

 ワールドクラフトはPCのほかスマホアプリからでも行え、マイクラのようにアイテムを置きながら建築ができるものになります。

creator.cluster.mu

 これを使ってワールドを作ること自体はとても簡単で、私なんかよりもマイクラ好きのお子さんのほうがはるかに上手にできると思います

 私に足りないもの、それは・・・建築センス

ワールドクラフトにスクリプトが書ける新機能

 今回新機能がありました。なんとワールドクラフトでクラフトするアイテムにJavaScriptでスクリプト(挙動のプログラム)が書けるようになったとのこと。
 これは息子くんも興味津々でした。
 じゃあ一緒に作ろう!と言ったのですが「そこまでは結構」と非情に断られましたw

 ↑ toioみたいな四角い箱が左右に行ったり来たり。これはJavaScriptのコードで動いています。

結局スクリプトのアイテムを作るにはUnityが必要

 最初ドキュメントを読んでもスクリプトで制御できるアイテムの関係性が最初わからなかったのでどういうこと??となりましたが、こういうことのようです。

  • Unityで作るワールド
  • ワールドクラフトで作るワールド

 上記どちらにも「アイテム」が使用可能です。

 この「アイテム」はワールドクラフト上では「クラフトアイテム」として最初から存在するもののほか、Unityで作ったものをアイテムとしてアップロードしてワールドクラフトで使うこともできます。

 はたまたこうやってアップロードしたクラフトアイテムをワールドクラフトストアで購入・販売することも可能のようです。


 ▲ ワールドクラフトではこのように最初からたくさんのアイテムが用意されています。また左のメニューの一番下にあるSTOREのボタンからワールドクラフトストアに飛ぶことができます。

 ただし、スクリプト可能なアイテムは最初から準備されていないため(多分!)、自分でUnityで作る必要があります。
 またはワールドクラフトストアではスクリプト制御されたアイテムも販売されています。

ワールドクラフトで使うためのアップロードについて

 ■ アップロードするための制限
docs.cluster.mu

 ■ Unityからアップロードするやりかた
docs.cluster.mu

補足情報

 ■ クラフトアイテムの販売
creator.cluster.mu

Unityでの作り方

 下記の2つの内容を参考に作ることができました。
note.com
creator.cluster.mu

 動くアイテム、乗って動くアイテム、触ると動くアイテムなどいろいろスクリプト制御することができます。

 ポイントとしては、

  • スクリプト可能なアイテムを作る場合、Scriptable Itemを設定しておく必要がある
  • 動くアイテムを作る場合、上記に加えMovable Itemを設定しておく必要がある
  • 乗れるアイテムをを作る場合、上記に加えRidable Itemを設定しておく必要がある
  • つかめるアイテムを作る場合、Scriptable Itemに加え Grabbable Itemを設定しておく必要がある

 Scriptable Itemについてのマニュアルはこちら
 Scriptable Item以外については以前からのUnityでのアイテム作成上の仕様かもです。

 (すべて私の理解ですので違ってる部分があったらご指摘ください)

 また、JavaScriptのスクリプトの内容(実際の挙動のコード)についてはUnity上で設定しておいても良いですし設定しなくてもワールドクラフト上で設定・変更させることも可能となります。

 ▼ Unityでクラフトアイテムを作成しました。Scriptable Item、Movable Item、Ridable Itemを設定しています。

しかしスクリプトは難しい

 だいたい理解できた!と思ったのですが・・・
 スクリプトが物理式わかってないと超むずい感じでした。

 たとえばZ軸方向に反復移動するサンプルのスクリプトの抜粋。

  $.state.time += deltaTime;

  $.setPosition($.state.pivot.clone().add(direction.clone().multiplyScalar(Math.sin($.state.time * speed) * range).applyQuaternion($.getRotation())));

 よくわからないままこれを円を描くように動くようにしたいなと思い修正するとこのようになりました ↓

 まぁ大きな円弧は描いているのですが・・。私が思い描く動きにはなりませんでした。

無事に完成

 無事に時間内に完成しました。
 サムネイル画像をあとで差し替えようと思っていましたが日曜にほかの用事に時間を取られて差し替えられませんでした。
 でも投稿はできたので、早い時間にアップロードしておいて助かった〜と思ったのでした。

 Twitterにリンク載せませんでしたが「ダサくないよ」と言われたのでこちらに公開しておきますw

cluster.mu

 今回のテーマは『はかる』だったので測るもの=定規の世界を作ってみました。

 ワールドに入ると最初はお部屋の中。散らばっている定規はGrabbable Itemにしたので持つことができます。(床も同じテクスチャなのでわかりにくかったかも)

 部屋中央の階段を登っていくと、定規アスレチックになっています。難易度は超低いです。
 

 アスレチックの左下にあるエリアでは3つの定規が階段の上に乗っていて、これらは乗って遊ぶことができます。


さいごに

 たいしたものは作れませんでしたが、こういうふうにして作れる・使えるということを学べてよかったです。
 これからも楽しんでいろいろ挑戦していきたいなと思います。

[2022/12/25 追記]

 奨励賞をいただきました!ありがとうございました!
 そして参加賞のメダルも届きました。