「写経」で（なんとなく）雑に学ぶclusterのスクリプト──Creators Guideベータ版を盛り上げたい！

この記事は [クラスター Advent Calendar 2024](https://qiita.com/advent-calendar/2024/cluster) の12/11の記事です。
前日は空いているので誰かがそのうち書いてくれるはず。

---

こんにちは、クラスター株式会社のFUKUDAです。
1年ぶりに記事を書きます。アドベントカレンダーの時にだけ現れる人です。
普段は、「[Cluster Creators Guide](https://creator.cluster.mu/)（以下、Creators Guide）」というclusterで創作をする方の役に立てるような情報を発信するメディアの運営をしています。

今年は別業務があったり、1人で運用していることもあり、Creators Guideはそこまでアクティブに動けませんでした。一方で、Cluster Creator Kitなどclusterの創作周りのアップデートは目覚ましいものがありましたね。特にスクリプトはどんどんやれることが増えています。
本記事では、筆者自身スクリプトのようなものに対して初学者だったので、初学者のスクリプトへの立ち向かい方と最近公開したCreators Guideベータ版について思うことを綴っていきます。

https://note.com/cluster_official/m/m2977d6e59c50

↑リリースブログの層が厚い

## メタバースでのプログラミングは、結果が目に見えやすいので初学者でも楽しい
プログラミングは「難しそうだなあ」というイメージだったり、動くところまでをつくるのに時間がかかったりするので、最初はとっつきにくいという印象がありますよね。

ですが、clusterのようなメタバースでのプログラミングの場合は、部分的なコードであっても、3D空間ですぐに動かすことができます。これはかなり楽しいです。
「結果がすぐ目に見えるのは楽しい！」という点で、メタバースでの創作をきっかけにプログラミングについて学びはじめたという人は増えていくのではないかと思います。

https://x.com/cluster_jp/status/1866422734185771448

↑クラフトアイテムであれば色々なシーンで試せるのも楽しい

同じような例として、3Dモデルの見た目に大きく関わる「シェーダー」を自在に操るためのシェーダープログラミングをメタバースをきっかけとして始めたという話もよく聞きます（制約はありますが）。
ワールド、良く見せたいもんですね。

https://www.slideshare.net/slideshow/unity-2-133372753/133372753#1

## スクリプト難しい……ので、まずは写経！
[去年のアドカレ記事](https://qiita.com/FUKUDA_concrete/items/32c027c7fcaa4067f6a0)で書いたのですが、筆者は、元々は雑誌編集者という非常にアナログな業界出身で、Unityも独学で学びました。そんな背景なので、プログラムなんてほとんど触ったことがない……
もちろんCreators Guideで提供する記事は然るべき人に執筆・チェックをしてもらった上で公開しているので、そういう意味では、筆者自身がめちゃくちゃ書けるようになる必要はないのですが、それでも何が書いてあるのか理解できるくらいようにはならないといけません。

なので、ここ最近はスクリプトの勉強をしていて、0からゴリゴリ書けるとまではいかないけど書いてあることは理解できるようになったり、色々改変したり組み合わせたりできるようにはなってきました。
**そのためにやったのは「とにかく写経」！**
最初にJavaScriptの基礎中の基礎を学んだら、後はひたすら写経。最初はシンプルなコードからはじめて、慣れてきたら複雑なものに挑戦するのが良いです。ポイントはコピペではなく写経すること！

https://cybozushiki.cybozu.co.jp/articles/m000319.html

↑こんな記事がありました

写経するためにはサンプルコードが必要になります。公式から出したりしていますが、clusterのクリエイターさんも色々と公開してくれるので嬉しい！

- [Creators Guideの「スクリプト」カテゴリ](https://creator.cluster.mu/2022/11/14/javascript/)
- clusterのDevrel smithさんの勉強会資料
  - [ゆるゲームジャム「攻撃ができるアイテム」勉強会資料](https://docs.google.com/presentation/d/18Xqnj2OL0eTh28UbUPzx6SlikxL8UNL5SYIID3ksvYs/edit#slide=id.g2838c06b9bf_0_89)
  - [ゆるゲームジャム「Item 可視性フィルター」勉強会資料](https://docs.google.com/presentation/d/1QymfCV_k1hYGgZynXre6lm9Ohtspc27UnvV2IQG-z8c/edit)
  - [CCK勉強会「PlayerScriptで遊ぼう！」資料](https://docs.google.com/presentation/d/17Q114vLTur4PnKadjxGoxkKTP6rn51lLjKK0TaJeJAs/edit)
  - [「ワールド内課金」説明会の資料とアーカイブ](https://x.com/cluster_jp/status/1830595398194561026)
- [#clusterscript](https://x.com/search?q=%23clusterscript&src=typed_query&f=live) の投稿
- clusterのクリエイターさんの記事
  - [note](https://note.com/)や[zenn](https://zenn.dev/)、[Qiita](https://qiita.com/)などで「cluster」「cluster スクリプト」などで検索してみてください！
- cluster公式Discordコミュニティ「[Cluster Creator Community](https://docs.cluster.mu/creatorkit/support/creator-community/)」でも色々なやりとりがされているので、ぜひ見てみてください。

最初は何が何だか分からず写経しているのですが、数を重ねていくとパターンみたいなものが見えてきます。そうすると、次第に部分部分がどういう役割で書かれているのかが何となく分かるようになってきます。めちゃくちゃ力業の学習法ですね。

### 公式ドキュメントを改めて眺める
なんとなく分かるようになってきた時に改めて[公式ドキュメント](https://docs.cluster.mu/script/index.html)を読んだりすると、「これはこのために書かれていたのか！」というアハ体験がちょこちょこ起こるようになります。そうなったらもう勝ちです。
後は自分のつくりたいものを目掛けて加速していきましょう！（より具体的な情報を知りたい人は [Cluster Creator Community](https://docs.cluster.mu/creatorkit/support/creator-community/)で質問すれば回答してくれる人もいるかもしれません！）

## Creators Guideベータ版でサンプルを増やしたい！
さて、clusterのスクリプトは誕生して日が浅いため、どうしても実践例や公開されているサンプルの総数はまだあまり多くありません。その分、現時点で公開してくれている方には大感謝です。
とはいえ一朝一夕で増えるなんてことは難しい。僕自身も新しい写経先を求め、ネット上を徘徊するようになってきました。
そこで最近始めたのが「Creators Guideベータ版」です。この記事はこれを宣伝するために長々とここまで綴られてきたのでした。

https://x.com/cluster_jp/status/1862451602654994619

公式が出している様々なドキュメントに仕様は書いてあるのですが、公式文書である限り「こう使うといいよ！」みたいな気軽なノリの文章は載せにくいと思いますし、Creators Guideもなるべくミスがないように注意深く確認してから公開する必要があるので（どれだけ注意してもまったく0にならないのが恐ろしいところ……）、どうしても増やすスピードは上がりにくい状況でした。

そこで、なるべく気軽に参考になる情報を公開できるように、と考えてスタートしたのが本企画です。
まだ始まったばかりで数は少ないですが、

- [PlayerLocalUIにミニマップを表示する【サンプルunitypackageつき】](https://docs.google.com/document/d/1brTO-e-HSoTD3D6BJNpeGCreG3M-hOIFzceiPTjhCn0/edit?tab=t.0)
- [GAMEPARKの手持ち看板っぽいものをつくる](https://docs.google.com/document/d/1WXyrZ-CVUHAwRtugeiTjw9cJow3wPwq_N-5Uw024uK4/edit?tab=t.0)
- [Player Interactive Local UIで色々する](https://docs.google.com/document/d/1SLCSgLUOxPXOp9IcV88kHQW2S79SO-lQaoe8i1Oc5XI/edit?tab=t.0#heading=h.gjdgxs)
- [HUD v2のボタンを押したとき移動停止して暗転＋リスポーンするPlayerScript](https://docs.google.com/document/d/14M5nOfsJCJG8LSjeaw1a23dAIso89JD1j4z22DnnygQ/edit?tab=t.0#heading=h.gjdgxs)
- [group stateのすすめ](https://docs.google.com/document/d/1wgTXMloe901tK_ea7ifdkTGbppwqy5EJae5uf_ToAng/edit?tab=t.0#heading=h.7ywwz8c6r6i8)

と面白いことができそうなサンプルが生まれつつあります。
ここで色々なサンプルを増やしていけると良いなと思っております（個人的にも個人制作で活かせて嬉しいことばかりなので！）。
これは勝手に言ってるだけですが、盛り上げたいと思ってくださる方がいれば社内からだけでなく社外の色々な人が書けるようにしたいですね。

![スクリーンショット 2024-12-11 14.09.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3616002/bafe63ac-ea5c-4fa6-f19d-7607462aa3ea.png)

↑Creators Guide内にひっそり導線ができています

## Creators Guideベータ版を盛り上げていきたい！
ただ、始まったばかりでどうなっていくかはまだ分かりません。
運営（筆者）も人間なので、盛り上がりがないと「このままやっていて良いのだろうか……」と不安になって、動きが鈍化してしまうかもです……参考になった方は「参考になりました！」、参考にしなくても「これは試してみたい！」など一言でも良いのでSNSなどでシェアしてもらえると、テンションが上がって記事も増えていく可能性が増えると思います。

保証をしていない情報、という性質上、公式から度々プッシュするのは難しいので、シェアとかいただけるとめちゃくちゃ嬉しいです！